diff --git a/.gitignore b/.gitignore
index f33e16fbb..eb42f09ac 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,3 +37,5 @@ org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4compiler/
*.out
*.app
+.idea
+*.iml
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 000000000..c660db4c1
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "org.alloytools.pardinus"]
+ path = org.alloytools.pardinus
+ url = https://github.com/haslab/Pardinus
diff --git a/.travis.yml b/.travis.yml
index 9d539bc94..5bfcad44c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,20 +1,12 @@
-dist: trusty
-sudo: false
+dist: focal
language: java
-jdk:
-- oraclejdk8
-install: "./gradlew --version"
-script: ./gradlew --no-daemon -DGRADLE_OPTS="-Xms128m" --stacktrace build -i
-after_success:
-- git status
-- echo $REPOSITORY_USERNAME
-- echo $TRAVIS_PULL_REQUEST
-- echo $TRAVIS_BRANCH
-- if [ master == $TRAVIS_BRANCH -a $TRAVIS_PULL_REQUEST == false -a ${REPOSITORY_USERNAME:=X}
- != X ]; then ./gradlew -DGRADLE_OPTS="-Xms128m" release -i; fi
+before_install:
+ - curl -L "http://nusmv.fbk.eu/distrib/NuSMV-2.6.0-zchaff-linux64.tar.gz" | tar --extract --gzip --strip-components=2 -C $HOME/bin "NuSMV-2.6.0-Linux/bin/NuSMV" || true
+ - curl -N -L "http://es-static.fbk.eu/tools/nuxmv/downloads/nuXmv-2.0.0-linux64.tar.gz" | tar --extract --gzip --strip-components=2 -C $HOME/bin "nuXmv-2.0.0-Linux/bin/nuXmv" || true
+install:
+ - "gradle --version"
+script: travis_wait gradle --no-daemon -DGRADLE_OPTS="-Xms128m" --stacktrace build -i
cache:
directories:
- "$HOME/.gradle"
-env:
- secure: "iMLby/ptj+UObydTJmFj2VO3QoYOiLmNC6kl7HOeSek7Jeo1LNV/+PXZ01o72t2QszFVux2gDcUBlaZKFXsvN585rT0JGRf7R9EA5qiRzetPmWJaA4vdY+GSZR4O0DiOuBcp+KGS5rBHmi3NoKlLAeO/CrHLFyAv2qjofsECUwmsRsS47aCepC7qllla+8PiQbyse6wytJKIqvk4n7BDXXOfQLM6Y5LZ/5uFs6PKyiLlXBmlG5LzdMtxlEED1nOEmLKak7ZjP2VwpJ3KSFGyu7/l9lf+IFnnXAIZaGvARbTDUhF3cyoZgP2Ab5yWJEB1uYzkoNwczmW5ARfalKkjBAV8DuZJFSe39K7XcWVvWRMGTpUSUKA20BpD+wW3q1x8s8Vw+CLuRzCO6QD3uG+JZX2URIBt4F50SpS07HHAd0c6hzv9M4cjd5l9wBYH2nFX1uUuza6znuk3DJ69bM9INMQ+8A5fkSUaXEw/7ym3a+GQINrFtYftcDm915wAznS5Sa86tK2icDtV4vCdTikXLtu6xmYJ4raliGN0E3yL9agW0J1dMjzK+D6l6zXo/qVT+qjwN8+KSFaaYpGYGotqYT4ZnzR9gE85LZWAYLKgsyOOvMopl9MxRVDSKPomUW48aLpG4G80r2NDG3paxA8xS7esDJTBPNCYKuh7Gn3Cp8s="
-
+ - "$HOME/bin"
diff --git a/README.md b/README.md
index 146032ec8..043d8bea9 100644
--- a/README.md
+++ b/README.md
@@ -2,11 +2,11 @@
[![Build Status](https://travis-ci.org/AlloyTools/org.alloytools.alloy.svg?branch=master)](https://travis-ci.org/AlloyTools/org.alloytools.alloy)
# Alloy
-Alloy 4 is a self-contained executable, which includes the Kodkod
-model finder and a variety of SAT solvers, as well as the standard
-Alloy library and a collection of tutorial examples. The same jar file
-can be incorporated into other applications to use Alloy as an API,
-and includes the source code. See the release notes for details of new
+Alloy 6 is a self-contained executable, which includes an extended version of
+the Kodkod model finder and a variety of SAT solvers, as well as the standard
+Alloy library and a collection of tutorial examples. The same jar file can be
+incorporated into other applications to use Alloy as an API, and includes the
+source code. See the release notes for details of new
features.
More documentation can be found at: http://alloytools.org/documentation.html.
@@ -28,12 +28,12 @@ Checkout the project and type `./gradlew build`. You find the executable JAR in
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed model
- $ git clone https://github.com/AlloyTools/org.alloytools.alloy.git
+ $ git clone --recursive https://github.com/AlloyTools/org.alloytools.alloy.git
$ cd org.alloytools.alloy
$ ./gradlew build
$ java -jar org.alloytools.alloy.dist/target/org.alloytools.alloy.dist.jar
# opens GUI
-
+
Note: if you are behind a proxy, the call to `gradlew` is likely to fail, unless you pass it further options about the http and https proxies (and possibly your login and password on this proxy). There are several ways to pass these options, a simple one is to type (replace the `XXXXX`'s by the adequate settings):
$ ./gradlew -Dhttps.proxyHost=XXXXX -Dhttp.proxyHost=XXXXX -Dhttp.proxyPort=XXXXX \
@@ -53,8 +53,8 @@ The workspace is divided into a number of projects:
* [org.alloytools.alloy.application](org.alloytools.alloy.application) – Main application code includes the parser, ast, visualiser, and application code
* [org.alloytools.alloy.dist](org.alloytools.alloy.dist) – Project to create the distribution executable JAR
* [org.alloytools.alloy.extra](org.alloytools.alloy.extra) – Models and examples
-* [org.alloytools.kodkod.core](org.alloytools.kodkod.core) – Kodkod without native code
-* [org.alloytools.kodkod.nativesat](org.alloytools.kodkod.nativesat) – The native code libraries for kodkod
+* [org.alloytools.pardinus](org.alloytools.pardinus) – A Kodkod extension without native code
+* [org.alloytools.kodkod.nativesat](org.alloytools.kodkod.nativesat) – The native code libraries for Kodkod
### Relevant Project files
@@ -97,7 +97,9 @@ In the root of this workspace type `./gradlew`. This is a script that will downl
### Continuous Integration
-The workspace is setup to build after every commit using Travis. It releases snapshots to `https://oss.sonatype.org/content/repositories/snapshots/org/alloytools/` for every CI build on Travis.
+The workspace is setup to build after every commit using Travis.
+
+It releases snapshots to `https://oss.sonatype.org/content/repositories/snapshots/org/alloytools/` for every CI build on Travis.
### Building the DMG file for OSX systems
diff --git a/cnf/.classpath b/cnf/.classpath
index fb5011632..ca962805d 100644
--- a/cnf/.classpath
+++ b/cnf/.classpath
@@ -3,4 +3,4 @@
-
+
\ No newline at end of file
diff --git a/cnf/build.bnd b/cnf/build.bnd
index 6c71c8f5e..8a3b7e44e 100644
--- a/cnf/build.bnd
+++ b/cnf/build.bnd
@@ -9,8 +9,8 @@ testbin: target/test-classes
target-dir: target
javac.source: 1.8
-javac.target: ${javac.source}
-javac.compliance: ${javac.source}
+javac.target: 1.8
+javac.compliance: 1.8
javac.debug: on
Git-Descriptor: ${system-allow-fail;git describe --dirty --always}
@@ -21,7 +21,7 @@ Bundle-Vendor: AlloyTools at Github
Bundle-DocURL: http://alloytools.org
Bundle-License: MIT
-base.version: 5.1.0
+base.version: 6.0.0
Bundle-Version: ${base.version}.${tstamp}
# Remove -SNAPSHOT for release version
diff --git a/cnf/central.xml b/cnf/central.xml
index 6de780cf2..e60bb8c11 100644
--- a/cnf/central.xml
+++ b/cnf/central.xml
@@ -8,6 +8,10 @@
pom
+
+ 1.1.7
+
+
org.eclipse.jdt
@@ -24,6 +28,18 @@
org.sat4j.core
2.3.1
+
+ org.sat4j
+ org.sat4j.maxsat
+ 2.3.1
+ compile
+
+
+ org.sat4j
+ org.sat4j.pb
+ 2.3.1
+ compile
+
de.jflex
jflex
@@ -34,6 +50,16 @@
java-cup
11b-20160615
+
+ org.slf4j
+ slf4j-api
+ 1.7.28
+
+
+ org.slf4j
+ slf4j-simple
+ 1.7.5
+
diff --git a/cnf/jars/java-cup-11a.jar b/cnf/jars/java-cup-11a.jar
index 73ffa0b33..46dd51639 100644
Binary files a/cnf/jars/java-cup-11a.jar and b/cnf/jars/java-cup-11a.jar differ
diff --git a/cnf/jars/java-cup-runtime-0.11-a-czt01-cdh.jar b/cnf/jars/java-cup-runtime-0.11-a-czt01-cdh.jar
new file mode 100644
index 000000000..f0ed64cf5
Binary files /dev/null and b/cnf/jars/java-cup-runtime-0.11-a-czt01-cdh.jar differ
diff --git a/org.alloytools.alloy.application/.classpath b/org.alloytools.alloy.application/.classpath
index 55864cdf7..bcafe71e5 100644
--- a/org.alloytools.alloy.application/.classpath
+++ b/org.alloytools.alloy.application/.classpath
@@ -1,9 +1,12 @@
-
-
-
-
+
+
+
+
+
+
+
diff --git a/org.alloytools.alloy.application/.settings/org.eclipse.jdt.core.prefs b/org.alloytools.alloy.application/.settings/org.eclipse.jdt.core.prefs
index 581b9f158..2f809de6d 100644
--- a/org.alloytools.alloy.application/.settings/org.eclipse.jdt.core.prefs
+++ b/org.alloytools.alloy.application/.settings/org.eclipse.jdt.core.prefs
@@ -133,12 +133,16 @@ org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=ignore
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.processAnnotations=disabled
+org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8
org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,NORMAL
org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=4
org.eclipse.jdt.core.formatter.align_type_members_on_columns=true
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=2
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=51
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=50
@@ -148,6 +152,7 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_e
org.eclipse.jdt.core.formatter.alignment_for_assignment=2
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=2
org.eclipse.jdt.core.formatter.alignment_for_compact_if=2
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=2
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=51
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=2
@@ -191,6 +196,8 @@ org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=false
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
@@ -242,13 +249,13 @@ org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_ini
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
@@ -415,6 +422,9 @@ org.eclipse.jdt.core.formatter.join_wrapped_lines=false
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.jdt.core.formatter.lineSplit=140
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
diff --git a/org.alloytools.alloy.application/.settings/org.eclipse.jdt.ui.prefs b/org.alloytools.alloy.application/.settings/org.eclipse.jdt.ui.prefs
index dcee2a4d2..5ba47fdd1 100644
--- a/org.alloytools.alloy.application/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.alloytools.alloy.application/.settings/org.eclipse.jdt.ui.prefs
@@ -31,7 +31,9 @@ cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=tru
cleanup.qualify_static_member_accesses_with_declaring_class=true
cleanup.qualify_static_method_accesses_with_declaring_class=false
cleanup.remove_private_constructors=true
-cleanup.remove_redundant_type_arguments=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=false
+cleanup.remove_redundant_type_arguments=false
cleanup.remove_trailing_whitespaces=false
cleanup.remove_trailing_whitespaces_all=true
cleanup.remove_trailing_whitespaces_ignore_empty=false
@@ -60,7 +62,7 @@ cleanup_settings_version=2
eclipse.preferences.version=1
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
formatter_profile=_Alloy
-formatter_settings_version=13
+formatter_settings_version=14
org.eclipse.jdt.ui.exception.name=e
org.eclipse.jdt.ui.gettersetter.use.is=true
org.eclipse.jdt.ui.ignorelowercasenames=true
@@ -88,7 +90,7 @@ sp_cleanup.convert_functional_interfaces=false
sp_cleanup.convert_to_enhanced_for_loop=false
sp_cleanup.correct_indentation=false
sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.format_source_code_changes_only=true
sp_cleanup.insert_inferred_type_arguments=false
sp_cleanup.make_local_variable_final=false
sp_cleanup.make_parameters_final=false
@@ -105,6 +107,8 @@ sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=
sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=false
sp_cleanup.remove_redundant_type_arguments=false
sp_cleanup.remove_trailing_whitespaces=true
sp_cleanup.remove_trailing_whitespaces_all=true
diff --git a/org.alloytools.alloy.application/bnd.bnd b/org.alloytools.alloy.application/bnd.bnd
index 28ed13169..298a54ca5 100644
--- a/org.alloytools.alloy.application/bnd.bnd
+++ b/org.alloytools.alloy.application/bnd.bnd
@@ -3,8 +3,8 @@
-buildpath: \
lib/apple-osx-ui.jar;version=file,\
+ org.alloytools.pardinus;version=latest,\
org.alloytools.alloy.core;version=latest,\
- org.alloytools.kodkod.core;version=latest
-testpath: \
osgi.enroute.junit.wrapper, \
@@ -15,9 +15,8 @@
org.alloytools.kodkod.nativesat.x86-linux, \
org.alloytools.kodkod.nativesat.x86-mac, \
org.alloytools.kodkod.nativesat.x86-windows
-
+
Private-Package: \
edu.mit.csail.sdg.alloy4graph,\
edu.mit.csail.sdg.alloy4viz,\
edu.mit.csail.sdg.alloy4whole,\
-
diff --git a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4graph/Graph.java b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4graph/Graph.java
index fb293d337..c3eed7800 100644
--- a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4graph/Graph.java
+++ b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4graph/Graph.java
@@ -37,6 +37,9 @@
* Mutable; represents a graph.
*
* Thread Safety: Can be called only by the AWT event thread.
+ *
+ * @modified [electrum] changed so that nodes are sorted lexicographically
+ * within each layer of the graph
*/
public final strictfp class Graph {
@@ -313,7 +316,18 @@ private void layout_assignOrder() {
grOUT.get(n.pos()).remove(x);
for (GraphNode n : grOUT.get(x.pos()))
grIN.get(n.pos()).remove(x);
- for (GraphNode n : Util.fastJoin(grIN.get(x.pos()), grOUT.get(x.pos()))) {
+ // [electrum] hack to get nodes sorted lexicographically within each layer
+ // can't fast join since read-only
+ // Iterable aux = Util.fastJoin(grIN.get(x.pos()), );
+ List aux = new ArrayList(grIN.get(x.pos()));
+ aux.addAll(grOUT.get(x.pos()));
+ aux.sort(new Comparator() {
+
+ public int compare(GraphNode o1, GraphNode o2) {
+ return -o1.uuid.toString().compareTo(o2.uuid.toString());
+ }
+ });
+ for (GraphNode n : aux) {
int ni = n.pos(), out = grOUT.get(ni).size(), in = grIN.get(ni).size();
int b = (out == 0) ? 0 : (in == 0 ? (2 * num) : (out - in + num));
if (grBIN[ni] != b) {
diff --git a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4graph/GraphViewer.java b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4graph/GraphViewer.java
index 8a75ecbaf..e6ef4cdf6 100644
--- a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4graph/GraphViewer.java
+++ b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4graph/GraphViewer.java
@@ -61,6 +61,9 @@
* This class displays the graph.
*
* Thread Safety: Can be called only by the AWT event thread.
+ *
+ * @modified [electrum] added the ability to update the scale (needed to be
+ * preserved when navigating traces)
*/
public final strictfp class GraphViewer extends JPanel {
@@ -695,6 +698,16 @@ public Dimension getPreferredSize() {
return new Dimension((int) (graph.getTotalWidth() * scale), (int) (graph.getTotalHeight() * scale));
}
+ /** Returns the zoom level of this graph. */
+ public double getScale() {
+ return scale;
+ }
+
+ /** Updates the zoom level of this graph. */
+ public void setScale(double scale) {
+ this.scale = scale;
+ }
+
/**
* This method is called by Swing to draw this component.
*/
diff --git a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/AlloyRelation.java b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/AlloyRelation.java
index 91118fb44..99b24c57c 100644
--- a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/AlloyRelation.java
+++ b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/AlloyRelation.java
@@ -26,6 +26,8 @@
* Immutable; represents an Alloy relation of 2 or higher arity.
*
* Thread Safety: Can be called only by the AWT event thread.
+ *
+ * @modified [electrum] changed to register whether a relation is mutable
*/
public final class AlloyRelation extends AlloyElement {
@@ -34,13 +36,13 @@ public final class AlloyRelation extends AlloyElement {
* This caches an instance of the "extends" AlloyRelation, so we don't have to
* keep re-constructing it.
*/
- public static final AlloyRelation EXTENDS = new AlloyRelation("extends", false, false, Util.asList(AlloyType.UNIV, AlloyType.UNIV));
+ public static final AlloyRelation EXTENDS = new AlloyRelation("extends", false, false, false, Util.asList(AlloyType.UNIV, AlloyType.UNIV));
/**
* This caches an instance of the "in" AlloyRelation, so we don't have to keep
* re-constructing it.
*/
- public static final AlloyRelation IN = new AlloyRelation("in", false, false, Util.asList(AlloyType.SET, AlloyType.UNIV));
+ public static final AlloyRelation IN = new AlloyRelation("in", false, false, false, Util.asList(AlloyType.SET, AlloyType.UNIV));
/** The unmodifiable list of types. */
private final ConstList types;
@@ -57,17 +59,24 @@ public final class AlloyRelation extends AlloyElement {
*/
public final boolean isMeta;
+ /**
+ * Records whether this relation is known to be "var"; NOTE: this value is NOT
+ * USED during equals() comparison.
+ */
+ public final boolean isVar;
+
/**
* Constructs a new AlloyRelation with that name and that list of types;
* types.size() must be 2 or above.
*/
- public AlloyRelation(String name, boolean isPrivate, boolean isMeta, List types) {
+ public AlloyRelation(String name, boolean isPrivate, boolean isMeta, boolean isVar, List types) {
super(name);
if (types == null || types.size() < 2)
throw new RuntimeException("An AlloyRelation object must have 2 or more types.");
this.types = ConstList.make(types);
this.isPrivate = isPrivate;
this.isMeta = isMeta;
+ this.isVar = isVar;
}
/**
diff --git a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/AlloySet.java b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/AlloySet.java
index e066855c0..d82c5ebdb 100644
--- a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/AlloySet.java
+++ b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/AlloySet.java
@@ -21,6 +21,8 @@
* Immutable; represents an Alloy set in an instance.
*
* Thread Safety: Can be called only by the AWT event thread.
+ *
+ * @modified [electrum] changed to register whether a subset is mutable
*/
public final class AlloySet extends AlloyNodeElement {
@@ -40,12 +42,19 @@ public final class AlloySet extends AlloyNodeElement {
*/
public final boolean isMeta;
+ /**
+ * Records whether this relation is known to be "variable"; NOTE: this value is
+ * NOT USED during equals() comparison.
+ */
+ public final boolean isVar;
+
/** Constructs a new AlloySet object. */
- public AlloySet(String name, boolean isPrivate, boolean isMeta, AlloyType type) {
+ public AlloySet(String name, boolean isPrivate, boolean isMeta, boolean isVar, AlloyType type) {
super(name);
this.type = type;
this.isPrivate = isPrivate;
this.isMeta = isMeta;
+ this.isVar = isVar;
}
/** Returns the parent type of the AlloySet. */
diff --git a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/AlloyType.java b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/AlloyType.java
index 68381c6df..e2915b958 100644
--- a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/AlloyType.java
+++ b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/AlloyType.java
@@ -21,6 +21,8 @@
* Immutable; represents an Alloy toplevel signature or an Alloy subsignature.
*
* Thread Safety: Can be called only by the AWT event thread.
+ *
+ * @modified [electrum] changed to register whether a sig is mutable
*/
public final class AlloyType extends AlloyNodeElement {
@@ -29,34 +31,34 @@ public final class AlloyType extends AlloyNodeElement {
* This caches an instance of the "univ" AlloyType, so we don't have to keep
* re-constructing it.
*/
- public static final AlloyType UNIV = new AlloyType("univ", false, false, true, false, false, false);
+ public static final AlloyType UNIV = new AlloyType("univ", false, false, true, false, false, false, false);
/**
* This caches an instance of the "Int" AlloyType, so we don't have to keep
* re-constructing it.
*/
- public static final AlloyType INT = new AlloyType("Int", false, false, true, false, false, false);
+ public static final AlloyType INT = new AlloyType("Int", false, false, true, false, false, false, false);
/**
* This caches an instance of the "seq/Int" AlloyType, so we don't have to keep
* re-constructing it.
*/
- public static final AlloyType SEQINT = new AlloyType("seq/Int", false, false, true, false, false, false);
+ public static final AlloyType SEQINT = new AlloyType("seq/Int", false, false, true, false, false, false, false);
/**
* This caches an instance of the "String" AlloyType, so we don't have to keep
* re-constructing it.
*/
- public static final AlloyType STRING = new AlloyType("String", false, false, true, false, false, false);
+ public static final AlloyType STRING = new AlloyType("String", false, false, true, false, false, false, false);
/**
* This caches an instance of the "set" AlloyType, so we don't have to keep
* re-constructing it.
*/
- public static final AlloyType SET = new AlloyType("set", false, false, false, false, false, false);
+ public static final AlloyType SET = new AlloyType("set", false, false, false, false, false, false, false);
/** Constructs an AlloyType object with that name. */
- public AlloyType(String name, boolean isOne, boolean isAbstract, boolean isBuiltin, boolean isPrivate, boolean isMeta, boolean isEnum) {
+ public AlloyType(String name, boolean isOne, boolean isAbstract, boolean isBuiltin, boolean isPrivate, boolean isMeta, boolean isEnum, boolean isVar) {
super(name);
this.isOne = isOne;
this.isAbstract = isAbstract;
@@ -64,6 +66,7 @@ public AlloyType(String name, boolean isOne, boolean isAbstract, boolean isBuilt
this.isPrivate = isPrivate;
this.isMeta = isMeta;
this.isEnum = isEnum;
+ this.isVar = isVar;
}
/**
@@ -102,6 +105,12 @@ public AlloyType(String name, boolean isOne, boolean isAbstract, boolean isBuilt
*/
public final boolean isEnum;
+ /**
+ * Records whether this sig is known to be "var"; NOTE: this value is NOT USED
+ * during equals() comparison.
+ */
+ public final boolean isVar;
+
/**
* When comparing two AlloyType objects, we compare their names.
* We guarantee x.equals(y) iff x.compareTo(y)==0
diff --git a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/StaticInstanceReader.java b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/StaticInstanceReader.java
index 0927fa059..713516543 100644
--- a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/StaticInstanceReader.java
+++ b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/StaticInstanceReader.java
@@ -46,6 +46,10 @@
* This utility class parses an XML file into an AlloyInstance object.
*
* Thread Safety: Can be called only by the AWT event thread.
+ *
+ * @modified [electrum] creates an AlloyInstance for a particular state after
+ * parsing the XML of a full instance trace (expressions evaluated in
+ * that state); whether elements are mutable is also registered
*/
public final class StaticInstanceReader {
@@ -107,11 +111,11 @@ public final class StaticInstanceReader {
/**
* Create a new AlloyType whose label is unambiguous with any existing one.
*/
- private AlloyType makeType(String label, boolean isOne, boolean isAbstract, boolean isBuiltin, boolean isPrivate, boolean isMeta, boolean isEnum) {
+ private AlloyType makeType(String label, boolean isOne, boolean isAbstract, boolean isBuiltin, boolean isPrivate, boolean isMeta, boolean isEnum, boolean isVar) {
if (label.startsWith("this/"))
label = label.substring(5);
while (true) {
- AlloyType ans = new AlloyType(label, isOne, isAbstract, isBuiltin, isPrivate, isMeta, isEnum);
+ AlloyType ans = new AlloyType(label, isOne, isAbstract, isBuiltin, isPrivate, isMeta, isEnum, isVar);
if (!sig2type.values().contains(ans))
return ans;
label = label + "'";
@@ -121,11 +125,11 @@ private AlloyType makeType(String label, boolean isOne, boolean isAbstract, bool
/**
* Create a new AlloySet whose label is unambiguous with any existing one.
*/
- private AlloySet makeSet(String label, boolean isPrivate, boolean isMeta, AlloyType type) {
+ private AlloySet makeSet(String label, boolean isPrivate, boolean isMeta, boolean isVar, AlloyType type) {
while (label.equals(Sig.UNIV.label) || label.equals(Sig.SIGINT.label) || label.equals(Sig.SEQIDX.label) || label.equals(Sig.STRING.label))
label = label + "'";
while (true) {
- AlloySet ans = new AlloySet(label, isPrivate, isMeta, type);
+ AlloySet ans = new AlloySet(label, isPrivate, isMeta, isVar, type);
if (!sets.contains(ans))
return ans;
label = label + "'";
@@ -135,11 +139,11 @@ private AlloySet makeSet(String label, boolean isPrivate, boolean isMeta, AlloyT
/**
* Create a new AlloyRelation whose label is unambiguous with any existing one.
*/
- private AlloyRelation makeRel(String label, boolean isPrivate, boolean isMeta, List types) {
+ private AlloyRelation makeRel(String label, boolean isPrivate, boolean isMeta, boolean isVar, List types) {
while (label.equals(Sig.UNIV.label) || label.equals(Sig.SIGINT.label) || label.equals(Sig.SEQIDX.label) || label.equals(Sig.STRING.label))
label = label + "'";
while (true) {
- AlloyRelation ans = new AlloyRelation(label, isPrivate, isMeta, types);
+ AlloyRelation ans = new AlloyRelation(label, isPrivate, isMeta, isVar, types);
if (!rels.containsKey(ans))
return ans;
label = label + "'";
@@ -155,7 +159,7 @@ private AlloyType sig(PrimSig s) throws Err {
throw new ErrorFatal("Unexpected sig \"none\" encountered.");
AlloyType ans = sig2type.get(s);
if (ans == null) {
- ans = makeType(s.label, s.isOne != null, s.isAbstract != null, false, s.isPrivate != null, s.isMeta != null, s.isEnum != null);
+ ans = makeType(s.label, s.isOne != null, s.isAbstract != null, false, s.isPrivate != null, s.isMeta != null, s.isEnum != null, s.isVariable != null);
sig2type.put(s, ans);
if (s.parent != Sig.UNIV)
ts.put(ans, sig(s.parent));
@@ -182,7 +186,7 @@ else if (s == Sig.SEQIDX)
else if (s == Sig.STRING)
type = AlloyType.STRING;
else
- type = makeType(s.label, s.isOne != null, s.isAbstract != null, false, s.isPrivate != null, s.isMeta != null, s.isEnum != null);
+ type = makeType(s.label, s.isOne != null, s.isAbstract != null, false, s.isPrivate != null, s.isMeta != null, s.isEnum != null, s.isVariable != null);
sig2type.put(s, type);
AlloyAtom atom = new AlloyAtom(type, (type == AlloyType.SEQINT ? Integer.MIN_VALUE : Integer.MAX_VALUE), s.label);
atom2sets.put(atom, new LinkedHashSet());
@@ -206,7 +210,7 @@ private void sigMETA(SubsetSig s) throws Err {
AlloyType type = sig2type.get(s);
if (type != null)
return;
- type = makeType(s.label, s.isOne != null, s.isAbstract != null, false, s.isPrivate != null, s.isMeta != null, s.isEnum != null);
+ type = makeType(s.label, s.isOne != null, s.isAbstract != null, false, s.isPrivate != null, s.isMeta != null, s.isEnum != null, s.isVariable != null);
atom = new AlloyAtom(type, Integer.MAX_VALUE, s.label);
atom2sets.put(atom, new LinkedHashSet());
sig2atom.put(s, atom);
@@ -222,13 +226,14 @@ private void sigMETA(SubsetSig s) throws Err {
}
/** Constructs the atoms corresponding to the given sig. */
- private void atoms(A4Solution sol, PrimSig s) throws Err {
+ private void atoms(A4Solution sol, PrimSig s, int state) throws Err {
Expr sum = Sig.NONE;
for (PrimSig c : s.children()) {
sum = sum.plus(c);
- atoms(sol, c);
+ atoms(sol, c, state);
}
- A4TupleSet ts = (A4TupleSet) (sol.eval(s.minus(sum))); // This ensures
+ A4TupleSet ts = (A4TupleSet) (sol.eval(s.minus(sum), state));
+ // This ensures
// that atoms
// will be
// associated
@@ -242,7 +247,8 @@ private void atoms(A4Solution sol, PrimSig s) throws Err {
} catch (NumberFormatException ex) {
i = Integer.MAX_VALUE;
}
- AlloyAtom at = new AlloyAtom(sig(s), ts.size() == 1 ? Integer.MAX_VALUE : i, atom);
+ // [electrum] do not hide ids for variable singletons, their id may change between states
+ AlloyAtom at = new AlloyAtom(sig(s), ts.size() == 1 && s.isVariable == null ? Integer.MAX_VALUE : i, atom);
atom2sets.put(at, new LinkedHashSet());
string2atom.put(atom, at);
}
@@ -251,13 +257,13 @@ private void atoms(A4Solution sol, PrimSig s) throws Err {
/**
* Construct an AlloySet or AlloyRelation corresponding to the given expression.
*/
- private void setOrRel(A4Solution sol, String label, Expr expr, boolean isPrivate, boolean isMeta) throws Err {
+ private void setOrRel(A4Solution sol, String label, Expr expr, boolean isPrivate, boolean isMeta, boolean isVar, int state) throws Err {
for (List ps : expr.type().fold()) {
if (ps.size() == 1) {
PrimSig t = ps.get(0);
- AlloySet set = makeSet(label, isPrivate, isMeta, sig(t));
+ AlloySet set = makeSet(label, isPrivate, isMeta, isVar, sig(t));
sets.add(set);
- for (A4Tuple tp : (A4TupleSet) (sol.eval(expr.intersect(t)))) {
+ for (A4Tuple tp : (A4TupleSet) (sol.eval(expr.intersect(t), state))) {
atom2sets.get(string2atom.get(tp.atom(0))).add(set);
}
} else {
@@ -270,9 +276,9 @@ private void setOrRel(A4Solution sol, String label, Expr expr, boolean isPrivate
else
mask = mask.product(ps.get(i));
}
- AlloyRelation rel = makeRel(label, isPrivate, isMeta, types);
+ AlloyRelation rel = makeRel(label, isPrivate, isMeta, isVar, types);
Set ts = new LinkedHashSet();
- for (A4Tuple tp : (A4TupleSet) (sol.eval(expr.intersect(mask)))) {
+ for (A4Tuple tp : (A4TupleSet) (sol.eval(expr.intersect(mask), state))) {
AlloyAtom[] atoms = new AlloyAtom[tp.arity()];
for (int i = 0; i < tp.arity(); i++) {
atoms[i] = string2atom.get(tp.atom(i));
@@ -287,7 +293,7 @@ private void setOrRel(A4Solution sol, String label, Expr expr, boolean isPrivate
}
/** Parse the file into an AlloyInstance if possible. */
- private StaticInstanceReader(XMLNode root) throws Err {
+ private StaticInstanceReader(XMLNode root, int state) throws Err {
XMLNode inst = null;
for (XMLNode sub : root)
if (sub.is("instance")) {
@@ -317,15 +323,15 @@ private StaticInstanceReader(XMLNode root) throws Err {
sig((PrimSig) s);
for (Sig s : toplevels)
if (!s.builtin || s == Sig.STRING)
- atoms(sol, (PrimSig) s);
+ atoms(sol, (PrimSig) s, state);
for (Sig s : sol.getAllReachableSigs())
if (s instanceof SubsetSig)
- setOrRel(sol, s.label, s, s.isPrivate != null, s.isMeta != null);
+ setOrRel(sol, s.label, s, s.isPrivate != null, s.isMeta != null, s.isVariable != null, state);
for (Sig s : sol.getAllReachableSigs())
for (Field f : s.getFields())
- setOrRel(sol, f.label, f, f.isPrivate != null, f.isMeta != null);
+ setOrRel(sol, f.label, f, f.isPrivate != null, f.isMeta != null, f.isVariable != null, state);
for (ExprVar s : sol.getAllSkolems())
- setOrRel(sol, s.label, s, false, false);
+ setOrRel(sol, s.label, s, false, false, false, state);
}
if (isMeta) {
sigMETA(Sig.UNIV);
@@ -341,7 +347,7 @@ private StaticInstanceReader(XMLNode root) throws Err {
types.add(sig(ps.get(i)));
tuple[i] = sig2atom.get(ps.get(i));
}
- AlloyRelation rel = makeRel(f.label, f.isPrivate != null, false, types);
+ AlloyRelation rel = makeRel(f.label, f.isPrivate != null, false, f.isVariable != null, types);
rels.put(rel, Util.asSet(new AlloyTuple(tuple)));
}
}
@@ -411,9 +417,9 @@ private StaticInstanceReader(XMLNode root) throws Err {
}
/** Parse the file into an AlloyInstance if possible. */
- public static AlloyInstance parseInstance(File file) throws Err {
+ public static AlloyInstance parseInstance(File file, int state) throws Err {
try {
- return (new StaticInstanceReader(new XMLNode(file))).ans;
+ return (new StaticInstanceReader(new XMLNode(file), state)).ans;
} catch (IOException ex) {
throw new ErrorFatal("Error reading the XML file: " + ex, ex);
}
@@ -423,9 +429,9 @@ public static AlloyInstance parseInstance(File file) throws Err {
* Parse the file into an AlloyInstance if possible, then close the Reader
* afterwards.
*/
- public static AlloyInstance parseInstance(Reader reader) throws Err {
+ public static AlloyInstance parseInstance(Reader reader, int state) throws Err {
try {
- return (new StaticInstanceReader(new XMLNode(reader))).ans;
+ return (new StaticInstanceReader(new XMLNode(reader), state)).ans;
} catch (IOException ex) {
throw new ErrorFatal("Error reading the XML file: " + ex, ex);
}
diff --git a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/StaticProjector.java b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/StaticProjector.java
index e708034fb..d48949376 100644
--- a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/StaticProjector.java
+++ b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/StaticProjector.java
@@ -28,6 +28,8 @@
* This utility class performs projection of AlloyModel and AlloyInstance.
*
* Thread Safety: Can be called only by the AWT event thread.
+ *
+ * @modified [electrum] propagate whether elements are mutable after projection
*/
public final class StaticProjector {
@@ -98,13 +100,13 @@ private static AlloyModel project(AlloyModel unprojectedModel, Collection 1) {
- relations.add(new AlloyRelation(rel.getName(), rel.isPrivate, rel.isMeta, relTypes));
+ relations.add(new AlloyRelation(rel.getName(), rel.isPrivate, rel.isMeta, rel.isVar, relTypes));
if (data != null)
data.put(rel, indices);
}
// If it contains only one type, it becomes a new set.
else if (relTypes.size() == 1) {
- sets.add(new AlloySet(rel.getName(), rel.isPrivate, rel.isMeta, relTypes.get(0)));
+ sets.add(new AlloySet(rel.getName(), rel.isPrivate, rel.isMeta, rel.isVar, relTypes.get(0)));
if (data != null)
data.put(rel, indices);
}
@@ -168,7 +170,7 @@ public static AlloyInstance project(AlloyInstance oldInstance, AlloyProjection p
List newTuple = oldTuple.project(list);
List newObj = r.project(list);
if (newObj.size() > 1 && newTuple.size() > 1) {
- AlloyRelation r2 = new AlloyRelation(r.getName(), r.isPrivate, r.isMeta, newObj);
+ AlloyRelation r2 = new AlloyRelation(r.getName(), r.isPrivate, r.isMeta, r.isVar, newObj);
Set answer = rel2tuples.get(r2);
if (answer == null)
rel2tuples.put(r2, answer = new LinkedHashSet());
@@ -178,7 +180,7 @@ public static AlloyInstance project(AlloyInstance oldInstance, AlloyProjection p
Set answer = atom2sets.get(a);
if (answer == null)
atom2sets.put(a, answer = new LinkedHashSet());
- answer.add(new AlloySet(r.getName(), r.isPrivate, r.isMeta, newObj.get(0)));
+ answer.add(new AlloySet(r.getName(), r.isPrivate, r.isMeta, r.isVar, newObj.get(0)));
}
}
}
diff --git a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/VizGUI.java b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/VizGUI.java
index 742dcd14b..958bf56cd 100644
--- a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/VizGUI.java
+++ b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/VizGUI.java
@@ -18,27 +18,42 @@
import static edu.mit.csail.sdg.alloy4.OurUtil.menu;
import static edu.mit.csail.sdg.alloy4.OurUtil.menuItem;
+import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Polygon;
+import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Path2D;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.StringJoiner;
import java.util.prefs.Preferences;
import javax.swing.Box;
+import javax.swing.BoxLayout;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JComponent;
@@ -69,11 +84,29 @@
import edu.mit.csail.sdg.alloy4.Util;
import edu.mit.csail.sdg.alloy4.Version;
import edu.mit.csail.sdg.alloy4graph.GraphViewer;
+import edu.mit.csail.sdg.ast.Expr;
+import edu.mit.csail.sdg.ast.ExprConstant;
+import edu.mit.csail.sdg.ast.ExprVar;
+import edu.mit.csail.sdg.ast.Sig;
+import edu.mit.csail.sdg.translator.A4Solution;
+import edu.mit.csail.sdg.translator.A4Tuple;
+import edu.mit.csail.sdg.translator.A4TupleSet;
/**
* GUI main window for the visualizer.
*
* Thread Safety: Can be called only by the AWT event thread.
+ *
+ * @modified [electrum] support for visualization of traces; multiple states
+ * presented side-by-side (each with own viz state); (navigable)
+ * overview of the trace shape; evaluator also acts on focused state;
+ * if the Alloy model is static, should revert to classic viz; all
+ * theme management applies to all graphs; support for exporting an
+ * instance as an Alloy formula; added support for new operations over
+ * traces, next config, next path, next init, fork at given state
+ * (toolbar/menu buttons); communication with the enumerator which now
+ * expects an additional parameter with selected operation to be
+ * passed too the A4Solution
*/
public final class VizGUI implements ComponentListener {
@@ -111,7 +144,10 @@ public final class VizGUI implements ComponentListener {
private final JButton projectionButton, openSettingsButton, closeSettingsButton, magicLayout,
loadSettingsButton, saveSettingsButton, saveAsSettingsButton, resetSettingsButton, updateSettingsButton,
openEvaluatorButton, closeEvaluatorButton, enumerateButton, vizButton, treeButton,
- txtButton, tableButton/* , dotButton, xmlButton */;
+ txtButton, tableButton, leftNavButton, rightNavButton, cnfgButton, forkButton, initButton, pathButton/*
+ * , dotButton,
+ * xmlButton
+ */;
/**
* This list must contain all the display mode buttons (that is, vizButton,
@@ -128,6 +164,21 @@ public final class VizGUI implements ComponentListener {
/** The "show next" menu item. */
private final JMenuItem enumerateMenu;
+ /** The "fresh config" menu item. */
+ private final JMenuItem cnfgMenu;
+
+ /** The "fresh path" menu item. */
+ private final JMenuItem pathMenu;
+
+ /** The "fork next" menu item. */
+ private final JMenuItem forkMenu;
+
+ /** The "fork init" menu item. */
+ private final JMenuItem initMenu;
+
+ /** The trace navigation menu items. */
+ private final JMenuItem rightNavMenu, leftNavMenu;
+
/** Current font size. */
private int fontSize = 12;
@@ -138,18 +189,24 @@ public final class VizGUI implements ComponentListener {
private int settingsOpen = 0;
/**
- * The current instance and visualization settings; null if none is loaded.
+ * Whether the previous iteration operation was a next init/fork (which disables
+ * next path until a next config).
*/
- private VizState myState = null;
+ private boolean seg_iteration = false;
+
+ /**
+ * The current states and visualization settings; null if none is loaded.
+ */
+ private List myStates = new ArrayList();
/**
* Returns the current visualization settings (and you can call
- * getOriginalInstance() on it to get the current instance). If you make changes
- * to the state, you should call doApply() on the VizGUI object to refresh the
- * screen.
+ * getOriginalInstance() on it to get the current state of the instance). If you
+ * make changes to the state, you should call doApply() on the VizGUI object to
+ * refresh the screen.
*/
- public VizState getVizState() {
- return myState;
+ public List getVizState() {
+ return myStates;
}
/**
@@ -163,10 +220,17 @@ public VizState getVizState() {
private OurConsole myEvaluatorPanel = null;
/**
- * The graphical panel to the right; null if it is not yet loaded.
+ * The graphical panel at the lower-side of the the right panel; null if it is
+ * not yet loaded.
*/
private VizGraphPanel myGraphPanel = null;
+ /**
+ * The panel to the right, containing the graph and the temporal navigation
+ * panel; null if it is not yet loaded.
+ */
+ private JPanel mySplitTemporal = null;
+
/**
* The splitpane between the customization panel and the graph panel.
*/
@@ -207,6 +271,11 @@ public JFrame getFrame() {
*/
private final Computer enumerator;
+ /**
+ * Number of trace states to depict in graph mode.
+ */
+ private final int statepanes;
+
// ==============================================================================================//
/**
@@ -488,7 +557,7 @@ public void run() {
* will initially hide the window.
*/
public VizGUI(boolean standalone, String xmlFileName, JMenu windowmenu) {
- this(standalone, xmlFileName, windowmenu, null, null);
+ this(standalone, xmlFileName, windowmenu, null, null, 1);
}
/**
@@ -504,12 +573,13 @@ public VizGUI(boolean standalone, String xmlFileName, JMenu windowmenu) {
* @param enumerator - if it's not null, it provides solution enumeration
* ability
* @param evaluator - if it's not null, it provides solution evaluation ability
+ * @param panes - the number of states that will be shown
*
* Note: if standalone==false and xmlFileName.length()==0, then we
* will initially hide the window.
*/
- public VizGUI(boolean standalone, String xmlFileName, JMenu windowmenu, Computer enumerator, Computer evaluator) {
- this(standalone, xmlFileName, windowmenu, enumerator, evaluator, true);
+ public VizGUI(boolean standalone, String xmlFileName, JMenu windowmenu, Computer enumerator, Computer evaluator, int panes) {
+ this(standalone, xmlFileName, windowmenu, enumerator, evaluator, true, panes);
}
/**
@@ -527,12 +597,13 @@ public VizGUI(boolean standalone, String xmlFileName, JMenu windowmenu, Computer
* @param evaluator - if it's not null, it provides solution evaluation ability
* @param makeWindow - if false, then we will only construct the JSplitPane,
* without making the window
+ * @param panes - the number of states that will be shown side-by-side
*
* Note: if standalone==false and xmlFileName.length()==0 and
* makeWindow==true, then we will initially hide the window.
*/
- public VizGUI(boolean standalone, String xmlFileName, JMenu windowmenu, Computer enumerator, Computer evaluator, boolean makeWindow) {
-
+ public VizGUI(boolean standalone, String xmlFileName, JMenu windowmenu, Computer enumerator, Computer evaluator, boolean makeWindow, int panes) {
+ this.statepanes = panes == 0 ? 1 : panes;
this.enumerator = enumerator;
this.standalone = standalone;
this.evaluator = evaluator;
@@ -570,6 +641,7 @@ else if (height < 100)
JMenu exportMenu = menu(null, "&Export To", null);
menuItem(exportMenu, "Dot...", 'D', 'D', doExportDot());
menuItem(exportMenu, "XML...", 'X', 'X', doExportXml());
+ menuItem(exportMenu, "Predicate...", 'P', 'P', doExportPred());
fileMenu.add(exportMenu);
menuItem(fileMenu, "Close", 'W', 'W', doClose());
if (standalone)
@@ -577,7 +649,15 @@ else if (height < 100)
else
menuItem(fileMenu, "Close All", 'A', doCloseAll());
JMenu instanceMenu = menu(mb, "&Instance", null);
- enumerateMenu = menuItem(instanceMenu, "Show Next Solution", 'N', 'N', doNext());
+ enumerateMenu = menuItem(instanceMenu, "Show New Solution", 'N', 'N', doNext());
+ // [electrum] new iteration operation buttons
+ cnfgMenu = menuItem(instanceMenu, "Show New Configuration", 'C', 'C', doConfig());
+ pathMenu = menuItem(instanceMenu, "Show New Path", 'P', 'P', doPath());
+ initMenu = menuItem(instanceMenu, "Show New Initial State", 'I', 'I', doInit());
+ forkMenu = menuItem(instanceMenu, "Show New Fork", 'F', 'F', doFork());
+ // [electrum] trace navigation buttons
+ leftNavMenu = menuItem(instanceMenu, "Show Previous State", KeyEvent.VK_LEFT, KeyEvent.VK_LEFT, doNavLeft());
+ rightNavMenu = menuItem(instanceMenu, "Show Next State", KeyEvent.VK_LEFT, KeyEvent.VK_RIGHT, doNavRight());
thememenu = menu(mb, "&Theme", doRefreshTheme());
if (standalone || windowmenu == null)
windowmenu = menu(mb, "&Window", doRefreshWindow());
@@ -628,7 +708,15 @@ public void actionPerformed(ActionEvent e) {
toolbar.add(magicLayout = OurUtil.button("Magic Layout", "Automatic theme customization (will reset current theme)", "images/24_settings_apply2.gif", doMagicLayout()));
toolbar.add(openEvaluatorButton = OurUtil.button("Evaluator", "Open the evaluator", "images/24_settings.gif", doOpenEvalPanel()));
toolbar.add(closeEvaluatorButton = OurUtil.button("Close Evaluator", "Close the evaluator", "images/24_settings_close2.gif", doCloseEvalPanel()));
- toolbar.add(enumerateButton = OurUtil.button("Next", "Show the next solution", "images/24_history.gif", doNext()));
+ toolbar.add(enumerateButton = OurUtil.button("New", "Show a new solution", "images/24_history.gif", doNext()));
+ // [electrum] new iteration operation buttons
+ toolbar.add(cnfgButton = OurUtil.button("New Config", "Show a new configuration", "images/24_history.gif", doConfig()));
+ toolbar.add(pathButton = OurUtil.button("New Path", "Show a new path", "images/24_history.gif", doPath()));
+ toolbar.add(initButton = OurUtil.button("New Init", "Show a new initial state", "images/24_history.gif", doInit()));
+ toolbar.add(forkButton = OurUtil.button("New Fork", "Show a new fork", "images/24_history.gif", doFork()));
+ // [electrum] trace navigation buttons
+ toolbar.add(leftNavButton = OurUtil.button(new String(Character.toChars(0x2190)), "Show the previous state", "images/24_history.gif", doNavLeft()));
+ toolbar.add(rightNavButton = OurUtil.button(new String(Character.toChars(0x2192)), "Show the next state", "images/24_history.gif", doNavRight()));
toolbar.add(projectionButton);
toolbar.add(loadSettingsButton = OurUtil.button("Load", "Load the theme customization from a theme file", "images/24_open.gif", doLoadTheme()));
toolbar.add(saveSettingsButton = OurUtil.button("Save", "Save the current theme customization", "images/24_save.gif", doSaveTheme()));
@@ -713,17 +801,18 @@ public void componentHidden(ComponentEvent e) {
}
/**
- * Helper method that repopulates the Porjection popup menu.
+ * Helper method that repopulates the Projection popup menu.
*/
private void repopulateProjectionPopup() {
int num = 0;
String label = "Projection: none";
- if (myState == null) {
+ if (myStates.isEmpty()) {
projectionButton.setEnabled(false);
return;
}
projectionButton.setEnabled(true);
projectionPopup.removeAll();
+ VizState myState = myStates.get(statepanes - 1);
final Set projected = myState.getProjectedTypes();
for (final AlloyType t : myState.getOriginalModel().getTypes())
if (myState.canProject(t)) {
@@ -733,10 +822,12 @@ private void repopulateProjectionPopup() {
@Override
public void actionPerformed(ActionEvent e) {
- if (on)
- myState.deproject(t);
- else
- myState.project(t);
+ // [electrum] apply projection to all states
+ for (VizState myState : myStates)
+ if (on)
+ myState.deproject(t);
+ else
+ myState.project(t);
updateDisplay();
}
});
@@ -755,7 +846,7 @@ public void actionPerformed(ActionEvent e) {
* latest settings.
*/
private void updateDisplay() {
- if (myState == null)
+ if (myStates.isEmpty())
return;
// First, update the toolbar
currentMode.set();
@@ -776,7 +867,11 @@ private void updateDisplay() {
default :
vizButton.setEnabled(false);
}
- final boolean isMeta = myState.getOriginalInstance().isMetamodel;
+ // [electrum] this info is the same in all states
+ final AlloyInstance oInst = myStates.get(statepanes - 1).getOriginalInstance();
+ final boolean isMeta = oInst.isMetamodel;
+ final boolean isTrace = oInst.originalA4.getMaxTrace() >= 0;
+ final boolean hasConfigs = oInst.originalA4.hasConfigs();
vizButton.setVisible(frame != null);
treeButton.setVisible(frame != null);
txtButton.setVisible(frame != null);
@@ -794,15 +889,40 @@ private void updateDisplay() {
openEvaluatorButton.setVisible(!isMeta && settingsOpen == 0 && evaluator != null);
closeEvaluatorButton.setVisible(!isMeta && settingsOpen == 2 && evaluator != null);
enumerateMenu.setEnabled(!isMeta && settingsOpen == 0 && enumerator != null);
- enumerateButton.setVisible(!isMeta && settingsOpen == 0 && enumerator != null);
+ // [electrum] hide buttons if static; disable previous at first state
+ enumerateMenu.setVisible(!isTrace);
+ enumerateButton.setVisible(!isMeta && settingsOpen == 0 && enumerator != null && !isTrace);
+ initMenu.setEnabled(!isMeta && settingsOpen == 0 && enumerator != null);
+ initMenu.setVisible(isTrace);
+ initButton.setVisible(!isMeta && settingsOpen == 0 && enumerator != null && isTrace);
+ // [electrum] after fork cannot iterate path (would not guarantee non-isomorphic solutions)
+ pathMenu.setEnabled(!isMeta && settingsOpen == 0 && enumerator != null && !seg_iteration);
+ pathMenu.setVisible(isTrace);
+ pathButton.setVisible(!isMeta && settingsOpen == 0 && enumerator != null && isTrace);
+ pathButton.setEnabled(!seg_iteration);
+ // [electrum] if no static relations, do not allow next config (would always return the same solution)
+ cnfgMenu.setEnabled(!isMeta && settingsOpen == 0 && enumerator != null && hasConfigs);
+ cnfgMenu.setVisible(isTrace);
+ cnfgButton.setVisible(!isMeta && settingsOpen == 0 && enumerator != null && isTrace);
+ cnfgButton.setEnabled(hasConfigs);
+ forkMenu.setEnabled(!isMeta && settingsOpen == 0 && enumerator != null);
+ forkMenu.setVisible(isTrace);
+ forkButton.setVisible(!isMeta && settingsOpen == 0 && enumerator != null && isTrace);
+ leftNavButton.setVisible(!isMeta && isTrace);
+ leftNavButton.setEnabled(current > 0);
+ leftNavMenu.setEnabled(!isMeta && current > 0);
+ leftNavButton.setText(new String(current > 0 ? Character.toChars(0x2190) : Character.toChars(0x21e4)));
+ rightNavButton.setVisible(!isMeta && isTrace);
+ rightNavMenu.setEnabled(!isMeta);
toolbar.setVisible(true);
// Now, generate the graph or tree or textarea that we want to display
// on the right
if (frame != null)
frame.setTitle(makeVizTitle());
+ // [electrum] all visualizations focus on current state
switch (currentMode) {
case Tree : {
- final VizTree t = new VizTree(myState.getOriginalInstance().originalA4, makeVizTitle(), fontSize);
+ final VizTree t = new VizTree(myStates.get(statepanes - 1).getOriginalInstance().originalA4, makeVizTitle(), fontSize, current);
final JScrollPane scroll = OurUtil.scrollpane(t, Color.BLACK, Color.WHITE, new OurBorder(true, false, true, false));
scroll.addFocusListener(new FocusListener() {
@@ -819,12 +939,12 @@ public final void focusLost(FocusEvent e) {
break;
}
case TEXT : {
- String textualOutput = myState.getOriginalInstance().originalA4.toString();
+ String textualOutput = myStates.get(statepanes - 1).getOriginalInstance().originalA4.toString(current);
content = getTextComponent(textualOutput);
break;
}
case TABLE : {
- String textualOutput = myState.getOriginalInstance().originalA4.format();
+ String textualOutput = myStates.get(statepanes - 1).getOriginalInstance().originalA4.format(current);
content = getTextComponent(textualOutput);
break;
}
@@ -833,15 +953,60 @@ public final void focusLost(FocusEvent e) {
// break;
// }
default : {
- if (myGraphPanel == null) {
- myGraphPanel = new VizGraphPanel(frame, myState, false);
+ List numPanes = isTrace && !isMeta ? myStates : myStates.subList(statepanes - 1, statepanes);
+ if (myGraphPanel == null || numPanes.size() != myGraphPanel.numPanels()) {
+ if (isTrace && !isMeta) // [electrum] test whether trace
+ myGraphPanel = new VizGraphPanel(frame, myStates, false);
+ else
+ myGraphPanel = new VizGraphPanel(frame, myStates.subList(statepanes - 1, statepanes), false);
} else {
+ if (isTrace && !isMeta) {
+ for (int i = 0; i < statepanes; i++) {
+ File f = new File(getXMLfilename());
+ try {
+ if (!f.exists())
+ throw new IOException("File " + getXMLfilename() + " does not exist.");
+
+ if (current + i < 0) {
+ getVizState().set(i, null);
+ } else {
+ AlloyInstance myInstance = StaticInstanceReader.parseInstance(f, current + i);
+ if (getVizState().get(i) != null)
+ getVizState().get(i).loadInstance(myInstance);
+ else {
+ getVizState().set(i, new VizState(getVizState().get(statepanes - 1))); // [electrum] get the previous state (including theme)
+ getVizState().get(i).loadInstance(myInstance);
+ }
+ }
+ } catch (Throwable e) {
+ OurDialog.alert(frame, "Cannot read or parse Alloy instance: " + xmlFileName + "\n\nError: " + e.getMessage());
+ doCloseAll();
+ return;
+ }
+ }
+ }
myGraphPanel.seeDot(frame, false);
myGraphPanel.remakeAll(frame);
}
- }
content = myGraphPanel;
+ }
+ }
+
+ // [electrum] update the trace overview
+ if (isTrace && !isMeta) {
+ JComponent aux = content;
+
+ JPanel tmpNavScrollPanel = new JPanel();
+ tmpNavScrollPanel.setLayout(new BoxLayout(tmpNavScrollPanel, BoxLayout.PAGE_AXIS));
+ tmpNavScrollPanel.add(traceGraph());
+ final Box instanceTopBox = Box.createVerticalBox();
+ instanceTopBox.add(tmpNavScrollPanel);
+ content = new JPanel(new BorderLayout());
+ content.add(instanceTopBox, BorderLayout.NORTH);
+ content.add(aux, BorderLayout.CENTER);
+ content.setVisible(true);
}
+
// Now that we've re-constructed "content", let's set its font size
if (currentMode != VisualizerMode.Tree) {
content.setFont(OurUtil.getVizFont().deriveFont((float) fontSize));
@@ -863,15 +1028,17 @@ public final void focusLost(FocusEvent e) {
JComponent left = null;
if (settingsOpen == 1) {
if (myCustomPanel == null)
- myCustomPanel = new VizCustomizationPanel(splitpane, myState);
+ myCustomPanel = new VizCustomizationPanel(splitpane, myStates.get(statepanes - 1));
else
myCustomPanel.remakeAll();
left = myCustomPanel;
} else if (settingsOpen > 1) {
if (myEvaluatorPanel == null)
- myEvaluatorPanel = new OurConsole(evaluator, true, "The ", true, "Alloy Evaluator ", false, "allows you to type\nin Alloy expressions and see their values.\nFor example, ", true, "univ", false, " shows the list of all atoms.\n(You can press UP and DOWN to recall old inputs).\n");
+ myEvaluatorPanel = new OurConsole(evaluator, true, "The ", true, "Alloy Evaluator ", false, "allows you to type\nin Alloy expressions and see their values\nat the currently focused state (left-hand side).\nFor example, ", true, "univ", false, " shows the list of all\natoms on the left-hand state.\n(You can press UP and DOWN to recall old inputs).\n");
try {
evaluator.compute(new File(xmlFileName));
+ // [electrum] evaluator acts on current state
+ myEvaluatorPanel.setCurrentState(current);
} catch (Exception ex) {
} // exception should not happen
left = myEvaluatorPanel;
@@ -920,8 +1087,9 @@ private JButton makeSolutionButton(String label, String toolTip, String image, A
* being displayed.
*/
private String makeVizTitle() {
- String filename = (myState != null ? myState.getOriginalInstance().filename : "");
- String commandname = (myState != null ? myState.getOriginalInstance().commandname : "");
+ // [electrum] this info is the same in all states
+ String filename = (!myStates.isEmpty() ? myStates.get(statepanes - 1).getOriginalInstance().filename : "");
+ String commandname = (!myStates.isEmpty() ? myStates.get(statepanes - 1).getOriginalInstance().commandname : "");
int i = filename.lastIndexOf('/');
if (i >= 0)
filename = filename.substring(i + 1);
@@ -1002,29 +1170,46 @@ public GraphViewer getViewer() {
/** Load the XML instance. */
public void loadXML(final String fileName, boolean forcefully) {
+ loadXML(fileName, forcefully, current);
+ }
+
+ /** Load the XML instance. */
+ public void loadXML(final String fileName, boolean forcefully, int state) {
+ current = state;
final String xmlFileName = Util.canon(fileName);
File f = new File(xmlFileName);
+ if (!forcefully)
+ seg_iteration = false;
if (forcefully || !xmlFileName.equals(this.xmlFileName)) {
- AlloyInstance myInstance;
- try {
- if (!f.exists())
- throw new IOException("File " + xmlFileName + " does not exist.");
- myInstance = StaticInstanceReader.parseInstance(f);
- } catch (Throwable e) {
- xmlLoaded.remove(fileName);
- xmlLoaded.remove(xmlFileName);
- OurDialog.alert(frame, "Cannot read or parse Alloy instance: " + xmlFileName + "\n\nError: " + e.getMessage());
- if (xmlLoaded.size() > 0) {
- loadXML(xmlLoaded.get(xmlLoaded.size() - 1), false);
+ // [electrum] update all viz states
+ for (int i = 0; i < statepanes; i++) {
+ try {
+ if (!f.exists())
+ throw new IOException("File " + xmlFileName + " does not exist.");
+ if (i >= myStates.size()) {
+ AlloyInstance myInstance = StaticInstanceReader.parseInstance(f, state + i);
+ myStates.add(new VizState(myInstance));
+ } else {
+ VizState vstate = myStates.get(i);
+ AlloyInstance myInstance = StaticInstanceReader.parseInstance(f, state + i);
+ if (vstate == null)
+ vstate = new VizState(myInstance);
+ else
+ vstate.loadInstance(myInstance);
+ myStates.set(i, vstate);
+ }
+ } catch (Throwable e) {
+ xmlLoaded.remove(fileName);
+ xmlLoaded.remove(xmlFileName);
+ OurDialog.alert(frame, "Cannot read or parse Alloy instance: " + xmlFileName + "\n\nError: " + e.getMessage());
+ if (xmlLoaded.size() > 0) {
+ loadXML(xmlLoaded.get(xmlLoaded.size() - 1), false, state + i);
+ return;
+ }
+ doCloseAll();
return;
}
- doCloseAll();
- return;
}
- if (myState == null)
- myState = new VizState(myInstance);
- else
- myState.loadInstance(myInstance);
repopulateProjectionPopup();
xml2title.put(xmlFileName, makeVizTitle());
this.xmlFileName = xmlFileName;
@@ -1047,11 +1232,12 @@ public void loadXML(final String fileName, boolean forcefully) {
/** This method loads a specific theme file. */
public boolean loadThemeFile(String filename) {
- if (myState == null)
+ if (myStates.isEmpty())
return false; // Can only load if there is a VizState loaded
filename = Util.canon(filename);
try {
- myState.loadPaletteXML(filename);
+ for (VizState myState : myStates) // [electrum] applly theme to all states
+ myState.loadPaletteXML(filename);
} catch (IOException ex) {
OurDialog.alert(frame, "Error: " + ex.getMessage());
return false;
@@ -1072,7 +1258,7 @@ public boolean loadThemeFile(String filename) {
* user); returns true if it succeeded.
*/
public boolean saveThemeFile(String filename) {
- if (myState == null)
+ if (myStates.isEmpty())
return false; // Can only save if there is a VizState loaded
if (filename == null) {
File file = OurDialog.askFile(frame, false, null, ".thm", ".thm theme files");
@@ -1086,7 +1272,7 @@ public boolean saveThemeFile(String filename) {
}
filename = Util.canon(filename);
try {
- myState.savePaletteXML(filename);
+ myStates.get(statepanes - 1).savePaletteXML(filename); // [electrum] same theme in all states
filename = Util.canon(filename); // Since the canon name may have
// changed
addThemeHistory(filename);
@@ -1122,7 +1308,7 @@ private Runner doLoad() {
if (file == null)
return null;
Util.setCurrentDirectory(file.getParentFile());
- loadXML(file.getPath(), true);
+ loadXML(file.getPath(), true, 0);
return null;
}
@@ -1201,14 +1387,17 @@ private Runner doLoadTheme() {
String defaultTheme = System.getProperty("alloy.theme0");
if (defaultTheme == null)
defaultTheme = "";
- if (myState == null)
+ if (myStates.isEmpty())
return null; // Can only load if there is a VizState loaded
- if (myState.changedSinceLastSave()) {
- char opt = OurDialog.askSaveDiscardCancel(frame, "The current theme");
- if (opt == 'c')
- return null;
- if (opt == 's' && !saveThemeFile(thmFileName.length() == 0 ? null : thmFileName))
- return null;
+ // [electrum] apply theme to all states
+ for (VizState myState : myStates) {
+ if (myState.changedSinceLastSave()) {
+ char opt = OurDialog.askSaveDiscardCancel(frame, "The current theme");
+ if (opt == 'c')
+ return null;
+ if (opt == 's' && !saveThemeFile(thmFileName.length() == 0 ? null : thmFileName))
+ return null;
+ }
}
File file = OurDialog.askFile(frame, true, null, ".thm", ".thm theme files");
if (file != null) {
@@ -1228,14 +1417,17 @@ private Runner doLoadSampleTheme() {
String defaultTheme = System.getProperty("alloy.theme0");
if (defaultTheme == null)
defaultTheme = "";
- if (myState == null)
+ if (myStates.isEmpty())
return null; // Can only load if there is a VizState loaded
- if (myState.changedSinceLastSave()) {
- char opt = OurDialog.askSaveDiscardCancel(frame, "The current theme");
- if (opt == 'c')
- return null;
- if (opt == 's' && !saveThemeFile(thmFileName.length() == 0 ? null : thmFileName))
- return null;
+ // [electrum] apply theme to all states
+ for (VizState myState : myStates) {
+ if (myState.changedSinceLastSave()) {
+ char opt = OurDialog.askSaveDiscardCancel(frame, "The current theme");
+ if (opt == 'c')
+ return null;
+ if (opt == 's' && !saveThemeFile(thmFileName.length() == 0 ? null : thmFileName))
+ return null;
+ }
}
File file = OurDialog.askFile(frame, true, defaultTheme, ".thm", ".thm theme files");
if (file != null)
@@ -1305,15 +1497,135 @@ private Runner doExportXml() {
return null;
}
+ /**
+ * Export the current instance as an Alloy formula that exactly represents it.
+ */
+ // [electrum] ad hoc implementation since Alloy lacks a proper pretty printer
+ // also, conjunctions would be printed as lists, which can't be parsed back
+ private Runner doExportPred() {
+ if (wrap)
+ return wrapMe();
+ if (myStates.isEmpty())
+ return null;
+
+ Map reifs = new HashMap();
+ A4Solution inst = myStates.get(myStates.size() - 1).getOriginalInstance().originalA4;
+
+ // calculate the values of the static relations
+ StringJoiner config = new StringJoiner(" and ");
+ for (Sig s : inst.getAllReachableSigs()) {
+ if (s.isPrivate != null || s.isVariable != null || s.equals(Sig.UNIV) || s.equals(Sig.NONE))
+ continue;
+ A4TupleSet ts = inst.eval(s);
+ Expr tupleset = null;
+ for (A4Tuple t : ts) {
+ Expr tuple = null;
+ for (int ai = 0; ai < t.arity(); ai++) {
+ Expr atom;
+ if (t.atom(ai).matches("-?\\d+")) {
+ atom = ExprConstant.makeNUMBER(Integer.valueOf(t.atom(ai)));
+ } else {
+ atom = reifs.computeIfAbsent("_" + t.atom(ai).replace("$", "").replace("/", "_"), k -> ExprVar.make(null, k));
+ }
+ tuple = tuple == null ? atom : tuple.product(tuple);
+ }
+ tupleset = tupleset == null ? tuple : tupleset.plus(tuple);
+ }
+ if (tupleset == null) {
+ tupleset = ExprConstant.EMPTYNESS;
+ for (int ai = 0; ai < ts.arity() - 1; ai++)
+ tupleset = tupleset.product(ExprConstant.EMPTYNESS);
+ }
+ config.add(s.equal(tupleset).toString());
+ }
+
+ // calculate the values of the variable relations
+ List states = new ArrayList();
+ for (int i = 0; i < inst.getTraceLength(); i++) {
+ StringJoiner state = new StringJoiner(" and ");
+ for (Sig s : inst.getAllReachableSigs()) {
+ if (s.isPrivate != null || (s.isVariable == null && !s.equals(Sig.UNIV)))
+ continue;
+ A4TupleSet ts = inst.eval(s, i);
+ Expr tupleset = null;
+ for (A4Tuple t : ts) {
+ Expr tuple = null;
+ for (int ai = 0; ai < t.arity(); ai++) {
+ Expr atom;
+ if (t.atom(ai).matches("-?\\d+")) {
+ atom = ExprConstant.makeNUMBER(Integer.valueOf(t.atom(ai)));
+ } else {
+ atom = reifs.computeIfAbsent("_" + t.atom(ai).replace("$", "").replace("/", "_"), k -> ExprVar.make(null, k));
+ }
+ tuple = tuple == null ? atom : tuple.product(tuple);
+ }
+ tupleset = tupleset == null ? tuple : tupleset.plus(tuple);
+ }
+ if (tupleset == null) {
+ tupleset = ExprConstant.EMPTYNESS;
+ for (int ai = 0; ai < ts.arity() - 1; ai++)
+ tupleset = tupleset.product(ExprConstant.EMPTYNESS);
+ }
+ state.add(s.equal(tupleset).toString());
+ }
+ states.add(state.toString());
+ }
+ StringBuilder sb = new StringBuilder();
+ if (!reifs.isEmpty()) {
+ // quantify over all atoms of all univs (univ changes over time)
+ sb.append("some disj ");
+ StringJoiner sj = new StringJoiner(",");
+ for (ExprVar v : reifs.values())
+ sj.add(v.toString());
+ sb.append(sj.toString());
+ sb.append(" : ");
+ Expr unvs = Sig.UNIV;
+ for (int i = 0; i < inst.getTraceLength() - 1; i++)
+ unvs = Sig.UNIV.plus(unvs.prime());
+ sb.append(unvs.toString());
+ }
+ sb.append(" {\n ");
+ // print config
+ sb.append(config.toString());
+ sb.append("\n\n ");
+ // print prefix
+ StringJoiner statesj = new StringJoiner(";\n ");
+ for (String s : states)
+ statesj.add(s);
+ sb.append(statesj.toString());
+ sb.append("\n\n ");
+ // print looping suffix
+ if (inst.getMaxTrace() >= 0) {
+ for (int i = 0; i < inst.getLoopState(); i++)
+ sb.append("after ");
+ sb.append(" {\n");
+ for (int i = inst.getLoopState(); i < inst.getTraceLength(); i++) {
+ StringBuilder sa = new StringBuilder("");
+ for (int j = inst.getLoopState(); j < inst.getTraceLength(); j++)
+ sa.append("after ");
+ sa.append("(");
+ sa.append(states.get(i));
+ sa.append(")");
+ sb.append(" (" + states.get(i) + ") implies " + sa.toString() + "\n");
+ }
+ sb.append(" }\n");
+ }
+ sb.append("}\n");
+
+ OurDialog.showtext("Text Viewer", sb.toString());
+ return null;
+ }
+
/** This method resets the current theme. */
private Runner doResetTheme() {
if (wrap)
return wrapMe();
- if (myState == null)
+ if (myStates.isEmpty())
return null;
if (!OurDialog.yesno(frame, "Are you sure you wish to clear all your customizations?", "Yes, clear them", "No, keep them"))
return null;
- myState.resetTheme();
+ for (VizState myState : myStates)
+ myState.resetTheme();
repopulateProjectionPopup();
if (myCustomPanel != null)
myCustomPanel.remakeAll();
@@ -1330,15 +1642,17 @@ private Runner doResetTheme() {
private Runner doMagicLayout() {
if (wrap)
return wrapMe();
- if (myState == null)
+ if (myStates.isEmpty())
return null;
if (!OurDialog.yesno(frame, "This will clear your original customizations. Are you sure?", "Yes, clear them", "No, keep them"))
return null;
- myState.resetTheme();
- try {
- MagicLayout.magic(myState);
- MagicColor.magic(myState);
- } catch (Throwable ex) {
+ for (VizState myState : myStates) {
+ myState.resetTheme();
+ try {
+ MagicLayout.magic(myState);
+ MagicColor.magic(myState);
+ } catch (Throwable ex) {
+ }
}
repopulateProjectionPopup();
if (myCustomPanel != null)
@@ -1397,6 +1711,36 @@ private Runner doZoom() {
return wrapMe();
}
+ /**
+ * Navigates the trace being visualized to the left, unless already in the first
+ * state.
+ */
+ private Runner doNavLeft() {
+ if (wrap)
+ return wrapMe();
+ if (current > 0) {
+ current--;
+ updateDisplay();
+ }
+ return null;
+ }
+
+ /**
+ * Navigates the trace being visualized to the right, unrolling the loop if
+ * needed.
+ */
+ private Runner doNavRight() {
+ if (wrap)
+ return wrapMe();
+ int lst = getVizState().get(statepanes - 1).getOriginalInstance().originalA4.getTraceLength();
+ int lop = getVizState().get(statepanes - 1).getOriginalInstance().originalA4.getLoopState();
+ int lmx = current + 1 + statepanes > lst ? current + 1 + statepanes : lst;
+ int lox = lmx - (lst - lop);
+ current = normalize(current + 1, lmx, lox);
+ updateDisplay();
+ return null;
+ }
+
/**
* This method attempts to derive the next satisfying instance.
*/
@@ -1411,7 +1755,113 @@ private Runner doNext() {
OurDialog.alert(frame, "Cannot display the next solution since the analysis engine is not loaded with the visualizer.");
} else {
try {
- enumerator.compute(xmlFileName);
+ enumerator.compute(new String[] {
+ xmlFileName, -3 + ""
+ });
+ } catch (Throwable ex) {
+ OurDialog.alert(frame, ex.getMessage());
+ }
+ }
+ return null;
+ }
+
+ /**
+ * This method attempts to derive the next satisfying instance with a distinct
+ * configuration.
+ */
+ private Runner doConfig() {
+ if (wrap)
+ return wrapMe();
+ if (settingsOpen != 0)
+ return null;
+ if (xmlFileName.length() == 0) {
+ OurDialog.alert(frame, "Cannot display the next solution since no instance is currently loaded.");
+ } else if (enumerator == null) {
+ OurDialog.alert(frame, "Cannot display the next solution since the analysis engine is not loaded with the visualizer.");
+ } else {
+ try {
+ seg_iteration = false;
+ enumerator.compute(new String[] {
+ xmlFileName, -1 + ""
+ });
+ } catch (Throwable ex) {
+ OurDialog.alert(frame, ex.getMessage());
+ }
+ }
+ return null;
+ }
+
+ /**
+ * This method attempts to derive the next satisfying instance with a distinct
+ * path (but same configuration).
+ */
+ private Runner doPath() {
+ if (wrap)
+ return wrapMe();
+ if (settingsOpen != 0)
+ return null;
+ if (xmlFileName.length() == 0) {
+ OurDialog.alert(frame, "Cannot display the next solution since no instance is currently loaded.");
+ } else if (enumerator == null) {
+ OurDialog.alert(frame, "Cannot display the next solution since the analysis engine is not loaded with the visualizer.");
+ } else {
+ try {
+ seg_iteration = false;
+ enumerator.compute(new String[] {
+ xmlFileName, -2 + ""
+ });
+ } catch (Throwable ex) {
+ OurDialog.alert(frame, ex.getMessage());
+ }
+ }
+ return null;
+ }
+
+ /**
+ * This method attempts to derive the next satisfying instance with a distinct
+ * focused state (but same configuration and prefix).
+ */
+ private Runner doFork() {
+ if (wrap)
+ return wrapMe();
+ if (settingsOpen != 0)
+ return null;
+ if (xmlFileName.length() == 0) {
+ OurDialog.alert(frame, "Cannot display the next solution since no instance is currently loaded.");
+ } else if (enumerator == null) {
+ OurDialog.alert(frame, "Cannot display the next solution since the analysis engine is not loaded with the visualizer.");
+ } else {
+ try {
+ seg_iteration = true;
+ enumerator.compute(new String[] {
+ xmlFileName, current + 1 + ""
+ });
+ } catch (Throwable ex) {
+ OurDialog.alert(frame, ex.getMessage());
+ }
+ }
+ return null;
+ }
+
+ /**
+ * This method attempts to derive the next satisfying instance with a distinct
+ * initial state (but same configuration).
+ */
+ private Runner doInit() {
+ if (wrap)
+ return wrapMe();
+ if (settingsOpen != 0)
+ return null;
+ if (xmlFileName.length() == 0) {
+ OurDialog.alert(frame, "Cannot display the next solution since no instance is currently loaded.");
+ } else if (enumerator == null) {
+ OurDialog.alert(frame, "Cannot display the next solution since the analysis engine is not loaded with the visualizer.");
+ } else {
+ try {
+ seg_iteration = true;
+ enumerator.compute(new String[] {
+ xmlFileName, 0 + ""
+ });
} catch (Throwable ex) {
OurDialog.alert(frame, ex.getMessage());
}
@@ -1423,6 +1873,14 @@ private Runner doNext() {
* This method updates the graph with the current theme customization.
*/
private Runner doApply() {
+ if (!myStates.isEmpty()) {
+ // [electrum] apply theme to all states
+ for (int i = 0; i < myStates.size() - 1; i++) {
+ VizState ss = myStates.get(statepanes - 1);
+ myStates.set(i, new VizState(ss));
+ myStates.get(i).loadInstance(ss.getOriginalInstance());
+ }
+ }
if (!wrap)
updateDisplay();
return wrapMe();
@@ -1536,4 +1994,131 @@ public Runner doShowTable() {
// return wrapMe();
// }
+ /**
+ * The currently focused state (the one printed in the left-most graph panel).
+ */
+ private int current = 0;
+
+ /*
+ * Draws a graph depicting the shape of the trace being visualized. States are
+ * clickable for navigation.
+ */
+ private JPanel traceGraph() {
+
+ List states = new ArrayList();
+
+ JPanel trace = new JPanel() {
+
+ int heighti = 50;
+
+ @Override
+ public void paintComponent(Graphics g) {
+ states.clear();
+
+ Graphics2D g2 = (Graphics2D) g;
+ g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+
+ int radius = 12;
+ int dist = 45;
+ int offsety = 2 + heighti / 2;
+ // center and apply offset according to current state
+ int offsetx = this.getWidth() / 2 + ((dist - 2 * radius) / 2) - (dist * (current + 1));
+ int lst = getVizState().get(statepanes - 1).getOriginalInstance().originalA4.getTraceLength();
+ int lop = getVizState().get(statepanes - 1).getOriginalInstance().originalA4.getLoopState();
+ int lmx = current + statepanes > lst ? current + statepanes : lst;
+ int lox = lmx - (lst - lop);
+ Ellipse2D loop = null, last = null;
+ for (int i = 0; i < lmx; i++) {
+ g2.setStroke(new BasicStroke(2));
+ Ellipse2D circl = new Ellipse2D.Double(i * dist + offsetx, offsety - radius, 2.0 * radius, 2.0 * radius);
+ if (i == lmx - 1)
+ last = circl;
+ if (i == lox)
+ loop = circl;
+ Color tmp = g2.getColor();
+ int max = normalize(current + statepanes - 1, lmx, lox);
+ int min = normalize(current, lmx, lox);
+ if ((min <= max && i >= min && i <= max) || (min > max && (i >= min || (i <= max && i >= lox)))) {
+ g2.setColor(new Color(255, 255, 255));
+ } else {
+ g2.setColor(new Color(120, 120, 120));
+ }
+ g2.fill(circl);
+ g2.setColor(tmp);
+ g2.draw(circl);
+ FontMetrics mets = g2.getFontMetrics();
+ String lbl = normalize(i, lst, lop) + "";
+ g2.drawString(lbl, i * dist + radius + offsetx - (mets.stringWidth(lbl) / 2), offsety + (mets.getAscent() / 2));
+ states.add(circl);
+ g2.setStroke(new BasicStroke(1));
+ g2.setColor(new Color(0, 0, 0));
+ }
+
+ Polygon arrowHead = new Polygon();
+ arrowHead.addPoint(0, 4);
+ arrowHead.addPoint(-4, -4);
+ arrowHead.addPoint(4, -4);
+
+ for (int i = 0; i < lmx - 1; i++) {
+ Path2D path = new Path2D.Double();
+ path.moveTo(states.get(i).getMaxX(), states.get(i).getCenterY());
+ path.lineTo(states.get(i + 1).getMinX(), states.get(i + 1).getCenterY());
+ g2.draw(path);
+ AffineTransform tx = new AffineTransform();
+ tx.setToIdentity();
+ double angle = Math.atan2(0, 1);
+ tx.translate(states.get(i + 1).getMinX(), states.get(i + 1).getCenterY());
+ tx.rotate((angle - Math.PI / 2d));
+ g2.fill(tx.createTransformedShape(arrowHead));
+ }
+
+ Path2D path = new Path2D.Double();
+ path.moveTo(states.get(states.size() - 1).getCenterX(), states.get(states.size() - 1).getMinY());
+ path.curveTo(last.getCenterX() - 25, 0, loop.getCenterX() + 25, 0, loop.getCenterX(), loop.getMinY());
+ g2.draw(path);
+
+ AffineTransform tx = new AffineTransform();
+ tx.setToIdentity();
+ double angle = Math.atan2(loop.getMinY(), -dist / 2);
+ tx.translate(loop.getCenterX(), loop.getMinY());
+ tx.rotate(angle - Math.PI / 2d);
+ g2.fill(tx.createTransformedShape(arrowHead));
+ }
+
+ @Override
+ public Dimension getPreferredSize() {
+ return new Dimension(Integer.MAX_VALUE, heighti);
+ }
+
+ };
+ trace.addMouseListener(new MouseAdapter() {
+
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ for (int i = 0; i < states.size(); i++)
+ if (e.getButton() == 1 && states.get(i).contains(e.getX(), e.getY())) {
+ current = i;
+ updateDisplay();
+ break;
+ }
+ }
+
+ });
+ return trace;
+ }
+
+ /**
+ * Given an arbitrary positive index, calculates the corresponding state the in
+ * trace prefix after loop unrollings.
+ *
+ * @param idx current index
+ * @param length trace prefix length
+ * @param loop backloop state
+ * @return the corresponding state in the prefix
+ */
+ private int normalize(int idx, int length, int loop) {
+ int lln = length - loop;
+ return idx > loop ? (((idx - loop) % lln) + loop) : idx;
+ }
+
}
diff --git a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/VizGraphPanel.java b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/VizGraphPanel.java
index f65ae01f5..ded2b1f11 100644
--- a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/VizGraphPanel.java
+++ b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/VizGraphPanel.java
@@ -59,33 +59,38 @@
* GUI panel that houses the actual graph, as well as any projection comboboxes.
*
* Thread Safety: Can be called only by the AWT event thread.
+ *
+ * @modified [electrum] apply default style for mutable elements; a graph panel
+ * now holds a list of graphs (and associated components), each with
+ * its own viz state; assumes that cannot project over mutable
+ * variables;
*/
public final class VizGraphPanel extends JPanel {
/** This ensures the class can be serialized reliably. */
- private static final long serialVersionUID = 0;
+ private static final long serialVersionUID = 0;
- /** This is the current customization settings. */
- private final VizState vizState;
+ /** This is the current customization settings of each graph panel. */
+ private final List vizState;
/**
* Whether the user wants to see the DOT source code or not.
*/
- private boolean seeDot = false;
+ private boolean seeDot = false;
/**
- * The current GraphViewer (or null if we are not looking at a GraphViewer)
+ * The current GraphViewer (or null if we are not looking at a GraphViewer).
*/
- private GraphViewer viewer = null;
+ private List viewer = null;
/**
- * The scrollpane containing the upperhalf of the panel (showing the graph)
+ * The scrollpanes containing the upperhalf of the panel (showing the graphs).
*/
- private final JScrollPane diagramScrollPanel;
+ private final List diagramScrollPanels = new ArrayList();
- /** The upperhalf of the panel (showing the graph). */
- private final JPanel graphPanel;
+ /** The upperhalf of the panel (showing the graphs). */
+ private final List graphPanels = new ArrayList();
/**
* The lowerhalf of the panel (showing the comboboxes for choosing the projected
@@ -101,12 +106,12 @@ public final class VizGraphPanel extends JPanel {
/**
* The current projection choice; null if no projection is in effect.
*/
- private AlloyProjection currentProjection = null;
+ private AlloyProjection currentProjection = null;
/**
* This is the list of TypePanel(s) we've already constructed.
*/
- private final Map type2panel = new TreeMap();
+ private final Map type2panel = new TreeMap();
/**
* Inner class that displays a combo box of possible projection atom choices.
@@ -142,7 +147,7 @@ private boolean upToDate(AlloyType type, List atoms) {
if (!this.atoms.equals(atoms))
return false;
for (int i = 0; i < this.atoms.size(); i++) {
- String n = this.atoms.get(i).getVizName(vizState, true);
+ String n = this.atoms.get(i).getVizName(vizState.get(0), true);
if (!atomnames[i].equals(n))
return false;
}
@@ -167,7 +172,7 @@ private TypePanel(JFrame parent, AlloyType type, List atoms, AlloyAto
setBorder(null);
this.atomnames = new String[this.atoms.size()];
for (int i = 0; i < this.atoms.size(); i++) {
- atomnames[i] = this.atoms.get(i).getVizName(vizState, true);
+ atomnames[i] = this.atoms.get(i).getVizName(vizState.get(0), true);
if (this.atoms.get(i).equals(initialValue))
initialIndex = i;
}
@@ -248,14 +253,14 @@ public AlloyType getAlloyType() {
}
/**
- * Create a splitpane showing the graph on top, as well as projection comboboxes
- * on the bottom.
+ * Create a splitpane showing the graphs on top, as well as projection
+ * comboboxes on the bottom.
*
* @param vizState - the current visualization settings
* @param seeDot - true if we want to see the DOT source code, false if we want
* it rendered as a graph
*/
- public VizGraphPanel(JFrame parent, VizState vizState, boolean seeDot) {
+ public VizGraphPanel(JFrame parent, List vizState, boolean seeDot) {
Border b = new EmptyBorder(0, 0, 0, 0);
OurUtil.make(this, Color.BLACK, Color.WHITE, b);
this.seeDot = seeDot;
@@ -264,24 +269,53 @@ public VizGraphPanel(JFrame parent, VizState vizState, boolean seeDot) {
setMaximumSize(new Dimension(Short.MAX_VALUE, Short.MAX_VALUE));
navPanel = new JPanel();
JScrollPane navscroll = OurUtil.scrollpane(navPanel);
- graphPanel = OurUtil.make(new JPanel(), Color.BLACK, Color.WHITE, b);
+
+ // [electrum] container for all (diagram scroll) graph panels
+ JPanel diagramsScrollPanels = new JPanel();
+ diagramsScrollPanels.setLayout(new BoxLayout(diagramsScrollPanels, BoxLayout.LINE_AXIS));
+ for (int i = 0; i < vizState.size(); i++) {
+ JScrollPane diagramScrollPanel = createGraphPanel(i);
+ diagramScrollPanels.add(diagramScrollPanel);
+ diagramsScrollPanels.add(diagramScrollPanel);
+ diagramScrollPanel.setPreferredSize(new Dimension(0, 0));
+ }
+
+ split = OurUtil.splitpane(JSplitPane.VERTICAL_SPLIT, diagramsScrollPanels, navscroll, 0);
+ split.setResizeWeight(1.0);
+ split.setDividerSize(0);
+ add(split);
+ remakeAll(parent);
+ }
+
+ /**
+ * Creates a particular diagram scroll panel.
+ *
+ * @param i the i-th panel in the visualizer
+ * @return the i-th diagram graph panel
+ */
+ // [electrum] refactored from VizGraphPanel constructor so that multiple can be created
+ private JScrollPane createGraphPanel(int i) {
+ Border b = new EmptyBorder(0, 0, 0, 0);
+
+ JPanel graphPanel = OurUtil.make(new JPanel(), Color.BLACK, Color.WHITE, b);
+ graphPanels.add(graphPanel);
graphPanel.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent ev) {
- // We let Ctrl+LeftClick bring up the popup menu, just like
- // RightClick,
+ // We let Ctrl+LeftClick bring up the popup menu, just like RightClick,
// since many Mac mouses do not have a right button.
- if (viewer == null)
+ if (viewer.size() <= i)
return;
else if (ev.getButton() == MouseEvent.BUTTON3) {
- } else if (ev.getButton() == MouseEvent.BUTTON1 && ev.isControlDown()) {
- } else
+ } else if (ev.getButton() == MouseEvent.BUTTON1 && ev.isControlDown()) {} else
return;
- viewer.alloyPopup(graphPanel, ev.getX(), ev.getY());
+ if (graphPanel.contains(ev.getX(), ev.getY())) // [electrum] distinguish clicked panel
+ viewer.get(i).alloyPopup(graphPanel, ev.getX(), ev.getY());
}
});
- diagramScrollPanel = OurUtil.scrollpane(graphPanel, new OurBorder(true, true, true, false));
+
+ JScrollPane diagramScrollPanel = OurUtil.scrollpane(graphPanel, new OurBorder(true, true, true, false));
diagramScrollPanel.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {
@Override
@@ -300,19 +334,16 @@ public void adjustmentValueChanged(AdjustmentEvent e) {
diagramScrollPanel.validate();
}
});
- split = OurUtil.splitpane(JSplitPane.VERTICAL_SPLIT, diagramScrollPanel, navscroll, 0);
- split.setResizeWeight(1.0);
- split.setDividerSize(0);
- add(split);
- remakeAll(parent);
+ return diagramScrollPanel;
}
/** Regenerate the comboboxes and the graph. */
public void remakeAll(JFrame parent) {
Map map = new LinkedHashMap();
navPanel.removeAll();
- for (AlloyType type : vizState.getProjectedTypes()) {
- List atoms = vizState.getOriginalInstance().type2atoms(type);
+ // [electrum] this info is the same in all viz states
+ for (AlloyType type : vizState.get(vizState.size() - 1).getProjectedTypes()) {
+ List atoms = vizState.get(vizState.size() - 1).getOriginalInstance().type2atoms(type);
TypePanel tp = type2panel.get(type);
if (tp != null && tp.getAlloyAtom() != null && !atoms.contains(tp.getAlloyAtom()))
tp = null;
@@ -326,22 +357,30 @@ public void remakeAll(JFrame parent) {
map.put(tp.getAlloyType(), tp.getAlloyAtom());
}
currentProjection = new AlloyProjection(map);
- JPanel graph = vizState.getGraph(parent, currentProjection);
- if (seeDot && (graph instanceof GraphViewer)) {
- viewer = null;
- JTextArea txt = OurUtil.textarea(graph.toString(), 10, 10, false, true, getFont());
- diagramScrollPanel.setViewportView(txt);
- } else {
- if (graph instanceof GraphViewer)
- viewer = (GraphViewer) graph;
- else
+ List prevsv = viewer;
+ // [electrum] update all graph panels
+ viewer = new ArrayList<>(vizState.size());
+ for (int i = 0; i < vizState.size(); i++) {
+ JPanel graph = vizState.get(i).getGraph(parent, currentProjection);
+ if (seeDot && (graph instanceof GraphViewer)) {
viewer = null;
- graphPanel.removeAll();
- graphPanel.add(graph);
- diagramScrollPanel.setViewportView(graphPanel);
- diagramScrollPanel.invalidate();
- diagramScrollPanel.repaint();
- diagramScrollPanel.validate();
+ JTextArea txt = OurUtil.textarea(graph.toString(), 10, 10, false, true, getFont());
+ diagramScrollPanels.get(i).setViewportView(txt);
+ } else {
+ if (graph instanceof GraphViewer) {
+ viewer.add((GraphViewer) graph);
+ if (prevsv != null && i <= prevsv.size())
+ viewer.get(i).setScale(prevsv.get(i).getScale());
+ } else
+ viewer = null;
+ graphPanels.get(i).removeAll();
+ graphPanels.get(i).add(graph);
+ graphPanels.get(i).setBackground(Color.WHITE);
+ diagramScrollPanels.get(i).setViewportView(graphPanels.get(i));
+ diagramScrollPanels.get(i).invalidate();
+ diagramScrollPanels.get(i).repaint();
+ diagramScrollPanels.get(i).validate();
+ }
}
}
@@ -349,8 +388,9 @@ public void remakeAll(JFrame parent) {
@Override
public void setFont(Font font) {
super.setFont(font);
- if (diagramScrollPanel != null)
- diagramScrollPanel.getViewport().getView().setFont(font);
+ if (diagramScrollPanels != null) // [electrum] called before initialization
+ for (JScrollPane diagramScrollPanel : diagramScrollPanels)
+ diagramScrollPanel.getViewport().getView().setFont(font);
}
/** Changes whether we are seeing the DOT source or not. */
@@ -362,7 +402,8 @@ public void seeDot(JFrame parent, boolean yesOrNo) {
}
public String toDot(JFrame parent) {
- return vizState.getGraph(parent, currentProjection).toString();
+ // [electrum] only converts the first shown state
+ return vizState.get(0).getGraph(parent, currentProjection).toString();
}
/**
@@ -370,7 +411,7 @@ public String toDot(JFrame parent) {
* the graph hasn't loaded yet)
*/
public GraphViewer alloyGetViewer() {
- return viewer;
+ return viewer.get(0);
}
/**
@@ -388,4 +429,13 @@ public void resetProjectionAtomCombos() {
e.getValue().atomCombo.setSelectedIndex(0);
}
}
+
+ /**
+ * The number of graph panels in the viz.
+ *
+ * @return the number of graph panels
+ */
+ public int numPanels() {
+ return vizState.size();
+ }
}
diff --git a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/VizState.java b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/VizState.java
index 74c1273e0..61f98855f 100644
--- a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/VizState.java
+++ b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/VizState.java
@@ -41,6 +41,8 @@
* customization.
*
* Thread Safety: Can be called only by the AWT event thread.
+ *
+ * @modified [electrum] apply a default style to mutable elements (dashed)
*/
public final class VizState {
@@ -85,6 +87,7 @@ public VizState(VizState old) {
edgeStyle.putAll(old.edgeStyle);
edgeVisible.putAll(old.edgeVisible);
changedSinceLastSave = false;
+ applyDefaultVar();
}
/** Clears the current theme. */
@@ -155,11 +158,29 @@ public void resetTheme() {
edgeColor.put(in, DotColor.BLACK);
weight.put(in, 100);
layoutBack.put(in, true);
+ applyDefaultVar(); // [electrum] dashed style for variable elements
// Done
cache.clear();
changedSinceLastSave = false;
}
+ /**
+ * Paints variable items as dashed if no other style has been set by the user.
+ * Must be run every time since new elements may have been introduced.
+ */
+ void applyDefaultVar() {
+ // if parent also var or has style, inherit, otherwise paint dashed
+ for (AlloyType r : currentModel.getTypes())
+ if (nodeStyle.get(r) == null && r.isVar && !(currentModel.getSuperType(r).isVar || nodeStyle.get(currentModel.getSuperType(r)) != null))
+ nodeStyle.put(r, DotStyle.DASHED);
+ for (AlloyRelation r : currentModel.getRelations())
+ if (edgeStyle.get(r) == null && r.isVar)
+ edgeStyle.put(r, DotStyle.DASHED);
+ for (AlloySet r : currentModel.getSets())
+ if (nodeStyle.get(r) == null && r.isVar && !(r.getType().isVar || nodeStyle.get(r.getType()) != null))
+ nodeStyle.put(r, DotStyle.DASHED);
+ }
+
/**
* Load a new instance into this VizState object (the input argument is treated
* as a new unprojected instance); if world!=null, it is the root of the AST
@@ -323,7 +344,7 @@ public ConstSet getProjectedTypes() {
* Returns true iff the type is not univ, and it is a toplevel type.
*/
public boolean canProject(final AlloyType type) {
- return isTopLevel(type);
+ return isTopLevel(type) && !type.isVar; // [electrum] can't project over mutable variable
}
/**
@@ -524,8 +545,7 @@ public final class MInt {
private final LinkedHashMap map = new LinkedHashMap();
- private MInt() {
- }
+ private MInt() {}
private void clear() {
map.clear();
@@ -556,8 +576,7 @@ public final class MString {
private final LinkedHashMap map = new LinkedHashMap();
- private MString() {
- }
+ private MString() {}
private void clear() {
map.clear();
diff --git a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/VizTree.java b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/VizTree.java
index beeda5351..90bf17159 100644
--- a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/VizTree.java
+++ b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4viz/VizTree.java
@@ -39,6 +39,8 @@
* GUI tree that displays an instance as a tree.
*
* Thread Safety: Can be called only by the AWT event thread.
+ *
+ * @modified [electrum] adapted to focus on particular state
*/
public final class VizTree extends OurTree {
@@ -91,14 +93,14 @@ public Object do_root() {
if (parent instanceof A4Solution) {
return toplevel;
} else if (parent instanceof Sig || parent instanceof ExprVar) {
- A4TupleSet ts = (A4TupleSet) (instance.eval((Expr) parent));
+ A4TupleSet ts = (A4TupleSet) (instance.eval((Expr) parent, state));
for (A4Tuple t : ts)
ans.add(t.atom(0));
} else if (parent instanceof String) {
String atom = (String) parent;
for (Sig s : instance.getAllReachableSigs())
for (Field f : s.getFields())
- for (A4Tuple t : instance.eval(f)) {
+ for (A4Tuple t : instance.eval(f, state)) {
if (t.atom(0).equals(atom)) {
ans.add(new Pair(atom, f));
break;
@@ -106,7 +108,7 @@ public Object do_root() {
}
for (ExprVar f : instance.getAllSkolems())
if (f.type().arity() > 1)
- for (A4Tuple t : (A4TupleSet) (instance.eval(f))) {
+ for (A4Tuple t : (A4TupleSet) (instance.eval(f, state))) {
if (t.atom(0).equals(atom)) {
ans.add(new Pair(atom, f));
break;
@@ -116,7 +118,7 @@ public Object do_root() {
Pair< ? , ? > p = (Pair< ? , ? >) parent;
ExprHasName rel = (ExprHasName) (p.b);
String atom = (String) (p.a);
- for (A4Tuple tuple : (A4TupleSet) (instance.eval(rel)))
+ for (A4Tuple tuple : (A4TupleSet) (instance.eval(rel, state)))
if (tuple.atom(0).equals(atom)) {
if (tuple.arity() == 2)
ans.add(tuple.atom(1));
@@ -171,12 +173,16 @@ public int compare(Object a, Object b) {
/** The list of toplevel nodes to show. */
private final List toplevel;
+ /** The state in which the tree if focused. */
+ private final int state;
+
/** Constructs a tree to display the given instance. */
- public VizTree(A4Solution instance, String title, int fontSize) {
+ public VizTree(A4Solution instance, String title, int fontSize, int state) {
super(fontSize);
this.instance = instance;
this.title = title;
this.onWindows = Util.onWindows();
+ this.state = state;
ArrayList toplevel = new ArrayList();
for (Sig s : instance.getAllReachableSigs())
if (s != Sig.UNIV && s != Sig.SEQIDX && s != Sig.NONE)
diff --git a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4whole/PreferencesDialog.java b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4whole/PreferencesDialog.java
index 6fbe2ff48..f4b0118a1 100644
--- a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4whole/PreferencesDialog.java
+++ b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4whole/PreferencesDialog.java
@@ -4,6 +4,7 @@
import static edu.mit.csail.sdg.alloy4.A4Preferences.AutoVisualize;
import static edu.mit.csail.sdg.alloy4.A4Preferences.CoreGranularity;
import static edu.mit.csail.sdg.alloy4.A4Preferences.CoreMinimization;
+import static edu.mit.csail.sdg.alloy4.A4Preferences.DecomposePref;
import static edu.mit.csail.sdg.alloy4.A4Preferences.FontName;
import static edu.mit.csail.sdg.alloy4.A4Preferences.FontSize;
import static edu.mit.csail.sdg.alloy4.A4Preferences.ImplicitThis;
@@ -32,10 +33,15 @@
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
+import java.util.regex.Pattern;
import javax.swing.AbstractAction;
import javax.swing.AbstractListModel;
@@ -74,6 +80,10 @@
import edu.mit.csail.sdg.alloy4.Subprocess;
import edu.mit.csail.sdg.translator.A4Options.SatSolver;
+/**
+ * @modified [electrum] only log when debugging; load electrod binary
+ * executables; added decompose strategy option
+ */
@SuppressWarnings({
"serial"
} )
@@ -85,6 +95,8 @@ public class PreferencesDialog extends JFrame {
// private JPanel solverPane;
// private JPanel miscPane;
+ final static boolean isDebug = "yes".equals(System.getProperty("debug"));
+
private static class MyIntSpinnerModel extends AbstractSpinnerModel {
private final IntPref pref;
@@ -278,6 +290,15 @@ protected Iterable testSolvers() {
satChoices.remove(SatSolver.GlucoseJNI);
if (!loadLibrary("cryptominisat"))
satChoices.remove(SatSolver.CryptoMiniSatJNI);
+ // [electrum] load unbounded model checking backend
+ if (!staticLibrary("electrod")) {
+ satChoices.remove(SatSolver.ElectrodX);
+ satChoices.remove(SatSolver.ElectrodS);
+ }
+ if (!staticLibrary("NuSMV"))
+ satChoices.remove(SatSolver.ElectrodS);
+ if (!staticLibrary("nuXmv"))
+ satChoices.remove(SatSolver.ElectrodX);
SatSolver now = Solver.get();
if (!satChoices.contains(now)) {
now = SatSolver.LingelingJNI;
@@ -312,13 +333,41 @@ private static boolean isSat(String output) {
return output.substring(i).startsWith("s SATISFIABLE");
}
+ private static boolean staticLibrary(String name) {
+ // check if in java library path
+ final String[] dirs = System.getProperty("java.library.path").split(System.getProperty("path.separator"));
+ for (int i = dirs.length - 1; i >= 0; i--) {
+ final File file = new File(dirs[i] + File.separator + name);
+ if (file.canExecute()) {
+ if (isDebug)
+ System.out.println("Loaded: " + name + " at " + file);
+ return true;
+ }
+ }
+ // check if in system path
+ for (String str : (System.getenv("PATH")).split(Pattern.quote(File.pathSeparator))) {
+ Path pth = Paths.get(str);
+ if (Files.exists(pth.resolve(name))) {
+ if (isDebug)
+ System.out.println("Loaded: " + name + " at " + pth);
+ return true;
+ }
+ }
+
+ if (isDebug)
+ System.out.println("Failed to load: " + name);
+ return false;
+ }
+
+
private static boolean loadLibrary(String library) {
boolean loaded = _loadLibrary(library);
String libName = System.mapLibraryName(library);
- if (loaded)
- System.out.println("Loaded: " + libName);
- else
- System.out.println("Failed to load: " + libName);
+ if (isDebug)
+ if (loaded)
+ System.out.println("Loaded: " + libName);
+ else
+ System.out.println("Failed to load: " + libName);
return loaded;
}
@@ -384,8 +433,8 @@ protected Component initEditorPane() {
}
protected Component initSolverPane() {
- JPanel p = OurUtil.makeGrid(2, gbc().make(), mkCombo(Solver), mkSlider(SkolemDepth), mkCombo(Unrolls), mkCombo(CoreGranularity), mkSlider(CoreMinimization));
- int r = 5;
+ JPanel p = OurUtil.makeGrid(2, gbc().make(), mkCombo(Solver), mkSlider(SkolemDepth), mkCombo(Unrolls), mkCombo(CoreGranularity), mkSlider(CoreMinimization), mkSlider(DecomposePref));
+ int r = 6;
addToGrid(p, mkCheckBox(NoOverflow), gbc().pos(0, r++).gridwidth(2));
addToGrid(p, mkCheckBox(ImplicitThis), gbc().pos(0, r++).gridwidth(2));
addToGrid(p, mkCheckBox(InferPartialInstance), gbc().pos(0, r++).gridwidth(2));
diff --git a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4whole/SimpleCLI.java b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4whole/SimpleCLI.java
index 4ccbeba9b..b7e0b4392 100644
--- a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4whole/SimpleCLI.java
+++ b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4whole/SimpleCLI.java
@@ -49,8 +49,9 @@
* This class is used by the Alloy developers to drive the regression test
* suite. For a more detailed guide on how to use Alloy API, please see
* "ExampleUsingTheCompiler.java"
+ *
+ * @modified [electrum] updated reporting
*/
-
public final class SimpleCLI {
private static final class SimpleReporter extends A4Reporter {
@@ -114,12 +115,12 @@ public void bound(String msg) {
}
@Override
- public void translate(String solver, int bitwidth, int maxseq, int skolemDepth, int symmetry) {
- sb.append(" Solver=" + solver + " Bitwidth=" + bitwidth + " MaxSeq=" + maxseq + " Symmetry=" + (symmetry > 0 ? ("" + symmetry) : "OFF") + "\n");
+ public void translate(String solver, int bitwidth, int maxseq, int mintrace, int maxtrace, int skolemDepth, int symmetry, String strat) {
+ debug("Solver=" + solver + " Steps=" + mintrace + ".." + maxtrace + " Bitwidth=" + bitwidth + " MaxSeq=" + maxseq + " Symmetry=" + (symmetry > 0 ? ("" + symmetry) : "OFF") + " Mode=" + strat + "\n");
}
@Override
- public void solve(int primaryVars, int totalVars, int clauses) {
+ public void solve(int step, int primaryVars, int totalVars, int clauses) {
if (db)
db(" " + totalVars + " vars. " + primaryVars + " primary vars. " + clauses + " clauses.\n");
sb.append(" " + totalVars + " vars. " + primaryVars + " primary vars. " + clauses + " clauses. 12345ms.\n");
@@ -184,7 +185,7 @@ private static void validate(A4Solution sol) throws Exception {
sw.flush();
String txt = sw.toString();
A4SolutionReader.read(new ArrayList(), new XMLNode(new StringReader(txt))).toString();
- StaticInstanceReader.parseInstance(new StringReader(txt));
+ StaticInstanceReader.parseInstance(new StringReader(txt), 0);
}
public static void main(String[] args) throws Exception {
@@ -258,7 +259,7 @@ public static void main(String[] args) throws Exception {
metasb.flush();
String metaxml = metasb.toString();
A4SolutionReader.read(new ArrayList(), new XMLNode(new StringReader(metaxml)));
- StaticInstanceReader.parseInstance(new StringReader(metaxml));
+ StaticInstanceReader.parseInstance(new StringReader(metaxml), 0);
// Okay, now solve the commands
A4Options options = new A4Options();
options.originalFilename = filename;
diff --git a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4whole/SimpleGUI.java b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4whole/SimpleGUI.java
index 0d13d5528..b35e7a0a1 100644
--- a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4whole/SimpleGUI.java
+++ b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4whole/SimpleGUI.java
@@ -23,6 +23,7 @@
import static edu.mit.csail.sdg.alloy4.A4Preferences.AutoVisualize;
import static edu.mit.csail.sdg.alloy4.A4Preferences.CoreGranularity;
import static edu.mit.csail.sdg.alloy4.A4Preferences.CoreMinimization;
+import static edu.mit.csail.sdg.alloy4.A4Preferences.DecomposePref;
import static edu.mit.csail.sdg.alloy4.A4Preferences.FontName;
import static edu.mit.csail.sdg.alloy4.A4Preferences.FontSize;
import static edu.mit.csail.sdg.alloy4.A4Preferences.ImplicitThis;
@@ -52,6 +53,7 @@
import static java.awt.event.KeyEvent.VK_PAGE_DOWN;
import static java.awt.event.KeyEvent.VK_PAGE_UP;
import static java.awt.event.KeyEvent.VK_SHIFT;
+import static java.awt.event.KeyEvent.VK_U;
import java.awt.BorderLayout;
import java.awt.Color;
@@ -186,6 +188,14 @@
* (1) the run() method in SatRunner is launched from a fresh thread
* (2) the run() method in the instance watcher (in constructor) is launched
* from a fresh thread
+ *
+ * @modified [electrum] added electrum example models; added accelerator for
+ * execute all on mac; updated about message; evaluator now takes a
+ * second argument denoting the focused state; visualize traces with 2
+ * states, 1 otherwise; enumerator now takes as additional argument
+ * the operation to apply; also distinguishes between global and local
+ * iterations, the former resets the visualizer; added electrod
+ * binaries; added the option to select the decompose strategy
*/
public final class SimpleGUI implements ComponentListener, Listener {
@@ -280,8 +290,8 @@ public final class SimpleGUI implements ComponentListener, Listener {
private static final Color background = new Color(0.9f, 0.9f, 0.9f);
/**
- * If subrunning==true: 0 means SAT solving; 1 means metamodel; 2 means
- * enumeration.
+ * If subrunning==true: 0 means SAT solving; 1 means metamodel; 2 means global
+ * enumeration; 3 means local enumeration.
*/
private int subrunningTask = 0;
@@ -456,10 +466,11 @@ else if (os.startsWith("windows-"))
// The error will be caught later by the "berkmin" or "spear" test
}
// Copy the platform-dependent binaries
- Util.copy(frame, true, false, platformBinary, arch + "/libminisat.so", arch + "/libminisatx1.so", arch + "/libminisat.jnilib", arch + "/libminisat.dylib", arch + "/libminisatprover.so", arch + "/libminisatproverx1.so", arch + "/libminisatprover.jnilib", arch + "/libminisatprover.dylib", arch + "/libzchaff.so", arch + "/libzchaffmincost.so", arch + "/libzchaffx1.so", arch + "/libzchaff.jnilib", arch + "/liblingeling.so", arch + "/liblingeling.dylib", arch + "/liblingeling.jnilib", arch + "/plingeling", arch + "/libglucose.so", arch + "/libglucose.dylib", arch + "/libglucose.jnilib", arch + "/libcryptominisat.so", arch + "/libcryptominisat.la", arch + "/libcryptominisat.dylib", arch + "/libcryptominisat.jnilib", arch + "/berkmin", arch + "/spear", arch + "/cryptominisat");
- Util.copy(frame, false, false, platformBinary, arch + "/minisat.dll", arch + "/cygminisat.dll", arch + "/libminisat.dll.a", arch + "/minisatprover.dll", arch + "/cygminisatprover.dll", arch + "/libminisatprover.dll.a", arch + "/glucose.dll", arch + "/cygglucose.dll", arch + "/libglucose.dll.a", arch + "/zchaff.dll", arch + "/berkmin.exe", arch + "/spear.exe");
+ Util.copy(frame, true, false, platformBinary, arch + "/libminisat.so", arch + "/libminisatx1.so", arch + "/libminisat.jnilib", arch + "/libminisat.dylib", arch + "/libminisatprover.so", arch + "/libminisatproverx1.so", arch + "/libminisatprover.jnilib", arch + "/libminisatprover.dylib", arch + "/libzchaff.so", arch + "/libzchaffmincost.so", arch + "/libzchaffx1.so", arch + "/libzchaff.jnilib", arch + "/liblingeling.so", arch + "/liblingeling.dylib", arch + "/liblingeling.jnilib", arch + "/plingeling", arch + "/libglucose.so", arch + "/libglucose.dylib", arch + "/libglucose.jnilib", arch + "/libcryptominisat.so", arch + "/libcryptominisat.la", arch + "/libcryptominisat.dylib", arch + "/libcryptominisat.jnilib", arch + "/berkmin", arch + "/spear", arch + "/cryptominisat", arch + "/electrod");
+ Util.copy(frame, false, false, platformBinary, arch + "/minisat.dll", arch + "/cygminisat.dll", arch + "/libminisat.dll.a", arch + "/minisatprover.dll", arch + "/cygminisatprover.dll", arch + "/libminisatprover.dll.a", arch + "/glucose.dll", arch + "/cygglucose.dll", arch + "/libglucose.dll.a", arch + "/zchaff.dll", arch + "/berkmin.exe", arch + "/spear.exe", arch + "/electrod.exe");
// Copy the model files
- Util.copy(frame, false, true, alloyHome(frame), "models/book/appendixA/addressBook1.als", "models/book/appendixA/addressBook2.als", "models/book/appendixA/barbers.als", "models/book/appendixA/closure.als", "models/book/appendixA/distribution.als", "models/book/appendixA/phones.als", "models/book/appendixA/prison.als", "models/book/appendixA/properties.als", "models/book/appendixA/ring.als", "models/book/appendixA/spanning.als", "models/book/appendixA/tree.als", "models/book/appendixA/tube.als", "models/book/appendixA/undirected.als", "models/book/appendixE/hotel.thm", "models/book/appendixE/p300-hotel.als", "models/book/appendixE/p303-hotel.als", "models/book/appendixE/p306-hotel.als", "models/book/chapter2/addressBook1a.als", "models/book/chapter2/addressBook1b.als", "models/book/chapter2/addressBook1c.als", "models/book/chapter2/addressBook1d.als", "models/book/chapter2/addressBook1e.als", "models/book/chapter2/addressBook1f.als", "models/book/chapter2/addressBook1g.als", "models/book/chapter2/addressBook1h.als", "models/book/chapter2/addressBook2a.als", "models/book/chapter2/addressBook2b.als", "models/book/chapter2/addressBook2c.als", "models/book/chapter2/addressBook2d.als", "models/book/chapter2/addressBook2e.als", "models/book/chapter2/addressBook3a.als", "models/book/chapter2/addressBook3b.als", "models/book/chapter2/addressBook3c.als", "models/book/chapter2/addressBook3d.als", "models/book/chapter2/theme.thm", "models/book/chapter4/filesystem.als", "models/book/chapter4/grandpa1.als", "models/book/chapter4/grandpa2.als", "models/book/chapter4/grandpa3.als", "models/book/chapter4/lights.als", "models/book/chapter5/addressBook.als", "models/book/chapter5/lists.als", "models/book/chapter5/sets1.als", "models/book/chapter5/sets2.als", "models/book/chapter6/hotel.thm", "models/book/chapter6/hotel1.als", "models/book/chapter6/hotel2.als", "models/book/chapter6/hotel3.als", "models/book/chapter6/hotel4.als", "models/book/chapter6/mediaAssets.als", "models/book/chapter6/memory/abstractMemory.als", "models/book/chapter6/memory/cacheMemory.als", "models/book/chapter6/memory/checkCache.als", "models/book/chapter6/memory/checkFixedSize.als", "models/book/chapter6/memory/fixedSizeMemory.als", "models/book/chapter6/memory/fixedSizeMemory_H.als", "models/book/chapter6/ringElection.thm", "models/book/chapter6/ringElection1.als", "models/book/chapter6/ringElection2.als", "models/examples/algorithms/dijkstra.als", "models/examples/algorithms/dijkstra.thm", "models/examples/algorithms/messaging.als", "models/examples/algorithms/messaging.thm", "models/examples/algorithms/opt_spantree.als", "models/examples/algorithms/opt_spantree.thm", "models/examples/algorithms/peterson.als", "models/examples/algorithms/ringlead.als", "models/examples/algorithms/ringlead.thm", "models/examples/algorithms/s_ringlead.als", "models/examples/algorithms/stable_mutex_ring.als", "models/examples/algorithms/stable_mutex_ring.thm", "models/examples/algorithms/stable_orient_ring.als", "models/examples/algorithms/stable_orient_ring.thm", "models/examples/algorithms/stable_ringlead.als", "models/examples/algorithms/stable_ringlead.thm", "models/examples/case_studies/INSLabel.als", "models/examples/case_studies/chord.als", "models/examples/case_studies/chord2.als", "models/examples/case_studies/chordbugmodel.als", "models/examples/case_studies/com.als", "models/examples/case_studies/firewire.als", "models/examples/case_studies/firewire.thm", "models/examples/case_studies/ins.als", "models/examples/case_studies/iolus.als", "models/examples/case_studies/sync.als", "models/examples/case_studies/syncimpl.als", "models/examples/puzzles/farmer.als", "models/examples/puzzles/farmer.thm", "models/examples/puzzles/handshake.als", "models/examples/puzzles/handshake.thm", "models/examples/puzzles/hanoi.als", "models/examples/puzzles/hanoi.thm", "models/examples/systems/file_system.als", "models/examples/systems/file_system.thm", "models/examples/systems/javatypes_soundness.als", "models/examples/systems/lists.als", "models/examples/systems/lists.thm", "models/examples/systems/marksweepgc.als", "models/examples/systems/views.als", "models/examples/toys/birthday.als", "models/examples/toys/birthday.thm", "models/examples/toys/ceilingsAndFloors.als", "models/examples/toys/ceilingsAndFloors.thm", "models/examples/toys/genealogy.als", "models/examples/toys/genealogy.thm", "models/examples/toys/grandpa.als", "models/examples/toys/grandpa.thm", "models/examples/toys/javatypes.als", "models/examples/toys/life.als", "models/examples/toys/life.thm", "models/examples/toys/numbering.als", "models/examples/toys/railway.als", "models/examples/toys/railway.thm", "models/examples/toys/trivial.als", "models/examples/tutorial/farmer.als", "models/util/boolean.als", "models/util/graph.als", "models/util/integer.als", "models/util/natural.als", "models/util/ordering.als", "models/util/relation.als", "models/util/seqrel.als", "models/util/sequence.als", "models/util/sequniv.als", "models/util/ternary.als", "models/util/time.als");
+ Util.copy(frame, false, true, alloyHome(frame), "models/book/appendixA/addressBook1.als", "models/book/appendixA/addressBook2.als", "models/book/appendixA/barbers.als", "models/book/appendixA/closure.als", "models/book/appendixA/distribution.als", "models/book/appendixA/phones.als", "models/book/appendixA/prison.als", "models/book/appendixA/properties.als", "models/book/appendixA/ring.als", "models/book/appendixA/spanning.als", "models/book/appendixA/tree.als", "models/book/appendixA/tube.als", "models/book/appendixA/undirected.als", "models/book/appendixE/hotel.thm", "models/book/appendixE/p300-hotel.als", "models/book/appendixE/p303-hotel.als", "models/book/appendixE/p306-hotel.als", "models/book/chapter2/addressBook1a.als", "models/book/chapter2/addressBook1b.als", "models/book/chapter2/addressBook1c.als", "models/book/chapter2/addressBook1d.als", "models/book/chapter2/addressBook1e.als", "models/book/chapter2/addressBook1f.als", "models/book/chapter2/addressBook1g.als", "models/book/chapter2/addressBook1h.als", "models/book/chapter2/addressBook2a.als", "models/book/chapter2/addressBook2b.als", "models/book/chapter2/addressBook2c.als", "models/book/chapter2/addressBook2d.als", "models/book/chapter2/addressBook2e.als", "models/book/chapter2/addressBook3a.als", "models/book/chapter2/addressBook3b.als", "models/book/chapter2/addressBook3c.als", "models/book/chapter2/addressBook3d.als", "models/book/chapter2/theme.thm", "models/book/chapter4/filesystem.als", "models/book/chapter4/grandpa1.als", "models/book/chapter4/grandpa2.als", "models/book/chapter4/grandpa3.als", "models/book/chapter4/lights.als", "models/book/chapter5/addressBook.als", "models/book/chapter5/lists.als", "models/book/chapter5/sets1.als", "models/book/chapter5/sets2.als", "models/book/chapter6/hotel.thm", "models/book/chapter6/hotel1.als", "models/book/chapter6/hotel2.als", "models/book/chapter6/hotel3.als", "models/book/chapter6/hotel4.als", "models/book/chapter6/mediaAssets.als", "models/book/chapter6/memory/abstractMemory.als", "models/book/chapter6/memory/cacheMemory.als", "models/book/chapter6/memory/checkCache.als", "models/book/chapter6/memory/checkFixedSize.als", "models/book/chapter6/memory/fixedSizeMemory.als", "models/book/chapter6/memory/fixedSizeMemory_H.als", "models/book/chapter6/ringElection.thm", "models/book/chapter6/ringElection1.als", "models/book/chapter6/ringElection2.als", "models/examples/algorithms/dijkstra.als", "models/examples/algorithms/dijkstra.thm", "models/examples/algorithms/messaging.als", "models/examples/algorithms/messaging.thm", "models/examples/algorithms/opt_spantree.als", "models/examples/algorithms/opt_spantree.thm", "models/examples/algorithms/peterson.als", "models/examples/algorithms/ringlead.als", "models/examples/algorithms/ringlead.thm", "models/examples/algorithms/s_ringlead.als", "models/examples/algorithms/stable_mutex_ring.als", "models/examples/algorithms/stable_mutex_ring.thm", "models/examples/algorithms/stable_orient_ring.als", "models/examples/algorithms/stable_orient_ring.thm", "models/examples/algorithms/stable_ringlead.als", "models/examples/algorithms/stable_ringlead.thm", "models/examples/case_studies/INSLabel.als", "models/examples/case_studies/chord.als", "models/examples/case_studies/chord2.als", "models/examples/case_studies/chordbugmodel.als", "models/examples/case_studies/com.als", "models/examples/case_studies/firewire.als", "models/examples/case_studies/firewire.thm", "models/examples/case_studies/ins.als", "models/examples/case_studies/iolus.als", "models/examples/case_studies/sync.als", "models/examples/case_studies/syncimpl.als", "models/examples/puzzles/farmer.als", "models/examples/puzzles/farmer.thm", "models/examples/puzzles/handshake.als", "models/examples/puzzles/handshake.thm", "models/examples/puzzles/hanoi.als", "models/examples/puzzles/hanoi.thm", "models/examples/systems/file_system.als", "models/examples/systems/file_system.thm", "models/examples/systems/javatypes_soundness.als", "models/examples/systems/lists.als", "models/examples/systems/lists.thm", "models/examples/systems/marksweepgc.als", "models/examples/systems/views.als", "models/examples/toys/birthday.als", "models/examples/toys/birthday.thm", "models/examples/toys/ceilingsAndFloors.als", "models/examples/toys/ceilingsAndFloors.thm", "models/examples/toys/genealogy.als", "models/examples/toys/genealogy.thm", "models/examples/toys/grandpa.als", "models/examples/toys/grandpa.thm", "models/examples/toys/javatypes.als", "models/examples/toys/life.als", "models/examples/toys/life.thm", "models/examples/toys/numbering.als", "models/examples/toys/railway.als", "models/examples/toys/railway.thm", "models/examples/toys/trivial.als", "models/examples/tutorial/farmer.als", "models/util/boolean.als", "models/util/graph.als", "models/util/integer.als", "models/util/natural.als", "models/util/ordering.als", "models/util/relation.als", "models/util/seqrel.als", "models/util/sequence.als", "models/util/sequniv.als", "models/util/ternary.als", "models/util/time.als",
+ "models/examples/temporal/buffer.als", "models/examples/temporal/leader.als", "models/examples/temporal/leader_events.als", "models/examples/temporal/trash.als");
// Record the locations
System.setProperty("alloy.theme0", alloyHome(frame) + fs + "models");
System.setProperty("alloy.home", alloyHome(frame));
@@ -519,7 +530,8 @@ private Runner wrapMe() {
public void run() {
try {
method.setAccessible(true);
- method.invoke(SimpleGUI.this, new Object[] {});
+ method.invoke(SimpleGUI.this, new Object[] {
+});
} catch (Throwable ex) {
ex = new IllegalArgumentException("Failed call to " + name + "()", ex);
Thread.getDefaultUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), ex);
@@ -1060,7 +1072,6 @@ private Runner doGotoNextFile() {
private Runner doRefreshRun() {
if (wrap)
return wrapMe();
- KeyStroke ac = KeyStroke.getKeyStroke(VK_E, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
try {
wrap = true;
runmenu.removeAll();
@@ -1115,19 +1126,22 @@ private Runner doRefreshRun() {
try {
wrap = true;
for (int i = 0; i < cp.size(); i++) {
- JMenuItem y = new JMenuItem(cp.get(i).toString(), null);
- y.addActionListener(doRun(i));
+ JMenuItem menuItem = new JMenuItem(cp.get(i).toString(), null);
+ menuItem.addActionListener(doRun(i));
if (i == latestCommand) {
- y.setMnemonic(VK_E);
- y.setAccelerator(ac);
+ menuItem.setMnemonic(VK_E);
+ menuItem.setAccelerator(KeyStroke.getKeyStroke(VK_E, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
}
- runmenu.add(y, i);
+ runmenu.add(menuItem, i);
}
- if (cp.size() >= 2) {
- JMenuItem y = new JMenuItem("Execute All", null);
- y.setMnemonic(VK_A);
- y.addActionListener(doRun(-1));
- runmenu.add(y, 0);
+ if (cp.size() > 1) {
+ JMenuItem menuItem = new JMenuItem("Execute All", null);
+ // [electrum] cmd+u acc for mac
+ final int mnemonic = Util.onMac() ? VK_U : VK_A;
+ menuItem.setMnemonic(mnemonic);
+ menuItem.setAccelerator(KeyStroke.getKeyStroke(mnemonic, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ menuItem.addActionListener(doRun(-1));
+ runmenu.add(menuItem, 0);
runmenu.add(new JSeparator(), 1);
}
} finally {
@@ -1181,6 +1195,7 @@ private Runner doRun(Integer commandIndex) {
opt.coreMinimization = CoreMinimization.get();
opt.inferPartialInstance = InferPartialInstance.get();
opt.coreGranularity = CoreGranularity.get();
+ opt.decompose_mode = DecomposePref.get().ordinal();
opt.originalFilename = Util.canon(text.get().getFilename());
opt.solver = Solver.get();
task.bundleIndex = i;
@@ -1236,7 +1251,10 @@ Runner doStop(Integer how) {
if (latestAutoInstance.length() > 0) {
String f = latestAutoInstance;
latestAutoInstance = "";
+ // [electrum] move to first state if global iteration
if (subrunningTask == 2)
+ viz.loadXML(f, true, 0);
+ else if (subrunningTask == 3)
viz.loadXML(f, true);
else if (AutoVisualize.get() || subrunningTask == 1)
doVisualize("XML: " + f);
@@ -1436,6 +1454,7 @@ private Runner doRefreshOption() {
if (Version.experimental) {
addToMenu(optmenu, Unrolls);
+ addToMenu(optmenu, DecomposePref);
addToMenu(optmenu, ImplicitThis, NoOverflow, InferPartialInstance);
}
@@ -1519,7 +1538,7 @@ public Runner doAbout() {
ta.setBorder(null);
ta.setFont(new JLabel().getFont());
// @formatter:off
- ta.setText("Alloy Analyzer " + Version.getShortversion() + " "
+ ta.setText("Alloy Analyzer "+ Version.getShortversion() +" "
+ " "
+ ""
+ "Project Lead Daniel Jackson "
@@ -1531,12 +1550,13 @@ public Runner doAbout() {
+ "Questions and comments about Alloy are welcome at the community forum:
"
+ "Alloy Community Forum: https://groups.google.com/forum/#!forum/alloytools
"
+ "Alloy experts also respond to https://stackoverflow.com questions tagged alloy
.
"
- + "Major contributions to earlier versions of Alloy were made by: Felix Chang (v4); "
- + "Jonathan Edwards, Eunsuk Kang, Joe Near, Robert Seater, Derek Rayside, Greg Dennis, "
- + "Ilya Shlyakhter, Mana Taghdiri, Mandana Vaziri, Sarfraz Khurshid (v3); Manu Sridharan "
- + "(v2); Edmond Lau, Vincent Yeung, Sam Daitch, Andrew Yip, Jongmin Baek, Ning Song, "
- + "Arturo Arizpe, Li-kuo (Brian) Lin, Joseph Cohen, Jesse Pavel, Ian Schechter, Uriel "
- + "Schafer (v1).
"
+ + "Major contributions to earlier versions of Alloy were made by: Julien Brunel, David "
+ + "Chemouil, Alcino Cunha, Nuno Macedo, Denis Kuperberg, Eduardo Pessoa, Tiago Guimarães " // [electrum] electrum contributors
+ + "(Electrum); Felix Chang (v4); Jonathan Edwards, Eunsuk Kang, Joe Near, Robert Seater, "
+ + "Derek Rayside, Greg Dennis, Ilya Shlyakhter, Mana Taghdiri, Mandana Vaziri, Sarfraz "
+ + "Khurshid (v3); Manu Sridharan (v2); Edmond Lau, Vincent Yeung, Sam Daitch, Andrew Yip, "
+ + "Jongmin Baek, Ning Song, Arturo Arizpe, Li-kuo (Brian) Lin, Joseph Cohen, Jesse Pavel, "
+ + "Ian Schechter, Uriel Schafer (v1).
"
+ "The development of Alloy was funded by part by the National Science Foundation under "
+ "Grant Nos. 0325283, 0541183, 0438897 and 0707612; by the Air Force Research Laboratory "
+ "(AFRL/IF) and the Disruptive Technology Office (DTO) in the National Intelligence "
@@ -1739,7 +1759,7 @@ Runner doVisualize(String arg) {
}
}
if (arg.startsWith("XML: ")) { // XML: filename
- viz.loadXML(Util.canon(arg.substring(5)), false);
+ viz.loadXML(Util.canon(arg.substring(5)), false, 0);
}
return null;
}
@@ -1764,13 +1784,14 @@ private Runner doOpenFile(String arg) {
@Override
public String compute(Object input) {
- final String arg = (String) input;
+ final String[] arg = (String[]) input; // [electrum] additional argument to set the iteration operation
OurUtil.show(frame);
if (WorkerEngine.isBusy())
throw new RuntimeException("Alloy4 is currently executing a SAT solver command. Please wait until that command has finished.");
SimpleCallback1 cb = new SimpleCallback1(SimpleGUI.this, viz, log, VerbosityPref.get().ordinal(), latestAlloyVersionName, latestAlloyVersion);
SimpleTask2 task = new SimpleTask2();
- task.filename = arg;
+ task.filename = arg[0];
+ task.index = Integer.valueOf(arg[1]);
try {
if (AlloyCore.isDebug())
WorkerEngine.runLocally(task, cb);
@@ -1783,14 +1804,14 @@ public String compute(Object input) {
log.logDivider();
log.flush();
doStop(2);
- return arg;
+ return arg[0];
}
- subrunningTask = 2;
+ subrunningTask = task.index < 1 ? 2 : 3; // [electrum] whether global iteration
runmenu.setEnabled(false);
runbutton.setVisible(false);
showbutton.setEnabled(false);
stopbutton.setVisible(true);
- return arg;
+ return arg[0];
}
};
@@ -1840,10 +1861,11 @@ public final Object compute(final Object input) throws Exception {
filename = ((File) input).getAbsolutePath();
return "";
}
- if (!(input instanceof String))
+ if (!(input instanceof String[]))
return "";
- final String str = (String) input;
- if (str.trim().length() == 0)
+ // [electrum] evaluator takes two arguments, the second is the focused state
+ final String[] strs = (String[]) input;
+ if (strs[0].trim().length() == 0)
return ""; // Empty line
Module root = null;
A4Solution ans = null;
@@ -1878,13 +1900,13 @@ public final Object compute(final Object input) throws Exception {
throw new ErrorFatal("Failed to read or parse the XML file.");
}
try {
- Expr e = CompUtil.parseOneExpression_fromString(root, str);
+ Expr e = CompUtil.parseOneExpression_fromString(root, strs[0]);
if (AlloyCore.isDebug() && VerbosityPref.get() == Verbosity.FULLDEBUG) {
SimInstance simInst = convert(root, ans);
if (simInst.wasOverflow())
return simInst.visitThis(e).toString() + " (OF)";
}
- return ans.eval(e);
+ return ans.eval(e, Integer.valueOf(strs[1])).toString();
} catch (HigherOrderDeclException ex) {
throw new ErrorType("Higher-order quantification is not allowed in the evaluator.");
}
@@ -2156,7 +2178,7 @@ private void finishInit(String[] args, int width) {
}
// Pre-load the visualizer
- viz = new VizGUI(false, "", windowmenu2, enumerator, evaluator);
+ viz = new VizGUI(false, "", windowmenu2, enumerator, evaluator, 2);
viz.doSetFontSize(FontSize.get());
// Create the toolbar
diff --git a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4whole/SimpleReporter.java b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4whole/SimpleReporter.java
index a820aa9ad..1531dc389 100644
--- a/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4whole/SimpleReporter.java
+++ b/org.alloytools.alloy.application/src/main/java/edu/mit/csail/sdg/alloy4whole/SimpleReporter.java
@@ -35,6 +35,7 @@
import edu.mit.csail.sdg.alloy4.ConstList;
import edu.mit.csail.sdg.alloy4.ConstMap;
import edu.mit.csail.sdg.alloy4.Err;
+import edu.mit.csail.sdg.alloy4.ErrorAPI;
import edu.mit.csail.sdg.alloy4.ErrorSyntax;
import edu.mit.csail.sdg.alloy4.ErrorType;
import edu.mit.csail.sdg.alloy4.ErrorWarning;
@@ -59,7 +60,23 @@
import edu.mit.csail.sdg.translator.A4SolutionWriter;
import edu.mit.csail.sdg.translator.TranslateAlloyToKodkod;
-/** This helper method is used by SimpleGUI. */
+/**
+ * This helper method is used by SimpleGUI.
+ *
+ * @modified [electrum] changed so that all commands can be executed even when
+ * some throw errors; the solving process now reports in which step of
+ * the temporal analysis is; since temporal analysis is incremental,
+ * solving the command from 1 to the maximum number of steps defined
+ * in the scope, and reports whenever each of these steps finishes;
+ * the SimpleReporter overrides these messages in the log panel and
+ * shows only the most recent one; the translation also reports the
+ * relevant temporal options; enumeration task enriched with
+ * alternative iteration operations; reporting updated with the
+ * decompose strategy; a call is made every time one of the parallel
+ * problems performs a step; the number of seen configurations is thus
+ * also logged (the presented step is the maximum step seen by any
+ * parallel problem)
+ */
final class SimpleReporter extends A4Reporter {
@@ -70,7 +87,7 @@ public static final class SimpleCallback1 implements WorkerCallback {
private final SwingLogPanel span;
private final Set warnings = new HashSet();
private final List results = new ArrayList();
- private int len2 = 0, len3 = 0, verbosity = 0;
+ private int len2 = 0, len3 = 0, len4 = 0, verbosity = 0;
private final String latestName;
private final int latestVersion;
@@ -204,15 +221,16 @@ else if (ex instanceof ErrorType)
}
if (array[0].equals("debug") && verbosity > 2) {
span.log(" " + array[1] + "\n");
- len2 = len3 = span.getLength();
+ len2 = len3 = len4 = span.getLength();
}
if (array[0].equals("translate")) {
span.log(" " + array[1]);
- len3 = span.getLength();
+ len3 = len4 = span.getLength();
span.logBold(" Generating CNF...\n");
}
if (array[0].equals("solve")) {
- span.setLength(len3);
+ // [electrum] len4 allows solving step info to be overwritten
+ span.setLength(len4);
span.log(" " + array[1]);
len3 = span.getLength();
span.logBold(" Solving...\n");
@@ -359,16 +377,41 @@ public void debug(final String msg) {
/** {@inheritDoc} */
@Override
- public void translate(String solver, int bitwidth, int maxseq, int skolemDepth, int symmetry) {
- lastTime = System.currentTimeMillis();
- cb("translate", "Solver=" + solver + " Bitwidth=" + bitwidth + " MaxSeq=" + maxseq + (skolemDepth == 0 ? "" : " SkolemDepth=" + skolemDepth) + " Symmetry=" + (symmetry > 0 ? ("" + symmetry) : "OFF") + '\n');
+ public void translate(String solver, int bitwidth, int maxseq, int mintrace, int maxtrace, int skolemDepth, int symmetry, String strat) {
+ startTime = System.currentTimeMillis();
+ startCount = 0;
+ cb("translate", "Solver=" + solver + " Steps=" + mintrace + ".." + maxtrace + " Bitwidth=" + bitwidth + " MaxSeq=" + maxseq + (skolemDepth == 0 ? "" : " SkolemDepth=" + skolemDepth) + " Symmetry=" + (symmetry > 0 ? ("" + symmetry) : "OFF") + " Mode=" + strat + "\n");
}
/** {@inheritDoc} */
@Override
- public void solve(final int primaryVars, final int totalVars, final int clauses) {
+ public void solve(final int step, final int pv, final int tv, final int cl) {
+ // [electrum] this may now be called multiple times in iterative temporal solving, variables are accumulated
+ // [electrum] in decomposed mode it also reports how many configs have been explored (and only presents the largest step seen)
minimized = 0;
- cb("solve", "" + totalVars + " vars. " + primaryVars + " primary vars. " + clauses + " clauses. " + (System.currentTimeMillis() - lastTime) + "ms.\n");
+ if (startStep < 0)
+ startStep = step;
+ if (startStep == step) // [electrum] denotes a new config
+ startCount++;
+ seenStep = Math.max(seenStep, step);
+ primaryVars += pv;
+ totalVars += tv;
+ clauses += cl;
+ StringBuilder sb = new StringBuilder();
+ if (startCount > 1)
+ sb.append(startCount + " configs. ");
+ if (seenStep > 0)
+ sb.append(startStep + ".." + seenStep + " steps. ");
+ if (totalVars >= 0)
+ sb.append("" + totalVars + " vars. ");
+ if (primaryVars >= 0)
+ sb.append(primaryVars + " primary vars. ");
+ if (clauses > 0)
+ sb.append(clauses + " clauses. ");
+ if (sb.length() == 0)
+ sb.append("No translation information available. ");
+ sb.append((System.currentTimeMillis() - startTime) + "ms.\n");
+ cb("solve", sb.toString());
lastTime = System.currentTimeMillis();
}
@@ -479,7 +522,13 @@ public void resultUNSAT(Object command, long solvingTime, Object solution) {
* The time that the last action began; we subtract it from
* System.currentTimeMillis() to determine the elapsed time.
*/
- private long lastTime = 0;
+ private long lastTime = 0, startTime = 0;
+
+ /**
+ * Variables to log and accumulate solving data for each call to
+ * {@link #solve(int, int, int, int)}
+ */
+ private int startStep = -1, seenStep = -1, primaryVars = 0, clauses = 0, totalVars = 0, startCount = 0;
/**
* If we performed unsat core minimization, then this is the start of the
@@ -555,6 +604,7 @@ private static void writeXML(A4Reporter rep, Module mod, String filename, A4Solu
static final class SimpleTask2 implements WorkerTask {
private static final long serialVersionUID = 0;
+ public int index = -1; // [electrum] registers which iteration operation to perform
public String filename = "";
public transient WorkerCallback out = null;
@@ -594,7 +644,12 @@ public void run(WorkerCallback out) throws Exception {
}
int tries = 0;
while (true) {
- sol = sol.next();
+ try {
+ sol = sol.fork(this.index); // [electrum] call the enumerator with appropriate operation
+ } catch (ErrorAPI e) {
+ cb("pop", e.getMessage());
+ return;
+ }
if (!sol.satisfiable()) {
cb("pop", "There are no more satisfying instances.\n\n" + "Note: due to symmetry breaking and other optimizations,\n" + "some equivalent solutions may have been omitted.");
return;
@@ -624,7 +679,7 @@ public void run(WorkerCallback out) throws Exception {
*/
private static void validate(String filename) throws Exception {
A4SolutionReader.read(new ArrayList(), new XMLNode(new File(filename))).toString();
- StaticInstanceReader.parseInstance(new File(filename));
+ StaticInstanceReader.parseInstance(new File(filename), 0);
}
/** Task that perform one command. */
@@ -655,6 +710,7 @@ public void run(WorkerCallback out) throws Exception {
if (rep.warn > 0 && !bundleWarningNonFatal)
return;
List result = new ArrayList(cmds.size());
+ Exception exc = null;
if (bundleIndex == -2) {
final String outf = tempdir + File.separatorChar + "m.xml";
cb(out, "S2", "Generating the metamodel...\n");
@@ -681,7 +737,12 @@ public void run(WorkerCallback out) throws Exception {
final Command cmd = cmds.get(i);
rep.tempfile = tempCNF;
cb(out, "bold", "Executing \"" + cmd + "\"\n");
- A4Solution ai = TranslateAlloyToKodkod.execute_commandFromBook(rep, world.getAllReachableSigs(), cmd, options);
+ A4Solution ai = null;
+ try { // [electrum] postpones error throwing, allows other commands to still be solved
+ ai = TranslateAlloyToKodkod.execute_commandFromBook(rep, world.getAllReachableSigs(), cmd, options);
+ } catch (Exception e1) {
+ exc = e1;
+ }
if (ai == null)
result.add(null);
else if (ai.satisfiable())
@@ -735,6 +796,10 @@ else if (r.expects == 0)
rep.cb("bold", "Note: There were " + rep.warn + " compilation warnings. Please scroll up to see them.\n");
if (rep.warn == 1)
rep.cb("bold", "Note: There was 1 compilation warning. Please scroll up to see it.\n");
+
+ if (exc != null)
+ throw exc;
+
}
}
}
diff --git a/org.alloytools.alloy.application/src/test/java/edu/mit/csail/sdg/alloy4whole/InternalTest.java b/org.alloytools.alloy.application/src/test/java/edu/mit/csail/sdg/alloy4whole/InternalTest.java
index d766ff127..c510b2dad 100644
--- a/org.alloytools.alloy.application/src/test/java/edu/mit/csail/sdg/alloy4whole/InternalTest.java
+++ b/org.alloytools.alloy.application/src/test/java/edu/mit/csail/sdg/alloy4whole/InternalTest.java
@@ -39,6 +39,8 @@
/**
* API-specific regression test suite; the larger collection of models that test
* both the compiler and translator are in models/tests/*.als
+ *
+ * @modified [electrum] adapted to trace instance XML format
*/
public class InternalTest extends TestCase {
@@ -61,6 +63,40 @@ private static void check(Object a, Object b) {
public void test1() throws Exception {
XMLNode xml = new XMLNode(new StringReader("" + "" + " " + " " + " " + " " + "" + " " + " " + " " + " " + "" + " " + " " + " " + " " + " "));
+ String err = "";
+ try {
+ A4SolutionReader.read(null, xml);
+ } catch (Throwable ex) {
+ err = ex.toString();
+ }
+ check(err.contains("Missing trace"));
+ }
+
+ public void test2() throws Exception {
+ test1();
+ XMLNode xml = new XMLNode(new StringReader("" + "" + " " + " " + " " + " " + "" + " " + " " + " " + " " + " "));
+ String err = "";
+ try {
+ A4SolutionReader.read(null, xml);
+ } catch (Throwable ex) {
+ err = ex.toString();
+ }
+ check(err.contains("Missing trace"));
+ }
+
+ public void test3() throws Exception {
+ XMLNode xml = new XMLNode(new StringReader("" + "" + " " + " " + " " + " " + " " + " " + " "));
+ String err = "";
+ try {
+ A4SolutionReader.read(null, xml);
+ } catch (Throwable ex) {
+ err = ex.toString();
+ }
+ check(err.contains("Missing trace"));
+ }
+
+ public void test1Ele() throws Exception {
+ XMLNode xml = new XMLNode(new StringReader("" + "" + " " + " " + " " + " " + "" + " " + " " + " " + " " + "" + " " + " " + " " + " " + " "));
Sig state = new Sig.PrimSig("State");
A4Solution sol = A4SolutionReader.read(Arrays.asList(state), xml);
SafeList skolems = new SafeList(sol.getAllSkolems());
@@ -78,9 +114,9 @@ public void test1() throws Exception {
check("" + sol.eval(field2.cardinality()), "-2");
}
- public void test2() throws Exception {
+ public void test2Ele() throws Exception {
test1();
- XMLNode xml = new XMLNode(new StringReader("" + "" + " " + " " + " " + " " + "" + " " + " " + " " + " " + " "));
+ XMLNode xml = new XMLNode(new StringReader("" + "" + " " + " " + " " + " " + "" + " " + " " + " " + " " + " "));
Sig activity = new Sig.PrimSig("Act");
A4Solution sol = A4SolutionReader.read(Arrays.asList(activity), xml);
SafeList skolems = new SafeList(sol.getAllSkolems());
@@ -89,8 +125,8 @@ public void test2() throws Exception {
check(skolems.get(0).type(), Sig.SEQIDX.type().product(activity.type()));
}
- public void test3() throws Exception {
- XMLNode xml = new XMLNode(new StringReader("" + "" + " " + " " + " " + " " + " " + " " + " "));
+ public void test3Ele() throws Exception {
+ XMLNode xml = new XMLNode(new StringReader("" + "" + " " + " " + " " + " " + " " + " " + " "));
String err = "";
try {
A4SolutionReader.read(null, xml);
diff --git a/org.alloytools.alloy.core/.classpath b/org.alloytools.alloy.core/.classpath
index 76b65c0d5..bcafe71e5 100644
--- a/org.alloytools.alloy.core/.classpath
+++ b/org.alloytools.alloy.core/.classpath
@@ -1,10 +1,12 @@
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/org.alloytools.alloy.core/.settings/org.eclipse.jdt.core.prefs b/org.alloytools.alloy.core/.settings/org.eclipse.jdt.core.prefs
index 581b9f158..2f809de6d 100644
--- a/org.alloytools.alloy.core/.settings/org.eclipse.jdt.core.prefs
+++ b/org.alloytools.alloy.core/.settings/org.eclipse.jdt.core.prefs
@@ -133,12 +133,16 @@ org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=ignore
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.processAnnotations=disabled
+org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8
org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,NORMAL
org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=4
org.eclipse.jdt.core.formatter.align_type_members_on_columns=true
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=2
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=51
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=50
@@ -148,6 +152,7 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_e
org.eclipse.jdt.core.formatter.alignment_for_assignment=2
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=2
org.eclipse.jdt.core.formatter.alignment_for_compact_if=2
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=2
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=51
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=2
@@ -191,6 +196,8 @@ org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=false
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
@@ -242,13 +249,13 @@ org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_ini
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
@@ -415,6 +422,9 @@ org.eclipse.jdt.core.formatter.join_wrapped_lines=false
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.jdt.core.formatter.lineSplit=140
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
diff --git a/org.alloytools.alloy.core/.settings/org.eclipse.jdt.ui.prefs b/org.alloytools.alloy.core/.settings/org.eclipse.jdt.ui.prefs
index dcee2a4d2..4282c280f 100644
--- a/org.alloytools.alloy.core/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.alloytools.alloy.core/.settings/org.eclipse.jdt.ui.prefs
@@ -60,7 +60,7 @@ cleanup_settings_version=2
eclipse.preferences.version=1
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
formatter_profile=_Alloy
-formatter_settings_version=13
+formatter_settings_version=14
org.eclipse.jdt.ui.exception.name=e
org.eclipse.jdt.ui.gettersetter.use.is=true
org.eclipse.jdt.ui.ignorelowercasenames=true
diff --git a/org.alloytools.alloy.core/bnd.bnd b/org.alloytools.alloy.core/bnd.bnd
index d2774f018..71bffcfdc 100644
--- a/org.alloytools.alloy.core/bnd.bnd
+++ b/org.alloytools.alloy.core/bnd.bnd
@@ -1,22 +1,22 @@
-
-includeresource: \
- src/main/resources
+ src/main/resources, \
+ @${repo;slf4j.api}, \
-buildpath: \
- org.alloytools.kodkod.core;version=latest, \
+ org.alloytools.pardinus;version=latest,\
org.sat4j.core,\
org.alloytools.kodkod.nativesat.util;version=latest,\
org.alloytools.kodkod.nativesat.amd64-linux;version=latest,\
org.alloytools.kodkod.nativesat.x86-linux;version=latest,\
org.alloytools.kodkod.nativesat.x86-mac;version=latest,\
- org.alloytools.kodkod.nativesat.x86-windows;version=latest, \
- org.eclipse.jdt.annotation
+ org.alloytools.kodkod.nativesat.x86-windows;version=latest,\
+ org.eclipse.jdt.annotation,\
-testpath: \
osgi.enroute.junit.wrapper, \
osgi.enroute.hamcrest.wrapper, \
- src/main/resources;version=file
-
+ src/main/resources;version=file, \
+ slf4j.api, \
Export-Package: \
edu.mit.csail.sdg.alloy4,\
@@ -27,4 +27,6 @@ Export-Package: \
edu.mit.csail.sdg.translator,\
org.alloytools.util.table,\
org.alloytools.alloy.core
-Private-Package: java_cup.runtime
+
+Private-Package: \
+ java_cup.runtime
diff --git a/org.alloytools.alloy.core/build.gradle b/org.alloytools.alloy.core/build.gradle
index dd26cd987..23557c61b 100644
--- a/org.alloytools.alloy.core/build.gradle
+++ b/org.alloytools.alloy.core/build.gradle
@@ -15,6 +15,7 @@ task cup(type: JavaExec ) {
outputs.files("src/main/java/edu/mit/csail/sdg/parser/CompParser.java", "src/main/java/edu/mit/csail/sdg/parser/CompSym.java")
classpath file( '../cnf/jars/java-cup-11a.jar' )
+ classpath file( '../cnf/jars/java-cup-runtime-0.11-a-czt01-cdh.jar' )
main = 'java_cup.Main'
workingDir( "src/main/java/edu/mit/csail/sdg/parser")
args(
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/A4Preferences.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/A4Preferences.java
index 2cb7328c6..75365e8fc 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/A4Preferences.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/A4Preferences.java
@@ -1,3 +1,17 @@
+/* Alloy Analyzer 4 -- Copyright (c) 2006-2009, Felix Chang
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify,
+ * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+ * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
package edu.mit.csail.sdg.alloy4;
import java.awt.GraphicsEnvironment;
@@ -16,6 +30,11 @@
import edu.mit.csail.sdg.translator.A4Options.SatSolver;
+/**
+ *
+ * @modified [electrum] added decompose strategy option
+ *
+ */
@SuppressWarnings({
"serial", "unchecked"
} )
@@ -501,175 +520,218 @@ public void actionPerformed(ActionEvent e) {
/**
* True if Alloy Analyzer should let warning be nonfatal.
*/
- public static final BooleanPref WarningNonfatal = new BooleanPref("WarningNonfatal", "Allow warnings");
+ public static final BooleanPref WarningNonfatal = new BooleanPref("WarningNonfatal", "Allow warnings");
/**
* True if Alloy Analyzer should automatically visualize the latest instance.
*/
- public static final BooleanPref AutoVisualize = new BooleanPref("AutoVisualize", "Visualize automatically");
+ public static final BooleanPref AutoVisualize = new BooleanPref("AutoVisualize", "Visualize automatically");
/** True if Alloy Analyzer should insist on antialias. */
- public static final BooleanPref AntiAlias = new BooleanPref("AntiAlias", "Use anti-aliasing");
+ public static final BooleanPref AntiAlias = new BooleanPref("AntiAlias", "Use anti-aliasing");
/**
* True if Alloy Analyzer should record the raw Kodkod input and output.
*/
- public static final BooleanPref RecordKodkod = new BooleanPref("RecordKodkod", "Record the Kodkod input/output");
+ public static final BooleanPref RecordKodkod = new BooleanPref("RecordKodkod", "Record the Kodkod input/output");
/**
* True if Alloy Analyzer should enable the new Implicit This name resolution.
*/
- public static final BooleanPref ImplicitThis = new BooleanPref("ImplicitThis", "Enable 'implicit this' name resolution");
+ public static final BooleanPref ImplicitThis = new BooleanPref("ImplicitThis", "Enable 'implicit this' name resolution");
/**
* True if Alloy Analyzer should not report models that overflow.
*/
- public static final BooleanPref NoOverflow = new BooleanPref("NoOverflow", "Prevent overflows", true);
+ public static final BooleanPref NoOverflow = new BooleanPref("NoOverflow", "Prevent overflows", true);
/**
* The latest X coordinate of the Alloy Analyzer's main window.
*/
- public static final IntPref AnalyzerX = new IntPref("AnalyzerX", 0, -1, 65535);
+ public static final IntPref AnalyzerX = new IntPref("AnalyzerX", 0, -1, 65535);
/**
* The latest Y coordinate of the Alloy Analyzer's main window.
*/
- public static final IntPref AnalyzerY = new IntPref("AnalyzerY", 0, -1, 65535);
+ public static final IntPref AnalyzerY = new IntPref("AnalyzerY", 0, -1, 65535);
/** The latest width of the Alloy Analyzer's main window. */
- public static final IntPref AnalyzerWidth = new IntPref("AnalyzerWidth", 0, -1, 65535);
+ public static final IntPref AnalyzerWidth = new IntPref("AnalyzerWidth", 0, -1, 65535);
/**
* The latest height of the Alloy Analyzer's main window.
*/
- public static final IntPref AnalyzerHeight = new IntPref("AnalyzerHeight", 0, -1, 65535);
+ public static final IntPref AnalyzerHeight = new IntPref("AnalyzerHeight", 0, -1, 65535);
/** The latest font size of the Alloy Analyzer. */
- public static final IntChoicePref FontSize = new IntChoicePref("FontSize", "Font size", Arrays.asList(9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 32, 36, 40, 44, 48, 54, 60, 66, 72), 14);
+ public static final IntChoicePref FontSize = new IntChoicePref("FontSize", "Font size", Arrays.asList(9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 32, 36, 40, 44, 48, 54, 60, 66, 72), 14);
/** The latest font name of the Alloy Analyzer. */
- public static final StringChoicePref FontName = new StringChoicePref("FontName", "Font family", Arrays.asList(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()), "Lucida Grande");
+ public static final StringChoicePref FontName = new StringChoicePref("FontName", "Font family", Arrays.asList(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()), "Lucida Grande");
/** The latest tab distance of the Alloy Analyzer. */
- public static final IntChoicePref TabSize = IntChoicePref.range("TabSize", "Tab size", 1, 1, 16, 4);
+ public static final IntChoicePref TabSize = IntChoicePref.range("TabSize", "Tab size", 1, 1, 16, 4);
/** The latest welcome screen that the user has seen. */
- public static final BooleanPref Welcome = new BooleanPref("Welcome", "Show welcome message at start up");
+ public static final BooleanPref Welcome = new BooleanPref("Welcome", "Show welcome message at start up");
/** Look and feel */
- public static final StringChoicePref LAF = new StringChoicePref("LAF", "Look and feel", Arrays.asList("Native", "Cross-platform"), Util.onMac() || Util.onWindows() ? "Native" : "Cross-platform");
+ public static final StringChoicePref LAF = new StringChoicePref("LAF", "Look and feel", Arrays.asList("Native", "Cross-platform"), Util.onMac() || Util.onWindows() ? "Native" : "Cross-platform");
/**
* Whether syntax highlighting should be disabled or not.
*/
- public static final BooleanPref SyntaxDisabled = new BooleanPref("SyntaxHighlightingDisabled", "Disable syntax highlighting");
+ public static final BooleanPref SyntaxDisabled = new BooleanPref("SyntaxHighlightingDisabled", "Disable syntax highlighting");
/** The number of recursion unrolls. */
- public static final IntChoicePref Unrolls = new IntChoicePref("Unrolls", "Recursion depth", Arrays.asList(-1, 0, 1, 2, 3), -1) {
+ public static final IntChoicePref Unrolls = new IntChoicePref("Unrolls", "Recursion depth", Arrays.asList(-1, 0, 1, 2, 3), -1) {
- @Override
- public Object renderValueShort(Integer value) {
- return (value != null && value.intValue() == -1) ? "disabled" : value;
- }
- };
+ @Override
+ public Object renderValueShort(Integer value) {
+ return (value != null && value.intValue() == -1) ? "disabled" : value;
+ }
+ };
/** The skolem depth. */
- public static final IntChoicePref SkolemDepth = new IntChoicePref("SkolemDepth3", "Skolem depth", Arrays.asList(0, 1, 2, 3, 4), 1);
+ public static final IntChoicePref SkolemDepth = new IntChoicePref("SkolemDepth3", "Skolem depth", Arrays.asList(0, 1, 2, 3, 4), 1);
/** The unsat core minimization strategy. */
- private static final String[] coreMinimizationLabels = new String[] {
- "Slow", "Slow (guarantees local minimum)", "Medium", "Medium", "Fast", "Fast (initial unsat core)"
+ private static final String[] coreMinimizationLabels = new String[] {
+ "Slow", "Slow (guarantees local minimum)", "Medium", "Medium", "Fast", "Fast (initial unsat core)"
};
- public static final IntChoicePref CoreMinimization = new IntChoicePref("CoreMinimization", "Unsat core minimization", Arrays.asList(0, 1, 2), 2) {
+ public static final IntChoicePref CoreMinimization = new IntChoicePref("CoreMinimization", "Unsat core minimization", Arrays.asList(0, 1, 2), 2) {
- @Override
- public Object renderValueShort(Integer value) {
- return coreMinimizationLabels[value * 2];
- }
+ @Override
+ public Object renderValueShort(Integer value) {
+ return coreMinimizationLabels[value * 2];
+ }
- @Override
- public Object renderValueLong(Integer value) {
- return coreMinimizationLabels[value * 2 + 1];
- }
- };
+ @Override
+ public Object renderValueLong(Integer value) {
+ return coreMinimizationLabels[value * 2 + 1];
+ }
+ };
- private static final String[] coreGranularityLabels = new String[] {
- "Top-level", "Top-level conjuncts only", "Flatten once", "Flatten the formula once at the beginning", "Flatten twice", "Flatten the formula at the beginning and after skolemizing", "Expand quantifiers", "In addition to flattening the formula twice, expand the quantifiers"
+ private static final String[] coreGranularityLabels = new String[] {
+ "Top-level", "Top-level conjuncts only", "Flatten once", "Flatten the formula once at the beginning", "Flatten twice", "Flatten the formula at the beginning and after skolemizing", "Expand quantifiers", "In addition to flattening the formula twice, expand the quantifiers"
};
/** The unsat core granularity. */
- public static final IntChoicePref CoreGranularity = new IntChoicePref("CoreGranularity", "Unsat core granularity", Arrays.asList(0, 1, 2, 3), 0) {
+ public static final IntChoicePref CoreGranularity = new IntChoicePref("CoreGranularity", "Unsat core granularity", Arrays.asList(0, 1, 2, 3), 0) {
+
+ @Override
+ public Object renderValueShort(Integer value) {
+ return coreGranularityLabels[value * 2];
+ }
+
+ @Override
+ public Object renderValueLong(Integer value) {
+ return coreGranularityLabels[value * 2 + 1];
+ }
+ };
+
+ /** The decompose solving strategy. */
+ public static final ChoicePref DecomposePref = new ChoicePref("Decompose strategy", Decompose.values(), Decompose.OFF) {
+
+ @Override
+ protected String serialize(Decompose value) {
+ return value.id;
+ }
+ };
+
+ public enum Decompose {
+ /** regular amalgamated strategy. */
+ OFF("0", "batch"),
+ /** hybrid strategy, competitive parallel vs amalgamated. */
+ HYBRID("1", "hybrid"),
+ /** purely parallel decompose strategy. */
+ PARALLEL("2", "parallel");
+
+ /** Returns true if it is greater than or equal to "other". */
+ public boolean geq(Decompose other) {
+ return ordinal() >= other.ordinal();
+ }
- @Override
- public Object renderValueShort(Integer value) {
- return coreGranularityLabels[value * 2];
- }
+ /**
+ * This is a unique String for this value; it should be kept consistent in
+ * future versions.
+ */
+ private final String id;
+ /** This is the label that the toString() method will return. */
+ private final String label;
- @Override
- public Object renderValueLong(Integer value) {
- return coreGranularityLabels[value * 2 + 1];
- }
- };
+ /** Constructs a new Decompose value with the given id and label. */
+ private Decompose(String id, String label) {
+ this.id = id;
+ this.label = label;
+ }
+
+ /** Returns the human-readable label for this enum value. */
+ @Override
+ public final String toString() {
+ return label;
+ }
+ }
/**
* The amount of memory (in M) to allocate for Kodkod and the SAT solvers.
*/
- public static final IntChoicePref SubMemory = new IntChoicePref("SubMemory", "Maximum memory", Arrays.asList(768, 1024, 1536, 2048, 2560, 3072, 3584, 4096, 8192, 16384), 2084) {
+ public static final IntChoicePref SubMemory = new IntChoicePref("SubMemory", "Maximum memory", Arrays.asList(768, 1024, 1536, 2048, 2560, 3072, 3584, 4096, 8192, 16384), 2084) {
- @Override
- public Object renderValueShort(Integer value) {
- return value.toString() + " MB";
- }
- };
+ @Override
+ public Object renderValueShort(Integer value) {
+ return value.toString() + " MB";
+ }
+ };
/**
* The amount of stack (in K) to allocate for Kodkod and the SAT solvers.
*/
- public static final IntChoicePref SubStack = new IntChoicePref("SubStack", "Maximum stack", Arrays.asList(1024, 2048, 4096, 8192, 16384, 32768, 65536), 8192) {
+ public static final IntChoicePref SubStack = new IntChoicePref("SubStack", "Maximum stack", Arrays.asList(1024, 2048, 4096, 8192, 16384, 32768, 65536), 8192) {
- @Override
- public Object renderValueShort(Integer value) {
- return value.toString() + " k";
- }
- };
+ @Override
+ public Object renderValueShort(Integer value) {
+ return value.toString() + " k";
+ }
+ };
/**
* The first file in Alloy Analyzer's "open recent" list.
*/
- public static final StringPref Model0 = new StringPref("Model0");
+ public static final StringPref Model0 = new StringPref("Model0");
/**
* The second file in Alloy Analyzer's "open recent" list.
*/
- public static final StringPref Model1 = new StringPref("Model1");
+ public static final StringPref Model1 = new StringPref("Model1");
/**
* The third file in Alloy Analyzer's "open recent" list.
*/
- public static final StringPref Model2 = new StringPref("Model2");
+ public static final StringPref Model2 = new StringPref("Model2");
/**
* The fourth file in Alloy Analyzer's "open recent" list.
*/
- public static final StringPref Model3 = new StringPref("Model3");
+ public static final StringPref Model3 = new StringPref("Model3");
/** Automatically infer partial instance from model */
- public static final BooleanPref InferPartialInstance = new BooleanPref("InferPartialInstance", "Infer partial instance");
+ public static final BooleanPref InferPartialInstance = new BooleanPref("InferPartialInstance", "Infer partial instance");
- public static final DelayedChoicePref Solver = new DelayedChoicePref("SatSolver2", "Solver", SatSolver.values(), SatSolver.SAT4J) {
+ public static final DelayedChoicePref Solver = new DelayedChoicePref("SatSolver2", "Solver", SatSolver.values(), SatSolver.SAT4J) {
- @Override
- protected String serialize(SatSolver value) {
- return value.id();
- }
- };
+ @Override
+ protected String serialize(SatSolver value) {
+ return value.id();
+ }
+ };
- public static final ChoicePref VerbosityPref = new ChoicePref("Verbosity", Verbosity.values(), Verbosity.DEFAULT) {
+ public static final ChoicePref VerbosityPref = new ChoicePref("Verbosity", Verbosity.values(), Verbosity.DEFAULT) {
- @Override
- protected String serialize(Verbosity value) {
- return value.id;
- }
- };
+ @Override
+ protected String serialize(Verbosity value) {
+ return value.id;
+ }
+ };
public enum Verbosity {
/** Level 0. */
@@ -728,7 +790,8 @@ public final String toString() {
if (Pref.class.isAssignableFrom(f.getType())) {
try {
ans.add((Pref< ? >) f.get(self));
- } catch (Exception e) {}
+ } catch (Exception e) {
+ }
}
}
return ans;
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/A4Reporter.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/A4Reporter.java
index f17136509..c452fc9e4 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/A4Reporter.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/A4Reporter.java
@@ -19,6 +19,11 @@
* This class receives diagnostic, progress, and warning messages from Alloy4.
* (This default implementation ignores all calls; you should subclass it to do
* the appropriate screen output)
+ *
+ * @modified [electrum] the solving process now reports in which step of the
+ * temporal analysis is (reported info should regard that step only)
+ * and the decompose strategy; translation also reports temporal
+ * parameters (max/min trace length)
*/
public class A4Reporter {
@@ -106,26 +111,30 @@ public void bound(String msg) {
* @param solver - the solver chosen by the user (eg. SAT4J, MiniSat...)
* @param bitwidth - the integer bitwidth chosen by the user
* @param maxseq - the scope on seq/Int chosen by the user
+ * @param mintrace - the minimum trace length
+ * @param maxtrace - the maximum trace length
* @param skolemDepth - the skolem function depth chosen by the user (0, 1,
* 2...)
* @param symmetry - the amount of symmetry breaking chosen by the user (0...)
+ * @param strat - selected decompose solving strategy
*/
- public void translate(String solver, int bitwidth, int maxseq, int skolemDepth, int symmetry) {
+ public void translate(String solver, int bitwidth, int maxseq, int mintrace, int maxtrace, int skolemDepth, int symmetry, String strat) {
if (parent != null)
- parent.translate(solver, bitwidth, maxseq, skolemDepth, symmetry);
+ parent.translate(solver, bitwidth, maxseq, mintrace, maxtrace, skolemDepth, symmetry, strat);
}
/**
* This method is called by the translator just after it generated the CNF.
*
+ * @param plength - the prefix length considered for this analysis
* @param primaryVars - the total number of primary variables
* @param totalVars - the total number of variables including the number of
* primary variables
* @param clauses - the total number of clauses
*/
- public void solve(int primaryVars, int totalVars, int clauses) {
+ public void solve(int plength, int primaryVars, int totalVars, int clauses) {
if (parent != null)
- parent.solve(primaryVars, totalVars, clauses);
+ parent.solve(plength, primaryVars, totalVars, clauses);
}
/**
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/OurConsole.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/OurConsole.java
index ed9e5b9aa..fc2d3102a 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/OurConsole.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/OurConsole.java
@@ -66,6 +66,11 @@
* be displayed in red.
*
* Thread Safety: Can be called only by the AWT event thread.
+ *
+ * @modified [electrum] the evaluator now acts on the current state focused on
+ * the visualizer (temporal formulas can still be evaluated, but
+ * always from the focused state); this info is updated by the VizGUI
+ * and passed along to the computer
*/
public final class OurConsole extends JScrollPane {
@@ -121,7 +126,10 @@ public final class OurConsole extends JScrollPane {
/**
* The position in this.history that is currently showing.
*/
- private int browse = 0;
+ private int browse = 0;
+
+ /** The current state under which to evaluate user commands. */
+ private int current = 0;
/*
* Helper method that construct a mutable style with the given font name, font
@@ -379,7 +387,9 @@ private void do_command(Computer computer, String cmd) {
boolean isBad = false;
Object result;
try {
- result = computer.compute(cmd);
+ result = computer.compute(new String[] {
+ cmd, current + ""
+ });
} catch (Throwable ex) {
result = ex.toString();
isBad = true;
@@ -428,6 +438,12 @@ private void do_add(int where, String text, AttributeSet style) {
main.getCaret().setSelectionVisible(false);
} else
doc.insertString(where >= 0 ? where : doc.getLength(), text, style);
- } catch (BadLocationException ex) {}
+ } catch (BadLocationException ex) {
+ }
+ }
+
+ /** Set the current state under which to evaluate the user command. */
+ public void setCurrentState(int state) {
+ current = state;
}
}
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/OurSyntaxDocument.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/OurSyntaxDocument.java
index 219cbe557..eeb66807e 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/OurSyntaxDocument.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/OurSyntaxDocument.java
@@ -39,6 +39,9 @@
* Graphical syntax-highlighting StyledDocument.
*
* Thread Safety: Can be called only by the AWT event thread
+ *
+ * @modified [electrum] added the new language keywords; forbid primes in
+ * identifiers
*/
class OurSyntaxDocument extends DefaultStyledDocument {
@@ -180,7 +183,7 @@ class OurSyntaxDocument extends DefaultStyledDocument {
* This stores the currently recognized set of reserved keywords.
*/
private static final String[] keywords = new String[] {
- "abstract", "all", "and", "as", "assert", "but", "check", "disj", "disjoint", "else", "enum", "exactly", "exh", "exhaustive", "expect", "extends", "fact", "for", "fun", "iden", "iff", "implies", "in", "Int", "int", "let", "lone", "module", "no", "none", "not", "one", "open", "or", "part", "partition", "pred", "private", "run", "seq", "set", "sig", "some", "String", "sum", "this", "univ"
+ "abstract", "var", "all", "and", "as", "assert", "but", "check", "disj", "disjoint", "else", "enum", "exactly", "exh", "exhaustive", "expect", "extends", "fact", "for", "fun", "iden", "iff", "implies", "in", "Int", "int", "let", "lone", "module", "no", "none", "not", "one", "open", "or", "part", "partition", "pred", "private", "run", "seq", "set", "sig", "some", "String", "sum", "this", "univ", "eventually", "always", "after", "once", "historically", "since", "triggered", "before", "until", "releases", "steps"
};
/**
@@ -188,7 +191,7 @@ class OurSyntaxDocument extends DefaultStyledDocument {
* keyword.
*/
private static final boolean do_keyword(String array, int start, int len) {
- if (len >= 2 && len <= 10)
+ if (len >= 2 && len <= 12)
for (int i = keywords.length - 1; i >= 0; i--) {
String str = keywords[i];
if (str.length() == len)
@@ -205,7 +208,8 @@ else if (str.charAt(j) != array.charAt(start + j))
* Returns true if "c" can be in the start or middle or end of an identifier.
*/
private static final boolean do_iden(char c) {
- return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == '$' || (c >= '0' && c <= '9') || c == '_' || c == '\'' || c == '\"';
+ // [electrum] forbid primes in identifiers
+ return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == '$' || (c >= '0' && c <= '9') || c == '_' || c == '\"';
}
/** Constructor. */
@@ -505,11 +509,13 @@ private final Mode do_reapply(Mode mode, final String txt, final int line) {
}
setCharacterAttributes(oldi, i - oldi, styleString, false);
} else if (do_iden(c)) {
- for (i++; i < n && do_iden(txt.charAt(i)); i++) {}
+ for (i++; i < n && do_iden(txt.charAt(i)); i++) {
+ }
AttributeSet style = (c >= '0' && c <= '9') ? styleNumber : (do_keyword(txt, oldi, i - oldi) ? styleKeyword : styleNormal);
setCharacterAttributes(oldi, i - oldi, style, false);
} else {
- for (i++; i < n && !do_iden(txt.charAt(i)) && txt.charAt(i) != '\n' && txt.charAt(i) != '-' && txt.charAt(i) != '/'; i++) {}
+ for (i++; i < n && !do_iden(txt.charAt(i)) && txt.charAt(i) != '\n' && txt.charAt(i) != '-' && txt.charAt(i) != '/'; i++) {
+ }
setCharacterAttributes(oldi, i - oldi, styleSymbol, false);
}
}
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/TableView.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/TableView.java
index 79c38ee7f..c7a491ff8 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/TableView.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/TableView.java
@@ -23,9 +23,15 @@
import edu.mit.csail.sdg.translator.A4Tuple;
import edu.mit.csail.sdg.translator.A4TupleSet;
import kodkod.instance.Instance;
+import kodkod.instance.TemporalInstance;
import kodkod.instance.Tuple;
import kodkod.instance.TupleSet;
+/**
+ *
+ * @modified [electrum] adapted to focus on particular state
+ *
+ */
public class TableView {
final static String SUPERSCRIPTS = "⁰¹²³⁴⁵⁶⁷⁸⁹";
@@ -140,9 +146,11 @@ public static String revertSuffix(String cmd) {
* @param solution
* @param instance
* @param sigs
+ * @param state
* @return
*/
- public static Map toTable(A4Solution solution, Instance instance, SafeList sigs) {
+ // [electrum] added state to print, -1 for static
+ public static Map toTable(A4Solution solution, Instance instance, SafeList sigs, int state) {
Map map = new HashMap();
@@ -151,11 +159,12 @@ public static Map toTable(A4Solution solution, Instance instance,
if (!s.label.startsWith("this/"))
continue;
- TupleSet instanceTuples = instance.tuples(s.label);
+ TupleSet instanceTuples = (state > -1 ? ((TemporalInstance) instance).state(state) : instance).tuples(s.label);
if (instanceTuples != null) {
List instancesArray = toList(instanceTuples);
Collections.sort(instancesArray, new Comparator() {
+
@Override
public int compare(SimTuple simTuple1, SimTuple simTuple2) {
String[] coll1 = simTuple1.get(0).toString().split("\\$");
@@ -163,8 +172,7 @@ public int compare(SimTuple simTuple1, SimTuple simTuple2) {
if (coll1.length == 2 && coll2.length == 2) {
try {
return Integer.parseInt(coll1[1]) - Integer.parseInt(coll2[1]);
- }
- catch (NumberFormatException e) {
+ } catch (NumberFormatException e) {
return 0;
}
}
@@ -194,7 +202,7 @@ public int compare(SimTuple simTuple1, SimTuple simTuple2) {
c = 1;
for (Field f : s.getFields()) {
- SimTupleset relations = toSimTupleset(solution.eval(f));
+ SimTupleset relations = toSimTupleset(state > -1 ? solution.eval(f, state) : solution.eval(f));
SimTupleset joined = leftJoin.join(relations);
Table relationTable = toTable(joined);
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/WorkerEngine.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/WorkerEngine.java
index 0483f039b..6d60a708c 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/WorkerEngine.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/alloy4/WorkerEngine.java
@@ -47,8 +47,9 @@
* subsequent task; however, if the subprocess crashed, the crash will be
* reported to the parent process via callback, and if we try to execute another
* task, then a new subprocess will be spawned automatically.
+ *
+ * @modified [electrum] handle external executables
*/
-
public final class WorkerEngine {
/**
@@ -180,8 +181,24 @@ private WorkerEngine() {
public static void stop() {
synchronized (WorkerEngine.class) {
try {
- if (latest_sub != null)
+ if (latest_sub != null) {
+ // [electrum] this replaces the currently WorkerTask so that it exits gracefully
+ try {
+ ObjectOutputStream main2sub = new ObjectOutputStream(wrap(latest_sub.getOutputStream()));
+ main2sub.writeObject(new WorkerTask() {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void run(WorkerCallback out) throws Exception {
+ }
+ });
+ main2sub.close();
+ } catch (IOException e) {
+ }
+
latest_sub.destroy();
+ }
} finally {
latest_manager = null;
latest_sub = null;
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Attr.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Attr.java
index 4b0172909..47357c89b 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Attr.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Attr.java
@@ -20,6 +20,9 @@
/**
* Immutable; represents attributes that can be associated with Signatures and
* some other AST objects.
+ *
+ * @modified [electrum] added a new attribute AST objects, whether they are
+ * variable/mutable in time
*/
public final class Attr {
@@ -86,7 +89,13 @@ public enum AttrType {
* ENUM; if a PrimSig has the ENUM attribute, it is toplevel and abstract and
* has only singleton children.
*/
- ENUM("enum");
+ ENUM("enum"),
+
+ /**
+ * VARIABLE; if a Sig has the VARIABLE attribute, it means its value may change
+ * over time.
+ */
+ VARIABLE("variable");
/** The label for this attribute type. */
private final String label;
@@ -194,6 +203,9 @@ public final String toString() {
*/
public static final Attr ENUM = new Attr(AttrType.ENUM, null);
+ /** VARIABLE; if a Sig is variable, changing in time. */
+ public static final Attr VARIABLE = new Attr(AttrType.VARIABLE, null);
+
/**
* Construct an attribute of the given type with the given position; if
* pos==null, it is treated as Pos.UNKNOWN.
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Command.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Command.java
index 17347559b..3e39158fc 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Command.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Command.java
@@ -39,6 +39,16 @@
* Invariant: maxseq >= -1
*
* Invariant: maxstring >= -1
+ *
+ * Invariant: minprefix == -1 or >= 1
+ *
+ * Invariant: maxprefix == -1 or >= 1
+ *
+ * @modified [electrum] added two special scopes to commands, the minimum and
+ * maximum trace prefix lengths to be considered during analysis; when
+ * they are omitted, defaults to -1; also, for complement model
+ * checking (unbounded max prefix length), the max length is assumed
+ * to be MAX_INTEGER
*/
public final class Command extends Browsable {
@@ -78,6 +88,18 @@ public final class Command extends Browsable {
*/
public final int maxseq;
+ /**
+ * The minimum trace prefix length (1 or higher) (Or -1 if it was not
+ * specified).
+ */
+ public final int minprefix;
+
+ /**
+ * The maximum trace prefix length (1 or higher) (Or -1 if it was not
+ * specified).
+ */
+ public final int maxprefix;
+
/**
* The number of String atoms to allocate (0 or higher) (Or -1 if it was not
* specified).
@@ -116,11 +138,11 @@ public final String toString() {
}
boolean first = true;
StringBuilder sb = new StringBuilder(check ? "Check " : "Run ").append(label);
- if (overall >= 0 && (bitwidth >= 0 || maxseq >= 0 || scope.size() > 0))
+ if (overall >= 0 && (bitwidth >= 0 || maxseq >= 0 || scope.size() > 0 || minprefix >= 0 || maxprefix >= 0))
sb.append(" for ").append(overall).append(" but");
else if (overall >= 0)
sb.append(" for ").append(overall);
- else if (bitwidth >= 0 || maxseq >= 0 || scope.size() > 0)
+ else if (bitwidth >= 0 || maxseq >= 0 || scope.size() > 0 || minprefix >= 0 || maxprefix >= 0)
sb.append(" for");
if (bitwidth >= 0) {
sb.append(" ").append(bitwidth).append(" int");
@@ -130,6 +152,15 @@ else if (bitwidth >= 0 || maxseq >= 0 || scope.size() > 0)
sb.append(first ? " " : ", ").append(maxseq).append(" seq");
first = false;
}
+ if (maxprefix >= 0) {
+ sb.append(" ");
+ if (minprefix >= 0)
+ sb.append(minprefix).append("..");
+ if (maxprefix != Integer.MAX_VALUE)
+ sb.append(maxprefix);
+ sb.append(" steps");
+ first = false;
+ }
for (CommandScope e : scope) {
sb.append(first ? " " : ", ").append(e);
first = false;
@@ -152,7 +183,7 @@ else if (bitwidth >= 0 || maxseq >= 0 || scope.size() > 0)
* @param formula - the formula that must be satisfied by this command
*/
public Command(boolean check, int overall, int bitwidth, int maxseq, Expr formula) throws ErrorSyntax {
- this(null, null, "", check, overall, bitwidth, maxseq, -1, null, null, formula, null);
+ this(null, null, "", check, overall, bitwidth, maxseq, -1, -1, -1, null, null, formula, null);
}
/**
@@ -168,6 +199,10 @@ public Command(boolean check, int overall, int bitwidth, int maxseq, Expr formul
* specified)
* @param maxseq - the maximum sequence length (0 or higher) (-1 if it was not
* specified)
+ * @param minprefix - the minimal trace prefix length (0 or higher) (-1 if it
+ * was not specified)
+ * @param maxprefix - the maximal trace prefix length (0 or higher) (-1 if it
+ * was not specified)
* @param expects - the expected value (0 or 1) (-1 if no expectation was
* specified)
* @param scope - a list of scopes (can be null if we want to use default)
@@ -175,7 +210,7 @@ public Command(boolean check, int overall, int bitwidth, int maxseq, Expr formul
* exact though we may or may not know what the scope is yet
* @param formula - the formula that must be satisfied by this command
*/
- public Command(Pos pos, Expr e, String label, boolean check, int overall, int bitwidth, int maxseq, int expects, Iterable scope, Iterable additionalExactSig, Expr formula, Command parent) {
+ public Command(Pos pos, Expr e, String label, boolean check, int overall, int bitwidth, int maxseq, int minprefix, int maxprefix, int expects, Iterable scope, Iterable additionalExactSig, Expr formula, Command parent) {
if (pos == null)
pos = Pos.UNKNOWN;
this.nameExpr = e;
@@ -186,6 +221,8 @@ public Command(Pos pos, Expr e, String label, boolean check, int overall, int bi
this.overall = (overall < 0 ? -1 : overall);
this.bitwidth = (bitwidth < 0 ? -1 : bitwidth);
this.maxseq = (maxseq < 0 ? -1 : maxseq);
+ this.maxprefix = (maxprefix < 1 ? -1 : maxprefix);
+ this.minprefix = (minprefix < 1 ? -1 : minprefix);
this.maxstring = (-1);
this.expects = (expects < 0 ? -1 : (expects > 0 ? 1 : 0));
this.scope = ConstList.make(scope);
@@ -198,7 +235,7 @@ public Command(Pos pos, Expr e, String label, boolean check, int overall, int bi
* except with a different formula.
*/
public Command change(Expr newFormula) {
- return new Command(pos, nameExpr, label, check, overall, bitwidth, maxseq, expects, scope, additionalExactScopes, newFormula, parent);
+ return new Command(pos, nameExpr, label, check, overall, bitwidth, maxseq, minprefix, maxprefix, expects, scope, additionalExactScopes, newFormula, parent);
}
/**
@@ -206,7 +243,7 @@ public Command change(Expr newFormula) {
* except with a different scope.
*/
public Command change(ConstList scope) {
- return new Command(pos, nameExpr, label, check, overall, bitwidth, maxseq, expects, scope, additionalExactScopes, formula, parent);
+ return new Command(pos, nameExpr, label, check, overall, bitwidth, maxseq, minprefix, maxprefix, expects, scope, additionalExactScopes, formula, parent);
}
/**
@@ -214,7 +251,7 @@ public Command change(ConstList scope) {
* except with a different list of "additional exact sigs".
*/
public Command change(Sig... additionalExactScopes) {
- return new Command(pos, nameExpr, label, check, overall, bitwidth, maxseq, expects, scope, Util.asList(additionalExactScopes), formula, parent);
+ return new Command(pos, nameExpr, label, check, overall, bitwidth, maxseq, minprefix, maxprefix, expects, scope, Util.asList(additionalExactScopes), formula, parent);
}
/**
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Decl.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Decl.java
index 40e4b182f..37c5b1d32 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Decl.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Decl.java
@@ -22,6 +22,11 @@
/**
* Immutable; this declaration binds a list of names to an expression.
+ *
+ * @modified [electrum] added a new attribute to declarations, whether a
+ * variable/mutable expression is being declared. this is used for the
+ * declaration of variable fields (declarations elsewhere cannot be
+ * variable).
*/
public final class Decl {
@@ -44,6 +49,11 @@ public final class Decl {
*/
public final Pos disjoint2;
+ /**
+ * Nonnull if this decl is variable (to be used for fields).
+ */
+ public final Pos isVar;
+
/** The list of names. */
public final ConstList< ? extends ExprHasName> names;
@@ -71,10 +81,11 @@ public Pos span() {
/**
* This constructs a declaration; the list of names must not be empty.
*/
- public Decl(Pos isPrivate, Pos disjoint, Pos disjoint2, List< ? extends ExprHasName> names, Expr expr) {
+ public Decl(Pos isPrivate, Pos disjoint, Pos disjoint2, Pos isVar, List< ? extends ExprHasName> names, Expr expr) {
if (names.size() == 0)
throw new NullPointerException();
this.isPrivate = isPrivate;
+ this.isVar = isVar;
this.disjoint = (names.size() > 1 ? disjoint : null);
this.disjoint2 = disjoint2;
this.names = ConstList.make(names);
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Expr.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Expr.java
index 5bb5ff747..336c82466 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Expr.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Expr.java
@@ -40,6 +40,12 @@
* Invariant: type==EMPTY iff errors.size()>0
* Invariant: mult==0 || mult==1 || mult==2
* Invariant: weight>0
+ *
+ * @modified [electrum] adds convenience methods to create temporal formulas
+ * (unary always, eventually, after, once, historically, before and
+ * binary until, releases, since, triggered) and expressions (primes);
+ * also update Decl creations which are always immutable (null isVar)
+ * in this context
*/
public abstract class Expr extends Browsable {
@@ -982,7 +988,7 @@ public final Expr someOf() {
public final Decl someOf(String label) throws Err {
Expr x = ExprUnary.Op.SOMEOF.make(span(), this);
ExprVar v = ExprVar.make(x.span(), label, type);
- return new Decl(null, null, null, Arrays.asList(v), x);
+ return new Decl(null, null, null, null, Arrays.asList(v), x);
}
/**
@@ -1004,7 +1010,7 @@ public final Expr loneOf() {
public final Decl loneOf(String label) throws Err {
Expr x = ExprUnary.Op.LONEOF.make(span(), this);
ExprVar v = ExprVar.make(x.span(), label, type);
- return new Decl(null, null, null, Arrays.asList(v), x);
+ return new Decl(null, null, null, null, Arrays.asList(v), x);
}
/**
@@ -1026,7 +1032,7 @@ public final Expr oneOf() {
public final Decl oneOf(String label) throws Err {
Expr x = ExprUnary.Op.ONEOF.make(span(), this);
ExprVar v = ExprVar.make(x.span(), label, type);
- return new Decl(null, null, null, Arrays.asList(v), x);
+ return new Decl(null, null, null, null, Arrays.asList(v), x);
}
/**
@@ -1048,7 +1054,7 @@ public final Expr setOf() {
public final Decl setOf(String label) throws Err {
Expr x = ExprUnary.Op.SETOF.make(span(), this);
ExprVar v = ExprVar.make(x.span(), label, type);
- return new Decl(null, null, null, Arrays.asList(v), x);
+ return new Decl(null, null, null, null, Arrays.asList(v), x);
}
/**
@@ -1151,6 +1157,117 @@ public final Expr cast2sigint() {
return ExprUnary.Op.CAST2SIGINT.make(span(), this);
}
+ /**
+ * Returns the formula (always this)
+ *
+ * this must be a formula
+ */
+ public final Expr always() {
+ return ExprUnary.Op.ALWAYS.make(span(), this);
+ }
+
+ /**
+ * Returns the formula (eventually this)
+ *
+ * this must be a formula
+ */
+ public final Expr eventually() {
+ return ExprUnary.Op.EVENTUALLY.make(span(), this);
+ }
+
+ /**
+ * Returns the formula (after this)
+ *
+ * this must be a formula
+ */
+ public final Expr after() {
+ return ExprUnary.Op.AFTER.make(span(), this);
+ }
+
+ /**
+ * Returns the formula (before this)
+ *
+ * this must be a formula
+ */
+ public final Expr before() {
+ return ExprUnary.Op.BEFORE.make(span(), this);
+ }
+
+ /**
+ * Returns the formula (historically this)
+ *
+ * this must be a formula
+ */
+ public final Expr historically() {
+ return ExprUnary.Op.HISTORICALLY.make(span(), this);
+ }
+
+ /**
+ * Returns the formula (once this)
+ *
+ * this must be a formula
+ */
+ public final Expr once() {
+ return ExprUnary.Op.ONCE.make(span(), this);
+ }
+
+ /**
+ * Returns the formula (this until x)
+ *
+ * this and x must both be formulas
+ *
+ * Note: as a special guarantee, if x==null, then the method will return this
+ * Expr object as-is.
+ */
+ public final Expr until(Expr x) {
+ return (x == null) ? this : ExprBinary.Op.UNTIL.make(span().merge(x.span()), null, this, x);
+ }
+
+ /**
+ * Returns the formula (this releases x)
+ *
+ * this and x must both be formulas
+ *
+ * Note: as a special guarantee, if x==null, then the method will return this
+ * Expr object as-is.
+ */
+ public final Expr releases(Expr x) {
+ return (x == null) ? this : ExprBinary.Op.RELEASES.make(span().merge(x.span()), null, this, x);
+ }
+
+ /**
+ * Returns the formula (this since x)
+ *
+ * this and x must both be formulas
+ *
+ * Note: as a special guarantee, if x==null, then the method will return this
+ * Expr object as-is.
+ */
+ public final Expr since(Expr x) {
+ return (x == null) ? this : ExprBinary.Op.SINCE.make(span().merge(x.span()), null, this, x);
+ }
+
+ /**
+ * Returns the formula (this triggered x)
+ *
+ * this and x must both be formulas
+ *
+ * Note: as a special guarantee, if x==null, then the method will return this
+ * Expr object as-is.
+ */
+ public final Expr triggered(Expr x) {
+ return (x == null) ? this : ExprBinary.Op.TRIGGERED.make(span().merge(x.span()), null, this, x);
+ }
+
+ /**
+ * Returns the expression (this')
+ *
+ * this must be a set or relation
+ */
+ public final Expr prime() {
+ return ExprUnary.Op.PRIME.make(span(), this);
+ }
+
/**
* Get the position where this expression is referring to or null if it is not
* referring to anything.
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/ExprBinary.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/ExprBinary.java
index c4123a64f..83fc6d5c5 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/ExprBinary.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/ExprBinary.java
@@ -49,6 +49,9 @@
*
* Invariant: type!=EMPTY => (right.mult==2 => (this.op==IN || this.op is
* one of the 17 arrow operators))
+ *
+ * @modified [electrum] add binary temporal operators (until, releases, since,
+ * triggered) to the AST
*/
public final class ExprBinary extends Expr {
@@ -257,7 +260,15 @@ public static enum Op {
/** || */
OR("||", false),
/** <=> */
- IFF("<=>", false);
+ IFF("<=>", false),
+ /** until; */
+ UNTIL("until", false),
+ /** release; */
+ RELEASES("releases", false),
+ /** since; */
+ SINCE("since", false),
+ /** trigger */
+ TRIGGERED("triggered", false);
/**
* The constructor.
@@ -319,7 +330,11 @@ public final Expr make(Pos pos, Pos closingBracket, Expr left, Expr right) {
break;
}
case IFF :
- case IMPLIES : {
+ case IMPLIES :
+ case UNTIL :
+ case RELEASES :
+ case SINCE :
+ case TRIGGERED : {
left = left.typecheck_as_formula();
right = right.typecheck_as_formula();
break;
@@ -374,6 +389,10 @@ public final Expr make(Pos pos, Pos closingBracket, Expr left, Expr right) {
case OR :
case IFF :
case IMPLIES :
+ case UNTIL :
+ case RELEASES :
+ case SINCE :
+ case TRIGGERED :
type = Type.FORMULA;
break;
case MUL :
@@ -489,7 +508,11 @@ public Expr resolve(Type p, Collection warns) {
case AND :
case OR :
case IFF :
- case IMPLIES : {
+ case IMPLIES :
+ case UNTIL :
+ case RELEASES :
+ case SINCE :
+ case TRIGGERED : {
a = (b = Type.FORMULA);
break;
}
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/ExprCall.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/ExprCall.java
index e6d858cf2..14c421bde 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/ExprCall.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/ExprCall.java
@@ -36,6 +36,8 @@
* Immutable; represents a call.
*
* Invariant: type!=EMPTY => (all x:args | x.mult==0)
+ *
+ * @modified [electrum] add temporal operators to type inference
*/
public final class ExprCall extends Expr {
@@ -107,7 +109,8 @@ private static final class DeduceType extends VisitReturn {
private final Env env = new Env();
- private DeduceType() {}
+ private DeduceType() {
+ }
@Override
public Type visit(ExprITE x) throws Err {
@@ -131,6 +134,10 @@ public Type visit(ExprBinary x) throws Err {
case IN :
case OR :
case AND :
+ case UNTIL :
+ case RELEASES :
+ case SINCE :
+ case TRIGGERED :
case NOT_LT :
case NOT_GT :
case NOT_LTE :
@@ -189,6 +196,7 @@ public Type visit(ExprUnary x) throws Err {
case SETOF :
case SOMEOF :
case EXACTLYOF :
+ case PRIME :
return t;
case CARDINALITY :
case CAST2INT :
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/ExprQt.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/ExprQt.java
index 40244a9c3..3d1c76a4e 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/ExprQt.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/ExprQt.java
@@ -46,6 +46,9 @@
*
* Invariant: type!=EMPTY => sub.mult==0
* Invariant: type!=EMPTY => vars.size()>0
+ *
+ * @modified [electrum] adapt the creation of the Decl, always immutable (null
+ * isVar) in this context
*/
public final class ExprQt extends Expr {
@@ -316,7 +319,7 @@ public Expr desugar() throws ErrorSyntax {
continue;
}
guard = ExprList.makeDISJOINT(d.disjoint, null, d.names).and(guard);
- newdecls.add(new Decl(null, null, null, d.names, d.expr));
+ newdecls.add(new Decl(null, null, null, null, d.names, d.expr));
}
if (guard == null)
return this;
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/ExprUnary.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/ExprUnary.java
index d49478517..76c3273a0 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/ExprUnary.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/ExprUnary.java
@@ -38,6 +38,10 @@
* Immutable; represents a unary expression of the form "(OP subexpression)"
*
* Invariant: type!=EMPTY => sub.mult==0
+ *
+ * @modified [electrum] add unary temporal ops for formulas (after, always,
+ * eventually, before, historically, once) and expressions (primes) to
+ * the AST
*/
public final class ExprUnary extends Expr {
@@ -98,6 +102,11 @@ public void toString(StringBuilder out, int indent) {
sub.toString(out, -1);
out.append(']');
return;
+ case PRIME :
+ out.append('(');
+ sub.toString(out, -1);
+ out.append(")'");
+ return;
case NOOP :
break;
default :
@@ -158,6 +167,18 @@ public enum Op {
EXACTLYOF("exactly of"),
/** not f (where f is a formula) */
NOT("!"),
+ /** after f (where f is a formula) */
+ AFTER("after"),
+ /** always f (where f is a formula) */
+ ALWAYS("always"),
+ /** eventually f (where f is a formula) */
+ EVENTUALLY("eventually"),
+ /** before f (where f is a formula) */
+ BEFORE("before"),
+ /** historically f (where f is a formula) */
+ HISTORICALLY("historically"),
+ /** once f (where f is a formula) */
+ ONCE("once"),
/** no x (where x is a set or relation) */
NO("no"),
/** some x (where x is a set or relation) */
@@ -168,6 +189,8 @@ public enum Op {
ONE("one"),
/** transpose */
TRANSPOSE("~"),
+ /** post */
+ PRIME("\'"),
/** reflexive closure */
RCLOSURE("*"),
/** closure */
@@ -256,6 +279,12 @@ public final Expr make(Pos pos, Expr sub, Err extraError, long extraWeight) {
case NOOP :
break;
case NOT :
+ case AFTER :
+ case ALWAYS :
+ case EVENTUALLY :
+ case BEFORE :
+ case HISTORICALLY :
+ case ONCE :
sub = sub.typecheck_as_formula();
break;
case CAST2SIGINT :
@@ -298,6 +327,12 @@ public final Expr make(Pos pos, Expr sub, Err extraError, long extraWeight) {
case SOME :
case LONE :
case ONE :
+ case AFTER :
+ case ALWAYS :
+ case EVENTUALLY :
+ case BEFORE :
+ case HISTORICALLY :
+ case ONCE :
type = Type.FORMULA;
break;
case TRANSPOSE :
@@ -357,6 +392,12 @@ public Expr resolve(Type p, Collection warns) {
Type s = p;
switch (op) {
case NOT :
+ case AFTER :
+ case ALWAYS :
+ case EVENTUALLY :
+ case BEFORE :
+ case HISTORICALLY :
+ case ONCE :
s = Type.FORMULA;
break;
case TRANSPOSE :
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Sig.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Sig.java
index b57b1d9d0..211040e65 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Sig.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/ast/Sig.java
@@ -34,24 +34,30 @@
import edu.mit.csail.sdg.alloy4.Version;
import edu.mit.csail.sdg.ast.Attr.AttrType;
-/** Mutable; represents a signature. */
-
+/**
+ * Mutable; represents a signature.
+ *
+ * @modified [electrum] support the creation of variable/mutable sigs and
+ * fields; constructors adapted accordingly, as are the creation of
+ * Decl objects (in this case only those of tricky fields are ever
+ * variable, the ones arising from parsed field declarations)
+ */
public abstract class Sig extends Expr implements Clause {
/** The built-in "univ" signature. */
- public static final PrimSig UNIV = new PrimSig("univ", null, false);
+ public static final PrimSig UNIV = new PrimSig("univ", null, true, false);
/** The built-in "Int" signature. */
- public static final PrimSig SIGINT = new PrimSig("Int", UNIV, false);
+ public static final PrimSig SIGINT = new PrimSig("Int", UNIV, false, false);
/** The built-in "seq/Int" signature. */
- public static final PrimSig SEQIDX = new PrimSig("seq/Int", SIGINT, true);
+ public static final PrimSig SEQIDX = new PrimSig("seq/Int", SIGINT, false, true);
/** The built-in "String" signature. */
- public static final PrimSig STRING = new PrimSig("String", UNIV, true);
+ public static final PrimSig STRING = new PrimSig("String", UNIV, false, true);
/** The built-in "none" signature. */
- public static final PrimSig NONE = new PrimSig("none", null, false);
+ public static final PrimSig NONE = new PrimSig("none", null, false, false);
/** The built-in "none" signature. */
public static final PrimSig GHOST = mkGhostSig();
@@ -215,6 +221,11 @@ public final T accept(VisitReturn visitor) throws Err {
*/
public final Pos isMeta;
+ /**
+ * Nonnull if this sig is variable.
+ */
+ public final Pos isVariable;
+
/**
* The label for this sig; this name does not need to be unique.
*/
@@ -240,11 +251,11 @@ public final boolean isTopLevel() {
}
/** Constructs a new builtin PrimSig. */
- private Sig(String label) {
+ private Sig(String label, boolean var) {
super(Pos.UNKNOWN, null);
Expr oneof = ExprUnary.Op.ONEOF.make(null, this);
ExprVar v = ExprVar.make(null, "this", oneof.type);
- this.decl = new Decl(null, null, null, Util.asList(v), oneof);
+ this.decl = new Decl(null, null, null, null, Util.asList(v), oneof);
this.builtin = true;
this.isAbstract = null;
this.isLone = null;
@@ -256,6 +267,7 @@ private Sig(String label) {
this.isPrivate = null;
this.isMeta = null;
this.isEnum = null;
+ this.isVariable = var ? Pos.UNKNOWN : null;
this.attributes = ConstList.make();
}
@@ -265,9 +277,9 @@ private Sig(Type type, String label, Attr... attributes) throws Err {
this.attributes = Util.asList(attributes);
Expr oneof = ExprUnary.Op.ONEOF.make(null, this);
ExprVar v = ExprVar.make(null, "this", oneof.type);
- this.decl = new Decl(null, null, null, Util.asList(v), oneof);
+ this.decl = new Decl(null, null, null, null, Util.asList(v), oneof);
Pos isAbstract = null, isLone = null, isOne = null, isSome = null, isSubsig = null, isSubset = null,
- isPrivate = null, isMeta = null, isEnum = null;
+ isPrivate = null, isMeta = null, isEnum = null, isVariable = null;
for (Attr a : attributes)
if (a != null)
switch (a.type) {
@@ -298,6 +310,9 @@ private Sig(Type type, String label, Attr... attributes) throws Err {
case SUBSIG :
isSubsig = a.pos.merge(isSubsig);
break;
+ case VARIABLE :
+ isVariable = a.pos.merge(isVariable);
+ break;
default :
//TODO throw new ErrorWarning("Undefined case " + a);
}
@@ -310,6 +325,7 @@ private Sig(Type type, String label, Attr... attributes) throws Err {
this.isSome = isSome;
this.isSubset = isSubset;
this.isSubsig = isSubsig;
+ this.isVariable = isVariable;
this.label = label;
this.builtin = false;
if (isLone != null && isOne != null)
@@ -454,8 +470,8 @@ public Iterable descendents() throws Err {
public final PrimSig parent;
/** Constructs a builtin PrimSig. */
- private PrimSig(String label, PrimSig parent, boolean add) {
- super(label);
+ private PrimSig(String label, PrimSig parent, boolean var, boolean add) {
+ super(label, var);
this.parent = parent;
if (add)
this.parent.children.add(this);
@@ -671,6 +687,9 @@ public static final class Field extends ExprHasName implements Clause {
/** Nonnull if this field is a meta field. */
public final Pos isMeta;
+ /** Nonnull if this field is variable. */
+ public final Pos isVariable;
+
/** True if this is a defined field. */
public final boolean defined;
@@ -683,7 +702,7 @@ public Decl decl() {
}
/** Constructs a new Field object. */
- private Field(Pos pos, Pos isPrivate, Pos isMeta, Pos disjoint, Pos disjoint2, Sig sig, String label, Expr bound) throws Err {
+ private Field(Pos pos, Pos isPrivate, Pos isMeta, Pos disjoint, Pos disjoint2, Pos isVar, Sig sig, String label, Expr bound) throws Err {
super(pos, label, sig.type.product(bound.type));
this.defined = bound.mult() == ExprUnary.Op.EXACTLYOF;
if (sig.builtin)
@@ -696,6 +715,7 @@ private Field(Pos pos, Pos isPrivate, Pos isMeta, Pos disjoint, Pos disjoint2, S
throw new ErrorType(pos, "Cannot bind field " + label + " to the empty set or empty relation.");
this.isPrivate = (isPrivate != null ? isPrivate : sig.isPrivate);
this.isMeta = (isMeta != null ? isMeta : sig.isMeta);
+ this.isVariable = isVar;
this.sig = sig;
}
@@ -817,8 +837,8 @@ public final Field addField(String label, Expr bound) throws Err {
// multiplicity
// symbol, we assume
// it's oneOf
- final Field f = new Field(null, null, null, null, null, this, label, bound);
- final Decl d = new Decl(null, null, null, Arrays.asList(f), bound);
+ final Field f = new Field(null, null, null, null, null, null, this, label, bound);
+ final Decl d = new Decl(null, null, null, null, Arrays.asList(f), bound);
f.decl = d;
fields.add(d);
realFields.add(f);
@@ -837,6 +857,7 @@ public final Field addField(String label, Expr bound) throws Err {
* "private"
* @param isMeta - if nonnull, that means the user intended this field to be
* "meta"
+ * @param isVar - if nonnull, then this field has been declared as variable
* @param labels - the names of the fields to be added (these names does not
* need to be unique)
* @param bound - the new field will be bound by "all x: one ThisSig |
@@ -846,7 +867,7 @@ public final Field addField(String label, Expr bound) throws Err {
* @throws ErrorType if the bound is not fully typechecked or is not a
* set/relation
*/
- public final Field[] addTrickyField(Pos pos, Pos isPrivate, Pos isDisjoint, Pos isDisjoint2, Pos isMeta, String[] labels, Expr bound) throws Err {
+ public final Field[] addTrickyField(Pos pos, Pos isPrivate, Pos isDisjoint, Pos isDisjoint2, Pos isMeta, Pos isVar, String[] labels, Expr bound) throws Err {
bound = bound.typecheck_as_set();
if (bound.ambiguous)
bound = bound.resolve_as_set(null);
@@ -857,8 +878,8 @@ public final Field[] addTrickyField(Pos pos, Pos isPrivate, Pos isDisjoint, Pos
// it's oneOf
final Field[] f = new Field[labels.length];
for (int i = 0; i < f.length; i++)
- f[i] = new Field(pos, isPrivate, isMeta, isDisjoint, isDisjoint2, this, labels[i], bound);
- final Decl d = new Decl(isPrivate, isDisjoint, isDisjoint2, Arrays.asList(f), bound);
+ f[i] = new Field(pos, isPrivate, isMeta, isDisjoint, isDisjoint2, isVar, this, labels[i], bound);
+ final Decl d = new Decl(isPrivate, isDisjoint, isDisjoint2, isVar, Arrays.asList(f), bound);
for (int i = 0; i < f.length; i++) {
f[i].decl = d;
realFields.add(f[i]);
@@ -896,8 +917,8 @@ public final Field addDefinedField(Pos pos, Pos isPrivate, Pos isMeta, String la
bound = bound.resolve_as_set(null);
if (bound.mult() != ExprUnary.Op.EXACTLYOF)
bound = ExprUnary.Op.EXACTLYOF.make(null, bound);
- final Field f = new Field(pos, isPrivate, isMeta, null, null, this, label, bound);
- final Decl d = new Decl(null, null, null, Arrays.asList(f), bound);
+ final Field f = new Field(pos, isPrivate, isMeta, null, null, null, this, label, bound);
+ final Decl d = new Decl(null, null, null, null, Arrays.asList(f), bound);
f.decl = d;
fields.add(d);
realFields.add(f);
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/Alloy.cup b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/Alloy.cup
index bee7d3214..7d4f26005 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/Alloy.cup
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/Alloy.cup
@@ -59,6 +59,15 @@ import edu.mit.csail.sdg.ast.ExprVar;
import edu.mit.csail.sdg.ast.Sig;
import edu.mit.csail.sdg.ast.Sig.PrimSig;
+// @modified [electrum] added temporal operators to the AST (unary temporal operators
+// have the same precedence as other unary operators, binary ones have the
+// highest precedence); also added a trace sequence operator which has the
+// lowest precedence (not actually translated into AST but expanded during
+// parsing) added time scopes to commands (reused scope ranges but extended
+// to open ranges); support for open ended time scopes; additional syntax
+// errors: trace scope increments must be 1; trace scope must be larger than
+// 0; open ended trace scopes must start at 1
+
//===========================================================================//
parser code {:
@@ -83,13 +92,13 @@ parser code {:
for (_done_parsing = false; !_done_parsing; ) {
act = get_action(((Symbol)stack.peek()).parse_state, cur_token.sym);
if (act > 0) { // "shift"; thus, we shift to the encoded state by pushing it on the stack
- if (logging) System.out.println("shift " + cur_token.sym);
+ // if (logging) System.out.println("shift " + cur_token.sym);
cur_token.parse_state = act-1;
stack.push(cur_token);
tos++;
cur_token = scan();
} else if (act<0) { // "reduce"
- if (logging) System.out.println("reduce " + ((-act)-1));
+ // if (logging) System.out.println("reduce " + ((-act)-1));
lhs_sym = do_action((-act)-1, this, stack, tos);
lhs_sym_num = production_tab[(-act)-1][0];
handle_size = production_tab[(-act)-1][1];
@@ -223,6 +232,20 @@ parser code {:
ch.put(CompSym.ID, "NAME");
ch.put(CompSym.NUMBER, "NUMBER");
ch.put(CompSym.STR, "STRING");
+ ch.put(CompSym.VAR, "var");
+ ch.put(CompSym.ALWAYS, "always");
+ ch.put(CompSym.EVENTUALLY, "eventually");
+ ch.put(CompSym.AFTER, "after");
+ ch.put(CompSym.BEFORE, "before");
+ ch.put(CompSym.HISTORICALLY, "historically");
+ ch.put(CompSym.ONCE, "once");
+ ch.put(CompSym.RELEASES, "releases");
+ ch.put(CompSym.UNTIL, "until");
+ ch.put(CompSym.SINCE, "since");
+ ch.put(CompSym.TRIGGERED, "triggered");
+ ch.put(CompSym.TRCSEQ, ";");
+ ch.put(CompSym.PRIME, "'");
+ ch.put(CompSym.TIME, "steps");
TreeSet list = new TreeSet();
Pos p=Pos.UNKNOWN;
if (x!=null && x.value instanceof Pos) p=(Pos)(x.value);
@@ -333,6 +356,7 @@ action code {:
private void c(boolean follow, ExprVar o, ExprVar x, ExprVar n, Expr e, List s, ExprConstant c) throws Err {
if (n!=null) nod(n);
int bitwidth=(-1), maxseq=(-1), overall=(-1), expects=(c==null ? -1 : c.num);
+ int maxtime = (-1), mintime = (-1);
Pos p = o.pos.merge(n!=null ? n.span() : e.span());
for(int i=s.size()-1; i>=0; i--) {
Sig j=s.get(i).sig; int k=s.get(i).startingScope;
@@ -340,11 +364,23 @@ action code {:
if (j.label.equals("univ")) { overall=k; s.remove(i); continue; }
if (j.label.equals("int")) { if (bitwidth>=0) throw new ErrorSyntax(j.pos, "The bitwidth cannot be specified more than once."); bitwidth=k; s.remove(i); continue; }
if (j.label.equals("seq")) { if (maxseq>=0) throw new ErrorSyntax(j.pos, "The maximum sequence length cannot be specified more than once."); maxseq=k; s.remove(i); continue; }
+ // [electrum] process time scopes
+ if (j.label.equals("steps")) {
+ if (s.get(i).endingScope == Integer.MAX_VALUE && s.get(i).startingScope != 1) throw new ErrorSyntax(j.pos, "Unbounded time scope must start at 1.");
+ if (s.get(i).increment != 1) throw new ErrorSyntax(j.pos, "Step scopes must be incremented by 1.");
+ if (k<1) throw new ErrorSyntax(j.pos, "Trace solutions must contain at least one step.");
+ if (maxtime>=0) throw new ErrorSyntax(j.pos, "Steps scope cannot be specified more than once.");
+ maxtime=k;
+ if (s.get(i).isExact) mintime = k;
+ else if (s.get(i).endingScope != s.get(i).startingScope) {
+ maxtime = s.get(i).endingScope; mintime = s.get(i).startingScope; }
+ s.remove(i); continue;
+ }
}
if (n!=null)
- parser.alloymodule.addCommand(follow, p, n, o.label.equals("c"), overall, bitwidth, maxseq, expects, s, x);
+ parser.alloymodule.addCommand(follow, p, n, o.label.equals("c"), overall, bitwidth, maxseq, mintime, maxtime, expects, s, x);
else
- parser.alloymodule.addCommand(follow, p, e, o.label.equals("c"), overall, bitwidth, maxseq, expects, s, x);
+ parser.alloymodule.addCommand(follow, p, e, o.label.equals("c"), overall, bitwidth, maxseq, mintime, maxtime, expects, s, x);
}
private Expr t(Pos pos, Pos oldClosing, Expr left, Expr right, Pos close) throws Err {
if (right instanceof ExprVar) {
@@ -476,6 +512,21 @@ terminal Pos THIS; // this
terminal Pos TILDE; // ~
terminal Pos UNIV; // univ
+terminal Pos VAR; // var
+terminal Pos ALWAYS; // always
+terminal Pos EVENTUALLY; // eventually
+terminal Pos AFTER; // after
+terminal Pos ONCE; // once
+terminal Pos HISTORICALLY; // historically
+terminal Pos BEFORE; // before
+terminal Pos RELEASES; // releases
+terminal Pos UNTIL; // until
+terminal Pos SINCE; // since
+terminal Pos TRIGGERED; // triggered
+terminal Pos TRCSEQ; // trace seq
+terminal Pos TIME; // steps
+terminal Pos PRIME; // '
+
terminal ExprVar ID;
terminal ExprConstant NUMBER, STR;
@@ -527,8 +578,8 @@ nonterminal ExprVar Name;
nonterminal ExprVar NameHelper;
nonterminal List Names;
nonterminal List Namex;
-nonterminal Expr NegExprA;
-nonterminal Expr NegExprB;
+nonterminal Expr UnaryExprA;
+nonterminal Expr UnaryExprB;
nonterminal Expr NumUnopExprA;
nonterminal Expr NumUnopExprB;
nonterminal Expr OrExprA;
@@ -564,6 +615,23 @@ nonterminal Expr UnionDiffExprB;
nonterminal Expr UnopExprA;
nonterminal Expr UnopExprB;
nonterminal Pos Vis;
+nonterminal Expr TempBinaryA;
+nonterminal Expr TempBinaryB;
+nonterminal Expr ExprNoSeq;
+
+precedence right TRCSEQ;
+precedence nonassoc BAR;
+precedence left OR;
+precedence left IFF;
+precedence right IMPLIES;
+precedence left AND;
+precedence nonassoc RELEASES, SINCE, UNTIL, TRIGGERED;
+precedence nonassoc AFTER, ALWAYS, EVENTUALLY, BEFORE, HISTORICALLY, ONCE;
+precedence nonassoc NOT;
+precedence nonassoc EQUALS, NOTEQUALS, IN, NOTIN;
+precedence nonassoc NO, SOME, LONE, ONE;
+precedence nonassoc PRIME;
+precedence nonassoc TILDE, CARET, STAR;
//===========================================================================//
@@ -644,18 +712,27 @@ Typescope ::= TypeNumber:e UNIV:f {: if (1==1) throw new ErrorSyntax(e.pos.m
Typescope ::= TypeNumber:a STRING:b {: RESULT = new CommandScope(a.pos.merge(b), new PrimSig("String", AttrType.WHERE.make(a.pos.merge(b))), a.isExact, a.startingScope, a.endingScope, a.increment); :};
+// [electrum] scope on Time
+Typescope ::= TypeNumber:a TIME:b {:
+ Pos p = a.pos.merge(b);
+ RESULT = new CommandScope(p, new PrimSig("steps", AttrType.WHERE.make(p)), a.isExact, a.startingScope, a.endingScope, a.increment);
+:};
+
//[AM] Typescope ::= TypeNumber:e SIGINT:f {: if (1==1) throw new ErrorSyntax(e.pos.merge(f), "You can no longer set a scope on Int; the number of Int atoms is always exactly equal to 2^(integer bitwidth).\n"); :};
Typescope ::= TypeNumber:e NONE:f {: if (1==1) throw new ErrorSyntax(e.pos.merge(f), "You cannot set a scope on none."); :};
-TypeNumber ::= EXACTLY:e NUMBER:a {: RESULT = new CommandScope( e.merge(a.pos), Sig.NONE, true, a.num, a.num, 1 ); :};
-TypeNumber ::= EXACTLY:e NUMBER:a DOT DOT NUMBER:b {: if (!Version.experimental) throw new ErrorSyntax(a.pos, "Syntax error here."); RESULT = new CommandScope( e.merge(b.pos), Sig.NONE, true, a.num, b.num, 1 ); :};
-TypeNumber ::= EXACTLY:e NUMBER:a DOT DOT NUMBER:b COLON NUMBER:i {: if (!Version.experimental) throw new ErrorSyntax(a.pos, "Syntax error here."); RESULT = new CommandScope( e.merge(i.pos), Sig.NONE, true, a.num, b.num, i.num); :};
-TypeNumber ::= EXACTLY:e NUMBER:a COLON NUMBER:i {: if (!Version.experimental) throw new ErrorSyntax(a.pos, "Syntax error here."); RESULT = new CommandScope( e.merge(i.pos), Sig.NONE, true, a.num, Integer.MAX_VALUE, i.num); :};
-TypeNumber ::= NUMBER:a {: RESULT = new CommandScope(a.pos , Sig.NONE, false, a.num, a.num, 1 ); :};
-TypeNumber ::= NUMBER:a DOT DOT NUMBER:b {: if (!Version.experimental) throw new ErrorSyntax(a.pos, "Syntax error here."); RESULT = new CommandScope(a.pos.merge(b.pos), Sig.NONE, false, a.num, b.num, 1 ); :};
-TypeNumber ::= NUMBER:a DOT DOT NUMBER:b COLON NUMBER:i {: if (!Version.experimental) throw new ErrorSyntax(a.pos, "Syntax error here."); RESULT = new CommandScope(a.pos.merge(i.pos), Sig.NONE, false, a.num, b.num, i.num); :};
-TypeNumber ::= NUMBER:a COLON NUMBER:i {: if (!Version.experimental) throw new ErrorSyntax(a.pos, "Syntax error here."); RESULT = new CommandScope(a.pos.merge(i.pos), Sig.NONE, false, a.num, Integer.MAX_VALUE, i.num); :};
+// [electrum] distinguish between "n" and "n..n", the latter become exact; open ended scopes "n.."
+TypeNumber ::= EXACTLY:e NUMBER:a {: RESULT = new CommandScope( e.merge(a.pos), Sig.NONE, true, a.num, a.num, 1 ); :};
+TypeNumber ::= EXACTLY:e NUMBER:a DOT DOT NUMBER:b {: if (!Version.experimental) throw new ErrorSyntax(a.pos, "Syntax error here."); RESULT = new CommandScope( e.merge(b.pos), Sig.NONE, true, a.num, b.num, 1 ); :};
+TypeNumber ::= EXACTLY:e NUMBER:a DOT DOT {: if (!Version.experimental) throw new ErrorSyntax(a.pos, "Syntax error here."); RESULT = new CommandScope( e , Sig.NONE, true, a.num, Integer.MAX_VALUE, 1 ); :};
+TypeNumber ::= EXACTLY:e NUMBER:a DOT DOT NUMBER:b COLON NUMBER:i {: if (!Version.experimental) throw new ErrorSyntax(a.pos, "Syntax error here."); RESULT = new CommandScope( e.merge(i.pos), Sig.NONE, true, a.num, b.num, i.num); :};
+TypeNumber ::= EXACTLY:e NUMBER:a COLON NUMBER:i {: if (!Version.experimental) throw new ErrorSyntax(a.pos, "Syntax error here."); RESULT = new CommandScope( e.merge(i.pos), Sig.NONE, true, a.num, Integer.MAX_VALUE, i.num); :};
+TypeNumber ::= NUMBER:a {: RESULT = new CommandScope(a.pos , Sig.NONE, false, a.num, a.num, 1 ); :};
+TypeNumber ::= NUMBER:a DOT DOT NUMBER:b {: if (!Version.experimental) throw new ErrorSyntax(a.pos, "Syntax error here."); RESULT = new CommandScope(a.pos.merge(b.pos), Sig.NONE, a.num == b.num, a.num, b.num, 1 ); :};
+TypeNumber ::= NUMBER:a DOT DOT {: if (!Version.experimental) throw new ErrorSyntax(a.pos, "Syntax error here."); RESULT = new CommandScope(a.pos , Sig.NONE, false, a.num, Integer.MAX_VALUE, 1 ); :};
+TypeNumber ::= NUMBER:a DOT DOT NUMBER:b COLON NUMBER:i {: if (!Version.experimental) throw new ErrorSyntax(a.pos, "Syntax error here."); RESULT = new CommandScope(a.pos.merge(i.pos), Sig.NONE, a.num == b.num, a.num, b.num, i.num); :};
+TypeNumber ::= NUMBER:a COLON NUMBER:i {: if (!Version.experimental) throw new ErrorSyntax(a.pos, "Syntax error here."); RESULT = new CommandScope(a.pos.merge(i.pos), Sig.NONE, false, a.num, Integer.MAX_VALUE, i.num); :};
Macro ::= Vis:p LET:o Name:n LPAREN Names:d RPAREN MacroBody:v {: nod(n); parser.alloymodule.addMacro(o.merge(v.span()), p, n.label, d , v); :};
Macro ::= Vis:p LET:o Name:n LPAREN RPAREN MacroBody:v {: nod(n); parser.alloymodule.addMacro(o.merge(v.span()), p, n.label, null , v); :};
@@ -694,18 +771,21 @@ Sig ::= SigQuals:a Names:b SigIn:c LBRACE Decls:d RBRACE:o SuperOpt:e
AttrType.LONE .makenull(a.get(1)),
AttrType.ONE .makenull(a.get(2)),
AttrType.SOME .makenull(a.get(3)),
- AttrType.PRIVATE .makenull(a.get(4)));
+ AttrType.PRIVATE .makenull(a.get(4)),
+ AttrType.VARIABLE.makenull(a.get(5)));
}
:};
-SigQual ::= ABSTRACT:x {: RESULT=new ArrayList(5); RESULT.add(x); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(null); :};
-SigQual ::= LONE:x {: RESULT=new ArrayList(5); RESULT.add(null); RESULT.add(x); RESULT.add(null); RESULT.add(null); RESULT.add(null); :};
-SigQual ::= ONE:x {: RESULT=new ArrayList(5); RESULT.add(null); RESULT.add(null); RESULT.add(x); RESULT.add(null); RESULT.add(null); :};
-SigQual ::= SOME:x {: RESULT=new ArrayList(5); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(x); RESULT.add(null); :};
-SigQual ::= PRIVATE:x {: RESULT=new ArrayList(5); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(x); :};
+// [electrum] additional attribute for variable sigs
+SigQual ::= ABSTRACT:x {: RESULT=new ArrayList(6); RESULT.add(x); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(null); :};
+SigQual ::= LONE:x {: RESULT=new ArrayList(6); RESULT.add(null); RESULT.add(x); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(null); :};
+SigQual ::= ONE:x {: RESULT=new ArrayList(6); RESULT.add(null); RESULT.add(null); RESULT.add(x); RESULT.add(null); RESULT.add(null); RESULT.add(null); :};
+SigQual ::= SOME:x {: RESULT=new ArrayList(6); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(x); RESULT.add(null); RESULT.add(null); :};
+SigQual ::= PRIVATE:x {: RESULT=new ArrayList(6); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(x); RESULT.add(null); :};
+SigQual ::= VAR:x {: RESULT=new ArrayList(6); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(x); :};
-SigQuals ::= SIG {: RESULT=new ArrayList(5); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(null); :};
-SigQuals ::= SigQual:a SigQuals:b {: RESULT=a; for(int i=0;i<5;i++) if (a.get(i)==null) a.set(i,b.get(i)); else if (b.get(i)!=null) throw new ErrorSyntax(b.get(i), "The same qualifer cannot be specified more than once for the same sig."); :};
+SigQuals ::= SIG {: RESULT=new ArrayList(6); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(null); RESULT.add(null); :};
+SigQuals ::= SigQual:a SigQuals:b {: RESULT=a; for(int i=0;i<6;i++) if (a.get(i)==null) a.set(i,b.get(i)); else if (b.get(i)!=null) throw new ErrorSyntax(b.get(i), "The same qualifer cannot be specified more than once for the same sig."); :};
SigIn ::= EXTENDS:a SigRef:x {: RESULT=new ArrayList(2); RESULT.add(x); RESULT.add(ExprVar.make(a, "extends")); :};
SigIn ::= IN:a SigRefu:x {: RESULT=x; x.add(ExprVar.make(a,"in")); :};
@@ -715,6 +795,7 @@ SigIn ::= {: RESULT=null;
SigRef ::= Name:x {: RESULT=x; :};
SigRef ::= UNIV:x {: RESULT=ExprVar.make(x, "univ"); :};
SigRef ::= STRING:x {: RESULT=ExprVar.make(x, "String"); :};
+SigRef ::= TIME:x {: RESULT=ExprVar.make(x, "steps"); :};
SigRef ::= SIGINT:x {: RESULT=ExprVar.make(x, "Int"); :};
SigRef ::= SEQ:a SLASH SIGINT:b {: RESULT=ExprVar.make(a.merge(b), "seq/Int"); :};
SigRef ::= NONE:x {: RESULT=ExprVar.make(x, "none"); :};
@@ -743,31 +824,42 @@ Namex ::= EXACTLY Name:x {: nod(x); RESULT=new ArrayList(
Namex ::= Namex:a COMMA Name:b {: nod(b); a.add(b); RESULT=a; :};
Namex ::= Namex:a COMMA EXACTLY Name:b {: nod(b); a.add(null); a.add(b); RESULT=a; :};
+// [electrum] additional parameter for variable declarations (for fields)
Decla ::= PART:k Names COLON Expr {: if (1==1) throw CompModule.hint(k, "part"); :};
Decla ::= EXH:k Names COLON Expr {: if (1==1) throw CompModule.hint(k, "exh"); :};
-Decla ::= DISJ:k Names:a COLON Expr:b {: RESULT=new Decl(null, k, null, a, mult(b)); :};
-Decla ::= PRIVATE:p DISJ:k Names:a COLON Expr:b {: RESULT=new Decl(p, k, null, a, mult(b)); :};
-Decla ::= PRIVATE:p Names:a COLON Expr:b {: RESULT=new Decl(p, null, null, a, mult(b)); :};
-Decla ::= Names:a COLON Expr:b {: RESULT=new Decl(null, null, null, a, mult(b)); :};
+Decla ::= DISJ:k Names:a COLON Expr:b {: RESULT=new Decl(null, k, null, null, a, mult(b)); :};
+Decla ::= PRIVATE:p DISJ:k Names:a COLON Expr:b {: RESULT=new Decl(p, k, null, null, a, mult(b)); :};
+Decla ::= PRIVATE:p Names:a COLON Expr:b {: RESULT=new Decl(p, null, null, null, a, mult(b)); :};
+Decla ::= Names:a COLON Expr:b {: RESULT=new Decl(null, null, null, null, a, mult(b)); :};
+
+Decla ::= VAR:v DISJ:k Names:a COLON Expr:b {: RESULT=new Decl(null, k, null, v, a, mult(b)); :};
+Decla ::= VAR:v PRIVATE:p DISJ:k Names:a COLON Expr:b {: RESULT=new Decl(p, k, null, v, a, mult(b)); :};
+Decla ::= VAR:v PRIVATE:p Names:a COLON Expr:b {: RESULT=new Decl(p, null, null, v, a, mult(b)); :};
+Decla ::= VAR:v Names:a COLON Expr:b {: RESULT=new Decl(null, null, null, v, a, mult(b)); :};
Decla ::= PART:k Names COLON DISJ Expr {: if (1==1) throw CompModule.hint(k, "part"); :};
Decla ::= EXH:k Names COLON DISJ Expr {: if (1==1) throw CompModule.hint(k, "exh"); :};
-Decla ::= DISJ:k Names:a COLON DISJ:d Expr:b {: RESULT=new Decl(null, k, d, a, mult(b)); :};
-Decla ::= PRIVATE:p DISJ:k Names:a COLON DISJ:d Expr:b {: RESULT=new Decl(p, k, d, a, mult(b)); :};
-Decla ::= PRIVATE:p Names:a COLON DISJ:d Expr:b {: RESULT=new Decl(p, null, d, a, mult(b)); :};
-Decla ::= Names:a COLON DISJ:d Expr:b {: RESULT=new Decl(null, null, d, a, mult(b)); :};
+Decla ::= DISJ:k Names:a COLON DISJ:d Expr:b {: RESULT=new Decl(null, k, d, null, a, mult(b)); :};
+Decla ::= PRIVATE:p DISJ:k Names:a COLON DISJ:d Expr:b {: RESULT=new Decl(p, k, d, null, a, mult(b)); :};
+Decla ::= PRIVATE:p Names:a COLON DISJ:d Expr:b {: RESULT=new Decl(p, null, d, null, a, mult(b)); :};
+Decla ::= Names:a COLON DISJ:d Expr:b {: RESULT=new Decl(null, null, d, null, a, mult(b)); :};
+
+Decla ::= VAR:v DISJ:k Names:a COLON DISJ:d Expr:b {: RESULT=new Decl(null, k, d, v, a, mult(b)); :};
+Decla ::= VAR:v PRIVATE:p DISJ:k Names:a COLON DISJ:d Expr:b {: RESULT=new Decl(p, k, d, v, a, mult(b)); :};
+Decla ::= VAR:v PRIVATE:p Names:a COLON DISJ:d Expr:b {: RESULT=new Decl(p, null, d, v, a, mult(b)); :};
+Decla ::= VAR:v Names:a COLON DISJ:d Expr:b {: RESULT=new Decl(null, null, d, v, a, mult(b)); :};
Declb ::= Decla:x {: RESULT=x; :};
-Declb ::= PART:k Names EQUALS Expr {: if (1==1) throw CompModule.hint(k, "part"); :};
-Declb ::= EXH:k Names EQUALS Expr {: if (1==1) throw CompModule.hint(k, "exh"); :};
-Declb ::= DISJ:d Names EQUALS Expr {: if (1==1) throw new ErrorSyntax(d, "Defined fields cannot be disjoint."); :};
-Declb ::= PRIVATE DISJ:d Names EQUALS Expr {: if (1==1) throw new ErrorSyntax(d, "Defined fields cannot be disjoint."); :};
-Declb ::= PRIVATE:p Names:a EQUALS Expr:b {: RESULT=new Decl(p, null, null, a, ExprUnary.Op.EXACTLYOF.make(null, b)); :};
-Declb ::= Names:a EQUALS Expr:b {: RESULT=new Decl(null, null, null, a, ExprUnary.Op.EXACTLYOF.make(null, b)); :};
+Declb ::= PART:k Names EQUALS Expr {: if (1==1) throw CompModule.hint(k, "part"); :};
+Declb ::= EXH:k Names EQUALS Expr {: if (1==1) throw CompModule.hint(k, "exh"); :};
+Declb ::= DISJ:d Names EQUALS Expr {: if (1==1) throw new ErrorSyntax(d, "Defined fields cannot be disjoint."); :};
+Declb ::= PRIVATE DISJ:d Names EQUALS Expr {: if (1==1) throw new ErrorSyntax(d, "Defined fields cannot be disjoint."); :};
+Declb ::= PRIVATE:p Names:a EQUALS Expr:b {: RESULT=new Decl(p, null, null, null, a, ExprUnary.Op.EXACTLYOF.make(null, b)); :};
+Declb ::= Names:a EQUALS Expr:b {: RESULT=new Decl(null, null, null, null, a, ExprUnary.Op.EXACTLYOF.make(null, b)); :};
-Declb ::= PART:k Names EQUALS DISJ Expr {: if (1==1) throw CompModule.hint(k, "part"); :};
-Declb ::= EXH:k Names EQUALS DISJ Expr {: if (1==1) throw CompModule.hint(k, "exh"); :};
+Declb ::= PART:k Names EQUALS DISJ Expr {: if (1==1) throw CompModule.hint(k, "part"); :};
+Declb ::= EXH:k Names EQUALS DISJ Expr {: if (1==1) throw CompModule.hint(k, "exh"); :};
Declb ::= DISJ Names EQUALS DISJ:d Expr {: if (1==1) throw new ErrorSyntax(d, "Defined fields cannot be disjoint."); :};
Declb ::= PRIVATE DISJ Names EQUALS DISJ:d Expr {: if (1==1) throw new ErrorSyntax(d, "Defined fields cannot be disjoint."); :};
Declb ::= PRIVATE Names EQUALS DISJ:d Expr {: if (1==1) throw new ErrorSyntax(d, "Defined fields cannot be disjoint."); :};
@@ -798,15 +890,18 @@ Let ::= Name:a EQUALS:o Expr:b COMMA Let:x {:
RESULT = ExprLet.make(o, ExprVar.make(a.pos, a.label), b, x);
:};
-SuperOpt ::= {: RESULT=null; :};
-SuperOpt ::= Super:x {: RESULT=x; :};
-Super ::= LBRACE:a SuperP:x RBRACE:b {: RESULT=ExprUnary.Op.NOOP.make(a.merge(b), x); :};
-Super ::= LBRACE:a RBRACE:b {: RESULT=ExprConstant.Op.TRUE.make(a.merge(b), 0); :};
-SuperP ::= Expr:a {: RESULT=a; :};
-SuperP ::= SuperP:a Expr:b {: RESULT=ExprBinary.Op.AND.make(null, null, a, b); :};
+// [electrum] temporal seq expressions have the lowest precedence
+SuperOpt ::= {: RESULT=null; :};
+SuperOpt ::= Super:x {: RESULT=x; :};
+Super ::= LBRACE:a SuperP:x RBRACE:b {: RESULT=ExprUnary.Op.NOOP.make(a.merge(b), x); :};
+Super ::= LBRACE:a RBRACE:b {: RESULT=ExprConstant.Op.TRUE.make(a.merge(b), 0); :};
+SuperP ::= Expr:a {: RESULT=a; :};
+SuperP ::= SuperP:a Expr:b {: RESULT=ExprBinary.Op.AND.make(null, null, a, b); :};
+SuperP ::= Expr:a TRCSEQ:o SuperP:b {: RESULT=ExprBinary.Op.AND.make(o, null, a, ExprUnary.Op.AFTER.make(o, b)); :};
-SuperOrBar ::= BAR Expr:x {: RESULT=x; :};
-SuperOrBar ::= Super:x {: RESULT=x; :};
+SuperOrBar ::= BAR ExprNoSeq:x {: RESULT=x; :};
+SuperOrBar ::= Super:x {: RESULT=x; :};
+SuperOrBar ::= BAR ExprNoSeq:x TRCSEQ:o Expr:y {: RESULT=ExprBinary.Op.AND.make(o, null, x, ExprUnary.Op.AFTER.make(o, y)); :};
Exprs ::= {: RESULT=new ArrayList(); :};
Exprs ::= Exprp:x {: RESULT=x; :};
@@ -815,16 +910,19 @@ Exprp ::= Exprp:a COMMA Expr:b {: a.add(b); RESULT=a;
//=============================================================================
-Expr ::= OrExprA:x {: RESULT = x; :};
-Expr ::= OrExprB:x {: RESULT = x; :};
-Expr ::= Bind:x {: RESULT = x; :};
-Bind ::= LET Let:x {: RESULT = x; :};
-Bind ::= ALL2:o Declp:a SuperOrBar:b {: RESULT = ExprQt.Op.ALL .make(o, null, a, b); :};
-Bind ::= NO2:o Declp:a SuperOrBar:b {: RESULT = ExprQt.Op.NO .make(o, null, a, b); :};
-Bind ::= SOME2:o Declp:a SuperOrBar:b {: RESULT = ExprQt.Op.SOME.make(o, null, a, b); :};
-Bind ::= LONE2:o Declp:a SuperOrBar:b {: RESULT = ExprQt.Op.LONE.make(o, null, a, b); :};
-Bind ::= ONE2:o Declp:a SuperOrBar:b {: RESULT = ExprQt.Op.ONE .make(o, null, a, b); :};
-Bind ::= SUM2:o Declp:a SuperOrBar:b {: RESULT = ExprQt.Op.SUM .make(o, null, a, b); :};
+Expr ::= ExprNoSeq:a {: RESULT=a; :};
+Expr ::= ExprNoSeq:a TRCSEQ:o Expr:b {: RESULT=ExprBinary.Op.AND.make(o, null, a, ExprUnary.Op.AFTER.make(o, b)); :};
+
+ExprNoSeq ::= OrExprA:x {: RESULT = x; :};
+ExprNoSeq ::= OrExprB:x {: RESULT = x; :};
+ExprNoSeq ::= Bind:x {: RESULT = x; :};
+Bind ::= LET Let:x {: RESULT = x; :};
+Bind ::= ALL2:o Declp:a SuperOrBar:b {: RESULT = ExprQt.Op.ALL .make(o, null, a, b); :};
+Bind ::= NO2:o Declp:a SuperOrBar:b {: RESULT = ExprQt.Op.NO .make(o, null, a, b); :};
+Bind ::= SOME2:o Declp:a SuperOrBar:b {: RESULT = ExprQt.Op.SOME.make(o, null, a, b); :};
+Bind ::= LONE2:o Declp:a SuperOrBar:b {: RESULT = ExprQt.Op.LONE.make(o, null, a, b); :};
+Bind ::= ONE2:o Declp:a SuperOrBar:b {: RESULT = ExprQt.Op.ONE .make(o, null, a, b); :};
+Bind ::= SUM2:o Declp:a SuperOrBar:b {: RESULT = ExprQt.Op.SUM .make(o, null, a, b); :};
OrExprA ::= EquivExprA:a {: RESULT=a; :};
OrExprA ::= OrExprB:a OR:o Bind:b {: RESULT=ExprBinary.Op.OR.make(o, null, a, b); :};
@@ -853,16 +951,47 @@ ImpliesExprCloseB ::= AndExprB:a IMPLIES:o ImpliesExprCloseB:b ELSE ImpliesExprC
ImpliesExprOpenB ::= AndExprB:a IMPLIES:o ImpliesExprCloseB:b ELSE ImpliesExprOpenB:c {: RESULT = ExprITE.make(o,a,b,c); :};
ImpliesExprOpenB ::= AndExprB:a IMPLIES:o ImpliesExprB:b {: RESULT = ExprBinary.Op.IMPLIES.make(o, null, a, b); :};
-AndExprA ::= NegExprA:a {: RESULT=a; :};
-AndExprA ::= AndExprB:a AND:o Bind:b {: RESULT=ExprBinary.Op.AND.make(o, null, a, b); :};
-AndExprB ::= NegExprB:b {: RESULT=b; :};
-AndExprB ::= AndExprB:a AND:o NegExprB:b {: RESULT=ExprBinary.Op.AND.make(o, null, a, b); :};
-
-NegExprA ::= CompareExprA:b {: RESULT=b; :};
-NegExprA ::= NOT:o Bind:b {: RESULT=ExprUnary.Op.NOT.make(o, b); :};
-NegExprA ::= NOT:o NegExprA:b {: RESULT=ExprUnary.Op.NOT.make(o, b); :};
-NegExprB ::= CompareExprB:b {: RESULT=b; :};
-NegExprB ::= NOT:o NegExprB:b {: RESULT=ExprUnary.Op.NOT.make(o, b); :};
+AndExprA ::= TempBinaryA:a {: RESULT=a; :};
+AndExprA ::= AndExprB:a AND:o Bind:b {: RESULT=ExprBinary.Op.AND.make(o, null, a, b); :};
+AndExprB ::= TempBinaryB:b {: RESULT=b; :};
+AndExprB ::= AndExprB:a AND:o TempBinaryB:b {: RESULT=ExprBinary.Op.AND.make(o, null, a, b); :};
+
+// [electrum] binary temporal formulas, highest precedence among binary operators
+TempBinaryA ::= UnaryExprA:a {: RESULT=a; :};
+TempBinaryA ::= TempBinaryB:a UNTIL:o Bind:b {: RESULT=ExprBinary.Op.UNTIL .make(o, null, a, b); :};
+TempBinaryA ::= TempBinaryB:a SINCE:o Bind:b {: RESULT=ExprBinary.Op.SINCE .make(o, null, a, b); :};
+TempBinaryA ::= TempBinaryB:a TRIGGERED:o Bind:b {: RESULT=ExprBinary.Op.TRIGGERED.make(o, null, a, b); :};
+TempBinaryA ::= TempBinaryB:a RELEASES:o Bind:b {: RESULT=ExprBinary.Op.RELEASES .make(o, null, a, b); :};
+TempBinaryB ::= UnaryExprB:b {: RESULT=b; :};
+TempBinaryB ::= TempBinaryB:a UNTIL:o UnaryExprB:b {: RESULT=ExprBinary.Op.UNTIL .make(o, null, a, b); :};
+TempBinaryB ::= TempBinaryB:a SINCE:o UnaryExprB:b {: RESULT=ExprBinary.Op.SINCE .make(o, null, a, b); :};
+TempBinaryB ::= TempBinaryB:a RELEASES:o UnaryExprB:b {: RESULT=ExprBinary.Op.RELEASES .make(o, null, a, b); :};
+TempBinaryB ::= TempBinaryB:a TRIGGERED:o UnaryExprB:b {: RESULT=ExprBinary.Op.TRIGGERED.make(o, null, a, b); :};
+
+// [electrum] unary temporal formulas, same precedence as other unary operators
+UnaryExprA ::= CompareExprA:b {: RESULT=b; :};
+UnaryExprA ::= NOT:o Bind:b {: RESULT=ExprUnary.Op.NOT.make(o, b); :};
+UnaryExprA ::= NOT:o UnaryExprA:b {: RESULT=ExprUnary.Op.NOT.make(o, b); :};
+UnaryExprA ::= ALWAYS:o Bind:b {: RESULT=ExprUnary.Op.ALWAYS.make(o, b); :};
+UnaryExprA ::= ALWAYS:o UnaryExprA:b {: RESULT=ExprUnary.Op.ALWAYS.make(o, b); :};
+UnaryExprA ::= EVENTUALLY:o Bind:b {: RESULT=ExprUnary.Op.EVENTUALLY.make(o, b); :};
+UnaryExprA ::= EVENTUALLY:o UnaryExprA:b {: RESULT=ExprUnary.Op.EVENTUALLY.make(o, b); :};
+UnaryExprA ::= AFTER:o Bind:b {: RESULT=ExprUnary.Op.AFTER.make(o, b); :};
+UnaryExprA ::= AFTER:o UnaryExprA:b {: RESULT=ExprUnary.Op.AFTER.make(o, b); :};
+UnaryExprA ::= HISTORICALLY:o Bind:b {: RESULT=ExprUnary.Op.HISTORICALLY.make(o, b); :};
+UnaryExprA ::= HISTORICALLY:o UnaryExprA:b {: RESULT=ExprUnary.Op.HISTORICALLY.make(o, b); :};
+UnaryExprA ::= ONCE:o Bind:b {: RESULT=ExprUnary.Op.ONCE.make(o, b); :};
+UnaryExprA ::= ONCE:o UnaryExprA:b {: RESULT=ExprUnary.Op.ONCE.make(o, b); :};
+UnaryExprA ::= BEFORE:o Bind:b {: RESULT=ExprUnary.Op.BEFORE.make(o, b); :};
+UnaryExprA ::= BEFORE:o UnaryExprA:b {: RESULT=ExprUnary.Op.BEFORE.make(o, b); :};
+UnaryExprB ::= CompareExprB:b {: RESULT=b; :};
+UnaryExprB ::= NOT:o UnaryExprB:b {: RESULT=ExprUnary.Op.NOT.make(o, b); :};
+UnaryExprB ::= ALWAYS:o UnaryExprB:b {: RESULT=ExprUnary.Op.ALWAYS.make(o, b); :};
+UnaryExprB ::= EVENTUALLY:o UnaryExprB:b {: RESULT=ExprUnary.Op.EVENTUALLY.make(o, b); :};
+UnaryExprB ::= AFTER:o UnaryExprB:b {: RESULT=ExprUnary.Op.AFTER.make(o, b); :};
+UnaryExprB ::= HISTORICALLY:o UnaryExprB:b {: RESULT=ExprUnary.Op.HISTORICALLY.make(o, b); :};
+UnaryExprB ::= ONCE:o UnaryExprB:b {: RESULT=ExprUnary.Op.ONCE.make(o, b); :};
+UnaryExprB ::= BEFORE:o UnaryExprB:b {: RESULT=ExprUnary.Op.BEFORE.make(o, b); :};
CompareExprA ::= CompareExprB:a IN:o ShiftExprA:b {: RESULT=ExprBinary.Op.IN .make(o, null, a, mult(b)); :};
CompareExprA ::= CompareExprB:a EQUALS:o ShiftExprA:b {: RESULT=ExprBinary.Op.EQUALS .make(o, null, a, b); :};
@@ -1011,6 +1140,7 @@ DotExprB ::= BracketExprB:a DOT:o TOTALORDER:b {: RESULT=t(o, null, a, ExprVar.m
DotExprB ::= BracketExprB:a DOT:o INT {: RESULT=ExprUnary.Op.CAST2SIGINT.make(o, ExprUnary.Op.CAST2INT.make(o, a)); :};
DotExprB ::= BracketExprB:a DOT:o SUM {: RESULT=ExprUnary.Op.CAST2SIGINT.make(o, ExprUnary.Op.CAST2INT.make(o, a)); :};
+// [electrum] unary temporal expressions, same precedence as other unary operators
UnopExprA ::= TILDE:o Bind:b {: RESULT=ExprUnary.Op.TRANSPOSE.make(o,b); :};
UnopExprA ::= STAR:o Bind:b {: RESULT=ExprUnary.Op.RCLOSURE .make(o,b); :};
UnopExprA ::= CARET:o Bind:b {: RESULT=ExprUnary.Op.CLOSURE .make(o,b); :};
@@ -1021,6 +1151,9 @@ UnopExprB ::= BaseExpr:b {: RESULT=b;
UnopExprB ::= TILDE:o UnopExprB:b {: RESULT=ExprUnary.Op.TRANSPOSE.make(o,b); :};
UnopExprB ::= STAR:o UnopExprB:b {: RESULT=ExprUnary.Op.RCLOSURE .make(o,b); :};
UnopExprB ::= CARET:o UnopExprB:b {: RESULT=ExprUnary.Op.CLOSURE .make(o,b); :};
+UnopExprA ::= Bind:b PRIME:o {: RESULT=ExprUnary.Op.PRIME .make(o,b); :};
+UnopExprA ::= UnopExprA:b PRIME:o {: RESULT=ExprUnary.Op.PRIME .make(o,b); :};
+UnopExprB ::= UnopExprB:b PRIME:o {: RESULT=ExprUnary.Op.PRIME .make(o,b); :};
BaseExpr ::= NUMBER:x {: RESULT = x; :};
BaseExpr ::= STR:x {: RESULT = x; :};
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/Alloy.lex b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/Alloy.lex
index 2db55333e..4ec7c4cac 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/Alloy.lex
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/Alloy.lex
@@ -25,6 +25,9 @@ import java_cup.runtime.*;
/** Autogenerated by JFlex 1.4.1 */
+// @modified [electrum] added temporal keywords and operators (single quotes also
+// interpreted as primes); forbade primes in identifiers
+
%%
// There are 3 sets of "special tokens" that the lexer will not output.
@@ -83,7 +86,7 @@ import java_cup.runtime.*;
i++;
if (i>=txt.length()) throw new ErrorSyntax(p, "String literal cannot end with a single \\");
c = txt.charAt(i);
- if (c=='n') c='\n'; else if (c!='\'' && c!='\"' && c!='\\') throw new ErrorSyntax(p, "String literal currenty only supports\nfour escape sequences: \\\\, \\n, \\\', and \\\"");
+ if (c=='n') c='\n'; else if (c!='\"' && c!='\\') throw new ErrorSyntax(p, "String literal currently only supports\nthree escape sequences: \\\\, \\n, and \\\"");
}
sb.append(c);
}
@@ -218,15 +221,31 @@ import java_cup.runtime.*;
"sum" { return alloy_sym(yytext(), CompSym.SUM );}
"this" { return alloy_sym(yytext(), CompSym.THIS );}
"univ" { return alloy_sym(yytext(), CompSym.UNIV );}
+"always" { return alloy_sym(yytext(), CompSym.ALWAYS );}
+"after" { return alloy_sym(yytext(), CompSym.AFTER );}
+"eventually" { return alloy_sym(yytext(), CompSym.EVENTUALLY );}
+"historically" { return alloy_sym(yytext(), CompSym.HISTORICALLY);}
+"before" { return alloy_sym(yytext(), CompSym.BEFORE );}
+"once" { return alloy_sym(yytext(), CompSym.ONCE );}
+"releases" { return alloy_sym(yytext(), CompSym.RELEASES );}
+"until" { return alloy_sym(yytext(), CompSym.UNTIL );}
+"since" { return alloy_sym(yytext(), CompSym.SINCE );}
+"triggered" { return alloy_sym(yytext(), CompSym.TRIGGERED );}
+";" { return alloy_sym(yytext(), CompSym.TRCSEQ );}
+"var" { return alloy_sym(yytext(), CompSym.VAR );}
+"steps" { return alloy_sym(yytext(), CompSym.TIME );}
+"'" { return alloy_sym(yytext(), CompSym.PRIME );}
+"‘" { return alloy_sym(yytext(), CompSym.PRIME );}
+"’" { return alloy_sym(yytext(), CompSym.PRIME );}
-[\"] ([^\\\"] | ("\\" .))* [\"] [\$0-9a-zA-Z_\'\"] [\$0-9a-zA-Z_\'\"]* { throw new ErrorSyntax(alloy_here(yytext()),"String literal cannot be followed by a legal identifier character."); }
+[\"] ([^\\\"] | ("\\" .))* [\"] [\$0-9a-zA-Z_\"] [\$0-9a-zA-Z_\"]* { throw new ErrorSyntax(alloy_here(yytext()),"String literal cannot be followed by a legal identifier character."); }
[\"] ([^\\\"] | ("\\" .))* [\"] { return alloy_string(yytext()); }
[\"] ([^\\\"] | ("\\" .))* { throw new ErrorSyntax(alloy_here(yytext()),"String literal is missing its closing \" character"); }
[0]"x"([_]|([0-9A-Fa-f][0-9A-Fa-f]))+ { return alloy_hexnum (yytext()); }
[0]"b"[01_]+ { return alloy_binarynum (yytext()); }
-[0-9][0-9]*[\$a-zA-Z_\'\"][\$0-9a-zA-Z_\'\"]* { throw new ErrorSyntax(alloy_here(yytext()),"Name cannot start with a number."); }
+[0-9][0-9]*[\$a-zA-Z_\"][\$0-9a-zA-Z_\"]* { throw new ErrorSyntax(alloy_here(yytext()),"Name cannot start with a number."); }
[0-9][0-9_]* { return alloy_num (yytext()); }
-[:jletter:][[:jletterdigit:]\'\"]* { return alloy_id (yytext()); }
+[:jletter:][[:jletterdigit:]\"]* { return alloy_id (yytext()); }
"/**" ~"*/" { }
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/CompLexer.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/CompLexer.java
index 3e4bedefc..e51f5eb46 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/CompLexer.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/CompLexer.java
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.4.1 on 4/8/18 9:54 AM */
+/* The following code was generated by JFlex 1.4.1 on 2/21/21 3:30 PM */
// Alloy Analyzer 4 -- Copyright (c) 2006-2008, Felix Chang
//
@@ -27,7 +27,16 @@
/** Autogenerated by JFlex 1.4.1 */
+// @modified [electrum] added temporal keywords and operators (single quotes also
+// interpreted as primes); forbade primes in identifiers
+
+/**
+ * This class is a scanner generated by
+ * JFlex 1.4.1
+ * on 2/21/21 3:30 PM from the specification file
+ * src/main/java/edu/mit/csail/sdg/parser/Alloy.lex
+ */
public final class CompLexer implements java_cup.runtime.Scanner {
/** This character denotes the end of file */
@@ -43,120 +52,120 @@ public final class CompLexer implements java_cup.runtime.Scanner {
* Translates characters to character classes
*/
private static final String ZZ_CMAP_PACKED =
- "\11\75\1\77\1\64\1\0\1\77\1\76\16\75\4\0\1\77\1\1"+
- "\1\62\1\2\1\74\1\0\1\3\1\65\1\4\1\5\1\6\1\7"+
- "\1\10\1\11\1\13\1\14\1\66\1\71\10\72\1\15\1\0\1\16"+
- "\1\17\1\12\1\0\1\20\6\70\2\74\1\56\11\74\1\61\7\74"+
- "\1\21\1\63\1\22\1\23\1\67\1\0\1\30\1\31\1\35\1\40"+
+ "\11\77\1\101\1\67\1\0\1\101\1\100\16\77\4\0\1\101\1\1"+
+ "\1\65\1\2\1\70\1\0\1\3\1\64\1\4\1\5\1\6\1\7"+
+ "\1\10\1\11\1\13\1\14\1\71\1\74\10\75\1\15\1\63\1\16"+
+ "\1\17\1\12\1\0\1\20\6\73\2\70\1\56\11\70\1\61\7\70"+
+ "\1\21\1\66\1\22\1\23\1\72\1\0\1\30\1\31\1\35\1\40"+
"\1\41\1\55\1\60\1\43\1\45\1\46\1\44\1\36\1\50\1\37"+
- "\1\47\1\54\1\57\1\34\1\32\1\33\1\42\1\53\1\74\1\51"+
- "\1\52\1\74\1\24\1\25\1\26\1\27\41\75\2\0\4\73\4\0"+
- "\1\73\2\0\1\75\7\0\1\73\4\0\1\73\5\0\27\73\1\0"+
- "\37\73\1\0\u01ca\73\4\0\14\73\16\0\5\73\7\0\1\73\1\0"+
- "\1\73\21\0\160\75\5\73\1\0\2\73\2\0\4\73\10\0\1\73"+
- "\1\0\3\73\1\0\1\73\1\0\24\73\1\0\123\73\1\0\213\73"+
- "\1\0\5\75\2\0\236\73\11\0\46\73\2\0\1\73\7\0\47\73"+
- "\7\0\1\73\1\0\55\75\1\0\1\75\1\0\2\75\1\0\2\75"+
- "\1\0\1\75\10\0\33\73\5\0\3\73\15\0\5\75\6\0\1\73"+
- "\4\0\13\75\5\0\53\73\37\75\4\0\2\73\1\75\143\73\1\0"+
- "\1\73\10\75\1\0\6\75\2\73\2\75\1\0\4\75\2\73\12\75"+
- "\3\73\2\0\1\73\17\0\1\75\1\73\1\75\36\73\33\75\2\0"+
- "\131\73\13\75\1\73\16\0\12\75\41\73\11\75\2\73\4\0\1\73"+
- "\5\0\26\73\4\75\1\73\11\75\1\73\3\75\1\73\5\75\22\0"+
- "\31\73\3\75\104\0\1\73\1\0\13\73\67\0\33\75\1\0\4\75"+
- "\66\73\3\75\1\73\22\75\1\73\7\75\12\73\2\75\2\0\12\75"+
- "\1\0\7\73\1\0\7\73\1\0\3\75\1\0\10\73\2\0\2\73"+
- "\2\0\26\73\1\0\7\73\1\0\1\73\3\0\4\73\2\0\1\75"+
- "\1\73\7\75\2\0\2\75\2\0\3\75\1\73\10\0\1\75\4\0"+
- "\2\73\1\0\3\73\2\75\2\0\12\75\4\73\7\0\1\73\5\0"+
- "\3\75\1\0\6\73\4\0\2\73\2\0\26\73\1\0\7\73\1\0"+
- "\2\73\1\0\2\73\1\0\2\73\2\0\1\75\1\0\5\75\4\0"+
- "\2\75\2\0\3\75\3\0\1\75\7\0\4\73\1\0\1\73\7\0"+
- "\14\75\3\73\1\75\13\0\3\75\1\0\11\73\1\0\3\73\1\0"+
- "\26\73\1\0\7\73\1\0\2\73\1\0\5\73\2\0\1\75\1\73"+
- "\10\75\1\0\3\75\1\0\3\75\2\0\1\73\17\0\2\73\2\75"+
- "\2\0\12\75\1\0\1\73\17\0\3\75\1\0\10\73\2\0\2\73"+
- "\2\0\26\73\1\0\7\73\1\0\2\73\1\0\5\73\2\0\1\75"+
- "\1\73\7\75\2\0\2\75\2\0\3\75\10\0\2\75\4\0\2\73"+
- "\1\0\3\73\2\75\2\0\12\75\1\0\1\73\20\0\1\75\1\73"+
- "\1\0\6\73\3\0\3\73\1\0\4\73\3\0\2\73\1\0\1\73"+
- "\1\0\2\73\3\0\2\73\3\0\3\73\3\0\14\73\4\0\5\75"+
- "\3\0\3\75\1\0\4\75\2\0\1\73\6\0\1\75\16\0\12\75"+
- "\11\0\1\73\7\0\3\75\1\0\10\73\1\0\3\73\1\0\27\73"+
- "\1\0\12\73\1\0\5\73\3\0\1\73\7\75\1\0\3\75\1\0"+
- "\4\75\7\0\2\75\1\0\2\73\6\0\2\73\2\75\2\0\12\75"+
- "\22\0\2\75\1\0\10\73\1\0\3\73\1\0\27\73\1\0\12\73"+
- "\1\0\5\73\2\0\1\75\1\73\7\75\1\0\3\75\1\0\4\75"+
- "\7\0\2\75\7\0\1\73\1\0\2\73\2\75\2\0\12\75\1\0"+
- "\2\73\17\0\2\75\1\0\10\73\1\0\3\73\1\0\51\73\2\0"+
- "\1\73\7\75\1\0\3\75\1\0\4\75\1\73\10\0\1\75\10\0"+
- "\2\73\2\75\2\0\12\75\12\0\6\73\2\0\2\75\1\0\22\73"+
- "\3\0\30\73\1\0\11\73\1\0\1\73\2\0\7\73\3\0\1\75"+
- "\4\0\6\75\1\0\1\75\1\0\10\75\22\0\2\75\15\0\60\73"+
- "\1\75\2\73\7\75\4\0\10\73\10\75\1\0\12\75\47\0\2\73"+
- "\1\0\1\73\2\0\2\73\1\0\1\73\2\0\1\73\6\0\4\73"+
- "\1\0\7\73\1\0\3\73\1\0\1\73\1\0\1\73\2\0\2\73"+
- "\1\0\4\73\1\75\2\73\6\75\1\0\2\75\1\73\2\0\5\73"+
- "\1\0\1\73\1\0\6\75\2\0\12\75\2\0\4\73\40\0\1\73"+
- "\27\0\2\75\6\0\12\75\13\0\1\75\1\0\1\75\1\0\1\75"+
- "\4\0\2\75\10\73\1\0\44\73\4\0\24\75\1\0\2\75\5\73"+
- "\13\75\1\0\44\75\11\0\1\75\71\0\53\73\24\75\1\73\12\75"+
- "\6\0\6\73\4\75\4\73\3\75\1\73\3\75\2\73\7\75\3\73"+
- "\4\75\15\73\14\75\1\73\17\75\2\0\46\73\1\0\1\73\5\0"+
- "\1\73\2\0\53\73\1\0\u014d\73\1\0\4\73\2\0\7\73\1\0"+
- "\1\73\1\0\4\73\2\0\51\73\1\0\4\73\2\0\41\73\1\0"+
- "\4\73\2\0\7\73\1\0\1\73\1\0\4\73\2\0\17\73\1\0"+
- "\71\73\1\0\4\73\2\0\103\73\2\0\3\75\40\0\20\73\20\0"+
- "\125\73\14\0\u026c\73\2\0\21\73\1\0\32\73\5\0\113\73\3\0"+
- "\3\73\17\0\15\73\1\0\4\73\3\75\13\0\22\73\3\75\13\0"+
- "\22\73\2\75\14\0\15\73\1\0\3\73\1\0\2\75\14\0\64\73"+
- "\40\75\3\0\1\73\3\0\2\73\1\75\2\0\12\75\41\0\3\75"+
- "\2\0\12\75\6\0\130\73\10\0\51\73\1\75\1\73\5\0\106\73"+
- "\12\0\35\73\3\0\14\75\4\0\14\75\12\0\12\75\36\73\2\0"+
- "\5\73\13\0\54\73\4\0\21\75\7\73\2\75\6\0\12\75\46\0"+
- "\27\73\5\75\4\0\65\73\12\75\1\0\35\75\2\0\13\75\6\0"+
- "\12\75\15\0\1\73\130\0\5\75\57\73\21\75\7\73\4\0\12\75"+
- "\21\0\11\75\14\0\3\75\36\73\15\75\2\73\12\75\54\73\16\75"+
- "\14\0\44\73\24\75\10\0\12\75\3\0\3\73\12\75\44\73\122\0"+
- "\3\75\1\0\25\75\4\73\1\75\4\73\3\75\2\73\11\0\300\73"+
- "\47\75\25\0\4\75\u0116\73\2\0\6\73\2\0\46\73\2\0\6\73"+
- "\2\0\10\73\1\0\1\73\1\0\1\73\1\0\1\73\1\0\37\73"+
- "\2\0\65\73\1\0\7\73\1\0\1\73\3\0\3\73\1\0\7\73"+
- "\3\0\4\73\2\0\6\73\4\0\15\73\5\0\3\73\1\0\7\73"+
- "\16\0\5\75\32\0\5\75\20\0\2\73\23\0\1\73\13\0\5\75"+
- "\5\0\6\75\1\0\1\73\15\0\1\73\20\0\15\73\3\0\33\73"+
- "\25\0\15\75\4\0\1\75\3\0\14\75\21\0\1\73\4\0\1\73"+
- "\2\0\12\73\1\0\1\73\3\0\5\73\6\0\1\73\1\0\1\73"+
- "\1\0\1\73\1\0\4\73\1\0\13\73\2\0\4\73\5\0\5\73"+
- "\4\0\1\73\21\0\51\73\u0a77\0\57\73\1\0\57\73\1\0\205\73"+
- "\6\0\4\73\3\75\2\73\14\0\46\73\1\0\1\73\5\0\1\73"+
- "\2\0\70\73\7\0\1\73\17\0\1\75\27\73\11\0\7\73\1\0"+
- "\7\73\1\0\7\73\1\0\7\73\1\0\7\73\1\0\7\73\1\0"+
- "\7\73\1\0\7\73\1\0\40\75\57\0\1\73\u01d5\0\3\73\31\0"+
- "\11\73\6\75\1\0\5\73\2\0\5\73\4\0\126\73\2\0\2\75"+
- "\2\0\3\73\1\0\132\73\1\0\4\73\5\0\51\73\3\0\136\73"+
- "\21\0\33\73\65\0\20\73\u0200\0\u19b6\73\112\0\u51cd\73\63\0\u048d\73"+
- "\103\0\56\73\2\0\u010d\73\3\0\20\73\12\75\2\73\24\0\57\73"+
- "\1\75\4\0\12\75\1\0\31\73\7\0\1\75\120\73\2\75\45\0"+
- "\11\73\2\0\147\73\2\0\4\73\1\0\4\73\14\0\13\73\115\0"+
- "\12\73\1\75\3\73\1\75\4\73\1\75\27\73\5\75\20\0\1\73"+
- "\7\0\64\73\14\0\2\75\62\73\21\75\13\0\12\75\6\0\22\75"+
- "\6\73\3\0\1\73\4\0\12\75\34\73\10\75\2\0\27\73\15\75"+
- "\14\0\35\73\3\0\4\75\57\73\16\75\16\0\1\73\12\75\46\0"+
- "\51\73\16\75\11\0\3\73\1\75\10\73\2\75\2\0\12\75\6\0"+
- "\27\73\3\0\1\73\1\75\4\0\60\73\1\75\1\73\3\75\2\73"+
- "\2\75\5\73\2\75\1\73\1\75\1\73\30\0\3\73\2\0\13\73"+
- "\5\75\2\0\3\73\2\75\12\0\6\73\2\0\6\73\2\0\6\73"+
- "\11\0\7\73\1\0\7\73\221\0\43\73\10\75\1\0\2\75\2\0"+
- "\12\75\6\0\u2ba4\73\14\0\27\73\4\0\61\73\u2104\0\u016e\73\2\0"+
- "\152\73\46\0\7\73\14\0\5\73\5\0\1\73\1\75\12\73\1\0"+
- "\15\73\1\0\5\73\1\0\1\73\1\0\2\73\1\0\2\73\1\0"+
- "\154\73\41\0\u016b\73\22\0\100\73\2\0\66\73\50\0\15\73\3\0"+
- "\20\75\20\0\7\75\14\0\2\73\30\0\3\73\31\0\1\73\6\0"+
- "\5\73\1\0\207\73\2\0\1\75\4\0\1\73\13\0\12\75\7\0"+
- "\32\73\4\0\1\73\1\0\32\73\13\0\131\73\3\0\6\73\2\0"+
- "\6\73\2\0\6\73\2\0\3\73\3\0\2\73\3\0\2\73\22\0"+
- "\3\75\4\0";
+ "\1\47\1\54\1\57\1\34\1\32\1\33\1\42\1\53\1\62\1\51"+
+ "\1\52\1\70\1\24\1\25\1\26\1\27\41\77\2\0\4\76\4\0"+
+ "\1\76\2\0\1\77\7\0\1\76\4\0\1\76\5\0\27\76\1\0"+
+ "\37\76\1\0\u01ca\76\4\0\14\76\16\0\5\76\7\0\1\76\1\0"+
+ "\1\76\21\0\160\77\5\76\1\0\2\76\2\0\4\76\10\0\1\76"+
+ "\1\0\3\76\1\0\1\76\1\0\24\76\1\0\123\76\1\0\213\76"+
+ "\1\0\5\77\2\0\236\76\11\0\46\76\2\0\1\76\7\0\47\76"+
+ "\7\0\1\76\1\0\55\77\1\0\1\77\1\0\2\77\1\0\2\77"+
+ "\1\0\1\77\10\0\33\76\5\0\3\76\15\0\5\77\6\0\1\76"+
+ "\4\0\13\77\5\0\53\76\37\77\4\0\2\76\1\77\143\76\1\0"+
+ "\1\76\10\77\1\0\6\77\2\76\2\77\1\0\4\77\2\76\12\77"+
+ "\3\76\2\0\1\76\17\0\1\77\1\76\1\77\36\76\33\77\2\0"+
+ "\131\76\13\77\1\76\16\0\12\77\41\76\11\77\2\76\4\0\1\76"+
+ "\5\0\26\76\4\77\1\76\11\77\1\76\3\77\1\76\5\77\22\0"+
+ "\31\76\3\77\104\0\1\76\1\0\13\76\67\0\33\77\1\0\4\77"+
+ "\66\76\3\77\1\76\22\77\1\76\7\77\12\76\2\77\2\0\12\77"+
+ "\1\0\7\76\1\0\7\76\1\0\3\77\1\0\10\76\2\0\2\76"+
+ "\2\0\26\76\1\0\7\76\1\0\1\76\3\0\4\76\2\0\1\77"+
+ "\1\76\7\77\2\0\2\77\2\0\3\77\1\76\10\0\1\77\4\0"+
+ "\2\76\1\0\3\76\2\77\2\0\12\77\4\76\7\0\1\76\5\0"+
+ "\3\77\1\0\6\76\4\0\2\76\2\0\26\76\1\0\7\76\1\0"+
+ "\2\76\1\0\2\76\1\0\2\76\2\0\1\77\1\0\5\77\4\0"+
+ "\2\77\2\0\3\77\3\0\1\77\7\0\4\76\1\0\1\76\7\0"+
+ "\14\77\3\76\1\77\13\0\3\77\1\0\11\76\1\0\3\76\1\0"+
+ "\26\76\1\0\7\76\1\0\2\76\1\0\5\76\2\0\1\77\1\76"+
+ "\10\77\1\0\3\77\1\0\3\77\2\0\1\76\17\0\2\76\2\77"+
+ "\2\0\12\77\1\0\1\76\17\0\3\77\1\0\10\76\2\0\2\76"+
+ "\2\0\26\76\1\0\7\76\1\0\2\76\1\0\5\76\2\0\1\77"+
+ "\1\76\7\77\2\0\2\77\2\0\3\77\10\0\2\77\4\0\2\76"+
+ "\1\0\3\76\2\77\2\0\12\77\1\0\1\76\20\0\1\77\1\76"+
+ "\1\0\6\76\3\0\3\76\1\0\4\76\3\0\2\76\1\0\1\76"+
+ "\1\0\2\76\3\0\2\76\3\0\3\76\3\0\14\76\4\0\5\77"+
+ "\3\0\3\77\1\0\4\77\2\0\1\76\6\0\1\77\16\0\12\77"+
+ "\11\0\1\76\7\0\3\77\1\0\10\76\1\0\3\76\1\0\27\76"+
+ "\1\0\12\76\1\0\5\76\3\0\1\76\7\77\1\0\3\77\1\0"+
+ "\4\77\7\0\2\77\1\0\2\76\6\0\2\76\2\77\2\0\12\77"+
+ "\22\0\2\77\1\0\10\76\1\0\3\76\1\0\27\76\1\0\12\76"+
+ "\1\0\5\76\2\0\1\77\1\76\7\77\1\0\3\77\1\0\4\77"+
+ "\7\0\2\77\7\0\1\76\1\0\2\76\2\77\2\0\12\77\1\0"+
+ "\2\76\17\0\2\77\1\0\10\76\1\0\3\76\1\0\51\76\2\0"+
+ "\1\76\7\77\1\0\3\77\1\0\4\77\1\76\10\0\1\77\10\0"+
+ "\2\76\2\77\2\0\12\77\12\0\6\76\2\0\2\77\1\0\22\76"+
+ "\3\0\30\76\1\0\11\76\1\0\1\76\2\0\7\76\3\0\1\77"+
+ "\4\0\6\77\1\0\1\77\1\0\10\77\22\0\2\77\15\0\60\76"+
+ "\1\77\2\76\7\77\4\0\10\76\10\77\1\0\12\77\47\0\2\76"+
+ "\1\0\1\76\2\0\2\76\1\0\1\76\2\0\1\76\6\0\4\76"+
+ "\1\0\7\76\1\0\3\76\1\0\1\76\1\0\1\76\2\0\2\76"+
+ "\1\0\4\76\1\77\2\76\6\77\1\0\2\77\1\76\2\0\5\76"+
+ "\1\0\1\76\1\0\6\77\2\0\12\77\2\0\4\76\40\0\1\76"+
+ "\27\0\2\77\6\0\12\77\13\0\1\77\1\0\1\77\1\0\1\77"+
+ "\4\0\2\77\10\76\1\0\44\76\4\0\24\77\1\0\2\77\5\76"+
+ "\13\77\1\0\44\77\11\0\1\77\71\0\53\76\24\77\1\76\12\77"+
+ "\6\0\6\76\4\77\4\76\3\77\1\76\3\77\2\76\7\77\3\76"+
+ "\4\77\15\76\14\77\1\76\17\77\2\0\46\76\1\0\1\76\5\0"+
+ "\1\76\2\0\53\76\1\0\u014d\76\1\0\4\76\2\0\7\76\1\0"+
+ "\1\76\1\0\4\76\2\0\51\76\1\0\4\76\2\0\41\76\1\0"+
+ "\4\76\2\0\7\76\1\0\1\76\1\0\4\76\2\0\17\76\1\0"+
+ "\71\76\1\0\4\76\2\0\103\76\2\0\3\77\40\0\20\76\20\0"+
+ "\125\76\14\0\u026c\76\2\0\21\76\1\0\32\76\5\0\113\76\3\0"+
+ "\3\76\17\0\15\76\1\0\4\76\3\77\13\0\22\76\3\77\13\0"+
+ "\22\76\2\77\14\0\15\76\1\0\3\76\1\0\2\77\14\0\64\76"+
+ "\40\77\3\0\1\76\3\0\2\76\1\77\2\0\12\77\41\0\3\77"+
+ "\2\0\12\77\6\0\130\76\10\0\51\76\1\77\1\76\5\0\106\76"+
+ "\12\0\35\76\3\0\14\77\4\0\14\77\12\0\12\77\36\76\2\0"+
+ "\5\76\13\0\54\76\4\0\21\77\7\76\2\77\6\0\12\77\46\0"+
+ "\27\76\5\77\4\0\65\76\12\77\1\0\35\77\2\0\13\77\6\0"+
+ "\12\77\15\0\1\76\130\0\5\77\57\76\21\77\7\76\4\0\12\77"+
+ "\21\0\11\77\14\0\3\77\36\76\15\77\2\76\12\77\54\76\16\77"+
+ "\14\0\44\76\24\77\10\0\12\77\3\0\3\76\12\77\44\76\122\0"+
+ "\3\77\1\0\25\77\4\76\1\77\4\76\3\77\2\76\11\0\300\76"+
+ "\47\77\25\0\4\77\u0116\76\2\0\6\76\2\0\46\76\2\0\6\76"+
+ "\2\0\10\76\1\0\1\76\1\0\1\76\1\0\1\76\1\0\37\76"+
+ "\2\0\65\76\1\0\7\76\1\0\1\76\3\0\3\76\1\0\7\76"+
+ "\3\0\4\76\2\0\6\76\4\0\15\76\5\0\3\76\1\0\7\76"+
+ "\16\0\5\77\10\0\1\64\1\64\20\0\5\77\20\0\2\76\23\0"+
+ "\1\76\13\0\5\77\5\0\6\77\1\0\1\76\15\0\1\76\20\0"+
+ "\15\76\3\0\33\76\25\0\15\77\4\0\1\77\3\0\14\77\21\0"+
+ "\1\76\4\0\1\76\2\0\12\76\1\0\1\76\3\0\5\76\6\0"+
+ "\1\76\1\0\1\76\1\0\1\76\1\0\4\76\1\0\13\76\2\0"+
+ "\4\76\5\0\5\76\4\0\1\76\21\0\51\76\u0a77\0\57\76\1\0"+
+ "\57\76\1\0\205\76\6\0\4\76\3\77\2\76\14\0\46\76\1\0"+
+ "\1\76\5\0\1\76\2\0\70\76\7\0\1\76\17\0\1\77\27\76"+
+ "\11\0\7\76\1\0\7\76\1\0\7\76\1\0\7\76\1\0\7\76"+
+ "\1\0\7\76\1\0\7\76\1\0\7\76\1\0\40\77\57\0\1\76"+
+ "\u01d5\0\3\76\31\0\11\76\6\77\1\0\5\76\2\0\5\76\4\0"+
+ "\126\76\2\0\2\77\2\0\3\76\1\0\132\76\1\0\4\76\5\0"+
+ "\51\76\3\0\136\76\21\0\33\76\65\0\20\76\u0200\0\u19b6\76\112\0"+
+ "\u51cd\76\63\0\u048d\76\103\0\56\76\2\0\u010d\76\3\0\20\76\12\77"+
+ "\2\76\24\0\57\76\1\77\4\0\12\77\1\0\31\76\7\0\1\77"+
+ "\120\76\2\77\45\0\11\76\2\0\147\76\2\0\4\76\1\0\4\76"+
+ "\14\0\13\76\115\0\12\76\1\77\3\76\1\77\4\76\1\77\27\76"+
+ "\5\77\20\0\1\76\7\0\64\76\14\0\2\77\62\76\21\77\13\0"+
+ "\12\77\6\0\22\77\6\76\3\0\1\76\4\0\12\77\34\76\10\77"+
+ "\2\0\27\76\15\77\14\0\35\76\3\0\4\77\57\76\16\77\16\0"+
+ "\1\76\12\77\46\0\51\76\16\77\11\0\3\76\1\77\10\76\2\77"+
+ "\2\0\12\77\6\0\27\76\3\0\1\76\1\77\4\0\60\76\1\77"+
+ "\1\76\3\77\2\76\2\77\5\76\2\77\1\76\1\77\1\76\30\0"+
+ "\3\76\2\0\13\76\5\77\2\0\3\76\2\77\12\0\6\76\2\0"+
+ "\6\76\2\0\6\76\11\0\7\76\1\0\7\76\221\0\43\76\10\77"+
+ "\1\0\2\77\2\0\12\77\6\0\u2ba4\76\14\0\27\76\4\0\61\76"+
+ "\u2104\0\u016e\76\2\0\152\76\46\0\7\76\14\0\5\76\5\0\1\76"+
+ "\1\77\12\76\1\0\15\76\1\0\5\76\1\0\1\76\1\0\2\76"+
+ "\1\0\2\76\1\0\154\76\41\0\u016b\76\22\0\100\76\2\0\66\76"+
+ "\50\0\15\76\3\0\20\77\20\0\7\77\14\0\2\76\30\0\3\76"+
+ "\31\0\1\76\6\0\5\76\1\0\207\76\2\0\1\77\4\0\1\76"+
+ "\13\0\12\77\7\0\32\76\4\0\1\76\1\0\32\76\13\0\131\76"+
+ "\3\0\6\76\2\0\6\76\2\0\6\76\2\0\3\76\3\0\2\76"+
+ "\3\0\2\76\22\0\3\77\4\0";
/**
* Translates characters to character classes
@@ -172,23 +181,26 @@ public final class CompLexer implements java_cup.runtime.Scanner {
"\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7"+
"\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17"+
"\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27"+
- "\1\30\23\31\1\32\1\33\2\34\1\35\1\36\1\33"+
- "\1\37\1\40\1\41\1\0\1\42\1\43\1\44\1\45"+
- "\1\46\1\45\1\47\1\31\1\50\14\31\1\51\5\31"+
- "\1\52\3\31\1\47\12\31\1\53\1\0\3\54\1\55"+
- "\2\0\1\56\2\31\1\57\1\35\1\60\1\61\1\62"+
- "\1\63\1\64\2\31\1\65\1\31\1\66\1\31\1\2"+
- "\6\31\1\67\2\31\1\70\2\31\1\56\1\71\6\31"+
- "\1\72\1\73\1\74\1\31\1\75\1\76\1\54\1\77"+
- "\1\0\1\33\2\31\1\100\1\101\1\31\1\102\1\103"+
- "\1\104\1\105\1\106\4\31\1\107\1\110\1\31\1\111"+
- "\1\31\1\112\1\113\1\31\1\114\3\31\1\115\13\31"+
- "\1\116\4\31\1\117\1\31\1\120\2\31\1\121\2\31"+
- "\1\122\1\123\1\31\1\46\1\31\1\124\1\125\1\104"+
- "\3\31\1\112\1\67";
+ "\1\30\25\31\1\32\1\33\1\34\1\35\2\36\1\37"+
+ "\1\40\1\35\1\41\1\42\1\43\1\0\1\44\1\45"+
+ "\1\46\1\47\1\50\1\47\1\51\1\31\1\52\21\31"+
+ "\1\53\7\31\1\54\3\31\1\51\13\31\1\55\1\0"+
+ "\3\56\1\57\2\0\1\60\2\31\1\61\1\31\1\37"+
+ "\2\31\1\62\1\31\1\63\1\64\1\65\1\31\1\66"+
+ "\4\31\1\67\1\31\1\70\1\31\1\2\6\31\1\71"+
+ "\5\31\1\72\2\31\1\60\1\31\1\73\2\31\1\74"+
+ "\4\31\1\75\1\76\1\77\1\31\1\100\1\101\1\56"+
+ "\1\102\1\0\1\35\7\31\1\103\1\31\1\104\2\31"+
+ "\1\105\1\106\1\107\1\110\1\111\6\31\1\112\1\31"+
+ "\1\113\1\31\1\114\1\115\1\31\1\116\1\117\1\31"+
+ "\1\120\4\31\1\121\1\31\1\122\1\123\2\31\1\124"+
+ "\6\31\1\125\7\31\1\126\1\127\1\130\6\31\1\131"+
+ "\3\31\1\132\2\31\1\133\4\31\1\134\1\135\3\31"+
+ "\1\50\1\31\1\136\1\137\1\31\1\140\1\107\4\31"+
+ "\1\141\3\31\1\116\1\71\1\142\2\31\1\143";
private static int [] zzUnpackAction() {
- int [] result = new int[216];
+ int [] result = new int[282];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
@@ -213,36 +225,45 @@ private static int zzUnpackAction(String packed, int offset, int [] result) {
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
private static final String ZZ_ROWMAP_PACKED_0 =
- "\0\0\0\100\0\100\0\100\0\200\0\100\0\100\0\100"+
- "\0\300\0\100\0\u0100\0\u0140\0\100\0\u0180\0\u01c0\0\u0200"+
- "\0\u0240\0\100\0\100\0\100\0\100\0\100\0\u0280\0\100"+
- "\0\100\0\u02c0\0\u0300\0\u0340\0\u0380\0\u03c0\0\u0400\0\u0440"+
- "\0\u0480\0\u04c0\0\u0500\0\u0540\0\u0580\0\u05c0\0\u0600\0\u0640"+
- "\0\u0680\0\u06c0\0\u0700\0\u0740\0\u0780\0\100\0\u07c0\0\u0800"+
- "\0\100\0\100\0\u0840\0\100\0\u0880\0\100\0\u08c0\0\100"+
- "\0\100\0\100\0\u0900\0\100\0\100\0\100\0\u0940\0\u0980"+
- "\0\u09c0\0\u0a00\0\u0a40\0\u0a80\0\u0ac0\0\u0b00\0\u0b40\0\u0b80"+
- "\0\u0bc0\0\u0c00\0\u0c40\0\u0c80\0\u0cc0\0\u0d00\0\u0d40\0\u0d80"+
- "\0\u0dc0\0\u0e00\0\u0e40\0\u0e80\0\u0ec0\0\u0f00\0\u0580\0\u0f40"+
- "\0\u0f80\0\u0fc0\0\u1000\0\u1040\0\u1080\0\u10c0\0\u1100\0\u1140"+
- "\0\u1180\0\u11c0\0\u1200\0\u1240\0\u1280\0\u12c0\0\100\0\u1300"+
- "\0\u1340\0\100\0\u1380\0\u13c0\0\u0580\0\u0580\0\u0580\0\u0580"+
- "\0\u0580\0\u0580\0\u0580\0\u1400\0\u1440\0\u0580\0\u1480\0\u0580"+
- "\0\u14c0\0\u0580\0\u1500\0\u1540\0\u1580\0\u15c0\0\u1600\0\u1640"+
- "\0\u1680\0\u16c0\0\u1700\0\u0580\0\u1740\0\u1780\0\u0580\0\u0580"+
- "\0\u17c0\0\u1800\0\u1840\0\u1880\0\u18c0\0\u1900\0\u0580\0\u0580"+
- "\0\u0580\0\u1940\0\u11c0\0\u1280\0\u1980\0\u12c0\0\u19c0\0\u1300"+
- "\0\u1a00\0\u1a40\0\u0580\0\u0580\0\u1a80\0\u0580\0\u0580\0\u1ac0"+
- "\0\u0580\0\u0580\0\u1b00\0\u1b40\0\u1b80\0\u1bc0\0\u0580\0\u0580"+
- "\0\u1c00\0\u0580\0\u1c40\0\u1c80\0\u0580\0\u1cc0\0\u0580\0\u1d00"+
- "\0\u1d40\0\u1d80\0\u0580\0\u1dc0\0\u1e00\0\u1e40\0\u1e80\0\u1ec0"+
- "\0\u1f00\0\u1f40\0\u1f80\0\u1fc0\0\u2000\0\u2040\0\u0580\0\u2080"+
- "\0\u20c0\0\u2100\0\u2140\0\u0580\0\u2180\0\u0580\0\u21c0\0\u2200"+
- "\0\u0580\0\u2240\0\u2280\0\u0580\0\u0580\0\u22c0\0\u0580\0\u2300"+
- "\0\u0580\0\u0580\0\u0580\0\u2340\0\u2380\0\u23c0\0\u0580\0\u0580";
+ "\0\0\0\102\0\102\0\102\0\204\0\102\0\102\0\102"+
+ "\0\306\0\102\0\u0108\0\u014a\0\102\0\u018c\0\u01ce\0\u0210"+
+ "\0\u0252\0\102\0\102\0\102\0\102\0\102\0\u0294\0\102"+
+ "\0\102\0\u02d6\0\u0318\0\u035a\0\u039c\0\u03de\0\u0420\0\u0462"+
+ "\0\u04a4\0\u04e6\0\u0528\0\u056a\0\u05ac\0\u05ee\0\u0630\0\u0672"+
+ "\0\u06b4\0\u06f6\0\u0738\0\u077a\0\u07bc\0\u07fe\0\102\0\102"+
+ "\0\u0840\0\102\0\u0882\0\u08c4\0\102\0\102\0\u0906\0\102"+
+ "\0\u0948\0\102\0\u098a\0\102\0\102\0\102\0\u09cc\0\102"+
+ "\0\102\0\102\0\u0a0e\0\u0a50\0\u0a92\0\u0ad4\0\u0b16\0\u0b58"+
+ "\0\u0b9a\0\u0bdc\0\u0c1e\0\u0c60\0\u0ca2\0\u0ce4\0\u0d26\0\u0d68"+
+ "\0\u0daa\0\u0dec\0\u0e2e\0\u0e70\0\u0eb2\0\u0ef4\0\u0f36\0\u0f78"+
+ "\0\u0fba\0\u0ffc\0\u103e\0\u1080\0\u10c2\0\u1104\0\u1146\0\u1188"+
+ "\0\u11ca\0\u05ee\0\u120c\0\u124e\0\u1290\0\u12d2\0\u1314\0\u1356"+
+ "\0\u1398\0\u13da\0\u141c\0\u145e\0\u14a0\0\u14e2\0\u1524\0\u1566"+
+ "\0\u15a8\0\u15ea\0\102\0\u162c\0\u166e\0\102\0\u16b0\0\u16f2"+
+ "\0\u05ee\0\u1734\0\u05ee\0\u1776\0\u17b8\0\u05ee\0\u17fa\0\u05ee"+
+ "\0\u05ee\0\u05ee\0\u183c\0\u05ee\0\u187e\0\u18c0\0\u1902\0\u1944"+
+ "\0\u05ee\0\u1986\0\u05ee\0\u19c8\0\u05ee\0\u1a0a\0\u1a4c\0\u1a8e"+
+ "\0\u1ad0\0\u1b12\0\u1b54\0\u1b96\0\u1bd8\0\u1c1a\0\u1c5c\0\u1c9e"+
+ "\0\u1ce0\0\u05ee\0\u1d22\0\u1d64\0\u05ee\0\u1da6\0\u05ee\0\u1de8"+
+ "\0\u1e2a\0\u05ee\0\u1e6c\0\u1eae\0\u1ef0\0\u1f32\0\u05ee\0\u05ee"+
+ "\0\u05ee\0\u1f74\0\u14e2\0\u15a8\0\u1fb6\0\u15ea\0\u1ff8\0\u162c"+
+ "\0\u203a\0\u207c\0\u20be\0\u2100\0\u2142\0\u2184\0\u21c6\0\u05ee"+
+ "\0\u2208\0\u05ee\0\u224a\0\u228c\0\u05ee\0\u05ee\0\u22ce\0\u05ee"+
+ "\0\u05ee\0\u2310\0\u2352\0\u2394\0\u23d6\0\u2418\0\u245a\0\u05ee"+
+ "\0\u249c\0\u05ee\0\u24de\0\u05ee\0\u05ee\0\u2520\0\u2562\0\u05ee"+
+ "\0\u25a4\0\u05ee\0\u25e6\0\u2628\0\u266a\0\u26ac\0\u05ee\0\u26ee"+
+ "\0\u05ee\0\u05ee\0\u2730\0\u2772\0\u05ee\0\u27b4\0\u27f6\0\u2838"+
+ "\0\u287a\0\u28bc\0\u28fe\0\u05ee\0\u2940\0\u2982\0\u29c4\0\u2a06"+
+ "\0\u2a48\0\u2a8a\0\u2acc\0\u05ee\0\u05ee\0\u05ee\0\u2b0e\0\u2b50"+
+ "\0\u2b92\0\u2bd4\0\u2c16\0\u2c58\0\u05ee\0\u2c9a\0\u2cdc\0\u2d1e"+
+ "\0\u05ee\0\u2d60\0\u2da2\0\u05ee\0\u2de4\0\u2e26\0\u2e68\0\u2eaa"+
+ "\0\u05ee\0\u05ee\0\u2eec\0\u2f2e\0\u2f70\0\u05ee\0\u2fb2\0\u05ee"+
+ "\0\u05ee\0\u2ff4\0\u05ee\0\u05ee\0\u3036\0\u3078\0\u30ba\0\u30fc"+
+ "\0\u05ee\0\u313e\0\u3180\0\u31c2\0\u05ee\0\u05ee\0\u05ee\0\u3204"+
+ "\0\u3246\0\u05ee";
private static int [] zzUnpackRowMap() {
- int [] result = new int[216];
+ int [] result = new int[282];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
@@ -269,122 +290,206 @@ private static int zzUnpackRowMap(String packed, int offset, int [] result) {
"\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21"+
"\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31"+
"\1\32\1\33\1\34\1\35\1\36\1\37\1\40\1\41"+
- "\1\42\1\43\1\44\2\45\1\46\1\45\1\47\1\50"+
- "\3\45\1\51\1\52\1\53\2\45\1\54\1\55\1\2"+
- "\1\56\1\2\1\57\2\45\2\60\2\45\1\2\2\56"+
- "\103\0\1\61\103\0\1\62\101\0\1\63\1\64\77\0"+
- "\1\65\4\0\1\66\66\0\1\67\5\0\1\63\75\0"+
- "\1\70\2\0\1\15\77\0\1\71\1\72\1\73\72\0"+
- "\1\74\3\0\1\75\106\0\1\76\102\0\1\45\1\77"+
- "\1\100\3\45\1\101\1\102\23\45\2\0\11\45\32\0"+
- "\12\45\1\103\20\45\2\0\11\45\32\0\11\45\1\104"+
- "\1\105\2\45\1\106\1\45\1\107\13\45\2\0\11\45"+
- "\32\0\13\45\1\110\17\45\2\0\11\45\32\0\12\45"+
- "\1\111\20\45\2\0\11\45\32\0\13\45\1\112\17\45"+
- "\2\0\11\45\32\0\11\45\1\113\5\45\1\114\13\45"+
- "\2\0\11\45\32\0\17\45\1\115\13\45\2\0\11\45"+
- "\32\0\15\45\1\116\15\45\2\0\11\45\32\0\6\45"+
- "\1\117\1\120\11\45\1\121\11\45\2\0\11\45\32\0"+
- "\7\45\1\122\23\45\2\0\11\45\32\0\33\45\2\0"+
- "\11\45\32\0\7\45\1\123\1\124\7\45\1\125\4\45"+
- "\1\126\5\45\2\0\11\45\32\0\4\45\1\127\2\45"+
- "\1\130\14\45\1\131\6\45\2\0\11\45\32\0\17\45"+
- "\1\132\13\45\2\0\11\45\32\0\1\133\3\45\1\134"+
- "\26\45\2\0\11\45\32\0\1\135\11\45\1\136\4\45"+
- "\1\137\13\45\2\0\11\45\32\0\7\45\1\140\23\45"+
- "\2\0\11\45\32\0\3\45\1\141\27\45\2\0\11\45"+
- "\2\0\62\55\1\142\1\143\14\55\30\0\1\144\1\145"+
- "\17\144\1\146\11\144\2\0\1\144\1\60\2\144\2\60"+
- "\1\0\1\144\33\0\33\144\2\0\1\144\1\60\2\144"+
- "\2\60\1\0\1\144\3\0\64\63\1\56\11\63\1\56"+
- "\1\63\12\0\1\147\65\0\6\150\1\151\71\150\12\0"+
- "\1\152\115\0\2\45\1\153\30\45\2\0\11\45\32\0"+
- "\2\45\1\154\30\45\2\0\11\45\32\0\6\45\1\155"+
- "\24\45\2\0\11\45\32\0\10\45\1\156\22\45\2\0"+
- "\11\45\32\0\3\45\1\157\27\45\2\0\11\45\32\0"+
- "\3\45\1\160\23\45\1\161\3\45\2\0\11\45\32\0"+
- "\20\45\1\162\12\45\2\0\11\45\32\0\30\45\1\163"+
- "\2\45\2\0\11\45\32\0\20\45\1\164\12\45\2\0"+
- "\11\45\32\0\15\45\1\165\15\45\2\0\11\45\32\0"+
- "\7\45\1\166\23\45\2\0\11\45\32\0\11\45\1\167"+
- "\21\45\2\0\11\45\32\0\3\45\1\170\27\45\2\0"+
- "\11\45\32\0\7\45\1\171\23\45\2\0\11\45\32\0"+
- "\3\45\1\172\3\45\1\173\23\45\2\0\11\45\32\0"+
- "\2\45\1\174\30\45\2\0\11\45\32\0\2\45\1\175"+
- "\30\45\2\0\11\45\32\0\12\45\1\176\20\45\2\0"+
- "\11\45\32\0\1\177\2\45\1\200\7\45\1\201\10\45"+
- "\1\202\6\45\2\0\11\45\32\0\15\45\1\203\15\45"+
- "\2\0\11\45\32\0\3\45\1\204\27\45\2\0\11\45"+
- "\32\0\11\45\1\205\21\45\2\0\11\45\32\0\24\45"+
- "\1\206\6\45\2\0\11\45\32\0\25\45\1\207\5\45"+
- "\2\0\11\45\32\0\11\45\1\210\21\45\2\0\11\45"+
- "\32\0\11\45\1\211\21\45\2\0\11\45\32\0\10\45"+
- "\1\212\22\45\2\0\11\45\32\0\4\45\1\213\26\45"+
- "\2\0\11\45\32\0\11\45\1\214\3\45\1\215\15\45"+
- "\2\0\11\45\32\0\5\45\1\216\25\45\2\0\11\45"+
- "\32\0\7\45\1\217\23\45\2\0\11\45\32\0\4\45"+
- "\1\220\26\45\2\0\11\45\32\0\3\45\1\221\27\45"+
- "\2\0\11\45\32\0\4\45\1\222\26\45\2\0\11\45"+
- "\32\0\33\223\2\0\6\223\1\0\1\223\3\0\64\55"+
- "\1\0\13\55\30\0\33\144\2\0\6\144\1\0\1\144"+
- "\33\0\33\144\2\0\1\144\2\224\1\144\1\224\1\144"+
- "\1\0\1\144\33\0\2\225\3\144\1\225\2\144\2\225"+
- "\13\144\1\225\5\144\2\0\1\144\1\225\1\226\3\225"+
- "\1\0\1\144\3\0\6\150\1\227\77\150\1\227\5\150"+
- "\1\230\63\150\30\0\3\45\1\231\27\45\2\0\11\45"+
- "\32\0\11\45\1\232\21\45\2\0\11\45\32\0\11\45"+
- "\1\233\21\45\2\0\11\45\32\0\2\45\1\234\30\45"+
- "\2\0\11\45\32\0\5\45\1\235\25\45\2\0\11\45"+
- "\32\0\11\45\1\236\21\45\2\0\11\45\32\0\11\45"+
- "\1\237\21\45\2\0\11\45\32\0\16\45\1\240\14\45"+
- "\2\0\11\45\32\0\11\45\1\241\21\45\2\0\11\45"+
- "\32\0\20\45\1\242\12\45\2\0\11\45\32\0\5\45"+
- "\1\243\25\45\2\0\11\45\32\0\11\45\1\244\21\45"+
- "\2\0\11\45\32\0\1\245\32\45\2\0\11\45\32\0"+
- "\11\45\1\246\21\45\2\0\11\45\32\0\23\45\1\247"+
- "\7\45\2\0\11\45\32\0\7\45\1\250\23\45\2\0"+
- "\11\45\32\0\6\45\1\251\24\45\2\0\11\45\32\0"+
- "\7\45\1\252\23\45\2\0\11\45\32\0\12\45\1\253"+
- "\20\45\2\0\11\45\32\0\3\45\1\254\27\45\2\0"+
- "\11\45\32\0\10\45\1\255\22\45\2\0\11\45\32\0"+
- "\23\45\1\256\7\45\2\0\11\45\32\0\3\45\1\257"+
- "\27\45\2\0\11\45\32\0\15\45\1\260\15\45\2\0"+
- "\11\45\32\0\2\226\3\144\1\226\2\144\2\226\13\144"+
- "\1\226\5\144\2\0\1\144\1\226\1\144\3\226\1\0"+
- "\1\144\3\0\6\150\1\227\5\150\1\56\63\150\30\0"+
- "\4\45\1\261\26\45\2\0\11\45\32\0\4\45\1\262"+
- "\26\45\2\0\11\45\32\0\14\45\1\263\16\45\2\0"+
- "\11\45\32\0\17\45\1\264\13\45\2\0\11\45\32\0"+
- "\3\45\1\265\27\45\2\0\11\45\32\0\7\45\1\266"+
- "\23\45\2\0\11\45\32\0\12\45\1\267\20\45\2\0"+
- "\11\45\32\0\5\45\1\270\25\45\2\0\11\45\32\0"+
- "\15\45\1\271\15\45\2\0\11\45\32\0\6\45\1\272"+
- "\24\45\2\0\11\45\32\0\15\45\1\273\15\45\2\0"+
- "\11\45\32\0\1\274\32\45\2\0\11\45\32\0\7\45"+
- "\1\275\23\45\2\0\11\45\32\0\1\276\32\45\2\0"+
- "\11\45\32\0\3\45\1\277\27\45\2\0\11\45\32\0"+
- "\15\45\1\300\15\45\2\0\11\45\32\0\6\45\1\301"+
- "\24\45\2\0\11\45\32\0\10\45\1\302\22\45\2\0"+
- "\11\45\32\0\2\45\1\303\30\45\2\0\11\45\32\0"+
- "\3\45\1\304\27\45\2\0\11\45\32\0\11\45\1\305"+
- "\21\45\2\0\11\45\32\0\11\45\1\306\21\45\2\0"+
- "\11\45\32\0\3\45\1\307\27\45\2\0\11\45\32\0"+
- "\3\45\1\310\27\45\2\0\11\45\32\0\30\45\1\311"+
- "\2\45\2\0\11\45\32\0\5\45\1\312\25\45\2\0"+
- "\11\45\32\0\7\45\1\313\23\45\2\0\11\45\32\0"+
- "\22\45\1\314\10\45\2\0\11\45\32\0\2\45\1\315"+
- "\30\45\2\0\11\45\32\0\3\45\1\316\27\45\2\0"+
- "\11\45\32\0\2\45\1\317\30\45\2\0\11\45\32\0"+
- "\15\45\1\320\15\45\2\0\11\45\32\0\11\45\1\321"+
- "\21\45\2\0\11\45\32\0\3\45\1\322\27\45\2\0"+
- "\11\45\32\0\3\45\1\323\27\45\2\0\11\45\32\0"+
- "\15\45\1\324\15\45\2\0\11\45\32\0\17\45\1\325"+
- "\13\45\2\0\11\45\32\0\23\45\1\326\7\45\2\0"+
- "\11\45\32\0\7\45\1\327\23\45\2\0\11\45\32\0"+
- "\11\45\1\330\21\45\2\0\11\45\2\0";
+ "\1\42\1\43\1\44\1\45\1\46\1\47\1\46\1\50"+
+ "\1\51\2\46\1\52\1\53\1\54\1\55\2\46\1\56"+
+ "\1\46\1\57\1\60\1\61\1\2\1\62\1\46\1\63"+
+ "\2\46\2\64\1\46\1\2\2\62\105\0\1\65\105\0"+
+ "\1\66\103\0\1\67\1\70\101\0\1\71\4\0\1\72"+
+ "\70\0\1\73\5\0\1\67\77\0\1\74\2\0\1\15"+
+ "\101\0\1\75\1\76\1\77\74\0\1\100\3\0\1\101"+
+ "\110\0\1\102\104\0\1\46\1\103\1\104\3\46\1\105"+
+ "\1\106\15\46\1\107\5\46\2\0\1\46\2\0\10\46"+
+ "\32\0\11\46\1\110\1\111\20\46\2\0\1\46\2\0"+
+ "\10\46\32\0\3\46\1\112\5\46\1\113\1\114\2\46"+
+ "\1\115\1\46\1\116\13\46\2\0\1\46\2\0\10\46"+
+ "\32\0\4\46\1\117\6\46\1\120\17\46\2\0\1\46"+
+ "\2\0\10\46\32\0\11\46\1\121\1\122\20\46\2\0"+
+ "\1\46\2\0\10\46\32\0\13\46\1\123\17\46\2\0"+
+ "\1\46\2\0\10\46\32\0\11\46\1\124\5\46\1\125"+
+ "\13\46\2\0\1\46\2\0\10\46\32\0\17\46\1\126"+
+ "\13\46\2\0\1\46\2\0\10\46\32\0\15\46\1\127"+
+ "\15\46\2\0\1\46\2\0\10\46\32\0\6\46\1\130"+
+ "\1\131\11\46\1\132\1\46\1\133\7\46\2\0\1\46"+
+ "\2\0\10\46\32\0\7\46\1\134\23\46\2\0\1\46"+
+ "\2\0\10\46\32\0\15\46\1\135\15\46\2\0\1\46"+
+ "\2\0\10\46\32\0\33\46\2\0\1\46\2\0\10\46"+
+ "\32\0\7\46\1\136\1\137\7\46\1\140\4\46\1\141"+
+ "\5\46\2\0\1\46\2\0\10\46\32\0\4\46\1\142"+
+ "\2\46\1\143\14\46\1\144\6\46\2\0\1\46\2\0"+
+ "\10\46\32\0\17\46\1\145\13\46\2\0\1\46\2\0"+
+ "\10\46\32\0\1\146\32\46\2\0\1\46\2\0\10\46"+
+ "\32\0\1\147\3\46\1\150\26\46\2\0\1\46\2\0"+
+ "\10\46\32\0\1\151\11\46\1\152\4\46\1\153\13\46"+
+ "\2\0\1\46\2\0\10\46\32\0\7\46\1\154\23\46"+
+ "\2\0\1\46\2\0\10\46\32\0\3\46\1\155\27\46"+
+ "\2\0\1\46\2\0\10\46\2\0\65\61\1\156\1\157"+
+ "\13\61\30\0\1\160\1\161\17\160\1\162\11\160\2\0"+
+ "\1\160\2\0\1\160\1\64\2\160\2\64\34\0\33\160"+
+ "\2\0\1\160\2\0\1\160\1\64\2\160\2\64\4\0"+
+ "\67\67\1\62\10\67\1\62\1\67\12\0\1\163\67\0"+
+ "\6\164\1\165\73\164\12\0\1\166\117\0\2\46\1\167"+
+ "\30\46\2\0\1\46\2\0\10\46\32\0\2\46\1\170"+
+ "\30\46\2\0\1\46\2\0\10\46\32\0\6\46\1\171"+
+ "\23\46\1\172\2\0\1\46\2\0\10\46\32\0\10\46"+
+ "\1\173\22\46\2\0\1\46\2\0\10\46\32\0\3\46"+
+ "\1\174\27\46\2\0\1\46\2\0\10\46\32\0\25\46"+
+ "\1\175\5\46\2\0\1\46\2\0\10\46\32\0\3\46"+
+ "\1\176\27\46\2\0\1\46\2\0\10\46\32\0\11\46"+
+ "\1\177\21\46\2\0\1\46\2\0\10\46\32\0\3\46"+
+ "\1\200\23\46\1\201\3\46\2\0\1\46\2\0\10\46"+
+ "\32\0\20\46\1\202\12\46\2\0\1\46\2\0\10\46"+
+ "\32\0\7\46\1\203\20\46\1\204\2\46\2\0\1\46"+
+ "\2\0\10\46\32\0\20\46\1\205\12\46\2\0\1\46"+
+ "\2\0\10\46\32\0\15\46\1\206\15\46\2\0\1\46"+
+ "\2\0\10\46\32\0\15\46\1\207\15\46\2\0\1\46"+
+ "\2\0\10\46\32\0\6\46\1\210\24\46\2\0\1\46"+
+ "\2\0\10\46\32\0\7\46\1\211\23\46\2\0\1\46"+
+ "\2\0\10\46\32\0\11\46\1\212\21\46\2\0\1\46"+
+ "\2\0\10\46\32\0\3\46\1\213\27\46\2\0\1\46"+
+ "\2\0\10\46\32\0\7\46\1\214\23\46\2\0\1\46"+
+ "\2\0\10\46\32\0\3\46\1\215\3\46\1\216\23\46"+
+ "\2\0\1\46\2\0\10\46\32\0\2\46\1\217\30\46"+
+ "\2\0\1\46\2\0\10\46\32\0\2\46\1\220\30\46"+
+ "\2\0\1\46\2\0\10\46\32\0\12\46\1\221\20\46"+
+ "\2\0\1\46\2\0\10\46\32\0\1\222\2\46\1\223"+
+ "\7\46\1\224\10\46\1\225\6\46\2\0\1\46\2\0"+
+ "\10\46\32\0\11\46\1\226\21\46\2\0\1\46\2\0"+
+ "\10\46\32\0\3\46\1\227\11\46\1\230\15\46\2\0"+
+ "\1\46\2\0\10\46\32\0\2\46\1\231\30\46\2\0"+
+ "\1\46\2\0\10\46\32\0\3\46\1\232\27\46\2\0"+
+ "\1\46\2\0\10\46\32\0\11\46\1\233\21\46\2\0"+
+ "\1\46\2\0\10\46\32\0\24\46\1\234\6\46\2\0"+
+ "\1\46\2\0\10\46\32\0\25\46\1\235\5\46\2\0"+
+ "\1\46\2\0\10\46\32\0\5\46\1\236\3\46\1\237"+
+ "\21\46\2\0\1\46\2\0\10\46\32\0\11\46\1\240"+
+ "\21\46\2\0\1\46\2\0\10\46\32\0\10\46\1\241"+
+ "\22\46\2\0\1\46\2\0\10\46\32\0\4\46\1\242"+
+ "\26\46\2\0\1\46\2\0\10\46\32\0\4\46\1\243"+
+ "\26\46\2\0\1\46\2\0\10\46\32\0\11\46\1\244"+
+ "\3\46\1\245\15\46\2\0\1\46\2\0\10\46\32\0"+
+ "\5\46\1\246\25\46\2\0\1\46\2\0\10\46\32\0"+
+ "\7\46\1\247\23\46\2\0\1\46\2\0\10\46\32\0"+
+ "\4\46\1\250\26\46\2\0\1\46\2\0\10\46\32\0"+
+ "\3\46\1\251\27\46\2\0\1\46\2\0\10\46\32\0"+
+ "\4\46\1\252\26\46\2\0\1\46\2\0\10\46\32\0"+
+ "\33\253\2\0\1\253\2\0\6\253\4\0\67\61\1\0"+
+ "\12\61\30\0\33\160\2\0\1\160\2\0\6\160\34\0"+
+ "\33\160\2\0\1\160\2\0\1\160\2\254\1\160\1\254"+
+ "\1\160\34\0\2\255\3\160\1\255\2\160\2\255\13\160"+
+ "\1\255\5\160\2\0\1\160\2\0\1\160\1\255\1\256"+
+ "\3\255\4\0\6\164\1\257\101\164\1\257\5\164\1\260"+
+ "\65\164\30\0\3\46\1\261\27\46\2\0\1\46\2\0"+
+ "\10\46\32\0\11\46\1\262\21\46\2\0\1\46\2\0"+
+ "\10\46\32\0\1\263\32\46\2\0\1\46\2\0\10\46"+
+ "\32\0\11\46\1\264\21\46\2\0\1\46\2\0\10\46"+
+ "\32\0\17\46\1\265\13\46\2\0\1\46\2\0\10\46"+
+ "\32\0\24\46\1\266\6\46\2\0\1\46\2\0\10\46"+
+ "\32\0\5\46\1\267\25\46\2\0\1\46\2\0\10\46"+
+ "\32\0\11\46\1\270\21\46\2\0\1\46\2\0\10\46"+
+ "\32\0\30\46\1\271\2\46\2\0\1\46\2\0\10\46"+
+ "\32\0\2\46\1\272\30\46\2\0\1\46\2\0\10\46"+
+ "\32\0\11\46\1\273\21\46\2\0\1\46\2\0\10\46"+
+ "\32\0\5\46\1\274\25\46\2\0\1\46\2\0\10\46"+
+ "\32\0\11\46\1\275\21\46\2\0\1\46\2\0\10\46"+
+ "\32\0\11\46\1\276\21\46\2\0\1\46\2\0\10\46"+
+ "\32\0\16\46\1\277\14\46\2\0\1\46\2\0\10\46"+
+ "\32\0\11\46\1\300\21\46\2\0\1\46\2\0\10\46"+
+ "\32\0\20\46\1\301\12\46\2\0\1\46\2\0\10\46"+
+ "\32\0\5\46\1\302\25\46\2\0\1\46\2\0\10\46"+
+ "\32\0\11\46\1\303\21\46\2\0\1\46\2\0\10\46"+
+ "\32\0\1\304\32\46\2\0\1\46\2\0\10\46\32\0"+
+ "\11\46\1\305\21\46\2\0\1\46\2\0\10\46\32\0"+
+ "\7\46\1\306\23\46\2\0\1\46\2\0\10\46\32\0"+
+ "\15\46\1\307\15\46\2\0\1\46\2\0\10\46\32\0"+
+ "\23\46\1\310\7\46\2\0\1\46\2\0\10\46\32\0"+
+ "\3\46\1\311\27\46\2\0\1\46\2\0\10\46\32\0"+
+ "\7\46\1\312\23\46\2\0\1\46\2\0\10\46\32\0"+
+ "\6\46\1\313\24\46\2\0\1\46\2\0\10\46\32\0"+
+ "\11\46\1\314\21\46\2\0\1\46\2\0\10\46\32\0"+
+ "\7\46\1\315\23\46\2\0\1\46\2\0\10\46\32\0"+
+ "\12\46\1\316\20\46\2\0\1\46\2\0\10\46\32\0"+
+ "\3\46\1\317\27\46\2\0\1\46\2\0\10\46\32\0"+
+ "\10\46\1\320\22\46\2\0\1\46\2\0\10\46\32\0"+
+ "\23\46\1\321\7\46\2\0\1\46\2\0\10\46\32\0"+
+ "\3\46\1\322\27\46\2\0\1\46\2\0\10\46\32\0"+
+ "\15\46\1\323\15\46\2\0\1\46\2\0\10\46\32\0"+
+ "\2\256\3\160\1\256\2\160\2\256\13\160\1\256\5\160"+
+ "\2\0\1\160\2\0\1\160\1\256\1\160\3\256\4\0"+
+ "\6\164\1\257\5\164\1\62\65\164\30\0\4\46\1\324"+
+ "\26\46\2\0\1\46\2\0\10\46\32\0\4\46\1\325"+
+ "\26\46\2\0\1\46\2\0\10\46\32\0\22\46\1\326"+
+ "\10\46\2\0\1\46\2\0\10\46\32\0\4\46\1\327"+
+ "\26\46\2\0\1\46\2\0\10\46\32\0\4\46\1\330"+
+ "\26\46\2\0\1\46\2\0\10\46\32\0\2\46\1\331"+
+ "\30\46\2\0\1\46\2\0\10\46\32\0\11\46\1\332"+
+ "\21\46\2\0\1\46\2\0\10\46\32\0\30\46\1\333"+
+ "\2\46\2\0\1\46\2\0\10\46\32\0\1\334\32\46"+
+ "\2\0\1\46\2\0\10\46\32\0\14\46\1\335\16\46"+
+ "\2\0\1\46\2\0\10\46\32\0\17\46\1\336\13\46"+
+ "\2\0\1\46\2\0\10\46\32\0\3\46\1\337\27\46"+
+ "\2\0\1\46\2\0\10\46\32\0\7\46\1\340\23\46"+
+ "\2\0\1\46\2\0\10\46\32\0\12\46\1\341\20\46"+
+ "\2\0\1\46\2\0\10\46\32\0\5\46\1\342\25\46"+
+ "\2\0\1\46\2\0\10\46\32\0\3\46\1\343\27\46"+
+ "\2\0\1\46\2\0\10\46\32\0\6\46\1\344\24\46"+
+ "\2\0\1\46\2\0\10\46\32\0\17\46\1\345\13\46"+
+ "\2\0\1\46\2\0\10\46\32\0\15\46\1\346\15\46"+
+ "\2\0\1\46\2\0\10\46\32\0\6\46\1\347\24\46"+
+ "\2\0\1\46\2\0\10\46\32\0\15\46\1\350\15\46"+
+ "\2\0\1\46\2\0\10\46\32\0\1\351\32\46\2\0"+
+ "\1\46\2\0\10\46\32\0\7\46\1\352\23\46\2\0"+
+ "\1\46\2\0\10\46\32\0\1\353\32\46\2\0\1\46"+
+ "\2\0\10\46\32\0\3\46\1\354\27\46\2\0\1\46"+
+ "\2\0\10\46\32\0\2\46\1\355\30\46\2\0\1\46"+
+ "\2\0\10\46\32\0\11\46\1\356\21\46\2\0\1\46"+
+ "\2\0\10\46\32\0\11\46\1\357\21\46\2\0\1\46"+
+ "\2\0\10\46\32\0\2\46\1\360\30\46\2\0\1\46"+
+ "\2\0\10\46\32\0\15\46\1\361\15\46\2\0\1\46"+
+ "\2\0\10\46\32\0\6\46\1\362\24\46\2\0\1\46"+
+ "\2\0\10\46\32\0\10\46\1\363\22\46\2\0\1\46"+
+ "\2\0\10\46\32\0\2\46\1\364\30\46\2\0\1\46"+
+ "\2\0\10\46\32\0\3\46\1\365\27\46\2\0\1\46"+
+ "\2\0\10\46\32\0\12\46\1\366\20\46\2\0\1\46"+
+ "\2\0\10\46\32\0\4\46\1\367\26\46\2\0\1\46"+
+ "\2\0\10\46\32\0\11\46\1\370\21\46\2\0\1\46"+
+ "\2\0\10\46\32\0\11\46\1\371\21\46\2\0\1\46"+
+ "\2\0\10\46\32\0\3\46\1\372\27\46\2\0\1\46"+
+ "\2\0\10\46\32\0\3\46\1\373\27\46\2\0\1\46"+
+ "\2\0\10\46\32\0\30\46\1\374\2\46\2\0\1\46"+
+ "\2\0\10\46\32\0\5\46\1\375\25\46\2\0\1\46"+
+ "\2\0\10\46\32\0\4\46\1\376\26\46\2\0\1\46"+
+ "\2\0\10\46\32\0\11\46\1\377\21\46\2\0\1\46"+
+ "\2\0\10\46\32\0\7\46\1\u0100\23\46\2\0\1\46"+
+ "\2\0\10\46\32\0\22\46\1\u0101\10\46\2\0\1\46"+
+ "\2\0\10\46\32\0\2\46\1\u0102\30\46\2\0\1\46"+
+ "\2\0\10\46\32\0\3\46\1\u0103\27\46\2\0\1\46"+
+ "\2\0\10\46\32\0\1\u0104\32\46\2\0\1\46\2\0"+
+ "\10\46\32\0\15\46\1\u0105\15\46\2\0\1\46\2\0"+
+ "\10\46\32\0\2\46\1\u0106\30\46\2\0\1\46\2\0"+
+ "\10\46\32\0\15\46\1\u0107\15\46\2\0\1\46\2\0"+
+ "\10\46\32\0\11\46\1\u0108\21\46\2\0\1\46\2\0"+
+ "\10\46\32\0\3\46\1\u0109\27\46\2\0\1\46\2\0"+
+ "\10\46\32\0\11\46\1\u010a\21\46\2\0\1\46\2\0"+
+ "\10\46\32\0\2\46\1\u010b\30\46\2\0\1\46\2\0"+
+ "\10\46\32\0\3\46\1\u010c\27\46\2\0\1\46\2\0"+
+ "\10\46\32\0\15\46\1\u010d\15\46\2\0\1\46\2\0"+
+ "\10\46\32\0\6\46\1\u010e\24\46\2\0\1\46\2\0"+
+ "\10\46\32\0\5\46\1\u010f\25\46\2\0\1\46\2\0"+
+ "\10\46\32\0\17\46\1\u0110\13\46\2\0\1\46\2\0"+
+ "\10\46\32\0\10\46\1\u0111\22\46\2\0\1\46\2\0"+
+ "\10\46\32\0\23\46\1\u0112\7\46\2\0\1\46\2\0"+
+ "\10\46\32\0\6\46\1\u0113\24\46\2\0\1\46\2\0"+
+ "\10\46\32\0\1\u0114\32\46\2\0\1\46\2\0\10\46"+
+ "\32\0\7\46\1\u0115\23\46\2\0\1\46\2\0\10\46"+
+ "\32\0\11\46\1\u0116\21\46\2\0\1\46\2\0\10\46"+
+ "\32\0\22\46\1\u0117\10\46\2\0\1\46\2\0\10\46"+
+ "\32\0\6\46\1\u0118\24\46\2\0\1\46\2\0\10\46"+
+ "\32\0\6\46\1\u0119\24\46\2\0\1\46\2\0\10\46"+
+ "\32\0\22\46\1\u011a\10\46\2\0\1\46\2\0\10\46"+
+ "\2\0";
private static int [] zzUnpackTrans() {
- int [] result = new int[9216];
+ int [] result = new int[12936];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
@@ -423,13 +528,13 @@ private static int zzUnpackTrans(String packed, int offset, int [] result) {
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\1\0\3\11\1\1\3\11\1\1\1\11\2\1\1\11"+
- "\4\1\5\11\1\1\2\11\24\1\1\11\2\1\2\11"+
- "\1\1\1\11\1\1\1\11\1\0\3\11\1\1\3\11"+
- "\44\1\1\0\3\1\1\11\2\0\1\11\54\1\1\0"+
- "\101\1";
+ "\4\1\5\11\1\1\2\11\25\1\2\11\1\1\1\11"+
+ "\2\1\2\11\1\1\1\11\1\1\1\11\1\0\3\11"+
+ "\1\1\3\11\54\1\1\0\3\1\1\11\2\0\1\11"+
+ "\70\1\1\0\153\1";
private static int [] zzUnpackAttribute() {
- int [] result = new int[216];
+ int [] result = new int[282];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
@@ -521,7 +626,7 @@ private final Symbol alloy_string(String txt) throws Err {
i++;
if (i>=txt.length()) throw new ErrorSyntax(p, "String literal cannot end with a single \\");
c = txt.charAt(i);
- if (c=='n') c='\n'; else if (c!='\'' && c!='\"' && c!='\\') throw new ErrorSyntax(p, "String literal currenty only supports\nfour escape sequences: \\\\, \\n, \\\', and \\\"");
+ if (c=='n') c='\n'; else if (c!='\"' && c!='\\') throw new ErrorSyntax(p, "String literal currently only supports\nthree escape sequences: \\\\, \\n, and \\\"");
}
sb.append(c);
}
@@ -599,7 +704,7 @@ public CompLexer(java.io.InputStream in) {
char [] map = new char[0x10000];
int i = 0; /* index in packed string */
int j = 0; /* index in unpacked array */
- while (i < 2264) {
+ while (i < 2270) {
int count = packed.charAt(i++);
char value = packed.charAt(i++);
do map[j++] = value; while (--count > 0);
@@ -922,343 +1027,399 @@ else if (zzAtEOF) {
case 4:
{ return alloy_sym(yytext(), CompSym.AMPERSAND );
}
- case 86: break;
- case 50:
+ case 100: break;
+ case 52:
{ return alloy_sym(yytext(), CompSym.SEQ );
}
- case 87: break;
- case 62:
+ case 101: break;
+ case 65:
{ return alloy_binarynum (yytext());
}
- case 88: break;
- case 38:
+ case 102: break;
+ case 40:
{ return alloy_sym(yytext(), CompSym.IMPLIES );
}
- case 89: break;
+ case 103: break;
case 23:
{ return alloy_sym(yytext(), CompSym.RBRACE );
}
- case 90: break;
- case 82:
+ case 104: break;
+ case 99:
+ { return alloy_sym(yytext(), CompSym.HISTORICALLY);
+ }
+ case 105: break;
+ case 97:
+ { return alloy_sym(yytext(), CompSym.TRIGGERED );
+ }
+ case 106: break;
+ case 60:
+ { return alloy_sym(yytext(), CompSym.VAR );
+ }
+ case 107: break;
+ case 92:
{ return alloy_sym(yytext(), CompSym.EXACTLY );
}
- case 91: break;
+ case 108: break;
case 1:
{ throw new ErrorSyntax(alloy_here(" "), "Syntax error at the "+yytext()+" character. HEX: \\u"+Integer.toString(yytext().charAt(0),16)+")");
}
- case 92: break;
- case 53:
+ case 109: break;
+ case 55:
{ return alloy_sym(yytext(), CompSym.RUN );
}
- case 93: break;
- case 36:
+ case 110: break;
+ case 38:
{ return alloy_sym(yytext(), CompSym.SHL );
}
- case 94: break;
- case 35:
+ case 111: break;
+ case 37:
{ return alloy_sym(yytext(), CompSym.DOMAIN );
}
- case 95: break;
- case 60:
+ case 112: break;
+ case 63:
{ return alloy_sym(yytext(), CompSym.SIGINT );
}
- case 96: break;
+ case 113: break;
case 24:
{ return alloy_sym(yytext(), CompSym.TILDE );
}
- case 97: break;
+ case 114: break;
+ case 96:
+ { return alloy_sym(yytext(), CompSym.RELEASES );
+ }
+ case 115: break;
+ case 82:
+ { return alloy_sym(yytext(), CompSym.TIME );
+ }
+ case 116: break;
case 21:
{ return alloy_sym(yytext(), CompSym.LBRACE );
}
- case 98: break;
+ case 117: break;
case 7:
{ return alloy_sym(yytext(), CompSym.STAR );
}
- case 99: break;
- case 30:
+ case 118: break;
+ case 32:
{ return alloy_sym(yytext(), CompSym.PLUSPLUS );
}
- case 100: break;
- case 58:
+ case 119: break;
+ case 61:
{ return alloy_sym(yytext(), CompSym.FUN );
}
- case 101: break;
- case 81:
+ case 120: break;
+ case 91:
{ return alloy_sym(yytext(), CompSym.STRING );
}
- case 102: break;
- case 55:
+ case 121: break;
+ case 57:
{ return alloy_sym(yytext(), CompSym.EXH );
}
- case 103: break;
- case 56:
+ case 122: break;
+ case 58:
{ return alloy_sym(yytext(), CompSym.INT );
}
- case 104: break;
- case 52:
+ case 123: break;
+ case 54:
{ return alloy_sym(yytext(), CompSym.SIG );
}
- case 105: break;
- case 75:
+ case 124: break;
+ case 79:
{ return alloy_sym(yytext(), CompSym.PRED );
}
- case 106: break;
+ case 125: break;
case 25:
{ return alloy_id (yytext());
}
- case 107: break;
- case 66:
+ case 126: break;
+ case 83:
+ { return alloy_sym(yytext(), CompSym.SINCE );
+ }
+ case 127: break;
+ case 69:
{ return alloy_sym(yytext(), CompSym.LONE );
}
- case 108: break;
- case 41:
+ case 128: break;
+ case 43:
{ return alloy_sym(yytext(), CompSym.NO );
}
- case 109: break;
+ case 129: break;
case 9:
{ return alloy_sym(yytext(), CompSym.COMMA );
}
- case 110: break;
- case 40:
+ case 130: break;
+ case 42:
{ return alloy_sym(yytext(), CompSym.AS );
}
- case 111: break;
- case 65:
+ case 131: break;
+ case 68:
{ return alloy_sym(yytext(), CompSym.THIS );
}
- case 112: break;
+ case 132: break;
case 13:
{ return alloy_sym(yytext(), CompSym.SLASH );
}
- case 113: break;
- case 48:
+ case 133: break;
+ case 81:
+ { return alloy_sym(yytext(), CompSym.AFTER );
+ }
+ case 134: break;
+ case 50:
{ return alloy_sym(yytext(), CompSym.BUT );
}
- case 114: break;
- case 43:
+ case 135: break;
+ case 45:
{ return alloy_string(yytext());
}
- case 115: break;
- case 68:
+ case 136: break;
+ case 71:
{ return alloy_sym(yytext(), CompSym.DISJ );
}
- case 116: break;
- case 32:
+ case 137: break;
+ case 34:
{ return alloy_sym(yytext(), CompSym.SHA );
}
- case 117: break;
- case 39:
+ case 138: break;
+ case 27:
+ { return alloy_sym(yytext(), CompSym.PRIME );
+ }
+ case 139: break;
+ case 41:
{ return alloy_sym(yytext(), CompSym.OR );
}
- case 118: break;
- case 45:
+ case 140: break;
+ case 47:
{ return alloy_sym(yytext(), CompSym.SHR );
}
- case 119: break;
- case 84:
+ case 141: break;
+ case 94:
{ return alloy_sym(yytext(), CompSym.PRIVATE );
}
- case 120: break;
- case 31:
+ case 142: break;
+ case 33:
{ return alloy_sym(yytext(), CompSym.ARROW );
}
- case 121: break;
- case 33:
+ case 143: break;
+ case 35:
{ return alloy_sym(yytext(), CompSym.GTE );
}
- case 122: break;
+ case 144: break;
case 20:
{ return alloy_sym(yytext(), CompSym.CARET );
}
- case 123: break;
- case 46:
+ case 145: break;
+ case 48:
{ return alloy_sym(yytext(), CompSym.IFF );
}
- case 124: break;
- case 69:
+ case 146: break;
+ case 26:
+ { return alloy_sym(yytext(), CompSym.TRCSEQ );
+ }
+ case 147: break;
+ case 72:
{ return alloy_sym(yytext(), CompSym.ELSE );
}
- case 125: break;
+ case 148: break;
case 3:
{ return alloy_sym(yytext(), CompSym.HASH );
}
- case 126: break;
+ case 149: break;
case 12:
{ return alloy_sym(yytext(), CompSym.DOT );
}
- case 127: break;
+ case 150: break;
case 22:
{ return alloy_sym(yytext(), CompSym.BAR );
}
- case 128: break;
- case 79:
+ case 151: break;
+ case 89:
{ return alloy_sym(yytext(), CompSym.EXPECT );
}
- case 129: break;
+ case 152: break;
case 8:
{ return alloy_sym(yytext(), CompSym.PLUS );
}
- case 130: break;
- case 37:
+ case 153: break;
+ case 85:
+ { return alloy_sym(yytext(), CompSym.UNTIL );
+ }
+ case 154: break;
+ case 39:
{ return alloy_sym(yytext(), CompSym.LTE );
}
- case 131: break;
- case 57:
+ case 155: break;
+ case 59:
{ return alloy_sym(yytext(), CompSym.ONE );
}
- case 132: break;
- case 73:
+ case 156: break;
+ case 77:
{ return alloy_sym(yytext(), CompSym.OPEN );
}
- case 133: break;
- case 63:
+ case 157: break;
+ case 87:
+ { return alloy_sym(yytext(), CompSym.ALWAYS );
+ }
+ case 158: break;
+ case 66:
{ return alloy_hexnum (yytext());
}
- case 134: break;
+ case 159: break;
case 11:
{ return alloy_sym(yytext(), CompSym.GT );
}
- case 135: break;
- case 80:
+ case 160: break;
+ case 90:
{ return alloy_sym(yytext(), CompSym.MODULE );
}
- case 136: break;
+ case 161: break;
case 14:
{ return alloy_sym(yytext(), CompSym.COLON );
}
- case 137: break;
- case 51:
+ case 162: break;
+ case 53:
{ return alloy_sym(yytext(), CompSym.SUM );
}
- case 138: break;
- case 74:
+ case 163: break;
+ case 78:
{ return alloy_sym(yytext(), CompSym.PART );
}
- case 139: break;
+ case 164: break;
case 16:
{ return alloy_sym(yytext(), CompSym.EQUALS );
}
- case 140: break;
- case 83:
+ case 165: break;
+ case 93:
{ return alloy_sym(yytext(), CompSym.EXTENDS );
}
- case 141: break;
- case 26:
+ case 166: break;
+ case 28:
{ throw new ErrorSyntax(alloy_here(yytext()),"String literal is missing its closing \" character");
}
- case 142: break;
- case 59:
+ case 167: break;
+ case 62:
{ return alloy_sym(yytext(), CompSym.FOR );
}
- case 143: break;
- case 28:
+ case 168: break;
+ case 30:
{ return alloy_num (yytext());
}
- case 144: break;
- case 72:
+ case 169: break;
+ case 76:
+ { return alloy_sym(yytext(), CompSym.ONCE );
+ }
+ case 170: break;
+ case 75:
{ return alloy_sym(yytext(), CompSym.IDEN );
}
- case 145: break;
+ case 171: break;
case 15:
{ return alloy_sym(yytext(), CompSym.LT );
}
- case 146: break;
+ case 172: break;
case 17:
{ return alloy_sym(yytext(), CompSym.AT );
}
- case 147: break;
- case 34:
+ case 173: break;
+ case 36:
{ return alloy_sym(yytext(), CompSym.RANGE );
}
- case 148: break;
- case 71:
+ case 174: break;
+ case 74:
{ return alloy_sym(yytext(), CompSym.UNIV );
}
- case 149: break;
+ case 175: break;
case 2:
{ return alloy_sym(yytext(), CompSym.NOT );
}
- case 150: break;
- case 49:
+ case 176: break;
+ case 51:
{ return alloy_sym(yytext(), CompSym.SET );
}
- case 151: break;
+ case 177: break;
case 6:
{ return alloy_sym(yytext(), CompSym.RPAREN );
}
- case 152: break;
- case 42:
+ case 178: break;
+ case 88:
+ { return alloy_sym(yytext(), CompSym.BEFORE );
+ }
+ case 179: break;
+ case 98:
+ { return alloy_sym(yytext(), CompSym.EVENTUALLY );
+ }
+ case 180: break;
+ case 44:
{ return alloy_sym(yytext(), CompSym.IN );
}
- case 153: break;
- case 77:
+ case 181: break;
+ case 84:
{ return alloy_sym(yytext(), CompSym.CHECK );
}
- case 154: break;
- case 29:
+ case 182: break;
+ case 31:
{ return alloy_sym(yytext(), CompSym.AND );
}
- case 155: break;
- case 64:
+ case 183: break;
+ case 67:
{ return alloy_sym(yytext(), CompSym.SOME );
}
- case 156: break;
- case 76:
+ case 184: break;
+ case 80:
{ return alloy_sym(yytext(), CompSym.FACT );
}
- case 157: break;
+ case 185: break;
case 10:
{ return alloy_sym(yytext(), CompSym.MINUS );
}
- case 158: break;
+ case 186: break;
case 5:
{ return alloy_sym(yytext(), CompSym.LPAREN );
}
- case 159: break;
- case 67:
+ case 187: break;
+ case 70:
{ return alloy_sym(yytext(), CompSym.NONE );
}
- case 160: break;
+ case 188: break;
case 18:
{ return alloy_sym(yytext(), CompSym.LBRACKET );
}
- case 161: break;
+ case 189: break;
case 19:
{ return alloy_sym(yytext(), CompSym.RBRACKET );
}
- case 162: break;
- case 70:
+ case 190: break;
+ case 73:
{ return alloy_sym(yytext(), CompSym.ENUM );
}
- case 163: break;
- case 47:
+ case 191: break;
+ case 49:
{ return alloy_sym(yytext(), CompSym.ALL );
}
- case 164: break;
- case 85:
+ case 192: break;
+ case 95:
{ return alloy_sym(yytext(), CompSym.ABSTRACT );
}
- case 165: break;
- case 78:
+ case 193: break;
+ case 86:
{ return alloy_sym(yytext(), CompSym.ASSERT );
}
- case 166: break;
- case 61:
+ case 194: break;
+ case 64:
{ throw new ErrorSyntax(alloy_here(yytext()),"String literal cannot be followed by a legal identifier character.");
}
- case 167: break;
- case 54:
+ case 195: break;
+ case 56:
{ return alloy_sym(yytext(), CompSym.LET );
}
- case 168: break;
- case 27:
+ case 196: break;
+ case 29:
{
}
- case 169: break;
- case 44:
+ case 197: break;
+ case 46:
{ throw new ErrorSyntax(alloy_here(yytext()),"Name cannot start with a number.");
}
- case 170: break;
+ case 198: break;
default:
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
zzAtEOF = true;
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/CompModule.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/CompModule.java
index 85c23ae84..7fff7c4e0 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/CompModule.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/CompModule.java
@@ -85,12 +85,33 @@
import edu.mit.csail.sdg.ast.Sig.PrimSig;
import edu.mit.csail.sdg.ast.Sig.SubsetSig;
import edu.mit.csail.sdg.ast.Type;
+import edu.mit.csail.sdg.ast.VisitQuery;
import edu.mit.csail.sdg.ast.VisitQueryOnce;
import edu.mit.csail.sdg.ast.VisitReturn;
/**
* Mutable; this class represents an Alloy module; equals() uses object
* identity.
+ *
+ * @modified [electrum] adapted methods to support commands with trace prefix
+ * length scopes; added the detection of errors and warnings during
+ * signature/field/command resolution; note that up Alloy5 signature
+ * resolution did not throw warnings since those arose only from type
+ * system warnings
+ *
+ * the following warnings are thrown: if a static sig is in a variable
+ * sig (since this makes part of the parent immutable); if a static
+ * sig extends a variable sig (since this makes part of the parent
+ * immutable); if a variable sig extends a static sig (redundant since
+ * it will be immutable anyway); if a static field is declared in a
+ * variable sig (since this makes part of the sig immutable); if a
+ * static field is declared with a variable bounding expression (since
+ * this makes part bounding expression immutable)
+ *
+ * the following errors are thrown: if scopes are assigned to
+ * non-top-level variable sigs; if exact scopes are assigned to
+ * variable sigs; if a module declares a parameter as exact and a
+ * variable argument is passed
*/
public final class CompModule extends Browsable implements Module {
@@ -588,7 +609,7 @@ else if (some)
TempList n = new TempList(d.names.size());
for (ExprHasName v : d.names)
n.add(ExprVar.make(v.pos, v.label, exp.type()));
- Decl dd = new Decl(d.isPrivate, d.disjoint, d.disjoint2, n.makeConst(), exp);
+ Decl dd = new Decl(d.isPrivate, d.disjoint, d.disjoint2, null, n.makeConst(), exp);
for (ExprHasName newname : dd.names)
put(newname.label, newname);
decls.add(dd);
@@ -1483,7 +1504,11 @@ void addEnum(Pos pos, Pos priv, ExprVar name, List atoms, Pos closingBr
}
/** The given Sig will now point to a nonnull Sig. */
- private static Sig resolveSig(CompModule res, Set topo, Sig oldS) throws Err {
+ private static Sig resolveSig(CompModule res, Set topo, Sig oldS, final List warns) throws Err {
+ // When typechecking each sig:
+ // * a static sig should NOT be included in a variable sig [electrum]
+ // * a static sig should NOT extend a variable sig [electrum]
+ // * a variable sig should NOT extend a static sig [electrum]
if (res.new2old.containsKey(oldS))
return oldS;
Sig realSig;
@@ -1499,19 +1524,26 @@ private static Sig resolveSig(CompModule res, Set topo, Sig oldS) throws
Sig parentAST = u.getRawSIG(n.pos, n.label);
if (parentAST == null)
throw new ErrorSyntax(n.pos, "The sig \"" + n.label + "\" cannot be found.");
- parents.add(resolveSig(res, topo, parentAST));
+ parents.add(resolveSig(res, topo, parentAST, warns));
}
realSig = new SubsetSig(fullname, parents, oldS.attributes.toArray(new Attr[0]));
+ for (Sig n : parents)
+ if (n != UNIV && n.isVariable != null && realSig.isVariable == null)
+ warns.add(new ErrorWarning(realSig.isSubset, "Part of " + n.label + " is static.\n" + "Sig " + realSig.label + " is static but " + n.label + " is variable."));
} else {
Sig sup = ((PrimSig) oldS).parent;
Sig parentAST = u.getRawSIG(sup.pos, sup.label);
if (parentAST == null)
throw new ErrorSyntax(sup.pos, "The sig \"" + sup.label + "\" cannot be found.");
- Sig parent = resolveSig(res, topo, parentAST);
+ Sig parent = resolveSig(res, topo, parentAST, warns);
if (!(parent instanceof PrimSig))
throw new ErrorSyntax(sup.pos, "Cannot extend the subset signature \"" + parent + "\".\n" + "A signature can only extend a toplevel signature or a subsignature.");
PrimSig p = (PrimSig) parent;
realSig = new PrimSig(fullname, p, oldS.attributes.toArray(new Attr[0]));
+ if (parent != UNIV && parent.isVariable != null && realSig.isVariable == null)
+ warns.add(new ErrorWarning(realSig.isSubsig, "Part of " + parent.label + " is static.\n" + "Sig " + realSig.label + " is static but " + parent.label + " is variable."));
+ if (parent != UNIV && parent.isVariable == null && realSig.isVariable != null)
+ warns.add(new ErrorWarning(realSig.isSubsig, "Marking sig " + realSig.label + " as var is redundant.\n" + "Sig " + realSig.label + " is variable but " + parent.label + " is static."));
}
res.new2old.put(realSig, oldS);
res.sig2module.put(realSig, u);
@@ -1566,7 +1598,7 @@ void addFunc(Pos p, Pos isPrivate, String n, Expr f, List decls, Expr t, E
else
decls = new ArrayList(decls);
if (f != null)
- decls.add(0, new Decl(null, null, null, Util.asList(ExprVar.make(f.span(), "this")), f));
+ decls.add(0, new Decl(null, null, null, null, Util.asList(ExprVar.make(f.span(), "this")), f));
for (Decl d : decls) {
if (d.isPrivate != null) {
ExprHasName name = d.names.get(0);
@@ -1618,7 +1650,7 @@ private JoinableList resolveFuncDecls(A4Reporter rep, JoinableList err
tmpvars.add(v);
rep.typecheck((f.isPred ? "pred " : "fun ") + fullname + ", Param " + n.label + ": " + v.type() + "\n");
}
- tmpdecls.add(new Decl(d.isPrivate, d.disjoint, d.disjoint2, tmpvars.makeConst(), val));
+ tmpdecls.add(new Decl(d.isPrivate, d.disjoint, d.disjoint2, null, tmpvars.makeConst(), val));
}
Expr ret = null;
if (!f.isPred) {
@@ -1819,8 +1851,7 @@ public Expr getAllReachableFacts() {
// ============================================================================================================================//
/** Add a COMMAND declaration. */
-
- void addCommand(boolean followUp, Pos pos, ExprVar name, boolean check, int overall, int bitwidth, int seq, int exp, List scopes, ExprVar label) throws Err {
+ void addCommand(boolean followUp, Pos pos, ExprVar name, boolean check, int overall, int bitwidth, int seq, int tmn, int tmx, int exp, List scopes, ExprVar label) throws Err {
if (followUp && !Version.experimental)
throw new ErrorSyntax(pos, "Syntax error encountering => symbol.");
if (label != null)
@@ -1832,7 +1863,7 @@ void addCommand(boolean followUp, Pos pos, ExprVar name, boolean check, int over
throw new ErrorSyntax(pos, "Predicate/assertion name cannot contain \'@\'");
String labelName = (label == null || label.label.length() == 0) ? name.label : label.label;
Command parent = followUp ? commands.get(commands.size() - 1) : null;
- Command newcommand = new Command(pos, name, labelName, check, overall, bitwidth, seq, exp, scopes, null, name, parent);
+ Command newcommand = new Command(pos, name, labelName, check, overall, bitwidth, seq, tmn, tmx, exp, scopes, null, name, parent);
if (parent != null)
commands.set(commands.size() - 1, newcommand);
else
@@ -1840,7 +1871,7 @@ void addCommand(boolean followUp, Pos pos, ExprVar name, boolean check, int over
}
/** Add a COMMAND declaration. */
- void addCommand(boolean followUp, Pos pos, Expr e, boolean check, int overall, int bitwidth, int seq, int expects, List scopes, ExprVar label) throws Err {
+ void addCommand(boolean followUp, Pos pos, Expr e, boolean check, int overall, int bitwidth, int seq, int tmn, int tmx, int expects, List scopes, ExprVar label) throws Err {
if (followUp && !Version.experimental)
throw new ErrorSyntax(pos, "Syntax error encountering => symbol.");
@@ -1856,7 +1887,7 @@ void addCommand(boolean followUp, Pos pos, Expr e, boolean check, int overall, i
addFunc(e.span().merge(pos), Pos.UNKNOWN, n = "run$" + (1 + commands.size()), null, new ArrayList(), null, e);
String labelName = (label == null || label.label.length() == 0) ? n : label.label;
Command parent = followUp ? commands.get(commands.size() - 1) : null;
- Command newcommand = new Command(e.span().merge(pos), e, labelName, check, overall, bitwidth, seq, expects, scopes, null, ExprVar.make(null, n), parent);
+ Command newcommand = new Command(e.span().merge(pos), e, labelName, check, overall, bitwidth, seq, tmn, tmx, expects, scopes, null, ExprVar.make(null, n), parent);
if (parent != null)
commands.set(commands.size() - 1, newcommand);
else
@@ -1866,7 +1897,7 @@ void addCommand(boolean followUp, Pos pos, Expr e, boolean check, int overall, i
public void addDefaultCommand() {
if (commands.isEmpty()) {
addFunc(Pos.UNKNOWN, Pos.UNKNOWN, "$$Default", null, new ArrayList(), null, ExprConstant.TRUE);
- commands.add(new Command(Pos.UNKNOWN, ExprConstant.TRUE, "Default", false, 4, 4, 4, 1, null, null, ExprVar.make(null, "$$Default"), null));
+ commands.add(new Command(Pos.UNKNOWN, ExprConstant.TRUE, "Default", false, 4, 4, 4, -1, -1, 1, null, null, ExprVar.make(null, "$$Default"), null));
}
}
@@ -1912,13 +1943,17 @@ private Command resolveCommand(Command cmd, ConstList exactSigs, Expr globa
Sig s = getRawSIG(et.sig.pos, et.sig.label);
if (s == null)
throw new ErrorSyntax(et.sig.pos, "The sig \"" + et.sig.label + "\" cannot be found.");
+ if (!s.isTopLevel() && s.isVariable != null)
+ throw new ErrorSyntax(cmd.pos, "Mutable sig " + et.sig + " is not top-level thus cannot have scopes assigned.");
+ if (et.isExact && s.isVariable != null)
+ throw new ErrorSyntax(cmd.pos, "Sig " + et.sig + " is variable thus scope cannot be exact.");
sc.add(new CommandScope(null, s, et.isExact, et.startingScope, et.endingScope, et.increment));
}
if (cmd.nameExpr != null) {
cmd.nameExpr.setReferenced(declaringClause);
}
- return new Command(cmd.pos, cmd.nameExpr, cmd.label, cmd.check, cmd.overall, cmd.bitwidth, cmd.maxseq, cmd.expects, sc.makeConst(), exactSigs, globalFacts.and(e), parent);
+ return new Command(cmd.pos, cmd.nameExpr, cmd.label, cmd.check, cmd.overall, cmd.bitwidth, cmd.maxseq, cmd.minprefix, cmd.maxprefix, cmd.expects, sc.makeConst(), exactSigs, globalFacts.and(e), parent);
}
@@ -1961,6 +1996,8 @@ private static void resolveFieldDecl(CompModule res, final A4Reporter rep, final
// visible ancestor sig
// * it is allowed to refer to visible sigs
// * it is NOT allowed to refer to any predicate or function
+ // * it should NOT to refer to variable fields/sigs unless it is also variable [electrum]
+ // * it should NOT to be defined in a variable sigs unless it is also variable [electrum]
// For example, if A.als opens B.als, and B/SIGX extends A/SIGY,
// then B/SIGX's fields cannot refer to A/SIGY, nor any fields in
// A/SIGY)
@@ -1990,7 +2027,22 @@ private static void resolveFieldDecl(CompModule res, final A4Reporter rep, final
String[] names = new String[d.names.size()];
for (int i = 0; i < names.length; i++)
names[i] = d.names.get(i).label;
- Field[] fields = s.addTrickyField(d.span(), d.isPrivate, d.disjoint, d.disjoint2, null, names, bound);
+ Field[] fields = s.addTrickyField(d.span(), d.isPrivate, d.disjoint, d.disjoint2, null, d.isVar, names, bound);
+ final VisitQuery q = new VisitQuery() {
+
+ @Override
+ public final Sig visit(Sig x) {
+ if (x.isVariable != null)
+ return x;
+ else
+ return null;
+ }
+ };
+ Sig qr = q.visitThis(bound);
+ if (d.isVar == null && qr != null)
+ warns.add(new ErrorWarning(d.span(), "Static field types with variable bound.\n" + "Field " + d.names.get(0) + " is static but " + qr.label + " is variable."));
+ if (d.isVar == null && s.isVariable != null)
+ warns.add(new ErrorWarning(d.span(), "Static field inside variable sig.\n" + "Field " + d.names.get(0) + " is static but " + s.label + " is variable."));
for (Field f : fields) {
rep.typecheck("Sig " + s + ", Field " + f.label + ": " + f.type() + "\n");
}
@@ -2122,7 +2174,7 @@ static CompModule resolveAll(final A4Reporter rep, final CompModule root) throws
HashSet topo = new HashSet();
for (CompModule m : root.allModules)
for (Sig s : m.sigs.values())
- resolveSig(root, topo, s);
+ resolveSig(root, topo, s, warns); // [electrum] sigs may also throw warnings
// Add the non-defined fields to the sigs in topologically sorted order
// (since fields in subsigs are allowed to refer to parent's fields)
for (Sig oldS : root.new2old.keySet())
@@ -2150,8 +2202,11 @@ static CompModule resolveAll(final A4Reporter rep, final CompModule root) throws
// root module's list of exact sigs
for (String n : x.exactParams) {
Sig sig = x.params.get(n);
- if (sig != null)
+ if (sig != null) {
+ if (sig.isVariable != null)
+ errors = errors.make(new ErrorSyntax(root.opens.get(x.path).pos, "Module " + x.moduleName + " forces parameter to be exact but " + sig + " variable."));
root.exactSigs.add(sig);
+ }
}
}
if (!errors.isEmpty())
diff --git a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/CompParser.java b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/CompParser.java
index 729a17d2f..d36848b87 100644
--- a/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/CompParser.java
+++ b/org.alloytools.alloy.core/src/main/java/edu/mit/csail/sdg/parser/CompParser.java
@@ -1,7 +1,7 @@
//----------------------------------------------------
-// The following code was generated by CUP v0.11a beta 20060608
-// Sun Apr 08 09:54:30 PDT 2018
+// The following code was generated by CUP v0.11a czt01 beta
+// Sun Feb 21 15:30:14 WET 2021
//----------------------------------------------------
package edu.mit.csail.sdg.parser;
@@ -42,8 +42,8 @@
import edu.mit.csail.sdg.ast.Sig;
import edu.mit.csail.sdg.ast.Sig.PrimSig;
-/** CUP v0.11a beta 20060608 generated parser.
- * @version Sun Apr 08 09:54:30 PDT 2018
+/** CUP v0.11a czt01 beta generated parser.
+ * @version Sun Feb 21 15:30:14 WET 2021
*/
public class CompParser extends java_cup.runtime.lr_parser {
@@ -59,7 +59,7 @@ public class CompParser extends java_cup.runtime.lr_parser {
/** Production table. */
protected static final short _production_table[][] =
unpackFromStrings(new String[] {
- "\000\u015e\000\002\106\003\000\002\002\004\000\002\107" +
+ "\000\u018e\000\002\106\003\000\002\002\004\000\002\107" +
"\005\000\002\107\010\000\002\107\006\000\002\107\010" +
"\000\002\107\011\000\002\107\013\000\002\107\011\000" +
"\002\107\010\000\002\107\005\000\002\107\006\000\002" +
@@ -73,30 +73,34 @@ public class CompParser extends java_cup.runtime.lr_parser {
"\002\075\006\000\002\075\004\000\002\075\002\000\002" +
"\112\003\000\002\112\005\000\002\111\004\000\002\111" +
"\004\000\002\111\004\000\002\111\004\000\002\111\004" +
- "\000\002\111\004\000\002\111\004\000\002\110\004\000" +
- "\002\110\007\000\002\110\011\000\002\110\006\000\002" +
- "\110\003\000\002\110\006\000\002\110\010\000\002\110" +
- "\005\000\002\051\011\000\002\051\010\000\002\051\011" +
- "\000\002\051\010\000\002\051\006\000\002\052\003\000" +
- "\002\052\004\000\002\037\013\000\002\037\013\000\002" +
- "\037\010\000\002\037\015\000\002\037\015\000\002\037" +
- "\012\000\002\067\011\000\002\067\011\000\002\067\006" +
- "\000\002\067\013\000\002\067\013\000\002\067\010\000" +
- "\002\123\002\000\002\123\003\000\002\076\011\000\002" +
- "\100\003\000\002\100\003\000\002\100\003\000\002\100" +
- "\003\000\002\100\003\000\002\101\003\000\002\101\004" +
- "\000\002\077\004\000\002\077\004\000\002\077\004\000" +
- "\002\077\002\000\002\102\003\000\002\102\003\000\002" +
- "\102\003\000\002\102\003\000\002\102\005\000\002\102" +
- "\003\000\002\104\002\000\002\104\003\000\002\103\003" +
- "\000\002\103\005\000\002\105\003\000\002\105\005\000" +
- "\002\053\003\000\002\053\005\000\002\053\005\000\002" +
- "\054\003\000\002\054\005\000\002\055\003\000\002\055" +
- "\005\000\002\056\003\000\002\056\004\000\002\056\005" +
- "\000\002\056\006\000\002\014\006\000\002\014\006\000" +
- "\002\014\006\000\002\014\007\000\002\014\006\000\002" +
- "\014\005\000\002\014\007\000\002\014\007\000\002\014" +
- "\007\000\002\014\010\000\002\014\007\000\002\014\006" +
+ "\000\002\111\004\000\002\111\004\000\002\111\004\000" +
+ "\002\110\004\000\002\110\007\000\002\110\006\000\002" +
+ "\110\011\000\002\110\006\000\002\110\003\000\002\110" +
+ "\006\000\002\110\005\000\002\110\010\000\002\110\005" +
+ "\000\002\051\011\000\002\051\010\000\002\051\011\000" +
+ "\002\051\010\000\002\051\006\000\002\052\003\000\002" +
+ "\052\004\000\002\037\013\000\002\037\013\000\002\037" +
+ "\010\000\002\037\015\000\002\037\015\000\002\037\012" +
+ "\000\002\067\011\000\002\067\011\000\002\067\006\000" +
+ "\002\067\013\000\002\067\013\000\002\067\010\000\002" +
+ "\123\002\000\002\123\003\000\002\076\011\000\002\100" +
+ "\003\000\002\100\003\000\002\100\003\000\002\100\003" +
+ "\000\002\100\003\000\002\100\003\000\002\101\003\000" +
+ "\002\101\004\000\002\077\004\000\002\077\004\000\002" +
+ "\077\004\000\002\077\002\000\002\102\003\000\002\102" +
+ "\003\000\002\102\003\000\002\102\003\000\002\102\003" +
+ "\000\002\102\005\000\002\102\003\000\002\104\002\000" +
+ "\002\104\003\000\002\103\003\000\002\103\005\000\002" +
+ "\105\003\000\002\105\005\000\002\053\003\000\002\053" +
+ "\005\000\002\053\005\000\002\054\003\000\002\054\005" +
+ "\000\002\055\003\000\002\055\005\000\002\056\003\000" +
+ "\002\056\004\000\002\056\005\000\002\056\006\000\002" +
+ "\014\006\000\002\014\006\000\002\014\006\000\002\014" +
+ "\007\000\002\014\006\000\002\014\005\000\002\014\007" +
+ "\000\002\014\010\000\002\014\007\000\002\014\006\000" +
+ "\002\014\007\000\002\014\007\000\002\014\007\000\002" +
+ "\014\010\000\002\014\007\000\002\014\006\000\002\014" +
+ "\010\000\002\014\011\000\002\014\010\000\002\014\007" +
"\000\002\015\003\000\002\015\006\000\002\015\006\000" +
"\002\015\006\000\002\015\007\000\002\015\006\000\002" +
"\015\005\000\002\015\007\000\002\015\007\000\002\015" +
@@ -106,1919 +110,2491 @@ public class CompParser extends java_cup.runtime.lr_parser {
"\017\005\000\002\017\004\000\002\050\006\000\002\050" +
"\007\000\002\032\002\000\002\032\003\000\002\031\005" +
"\000\002\031\004\000\002\033\003\000\002\033\004\000" +
- "\002\034\004\000\002\034\003\000\002\035\002\000\002" +
- "\035\003\000\002\036\003\000\002\036\005\000\002\030" +
- "\003\000\002\030\003\000\002\030\003\000\002\005\004" +
- "\000\002\005\005\000\002\005\005\000\002\005\005\000" +
- "\002\005\005\000\002\005\005\000\002\005\005\000\002" +
- "\063\003\000\002\063\005\000\002\064\003\000\002\064" +
- "\005\000\002\025\003\000\002\025\005\000\002\026\003" +
- "\000\002\026\005\000\002\040\003\000\002\040\003\000" +
- "\002\042\003\000\002\042\007\000\002\044\007\000\002" +
- "\044\005\000\002\042\007\000\002\044\005\000\002\041" +
- "\003\000\002\041\003\000\002\043\003\000\002\043\007" +
- "\000\002\045\007\000\002\045\005\000\002\002\003\000" +
- "\002\002\005\000\002\003\003\000\002\003\005\000\002" +
- "\057\003\000\002\057\004\000\002\057\004\000\002\060" +
- "\003\000\002\060\004\000\002\010\005\000\002\010\005" +
- "\000\002\010\005\000\002\010\005\000\002\010\005\000" +
- "\002\010\005\000\002\010\005\000\002\010\005\000\002" +
+ "\002\033\005\000\002\034\004\000\002\034\003\000\002" +
+ "\034\006\000\002\035\002\000\002\035\003\000\002\036" +
+ "\003\000\002\036\005\000\002\030\003\000\002\030\005" +
+ "\000\002\126\003\000\002\126\003\000\002\126\003\000" +
+ "\002\005\004\000\002\005\005\000\002\005\005\000\002" +
+ "\005\005\000\002\005\005\000\002\005\005\000\002\005" +
+ "\005\000\002\063\003\000\002\063\005\000\002\064\003" +
+ "\000\002\064\005\000\002\025\003\000\002\025\005\000" +
+ "\002\026\003\000\002\026\005\000\002\040\003\000\002" +
+ "\040\003\000\002\042\003\000\002\042\007\000\002\044" +
+ "\007\000\002\044\005\000\002\042\007\000\002\044\005" +
+ "\000\002\041\003\000\002\041\003\000\002\043\003\000" +
+ "\002\043\007\000\002\045\007\000\002\045\005\000\002" +
+ "\002\003\000\002\002\005\000\002\003\003\000\002\003" +
+ "\005\000\002\124\003\000\002\124\005\000\002\124\005" +
+ "\000\002\124\005\000\002\124\005\000\002\125\003\000" +
+ "\002\125\005\000\002\125\005\000\002\125\005\000\002" +
+ "\125\005\000\002\057\003\000\002\057\004\000\002\057" +
+ "\004\000\002\057\004\000\002\057\004\000\002\057\004" +
+ "\000\002\057\004\000\002\057\004\000\002\057\004\000" +
+ "\002\057\004\000\002\057\004\000\002\057\004\000\002" +
+ "\057\004\000\002\057\004\000\002\057\004\000\002\060" +
+ "\003\000\002\060\004\000\002\060\004\000\002\060\004" +
+ "\000\002\060\004\000\002\060\004\000\002\060\004\000" +
+ "\002\060\004\000\002\010\005\000\002\010\005\000\002" +
"\010\005\000\002\010\005\000\002\010\005\000\002\010" +
- "\005\000\002\010\004\000\002\010\004\000\002\010\004" +
- "\000\002\010\004\000\002\010\004\000\002\010\004\000" +
- "\002\010\004\000\002\010\003\000\002\011\005\000\002" +
- "\011\005\000\002\011\005\000\002\011\005\000\002\011" +
- "\005\000\002\011\005\000\002\011\005\000\002\011\005" +
+ "\005\000\002\010\005\000\002\010\005\000\002\010\005" +
+ "\000\002\010\005\000\002\010\005\000\002\010\005\000" +
+ "\002\010\004\000\002\010\004\000\002\010\004\000\002" +
+ "\010\004\000\002\010\004\000\002\010\004\000\002\010" +
+ "\004\000\002\010\003\000\002\011\005\000\002\011\005" +
"\000\002\011\005\000\002\011\005\000\002\011\005\000" +
- "\002\011\005\000\002\011\004\000\002\011\004\000\002" +
- "\011\004\000\002\011\004\000\002\011\004\000\002\011" +
- "\004\000\002\011\004\000\002\011\003\000\002\113\003" +
- "\000\002\113\005\000\002\113\005\000\002\113\005\000" +
- "\002\114\003\000\002\114\005\000\002\114\005\000\002" +
- "\114\005\000\002\117\003\000\002\117\005\000\002\117" +
- "\005\000\002\117\005\000\002\117\005\000\002\120\003" +
- "\000\002\120\005\000\002\120\005\000\002\120\005\000" +
- "\002\120\005\000\002\115\003\000\002\115\005\000\002" +
- "\115\005\000\002\115\005\000\002\116\003\000\002\116" +
- "\005\000\002\116\005\000\002\116\005\000\002\061\003" +
- "\000\002\061\004\000\002\061\004\000\002\061\004\000" +
- "\002\061\004\000\002\061\004\000\002\061\004\000\002" +
- "\062\003\000\002\062\004\000\002\062\004\000\002\062" +
- "\004\000\002\065\003\000\002\065\005\000\002\066\003" +
- "\000\002\066\005\000\002\046\003\000\002\046\005\000" +
- "\002\047\003\000\002\047\005\000\002\072\003\000\002" +
- "\072\003\000\002\072\003\000\002\072\003\000\002\072" +
- "\003\000\002\072\003\000\002\072\003\000\002\072\003" +
+ "\002\011\005\000\002\011\005\000\002\011\005\000\002" +
+ "\011\005\000\002\011\005\000\002\011\005\000\002\011" +
+ "\005\000\002\011\004\000\002\011\004\000\002\011\004" +
+ "\000\002\011\004\000\002\011\004\000\002\011\004\000" +
+ "\002\011\004\000\002\011\003\000\002\113\003\000\002" +
+ "\113\005\000\002\113\005\000\002\113\005\000\002\114" +
+ "\003\000\002\114\005\000\002\114\005\000\002\114\005" +
+ "\000\002\117\003\000\002\117\005\000\002\117\005\000" +
+ "\002\117\005\000\002\117\005\000\002\120\003\000\002" +
+ "\120\005\000\002\120\005\000\002\120\005\000\002\120" +
+ "\005\000\002\115\003\000\002\115\005\000\002\115\005" +
+ "\000\002\115\005\000\002\116\003\000\002\116\005\000" +
+ "\002\116\005\000\002\116\005\000\002\061\003\000\002" +
+ "\061\004\000\002\061\004\000\002\061\004\000\002\061" +
+ "\004\000\002\061\004\000\002\061\004\000\002\062\003" +
+ "\000\002\062\004\000\002\062\004\000\002\062\004\000" +
+ "\002\065\003\000\002\065\005\000\002\066\003\000\002" +
+ "\066\005\000\002\046\003\000\002\046\005\000\002\047" +
+ "\003\000\002\047\005\000\002\072\003\000\002\072\003" +
"\000\002\072\003\000\002\072\003\000\002\072\003\000" +
"\002\072\003\000\002\072\003\000\002\072\003\000\002" +
- "\072\003\000\002\072\003\000\002\073\003\000\002\073" +
- "\005\000\002\074\003\000\002\074\005\000\002\021\003" +
- "\000\002\021\005\000\002\022\003\000\002\022\005\000" +
- "\002\070\003\000\002\070\005\000\002\071\003\000\002" +
- "\071\005\000\002\006\003\000\002\007\003\000\002\007" +
- "\006\000\002\007\006\000\002\007\006\000\002\007\006" +
- "\000\002\007\006\000\002\023\003\000\002\023\005\000" +
- "\002\024\003\000\002\024\005\000\002\024\005\000\002" +
- "\024\005\000\002\024\005\000\002\024\005\000\002\121" +
- "\004\000\002\121\004\000\002\121\004\000\002\121\004" +
- "\000\002\121\004\000\002\121\004\000\002\122\003\000" +
- "\002\122\004\000\002\122\004\000\002\122\004\000\002" +
+ "\072\003\000\002\072\003\000\002\072\003\000\002\072" +
+ "\003\000\002\072\003\000\002\072\003\000\002\072\003" +
+ "\000\002\072\003\000\002\073\003\000\002\073\005\000" +
+ "\002\074\003\000\002\074\005\000\002\021\003\000\002" +
+ "\021\005\000\002\022\003\000\002\022\005\000\002\070" +
+ "\003\000\002\070\005\000\002\071\003\000\002\071\005" +
+ "\000\002\006\003\000\002\007\003\000\002\007\006\000" +
+ "\002\007\006\000\002\007\006\000\002\007\006\000\002" +
+ "\007\006\000\002\023\003\000\002\023\005\000\002\024" +
+ "\003\000\002\024\005\000\002\024\005\000\002\024\005" +
+ "\000\002\024\005\000\002\024\005\000\002\121\004\000" +
+ "\002\121\004\000\002\121\004\000\002\121\004\000\002" +
+ "\121\004\000\002\121\004\000\002\122\003\000\002\122" +
+ "\004\000\002\122\004\000\002\122\004\000\002\121\004" +
+ "\000\002\121\004\000\002\122\004\000\002\004\003\000" +
+ "\002\004\003\000\002\004\003\000\002\004\003\000\002" +
"\004\003\000\002\004\003\000\002\004\003\000\002\004" +
- "\003\000\002\004\003\000\002\004\003\000\002\004\003" +
- "\000\002\004\005\000\002\004\003\000\002\004\004\000" +
- "\002\004\003\000\002\004\006\000\002\004\005" });
+ "\005\000\002\004\003\000\002\004\004\000\002\004\003" +
+ "\000\002\004\006\000\002\004\005" });
/** Access to production table. */
+ @Override
public short[][] production_table() {return _production_table;}
/** Parse-action table. */
protected static final short[][] _action_table =
unpackFromStrings(new String[] {
- "\000\u02b4\000\002\001\uffec\000\004\002\u02b6\001\002\000" +
- "\032\002\001\035\026\043\010\050\017\065\016\104\006" +
- "\111\021\125\027\134\012\141\024\147\013\153\030\001" +
- "\uffb7\000\002\001\uffb3\000\002\001\uffef\000\014\100\242" +
- "\142\053\160\046\163\044\165\u02b2\001\002\000\002\001" +
- "\uffee\000\014\057\uffb6\067\uffb6\102\uffb6\126\uffb6\133\uffb6" +
- "\001\uffb0\000\002\001\uffaf\000\012\100\242\142\053\160" +
- "\046\163\044\001\002\000\002\001\ufff0\000\014\100\242" +
- "\142\053\160\046\163\044\165\u02a1\001\002\000\002\001" +
- "\uffeb\000\002\001\ufff1\000\010\142\053\160\046\163\044" +
- "\001\002\000\016\035\026\104\006\125\027\134\u0294\147" +
- "\013\153\030\001\002\000\010\142\053\160\046\163\044" +
- "\001\002\000\002\001\uffea\000\004\075\u0252\001\uffed\000" +
- "\002\001\uffb4\000\002\001\uffb2\000\002\001\uffb1\000\014" +
- "\057\032\067\036\102\033\126\035\133\034\001\002\000" +
- "\010\142\053\160\046\163\044\001\002\000\010\142\053" +
- "\160\046\163\044\001\002\000\020\114\045\142\041\150" +
- "\047\155\040\160\046\162\043\163\044\001\002\000\010" +
- "\142\053\160\046\163\044\001\002\000\020\114\045\142" +
- "\041\150\047\155\040\160\046\162\043\163\044\001\002" +
- "\000\010\051\u020b\101\u020d\105\u020c\001\uffa9\000\002\001" +
- "\uffa7\000\004\151\u0112\001\002\000\004\151\056\001\uff9d" +
- "\000\002\001\uffa8\000\002\001\uff9a\000\002\001\uffa4\000" +
- "\004\151\u011e\001\002\000\002\001\uffa6\000\004\055\051" +
- "\001\002\000\010\142\053\160\046\163\044\001\002\000" +
- "\010\051\060\101\062\105\061\001\002\000\004\151\054" +
- "\001\002\000\004\163\044\001\002\000\004\151\056\001" +
- "\uff9b\000\004\163\057\001\002\000\002\001\uff99\000\116" +
- "\031\120\032\144\033\150\034\151\036\124\037\174\044" +
- "\102\047\210\053\223\072\220\073\116\077\165\100\125" +
- "\102\215\103\204\104\153\105\127\112\152\113\212\114" +
- "\045\115\134\124\113\125\154\142\200\143\177\150\047" +
- "\152\161\153\205\154\162\155\040\156\176\157\121\160" +
- "\171\161\135\162\043\163\044\164\147\165\137\001\002" +
- "\000\022\052\072\053\063\062\065\130\064\134\074\142" +
- "\053\160\046\163\044\001\uff75\000\022\052\072\053\063" +
- "\062\065\130\064\134\074\142\053\160\046\163\044\001" +
- "\uff75\000\010\142\053\160\046\163\044\001\002\000\010" +
- "\142\053\160\046\163\044\001\002\000\010\142\053\160" +
- "\046\163\044\001\002\000\004\052\u01f3\001\uff74\000\002" +
- "\001\uff98\000\010\051\u01bc\052\077\060\u01ef\001\002\000" +
- "\002\001\uff86\000\022\052\072\053\063\062\065\130\064" +
- "\134\074\142\053\160\046\163\044\001\uff75\000\004\137" +
- "\u01ea\001\002\000\012\053\075\142\053\160\046\163\044" +
- "\001\002\000\010\142\053\160\046\163\044\001\002\000" +
- "\010\051\101\052\077\060\100\001\002\000\010\142\053" +
- "\160\046\163\044\001\002\000\116\031\120\032\144\033" +
- "\150\034\151\036\124\037\174\044\102\047\210\053\u01e2" +
- "\072\220\073\116\077\165\100\125\102\215\103\204\104" +
- "\153\105\127\112\152\113\212\114\045\115\134\124\113" +
- "\125\154\142\200\143\177\150\047\152\161\153\205\154" +
- "\162\155\040\156\176\157\121\160\171\161\135\162\043" +
- "\163\044\164\147\165\137\001\002\000\116\031\120\032" +
- "\144\033\150\034\151\036\124\037\174\044\102\047\210" +
- "\053\167\072\220\073\116\077\165\100\125\102\215\103" +
- "\204\104\153\105\127\112\152\113\212\114\045\115\134" +
- "\124\113\125\154\142\200\143\177\150\047\152\161\153" +
- "\205\154\162\155\040\156\176\157\121\160\171\161\135" +
- "\162\043\163\044\164\147\165\137\001\002\000\010\142" +
- "\053\160\046\163\044\001\002\000\002\001\uff53\000\002" +
- "\001\uff55\000\002\001\uff61\000\006\041\u01d7\075\u01d6\001" +
- "\uff47\000\002\001\uff4f\000\044\004\350\005\335\006\351" +
- "\007\343\010\344\011\353\012\346\013\340\014\354\015" +
- "\342\016\337\017\345\020\336\021\347\022\341\023\355" +
- "\054\u01d2\001\ufed3\000\002\001\ufed5\000\002\001\ufefc\000" +
- "\020\053\063\062\065\130\064\134\074\142\053\160\046" +
- "\163\044\001\002\000\002\001\uff00\000\004\132\u01ce\001" +
- "\ufef1\000\002\001\ufeae\000\002\001\ufef8\000\002\001\ufeac" +
- "\000\102\031\120\032\144\033\150\034\151\037\174\044" +
- "\102\047\210\053\223\072\220\073\116\077\165\100\125" +
- "\101\312\102\215\103\204\105\127\112\152\114\045\124" +
- "\113\142\041\150\047\152\161\154\162\155\040\156\176" +
- "\157\121\160\171\161\135\162\043\163\044\164\147\165" +
- "\137\001\002\000\002\001\uff41\000\002\001\uff43\000\062" +
- "\031\120\032\144\033\150\034\151\044\102\047\210\053" +
- "\223\072\220\073\116\077\165\100\125\105\127\114\045" +
- "\142\041\150\047\154\162\155\040\157\121\160\171\161" +
- "\135\162\043\163\044\164\147\165\137\001\002\000\126" +
- "\031\120\032\144\033\150\034\151\036\124\037\174\044" +
- "\102\047\210\053\u01a6\062\u01a2\072\220\073\116\077\165" +
- "\100\125\102\215\103\204\104\153\105\127\112\152\113" +
- "\212\114\045\115\134\124\113\125\154\130\u01a3\134\u01a9" +
- "\136\246\142\200\143\177\150\047\152\161\153\205\154" +
- "\162\155\040\156\176\157\121\160\171\161\135\162\043" +
- "\163\044\164\147\165\137\001\002\000\002\001\uff8e\000" +
- "\116\031\120\032\144\033\150\034\151\036\124\037\174" +
- "\044\102\047\210\053\223\072\220\073\116\077\165\100" +
- "\125\102\215\103\204\104\153\105\127\112\152\113\212" +
- "\114\045\115\134\124\113\125\154\142\200\143\177\150" +
- "\047\152\161\153\205\154\162\155\040\156\176\157\121" +
- "\160\171\161\135\162\043\163\044\164\147\165\137\001" +
- "\002\000\004\135\u019e\001\ufecf\000\002\001\ufed1\000\006" +
- "\055\u019c\101\301\001\ufecb\000\002\001\ufecd\000\116\031" +
- "\120\032\144\033\150\034\151\036\124\037\174\044\102" +
- "\047\210\053\223\072\220\073\116\077\165\100\125\102" +
- "\215\103\204\104\153\105\127\112\152\113\212\114\045" +
- "\115\134\124\113\125\154\142\200\143\177\150\047\152" +
- "\161\153\205\154\162\155\040\156\176\157\121\160\171" +
- "\161\135\162\043\163\044\164\147\165\137\001\002\000" +
- "\066\031\120\032\144\033\150\037\174\044\102\047\210" +
- "\073\116\100\125\102\215\103\204\105\127\112\152\114" +
- "\045\124\113\142\041\150\047\152\161\154\162\155\040" +
- "\156\176\160\171\161\135\162\043\163\044\164\147\165" +
- "\137\001\002\000\002\001\ufea8\000\002\001\ufeaf\000\010" +
- "\144\375\145\373\146\374\001\uff13\000\002\001\uff27\000" +
- "\032\060\u017e\070\u017c\071\u0177\076\u0176\106\u017f\107\u0178" +
- "\116\u0175\117\u017a\120\u0179\121\u0174\122\u017d\123\u017b\001" +
- "\uff3c\000\002\001\uff3f\000\002\001\ufeab\000\004\127\u0170" +
- "\001\uff62\000\002\001\uff63\000\002\001\ufeb0\000\002\001" +
- "\ufeaa\000\004\101\u016d\001\002\000\020\053\063\062\065" +
- "\130\064\134\074\142\053\160\046\163\044\001\002\000" +
- "\062\031\120\032\144\033\150\034\151\044\102\047\210" +
- "\053\223\072\220\073\116\077\165\100\125\105\127\114" +
- "\045\142\041\150\047\154\162\155\040\157\121\160\171" +
- "\161\135\162\043\163\044\164\147\165\137\001\002\000" +
- "\062\031\120\032\144\033\150\034\151\044\102\047\210" +
- "\053\223\072\220\073\116\077\165\100\125\105\127\114" +
- "\045\142\041\150\047\154\162\155\040\157\121\160\171" +
- "\161\135\162\043\163\044\164\147\165\137\001\002\000" +
- "\004\074\u012d\001\uff57\000\002\001\uff59\000\002\001\ufee7" +
- "\000\002\001\ufee9\000\020\053\063\062\065\130\064\134" +
- "\074\142\053\160\046\163\044\001\002\000\066\031\120" +
- "\032\144\033\150\037\174\044\102\047\210\073\116\100" +
- "\125\102\215\103\204\105\127\112\152\114\045\124\113" +
- "\142\041\150\047\152\161\154\162\155\040\156\176\160" +
- "\171\161\135\162\043\163\044\164\147\165\137\001\002" +
- "\000\002\001\ufec0\000\002\001\ufec2\000\102\031\120\032" +
- "\144\033\150\034\151\037\174\044\102\047\210\053\223" +
- "\072\220\073\116\077\165\100\125\101\315\102\215\103" +
- "\204\105\127\112\152\114\045\124\113\142\041\150\047" +
- "\152\161\154\162\155\040\156\176\157\121\160\171\161" +
- "\135\162\043\163\044\164\147\165\137\001\002\000\002" +
- "\001\ufeb4\000\120\031\120\032\144\033\150\034\151\036" +
- "\124\037\174\044\102\047\210\053\223\072\220\073\116" +
- "\077\165\100\125\101\225\102\215\103\204\104\153\105" +
- "\127\112\152\113\212\114\045\115\134\124\113\125\154" +
- "\142\200\143\177\150\047\152\161\153\205\154\162\155" +
- "\040\156\176\157\121\160\171\161\135\162\043\163\044" +
- "\164\147\165\137\001\002\000\010\026\u0120\027\u0122\030" +
- "\u0121\001\uff05\000\004\151\u011e\001\ufead\000\002\001\uff0a" +
- "\000\004\040\u011c\001\ufeeb\000\020\053\063\062\065\130" +
- "\064\134\074\142\053\160\046\163\044\001\002\000\002" +
- "\001\ufeed\000\020\053\063\062\065\130\064\134\074\142" +
- "\053\160\046\163\044\001\002\000\062\031\120\032\144" +
- "\033\150\034\151\044\102\047\210\053\223\072\220\073" +
- "\116\077\165\100\125\105\127\114\045\142\041\150\047" +
- "\154\162\155\040\157\121\160\171\161\135\162\043\163" +
- "\044\164\147\165\137\001\002\000\064\031\120\032\144" +
- "\033\150\034\151\044\102\047\210\053\223\072\220\073" +
- "\116\077\165\100\125\105\127\114\045\142\041\150\047" +
- "\151\u0112\154\162\155\040\157\121\160\171\161\135\162" +
- "\043\163\044\164\147\165\137\001\002\000\002\001\uffa9" +
- "\000\002\001\ufec8\000\002\001\ufec9\000\020\053\063\062" +
- "\065\130\064\134\074\142\053\160\046\163\044\001\002" +
- "\000\062\031\120\032\144\033\150\034\151\044\102\047" +
- "\210\053\223\072\220\073\116\077\165\100\125\105\127" +
- "\114\045\142\041\150\047\154\162\155\040\157\121\160" +
- "\171\161\135\162\043\163\044\164\147\165\137\001\002" +
- "\000\002\001\uff49\000\002\001\uff51\000\066\031\120\032" +
- "\144\033\150\037\174\044\102\047\210\073\116\100\125" +
- "\102\215\103\204\105\127\112\152\114\045\124\113\142" +
- "\041\150\047\152\161\154\162\155\040\156\176\160\171" +
- "\161\135\162\043\163\044\164\147\165\137\001\002\000" +
- "\002\001\ufea6\000\062\031\120\032\144\033\150\034\151" +
- "\044\102\047\210\053\223\072\220\073\116\077\165\100" +
- "\125\105\127\114\045\142\041\150\047\154\162\155\040" +
- "\157\121\160\171\161\135\162\043\163\044\164\147\165" +
- "\137\001\002\000\012\024\257\025\255\110\256\131\254" +
- "\001\uff0e\000\002\001\uff12\000\010\142\053\160\046\163" +
- "\044\001\002\000\002\001\uff48\000\002\001\uff50\000\100" +
- "\031\120\032\144\033\150\034\151\037\174\044\102\047" +
- "\210\053\223\072\220\073\116\077\165\100\125\102\215" +
- "\103\204\105\127\112\152\114\045\124\113\142\041\150" +
- "\047\152\161\154\162\155\040\156\176\157\121\160\171" +
- "\161\135\162\043\163\044\164\147\165\137\001\002\000" +
- "\002\001\ufef0\000\002\001\ufef4\000\004\101\225\001\002" +
- "\000\002\001\ufef7\000\116\031\120\032\144\033\150\034" +
- "\151\036\124\037\174\044\102\047\210\053\223\072\220" +
- "\073\116\077\165\100\125\102\215\103\204\104\153\105" +
- "\127\112\152\113\212\114\045\115\134\124\113\125\154" +
- "\142\200\143\177\150\047\152\161\153\205\154\162\155" +
- "\040\156\176\157\121\160\171\161\135\162\043\163\044" +
- "\164\147\165\137\001\uff67\000\002\001\uff65\000\004\137" +
- "\233\001\002\000\004\052\231\001\uff66\000\116\031\120" +
- "\032\144\033\150\034\151\036\124\037\174\044\102\047" +
- "\210\053\223\072\220\073\116\077\165\100\125\102\215" +
- "\103\204\104\153\105\127\112\152\113\212\114\045\115" +
- "\134\124\113\125\154\142\200\143\177\150\047\152\161" +
- "\153\205\154\162\155\040\156\176\157\121\160\171\161" +
- "\135\162\043\163\044\164\147\165\137\001\002\000\002" +
- "\001\uff64\000\002\001\ufec6\000\004\060\236\001\002\000" +
- "\002\001\uff60\000\116\031\120\032\144\033\150\034\151" +
- "\036\124\037\174\044\102\047\210\053\223\072\220\073" +
- "\116\077\165\100\125\102\215\103\204\104\153\105\127" +
- "\112\152\113\212\114\045\115\134\124\113\125\154\142" +
- "\200\143\177\150\047\152\161\153\205\154\162\155\040" +
- "\156\176\157\121\160\171\161\135\162\043\163\044\164" +
- "\147\165\137\001\002\000\010\045\243\052\240\100\242" +
- "\001\002\000\010\142\053\160\046\163\044\001\002\000" +
- "\002\001\uff71\000\120\031\120\032\144\033\150\034\151" +
- "\036\124\037\174\044\102\047\210\053\223\072\220\073" +
- "\116\077\165\100\125\102\215\103\204\104\153\105\127" +
- "\112\152\113\212\114\045\115\134\124\113\125\154\136" +
- "\246\142\200\143\177\150\047\152\161\153\205\154\162" +
- "\155\040\156\176\157\121\160\171\161\135\162\043\163" +
- "\044\164\147\165\137\001\002\000\116\031\120\032\144" +
- "\033\150\034\151\036\124\037\174\044\102\047\210\053" +
- "\223\072\220\073\116\077\165\100\125\102\215\103\204" +
- "\104\153\105\127\112\152\113\212\114\045\115\134\124" +
- "\113\125\154\142\200\143\177\150\047\152\161\153\205" +
- "\154\162\155\040\156\176\157\121\160\171\161\135\162" +
- "\043\163\044\164\147\165\137\001\002\000\002\001\uff68" +
- "\000\002\001\uff69\000\002\001\uff6c\000\002\001\uff6b\000" +
- "\120\031\120\032\144\033\150\034\151\036\124\037\174" +
- "\044\102\047\210\053\223\072\220\073\116\077\165\100" +
- "\125\102\215\103\204\104\153\105\127\112\152\113\212" +
- "\114\045\115\134\124\113\125\154\136\251\142\200\143" +
- "\177\150\047\152\161\153\205\154\162\155\040\156\176" +
- "\157\121\160\171\161\135\162\043\163\044\164\147\165" +
- "\137\001\002\000\002\001\uff6d\000\002\001\uff6a\000\002" +
- "\001\uff70\000\100\031\120\032\144\033\150\034\151\037" +
- "\174\044\102\047\267\053\223\072\261\073\116\077\262" +
- "\100\125\102\215\103\204\105\127\112\152\114\045\124" +
- "\113\142\041\150\047\152\161\154\264\155\040\156\176" +
- "\157\272\160\171\161\263\162\043\163\044\164\147\165" +
- "\137\001\002\000\100\031\120\032\144\033\150\034\151" +
- "\037\174\044\102\047\267\053\223\072\261\073\116\077" +
- "\262\100\125\102\215\103\204\105\127\112\152\114\045" +
- "\124\113\142\041\150\047\152\161\154\264\155\040\156" +
- "\176\157\272\160\171\161\263\162\043\163\044\164\147" +
- "\165\137\001\002\000\100\031\120\032\144\033\150\034" +
- "\151\037\174\044\102\047\267\053\223\072\261\073\116" +
- "\077\262\100\125\102\215\103\204\105\127\112\152\114" +
- "\045\124\113\142\041\150\047\152\161\154\264\155\040" +
- "\156\176\157\272\160\171\161\263\162\043\163\044\164" +
- "\147\165\137\001\002\000\100\031\120\032\144\033\150" +
- "\034\151\037\174\044\102\047\267\053\223\072\261\073" +
- "\116\077\262\100\125\102\215\103\204\105\127\112\152" +
- "\114\045\124\113\142\041\150\047\152\161\154\264\155" +
- "\040\156\176\157\272\160\171\161\263\162\043\163\044" +
- "\164\147\165\137\001\002\000\004\040\332\001\ufeeb\000" +
- "\062\031\120\032\144\033\150\034\151\044\102\047\267" +
- "\053\223\072\261\073\116\077\262\100\125\105\127\114" +
- "\045\142\041\150\047\154\264\155\040\157\272\160\171" +
- "\161\263\162\043\163\044\164\147\165\137\001\002\000" +
- "\064\031\120\032\144\033\150\034\151\044\102\047\267" +
- "\053\223\072\261\073\116\077\262\100\125\101\315\105" +
- "\127\114\045\142\041\150\047\154\264\155\040\157\272" +
- "\160\171\161\263\162\043\163\044\164\147\165\137\001" +
- "\002\000\050\031\120\032\144\033\150\044\102\047\267" +
- "\073\116\100\125\105\127\114\045\142\041\150\047\154" +
- "\264\155\040\160\171\161\263\162\043\163\044\164\147" +
- "\165\137\001\002\000\050\031\120\032\144\033\150\044" +
- "\102\047\267\073\116\100\125\105\127\114\045\142\041" +
- "\150\047\154\264\155\040\160\171\161\263\162\043\163" +
- "\044\164\147\165\137\001\002\000\044\004\350\005\335" +
- "\006\351\007\343\010\344\011\353\012\346\013\340\014" +
- "\354\015\342\016\337\017\345\020\336\021\347\022\341" +
- "\023\355\054\334\001\ufed3\000\004\132\330\001\ufef1\000" +
- "\050\031\120\032\144\033\150\044\102\047\267\073\116" +
- "\100\125\105\127\114\045\142\041\150\047\154\264\155" +
- "\040\160\171\161\263\162\043\163\044\164\147\165\137" +
- "\001\002\000\010\026\321\027\323\030\322\001\uff02\000" +
- "\006\055\302\101\301\001\ufecb\000\064\031\120\032\144" +
- "\033\150\034\151\044\102\047\267\053\223\072\261\073" +
- "\116\077\262\100\125\101\312\105\127\114\045\142\041" +
- "\150\047\154\264\155\040\157\272\160\171\161\263\162" +
- "\043\163\044\164\147\165\137\001\002\000\004\135\275" +
- "\001\ufecf\000\002\001\uff07\000\060\031\120\032\144\033" +
- "\150\034\151\044\102\047\267\053\223\073\116\077\276" +
- "\100\125\105\127\114\045\142\041\150\047\154\264\155" +
- "\040\157\277\160\171\161\263\162\043\163\044\164\147" +
- "\165\137\001\002\000\004\101\315\001\002\000\004\101" +
- "\312\001\002\000\006\055\302\101\301\001\ufeca\000\116" +
- "\031\120\032\144\033\150\034\151\036\124\037\174\044" +
- "\102\047\210\053\223\072\220\073\116\077\165\100\125" +
- "\102\215\103\204\104\153\105\127\112\152\113\212\114" +
- "\045\115\134\124\113\125\154\142\200\143\177\150\047" +
- "\152\161\153\205\154\162\155\040\156\176\157\121\160" +
- "\171\161\135\162\043\163\044\164\147\165\137\001\uff67" +
- "\000\060\031\120\032\144\033\150\034\303\044\102\047" +
- "\267\053\305\073\116\077\304\100\125\105\127\114\045" +
- "\142\041\150\047\154\264\155\040\157\306\160\171\161" +
- "\263\162\043\163\044\164\147\165\137\001\002\000\002" +
- "\001\ufebd\000\002\001\ufebc\000\002\001\ufebe\000\002\001" +
- "\ufebb\000\002\001\ufebf\000\004\137\311\001\002\000\002" +
- "\001\ufec7\000\116\031\120\032\144\033\150\034\151\036" +
- "\124\037\174\044\102\047\210\053\223\072\220\073\116" +
- "\077\165\100\125\102\215\103\204\104\153\105\127\112" +
- "\152\113\212\114\045\115\134\124\113\125\154\142\200" +
- "\143\177\150\047\152\161\153\205\154\162\155\040\156" +
- "\176\157\121\160\171\161\135\162\043\163\044\164\147" +
- "\165\137\001\uff67\000\004\137\314\001\002\000\002\001" +
- "\ufec3\000\116\031\120\032\144\033\150\034\151\036\124" +
- "\037\174\044\102\047\210\053\223\072\220\073\116\077" +
- "\165\100\125\102\215\103\204\104\153\105\127\112\152" +
- "\113\212\114\045\115\134\124\113\125\154\142\200\143" +
- "\177\150\047\152\161\153\205\154\162\155\040\156\176" +
- "\157\121\160\171\161\135\162\043\163\044\164\147\165" +
- "\137\001\uff67\000\004\137\317\001\002\000\002\001\ufec4" +
- "\000\002\001\ufeef\000\062\031\120\032\144\033\150\034" +
- "\151\044\102\047\267\053\223\072\261\073\116\077\262" +
- "\100\125\105\127\114\045\142\041\150\047\154\264\155" +
- "\040\157\272\160\171\161\263\162\043\163\044\164\147" +
- "\165\137\001\002\000\062\031\120\032\144\033\150\034" +
- "\151\044\102\047\267\053\223\072\261\073\116\077\262" +
- "\100\125\105\127\114\045\142\041\150\047\154\264\155" +
- "\040\157\272\160\171\161\263\162\043\163\044\164\147" +
- "\165\137\001\002\000\062\031\120\032\144\033\150\034" +
- "\151\044\102\047\267\053\223\072\261\073\116\077\262" +
- "\100\125\105\127\114\045\142\041\150\047\154\264\155" +
- "\040\157\272\160\171\161\263\162\043\163\044\164\147" +
- "\165\137\001\002\000\002\001\ufefa\000\002\001\ufef9\000" +
- "\002\001\ufefb\000\002\001\ufeb1\000\060\031\120\032\144" +
- "\033\150\034\151\044\102\047\267\053\223\073\116\077" +
- "\276\100\125\105\127\114\045\142\041\150\047\154\264" +
- "\155\040\157\277\160\171\161\263\162\043\163\044\164" +
- "\147\165\137\001\002\000\004\040\332\001\ufeea\000\060" +
- "\031\120\032\144\033\150\034\151\044\102\047\267\053" +
- "\223\073\116\077\276\100\125\105\127\114\045\142\041" +
- "\150\047\154\264\155\040\157\277\160\171\161\263\162" +
- "\043\163\044\164\147\165\137\001\002\000\002\001\ufee6" +
- "\000\060\031\120\032\144\033\150\034\151\044\102\047" +
- "\267\053\223\073\116\077\276\100\125\105\127\114\045" +
- "\142\041\150\047\154\264\155\040\157\277\160\171\161" +
- "\263\162\043\163\044\164\147\165\137\001\002\000\002" +
- "\001\ufee4\000\002\001\ufed9\000\002\001\ufedb\000\002\001" +
- "\ufede\000\002\001\ufed7\000\002\001\ufedc\000\002\001\ufee2" +
- "\000\002\001\ufee1\000\002\001\ufeda\000\002\001\ufedf\000" +
- "\002\001\ufed8\000\002\001\ufee5\000\002\001\ufee3\000\060" +
- "\031\120\032\144\033\150\034\151\044\102\047\267\053" +
- "\223\073\116\077\276\100\125\105\127\114\045\142\041" +
- "\150\047\154\264\155\040\157\277\160\171\161\263\162" +
- "\043\163\044\164\147\165\137\001\002\000\002\001\ufee0" +
- "\000\002\001\ufedd\000\002\001\ufed6\000\002\001\ufed2\000" +
- "\004\135\275\001\ufece\000\002\001\ufeb2\000\002\001\ufeb3" +
- "\000\002\001\ufeee\000\010\026\321\027\323\030\322\001" +
- "\uff03\000\002\001\uff08\000\010\026\321\027\323\030\322" +
- "\001\uff01\000\002\001\uff06\000\010\026\321\027\323\030" +
- "\322\001\uff04\000\002\001\uff09\000\010\144\375\145\373" +
- "\146\374\001\uff19\000\002\001\uff2d\000\100\031\120\032" +
- "\144\033\150\034\151\037\174\044\102\047\267\053\223" +
- "\072\261\073\116\077\262\100\125\102\215\103\204\105" +
- "\127\112\152\114\045\124\113\142\041\150\047\152\161" +
- "\154\264\155\040\156\176\157\272\160\171\161\263\162" +
- "\043\163\044\164\147\165\137\001\002\000\100\031\120" +
- "\032\144\033\150\034\151\037\174\044\102\047\267\053" +
- "\223\072\261\073\116\077\262\100\125\102\215\103\204" +
- "\105\127\112\152\114\045\124\113\142\041\150\047\152" +
- "\161\154\264\155\040\156\176\157\272\160\171\161\263" +
- "\162\043\163\044\164\147\165\137\001\002\000\100\031" +
- "\120\032\144\033\150\034\151\037\174\044\102\047\267" +
- "\053\223\072\261\073\116\077\262\100\125\102\215\103" +
- "\204\105\127\112\152\114\045\124\113\142\041\150\047" +
- "\152\161\154\264\155\040\156\176\157\272\160\171\161" +
- "\263\162\043\163\044\164\147\165\137\001\002\000\010" +
- "\026\321\027\323\030\322\001\uff05\000\012\024\u0104\025" +
- "\u0102\110\u0103\131\u0101\001\uff0d\000\002\001\uff11\000\062" +
- "\031\120\032\144\033\150\034\151\044\102\047\267\053" +
- "\223\072\261\073\116\077\262\100\125\105\127\114\045" +
- "\142\041\150\047\154\264\155\040\157\272\160\171\161" +
- "\263\162\043\163\044\164\147\165\137\001\002\000\062" +
- "\031\120\032\144\033\150\034\151\044\102\047\267\053" +
- "\223\072\261\073\116\077\262\100\125\105\127\114\045" +
- "\142\041\150\047\154\264\155\040\157\272\160\171\161" +
- "\263\162\043\163\044\164\147\165\137\001\002\000\062" +
- "\031\120\032\144\033\150\034\151\044\102\047\267\053" +
- "\223\072\261\073\116\077\262\100\125\105\127\114\045" +
- "\142\041\150\047\154\264\155\040\157\272\160\171\161" +
- "\263\162\043\163\044\164\147\165\137\001\002\000\062" +
- "\031\120\032\144\033\150\034\151\044\102\047\267\053" +
- "\223\072\261\073\116\077\262\100\125\105\127\114\045" +
- "\142\041\150\047\154\264\155\040\157\272\160\171\161" +
- "\263\162\043\163\044\164\147\165\137\001\002\000\012" +
- "\024\u0104\025\u0102\110\u0103\131\u0101\001\uff0b\000\002\001" +
- "\uff0f\000\012\024\u0104\025\u0102\110\u0103\131\u0101\001\uff0c" +
- "\000\002\001\uff10\000\002\001\ufeb8\000\002\001\ufeb5\000" +
- "\010\144\375\145\373\146\374\001\uff18\000\002\001\uff2c" +
- "\000\002\001\uff76\000\010\045\243\052\u010f\100\242\001" +
- "\002\000\020\053\063\062\065\130\064\134\074\142\053" +
- "\160\046\163\044\001\002\000\002\001\uff5c\000\002\001" +
- "\uff77\000\006\150\u0115\163\044\001\002\000\010\144\375" +
- "\145\373\146\374\001\uff14\000\002\001\uff28\000\002\001" +
- "\uffa5\000\010\144\375\145\373\146\374\001\uff15\000\002" +
- "\001\uff29\000\010\045\243\052\u010f\100\242\001\002\000" +
- "\002\001\uff5a\000\010\045\243\052\u010f\100\242\001\002" +
- "\000\002\001\uff5f\000\076\031\120\032\144\033\150\034" +
- "\151\037\174\044\102\047\267\053\223\073\116\077\276" +
- "\100\125\102\215\103\204\105\127\112\152\114\045\124" +
- "\113\142\041\150\047\152\161\154\264\155\040\156\176" +
- "\157\277\160\171\161\263\162\043\163\044\164\147\165" +
- "\137\001\002\000\002\001\ufee8\000\004\163\044\001\002" +
- "\000\004\151\056\001\uff9c\000\100\031\120\032\144\033" +
- "\150\034\151\037\174\044\102\047\267\053\223\072\261" +
- "\073\116\077\262\100\125\102\215\103\204\105\127\112" +
- "\152\114\045\124\113\142\041\150\047\152\161\154\264" +
- "\155\040\156\176\157\272\160\171\161\263\162\043\163" +
- "\044\164\147\165\137\001\002\000\100\031\120\032\144" +
- "\033\150\034\151\037\174\044\102\047\267\053\223\072" +
- "\261\073\116\077\262\100\125\102\215\103\204\105\127" +
- "\112\152\114\045\124\113\142\041\150\047\152\161\154" +
- "\264\155\040\156\176\157\272\160\171\161\263\162\043" +
- "\163\044\164\147\165\137\001\002\000\100\031\120\032" +
- "\144\033\150\034\151\037\174\044\102\047\267\053\223" +
- "\072\261\073\116\077\262\100\125\102\215\103\204\105" +
- "\127\112\152\114\045\124\113\142\041\150\047\152\161" +
- "\154\264\155\040\156\176\157\272\160\171\161\263\162" +
- "\043\163\044\164\147\165\137\001\002\000\002\001\ufefe" +
- "\000\002\001\ufefd\000\002\001\ufeff\000\002\001\uff88\000" +
- "\002\001\ufef2\000\002\001\ufef5\000\002\001\ufeb9\000\002" +
- "\001\ufeb6\000\010\045\243\052\u010f\100\242\001\002\000" +
- "\002\001\uff5d\000\116\031\120\032\144\033\150\034\151" +
- "\036\u0139\037\174\044\102\047\267\053\223\072\261\073" +
- "\116\077\262\100\125\102\215\103\204\104\u0138\105\127" +
- "\112\152\113\u0137\114\045\115\u0130\124\113\125\u0136\142" +
- "\u012e\143\u013b\150\047\152\161\153\u012f\154\264\155\040" +
- "\156\176\157\272\160\171\161\263\162\043\163\044\164" +
- "\147\165\137\001\002\000\064\031\120\032\144\033\150" +
- "\034\151\044\102\047\267\053\223\072\261\073\116\077" +
- "\262\100\125\105\127\114\045\142\041\150\047\151\u0112" +
- "\154\264\155\040\157\272\160\171\161\263\162\043\163" +
- "\044\164\147\165\137\001\002\000\062\031\120\032\144" +
- "\033\150\034\151\044\102\047\267\053\223\072\261\073" +
- "\116\077\262\100\125\105\127\114\045\142\041\150\047" +
- "\154\264\155\040\157\272\160\171\161\263\162\043\163" +
- "\044\164\147\165\137\001\002\000\100\031\120\032\144" +
- "\033\150\034\151\036\u0139\044\102\047\267\053\223\072" +
- "\261\073\116\077\262\100\125\104\u0138\105\127\113\u0137" +
- "\114\045\115\u0130\125\u0136\142\u012e\143\u013b\150\047\153" +
- "\u012f\154\264\155\040\157\272\160\171\161\263\162\043" +
- "\163\044\164\147\165\137\001\002\000\010\144\u013f\145" +
- "\u013d\146\u013e\001\uff13\000\032\060\u0156\070\u0154\071\u014f" +
- "\076\u014d\106\u0157\107\u0150\116\u014e\117\u0152\120\u0151\121" +
- "\u014c\122\u0155\123\u0153\001\uff3c\000\006\041\u0145\075\u0144" +
- "\001\uff47\000\002\001\uff52\000\012\024\u0104\025\u0102\110" +
- "\u0103\131\u0101\001\uff0e\000\062\031\120\032\144\033\150" +
- "\034\151\044\102\047\267\053\223\072\261\073\116\077" +
- "\262\100\125\105\127\114\045\142\041\150\047\154\264" +
- "\155\040\157\272\160\171\161\263\162\043\163\044\164" +
- "\147\165\137\001\002\000\062\031\120\032\144\033\150" +
- "\034\151\044\102\047\267\053\223\072\261\073\116\077" +
- "\262\100\125\105\127\114\045\142\041\150\047\154\264" +
- "\155\040\157\272\160\171\161\263\162\043\163\044\164" +
- "\147\165\137\001\002\000\062\031\120\032\144\033\150" +
- "\034\151\044\102\047\267\053\223\072\261\073\116\077" +
- "\262\100\125\105\127\114\045\142\041\150\047\154\264" +
- "\155\040\157\272\160\171\161\263\162\043\163\044\164" +
- "\147\165\137\001\002\000\062\031\120\032\144\033\150" +
- "\034\151\044\102\047\267\053\223\072\261\073\116\077" +
- "\262\100\125\105\127\114\045\142\041\150\047\154\264" +
- "\155\040\157\272\160\171\161\263\162\043\163\044\164" +
- "\147\165\137\001\002\000\002\001\uff54\000\062\031\120" +
- "\032\144\033\150\034\151\044\102\047\267\053\223\072" +
- "\261\073\116\077\262\100\125\105\127\114\045\142\041" +
- "\150\047\154\264\155\040\157\272\160\171\161\263\162" +
- "\043\163\044\164\147\165\137\001\002\000\010\144\u013f" +
- "\145\u013d\146\u013e\001\uff15\000\062\031\120\032\144\033" +
- "\150\034\151\044\102\047\267\053\223\072\261\073\116" +
- "\077\262\100\125\105\127\114\045\142\041\150\047\154" +
- "\264\155\040\157\272\160\171\161\263\162\043\163\044" +
- "\164\147\165\137\001\002\000\062\031\120\032\144\033" +
- "\150\034\151\044\102\047\267\053\223\072\261\073\116" +
- "\077\262\100\125\105\127\114\045\142\041\150\047\154" +
- "\264\155\040\157\272\160\171\161\263\162\043\163\044" +
- "\164\147\165\137\001\002\000\062\031\120\032\144\033" +
- "\150\034\151\044\102\047\267\053\223\072\261\073\116" +
- "\077\262\100\125\105\127\114\045\142\041\150\047\154" +
- "\264\155\040\157\272\160\171\161\263\162\043\163\044" +
- "\164\147\165\137\001\002\000\010\144\u013f\145\u013d\146" +
- "\u013e\001\uff1a\000\010\144\u013f\145\u013d\146\u013e\001\uff17" +
- "\000\010\144\u013f\145\u013d\146\u013e\001\uff19\000\010\144" +
- "\u013f\145\u013d\146\u013e\001\uff16\000\100\031\120\032\144" +
- "\033\150\034\151\036\u0139\044\102\047\267\053\223\072" +
- "\261\073\116\077\262\100\125\104\u0138\105\127\113\u0137" +
- "\114\045\115\u0130\125\u0136\142\u012e\143\u013b\150\047\153" +
- "\u012f\154\264\155\040\157\272\160\171\161\263\162\043" +
- "\163\044\164\147\165\137\001\002\000\100\031\120\032" +
- "\144\033\150\034\151\036\u0139\044\102\047\267\053\223" +
- "\072\261\073\116\077\262\100\125\104\u0138\105\127\113" +
- "\u0137\114\045\115\u0130\125\u0136\142\u012e\143\u013b\150\047" +
- "\153\u012f\154\264\155\040\157\272\160\171\161\263\162" +
- "\043\163\044\164\147\165\137\001\002\000\002\001\uff40" +
- "\000\002\001\uff44\000\004\056\u0149\001\uff49\000\100\031" +
- "\120\032\144\033\150\034\151\036\u0139\044\102\047\267" +
- "\053\223\072\261\073\116\077\262\100\125\104\u0138\105" +
- "\127\113\u0137\114\045\115\u0130\125\u0136\142\u012e\143\u013b" +
- "\150\047\153\u012f\154\264\155\040\157\272\160\171\161" +
- "\263\162\043\163\044\164\147\165\137\001\002\000\002" +
- "\001\uff45\000\002\001\uff46\000\062\031\120\032\144\033" +
- "\150\034\151\044\102\047\267\053\223\072\261\073\116" +
- "\077\262\100\125\105\127\114\045\142\041\150\047\154" +
- "\264\155\040\157\272\160\171\161\263\162\043\163\044" +
- "\164\147\165\137\001\002\000\062\031\120\032\144\033" +
- "\150\034\151\044\102\047\267\053\223\072\261\073\116" +
- "\077\262\100\125\105\127\114\045\142\041\150\047\154" +
- "\264\155\040\157\272\160\171\161\263\162\043\163\044" +
- "\164\147\165\137\001\002\000\062\031\120\032\144\033" +
- "\150\034\151\044\102\047\267\053\223\072\261\073\116" +
- "\077\262\100\125\105\127\114\045\142\041\150\047\154" +
- "\264\155\040\157\272\160\171\161\263\162\043\163\044" +
- "\164\147\165\137\001\002\000\062\031\120\032\144\033" +
- "\150\034\151\044\102\047\267\053\223\072\261\073\116" +
- "\077\262\100\125\105\127\114\045\142\041\150\047\154" +
- "\264\155\040\157\272\160\171\161\263\162\043\163\044" +
- "\164\147\165\137\001\002\000\062\031\120\032\144\033" +
- "\150\034\151\044\102\047\267\053\223\072\261\073\116" +
- "\077\262\100\125\105\127\114\045\142\041\150\047\154" +
- "\264\155\040\157\272\160\171\161\263\162\043\163\044" +
- "\164\147\165\137\001\002\000\062\031\120\032\144\033" +
- "\150\034\151\044\102\047\267\053\223\072\261\073\116" +
- "\077\262\100\125\105\127\114\045\142\041\150\047\154" +
- "\264\155\040\157\272\160\171\161\263\162\043\163\044" +
- "\164\147\165\137\001\002\000\062\031\120\032\144\033" +
- "\150\034\151\044\102\047\267\053\223\072\261\073\116" +
- "\077\262\100\125\105\127\114\045\142\041\150\047\154" +
- "\264\155\040\157\272\160\171\161\263\162\043\163\044" +
- "\164\147\165\137\001\002\000\062\031\120\032\144\033" +
- "\150\034\151\044\102\047\267\053\223\072\261\073\116" +
- "\077\262\100\125\105\127\114\045\142\041\150\047\154" +
- "\264\155\040\157\272\160\171\161\263\162\043\163\044" +
- "\164\147\165\137\001\002\000\062\031\120\032\144\033" +
- "\150\034\151\044\102\047\267\053\223\072\261\073\116" +
- "\077\262\100\125\105\127\114\045\142\041\150\047\154" +
- "\264\155\040\157\272\160\171\161\263\162\043\163\044" +
- "\164\147\165\137\001\002\000\062\031\120\032\144\033" +
- "\150\034\151\044\102\047\267\053\223\072\261\073\116" +
- "\077\262\100\125\105\127\114\045\142\041\150\047\154" +
- "\264\155\040\157\272\160\171\161\263\162\043\163\044" +
- "\164\147\165\137\001\002\000\062\031\120\032\144\033" +
- "\150\034\151\044\102\047\267\053\223\072\261\073\116" +
- "\077\262\100\125\105\127\114\045\142\041\150\047\154" +
- "\264\155\040\157\272\160\171\161\263\162\043\163\044" +
- "\164\147\165\137\001\002\000\062\031\120\032\144\033" +
- "\150\034\151\044\102\047\267\053\223\072\261\073\116" +
- "\077\262\100\125\105\127\114\045\142\041\150\047\154" +
- "\264\155\040\157\272\160\171\161\263\162\043\163\044" +
- "\164\147\165\137\001\002\000\010\144\u013f\145\u013d\146" +
- "\u013e\001\uff24\000\010\144\u013f\145\u013d\146\u013e\001\uff25" +
- "\000\010\144\u013f\145\u013d\146\u013e\001\uff1e\000\010\144" +
- "\u013f\145\u013d\146\u013e\001\uff23\000\010\144\u013f\145\u013d" +
- "\146\u013e\001\uff1c\000\010\144\u013f\145\u013d\146\u013e\001" +
- "\uff1d\000\010\144\u013f\145\u013d\146\u013e\001\uff1b\000\010" +
- "\144\u013f\145\u013d\146\u013e\001\uff22\000\010\144\u013f\145" +
- "\u013d\146\u013e\001\uff21\000\010\144\u013f\145\u013d\146\u013e" +
- "\001\uff1f\000\010\144\u013f\145\u013d\146\u013e\001\uff26\000" +
- "\010\144\u013f\145\u013d\146\u013e\001\uff20\000\002\001\uff3b" +
- "\000\010\144\u013f\145\u013d\146\u013e\001\uff18\000\010\144" +
- "\u013f\145\u013d\146\u013e\001\uff14\000\010\144\375\145\373" +
- "\146\374\001\uff16\000\002\001\uff2a\000\010\144\375\145" +
- "\373\146\374\001\uff17\000\002\001\uff2b\000\010\045\243" +
- "\052\u010f\100\242\001\002\000\002\001\uff5e\000\116\031" +
- "\120\032\144\033\150\034\151\036\124\037\174\044\102" +
- "\047\210\053\223\072\220\073\116\077\165\100\125\102" +
- "\215\103\204\104\153\105\127\112\152\113\212\114\045" +
- "\115\134\124\113\125\154\142\200\143\177\150\047\152" +
- "\161\153\205\154\162\155\040\156\176\157\121\160\171" +
- "\161\135\162\043\163\044\164\147\165\137\001\uff67\000" +
- "\004\137\u016f\001\002\000\002\001\ufec5\000\116\031\120" +
- "\032\144\033\150\034\151\036\u0139\037\174\044\102\047" +
- "\267\053\223\072\261\073\116\077\262\100\125\102\215" +
- "\103\204\104\u0138\105\127\112\152\113\u0137\114\045\115" +
- "\u0130\124\113\125\u0136\142\u012e\143\u013b\150\047\152\161" +
- "\153\u012f\154\264\155\040\156\176\157\272\160\171\161" +
- "\263\162\043\163\044\164\147\165\137\001\002\000\004" +
- "\074\u0173\001\uff56\000\002\001\uff58\000\100\031\120\032" +
- "\144\033\150\034\151\036\u0139\044\102\047\267\053\223" +
- "\072\261\073\116\077\262\100\125\104\u0138\105\127\113" +
- "\u0137\114\045\115\u0130\125\u0136\142\u012e\143\u013b\150\047" +
- "\153\u012f\154\264\155\040\157\272\160\171\161\263\162" +
- "\043\163\044\164\147\165\137\001\002\000\062\031\120" +
- "\032\144\033\150\034\151\044\102\047\210\053\223\072" +
- "\220\073\116\077\165\100\125\105\127\114\045\142\041" +
- "\150\047\154\162\155\040\157\121\160\171\161\135\162" +
- "\043\163\044\164\147\165\137\001\002\000\062\031\120" +
- "\032\144\033\150\034\151\044\102\047\210\053\223\072" +
- "\220\073\116\077\165\100\125\105\127\114\045\142\041" +
- "\150\047\154\162\155\040\157\121\160\171\161\135\162" +
- "\043\163\044\164\147\165\137\001\002\000\062\031\120" +
- "\032\144\033\150\034\151\044\102\047\210\053\223\072" +
- "\220\073\116\077\165\100\125\105\127\114\045\142\041" +
- "\150\047\154\162\155\040\157\121\160\171\161\135\162" +
- "\043\163\044\164\147\165\137\001\002\000\062\031\120" +
- "\032\144\033\150\034\151\044\102\047\210\053\223\072" +
- "\220\073\116\077\165\100\125\105\127\114\045\142\041" +
- "\150\047\154\162\155\040\157\121\160\171\161\135\162" +
- "\043\163\044\164\147\165\137\001\002\000\062\031\120" +
- "\032\144\033\150\034\151\044\102\047\210\053\223\072" +
- "\220\073\116\077\165\100\125\105\127\114\045\142\041" +
- "\150\047\154\162\155\040\157\121\160\171\161\135\162" +
- "\043\163\044\164\147\165\137\001\002\000\062\031\120" +
- "\032\144\033\150\034\151\044\102\047\210\053\223\072" +
- "\220\073\116\077\165\100\125\105\127\114\045\142\041" +
- "\150\047\154\162\155\040\157\121\160\171\161\135\162" +
- "\043\163\044\164\147\165\137\001\002\000\062\031\120" +
- "\032\144\033\150\034\151\044\102\047\210\053\223\072" +
- "\220\073\116\077\165\100\125\105\127\114\045\142\041" +
- "\150\047\154\162\155\040\157\121\160\171\161\135\162" +
- "\043\163\044\164\147\165\137\001\002\000\062\031\120" +
- "\032\144\033\150\034\151\044\102\047\210\053\223\072" +
- "\220\073\116\077\165\100\125\105\127\114\045\142\041" +
- "\150\047\154\162\155\040\157\121\160\171\161\135\162" +
- "\043\163\044\164\147\165\137\001\002\000\062\031\120" +
- "\032\144\033\150\034\151\044\102\047\210\053\223\072" +
- "\220\073\116\077\165\100\125\105\127\114\045\142\041" +
- "\150\047\154\162\155\040\157\121\160\171\161\135\162" +
- "\043\163\044\164\147\165\137\001\002\000\062\031\120" +
- "\032\144\033\150\034\151\044\102\047\210\053\223\072" +
- "\220\073\116\077\165\100\125\105\127\114\045\142\041" +
- "\150\047\154\162\155\040\157\121\160\171\161\135\162" +
- "\043\163\044\164\147\165\137\001\002\000\062\031\120" +
- "\032\144\033\150\034\151\044\102\047\210\053\223\072" +
- "\220\073\116\077\165\100\125\105\127\114\045\142\041" +
- "\150\047\154\162\155\040\157\121\160\171\161\135\162" +
- "\043\163\044\164\147\165\137\001\002\000\062\031\120" +
- "\032\144\033\150\034\151\044\102\047\210\053\223\072" +
- "\220\073\116\077\165\100\125\105\127\114\045\142\041" +
- "\150\047\154\162\155\040\157\121\160\171\161\135\162" +
- "\043\163\044\164\147\165\137\001\002\000\010\144\375" +
- "\145\373\146\374\001\uff24\000\002\001\uff38\000\010\144" +
- "\375\145\373\146\374\001\uff25\000\002\001\uff39\000\010" +
- "\144\375\145\373\146\374\001\uff1e\000\002\001\uff32\000" +
- "\010\144\375\145\373\146\374\001\uff23\000\002\001\uff37" +
- "\000\010\144\375\145\373\146\374\001\uff1c\000\002\001" +
- "\uff30\000\010\144\375\145\373\146\374\001\uff1d\000\002" +
- "\001\uff31\000\010\144\375\145\373\146\374\001\uff1b\000" +
- "\002\001\uff2f\000\010\144\375\145\373\146\374\001\uff22" +
- "\000\002\001\uff36\000\010\144\375\145\373\146\374\001" +
- "\uff21\000\002\001\uff35\000\010\144\375\145\373\146\374" +
- "\001\uff26\000\002\001\uff3a\000\010\144\375\145\373\146" +
- "\374\001\uff1f\000\002\001\uff33\000\010\144\375\145\373" +
- "\146\374\001\uff20\000\002\001\uff34\000\002\001\ufeba\000" +
- "\002\001\ufeb7\000\002\001\uff3e\000\002\001\uff3d\000\076" +
- "\031\120\032\144\033\150\034\303\037\174\044\102\047" +
- "\267\053\305\073\116\077\304\100\125\102\215\103\204" +
- "\105\127\112\152\114\045\124\113\142\041\150\047\152" +
- "\161\154\264\155\040\156\176\157\306\160\171\161\263" +
- "\162\043\163\044\164\147\165\137\001\002\000\002\001" +
- "\ufec1\000\076\031\120\032\144\033\150\034\151\037\174" +
- "\044\102\047\267\053\223\073\116\077\276\100\125\102" +
- "\215\103\204\105\127\112\152\114\045\124\113\142\041" +
- "\150\047\152\161\154\264\155\040\156\176\157\277\160" +
- "\171\161\263\162\043\163\044\164\147\165\137\001\002" +
- "\000\002\001\ufecc\000\004\140\u01a1\001\002\000\002\001" +
- "\ufea9\000\010\142\053\160\046\163\044\001\002\000\010" +
- "\142\053\160\046\163\044\001\002\000\006\051\u01bc\052" +
- "\077\001\002\000\012\045\243\052\u01b6\100\242\136\u01b8" +
- "\001\002\000\012\101\225\142\053\160\046\163\044\001" +
- "\002\000\002\001\uff78\000\006\051\uff98\052\uff98\001\uffa9" +
- "\000\012\053\u01aa\142\053\160\046\163\044\001\002\000" +
- "\010\142\053\160\046\163\044\001\002\000\006\051\101" +
- "\052\077\001\002\000\006\051\u01ad\052\077\001\002\000" +
- "\116\031\120\032\144\033\150\034\151\036\124\037\174" +
- "\044\102\047\210\053\u01af\072\220\073\116\077\165\100" +
- "\125\102\215\103\204\104\153\105\127\112\152\113\212" +
- "\114\045\115\134\124\113\125\154\142\200\143\177\150" +
- "\047\152\161\153\205\154\162\155\040\156\176\157\121" +
- "\160\171\161\135\162\043\163\044\164\147\165\137\001" +
- "\002\000\002\001\uff8f\000\120\031\120\032\144\033\150" +
- "\034\151\036\124\037\174\044\102\047\210\053\223\072" +
- "\220\073\116\077\165\100\125\101\225\102\215\103\204" +
- "\104\153\105\127\112\152\113\212\114\045\115\134\124" +
- "\113\125\154\142\200\143\177\150\047\152\161\153\205" +
- "\154\162\155\040\156\176\157\121\160\171\161\135\162" +
- "\043\163\044\164\147\165\137\001\002\000\002\001\uff89" +
- "\000\006\051\u01b2\052\077\001\002\000\116\031\120\032" +
- "\144\033\150\034\151\036\124\037\174\044\102\047\210" +
- "\053\u01b4\072\220\073\116\077\165\100\125\102\215\103" +
- "\204\104\153\105\127\112\152\113\212\114\045\115\134" +
- "\124\113\125\154\142\200\143\177\150\047\152\161\153" +
- "\205\154\162\155\040\156\176\157\121\160\171\161\135" +
- "\162\043\163\044\164\147\165\137\001\002\000\002\001" +
- "\uff90\000\120\031\120\032\144\033\150\034\151\036\124" +
- "\037\174\044\102\047\210\053\223\072\220\073\116\077" +
- "\165\100\125\101\225\102\215\103\204\104\153\105\127" +
- "\112\152\113\212\114\045\115\134\124\113\125\154\142" +
- "\200\143\177\150\047\152\161\153\205\154\162\155\040" +
- "\156\176\157\121\160\171\161\135\162\043\163\044\164" +
- "\147\165\137\001\002\000\002\001\uff8a\000\020\053\u01ba" +
- "\062\u01a2\130\u01a3\134\u01a9\142\053\160\046\163\044\001" +
- "\002\000\004\136\u01b9\001\002\000\002\001\ufea4\000\002" +
- "\001\ufea5\000\010\142\053\160\046\163\044\001\002\000" +
- "\002\001\uff79\000\116\031\120\032\144\033\150\034\151" +
- "\036\124\037\174\044\102\047\210\053\u01be\072\220\073" +
- "\116\077\165\100\125\102\215\103\204\104\153\105\127" +
- "\112\152\113\212\114\045\115\134\124\113\125\154\142" +
- "\200\143\177\150\047\152\161\153\205\154\162\155\040" +
- "\156\176\157\121\160\171\161\135\162\043\163\044\164" +
- "\147\165\137\001\002\000\002\001\uff8d\000\120\031\120" +
- "\032\144\033\150\034\151\036\124\037\174\044\102\047" +
- "\210\053\223\072\220\073\116\077\165\100\125\101\225" +
- "\102\215\103\204\104\153\105\127\112\152\113\212\114" +
- "\045\115\134\124\113\125\154\142\200\143\177\150\047" +
- "\152\161\153\205\154\162\155\040\156\176\157\121\160" +
- "\171\161\135\162\043\163\044\164\147\165\137\001\002" +
- "\000\002\001\uff87\000\006\051\u01c1\052\077\001\002\000" +
- "\116\031\120\032\144\033\150\034\151\036\124\037\174" +
- "\044\102\047\210\053\u01c3\072\220\073\116\077\165\100" +
- "\125\102\215\103\204\104\153\105\127\112\152\113\212" +
- "\114\045\115\134\124\113\125\154\142\200\143\177\150" +
- "\047\152\161\153\205\154\162\155\040\156\176\157\121" +
- "\160\171\161\135\162\043\163\044\164\147\165\137\001" +
- "\002\000\002\001\uff92\000\120\031\120\032\144\033\150" +
- "\034\151\036\124\037\174\044\102\047\210\053\223\072" +
- "\220\073\116\077\165\100\125\101\225\102\215\103\204" +
- "\104\153\105\127\112\152\113\212\114\045\115\134\124" +
- "\113\125\154\142\200\143\177\150\047\152\161\153\205" +
- "\154\162\155\040\156\176\157\121\160\171\161\135\162" +
- "\043\163\044\164\147\165\137\001\002\000\002\001\uff8c" +
- "\000\006\051\u01c6\052\077\001\002\000\116\031\120\032" +
- "\144\033\150\034\151\036\124\037\174\044\102\047\210" +
- "\053\u01c8\072\220\073\116\077\165\100\125\102\215\103" +
- "\204\104\153\105\127\112\152\113\212\114\045\115\134" +
- "\124\113\125\154\142\200\143\177\150\047\152\161\153" +
- "\205\154\162\155\040\156\176\157\121\160\171\161\135" +
- "\162\043\163\044\164\147\165\137\001\002\000\002\001" +
- "\uff91\000\120\031\120\032\144\033\150\034\151\036\124" +
- "\037\174\044\102\047\210\053\223\072\220\073\116\077" +
- "\165\100\125\101\225\102\215\103\204\104\153\105\127" +
- "\112\152\113\212\114\045\115\134\124\113\125\154\142" +
- "\200\143\177\150\047\152\161\153\205\154\162\155\040" +
- "\156\176\157\121\160\171\161\135\162\043\163\044\164" +
- "\147\165\137\001\002\000\002\001\uff8b\000\010\144\375" +
- "\145\373\146\374\001\uff1a\000\002\001\uff2e\000\002\001" +
- "\ufef3\000\002\001\ufef6\000\076\031\120\032\144\033\150" +
- "\034\151\037\174\044\102\047\267\053\223\073\116\077" +
- "\276\100\125\102\215\103\204\105\127\112\152\114\045" +
- "\124\113\142\041\150\047\152\161\154\264\155\040\156" +
- "\176\157\277\160\171\161\263\162\043\163\044\164\147" +
- "\165\137\001\002\000\002\001\ufeec\000\010\045\243\052" +
- "\u010f\100\242\001\002\000\002\001\uff5b\000\076\031\120" +
- "\032\144\033\150\034\151\037\174\044\102\047\267\053" +
- "\223\073\116\077\276\100\125\102\215\103\204\105\127" +
- "\112\152\114\045\124\113\142\041\150\047\152\161\154" +
- "\264\155\040\156\176\157\277\160\171\161\263\162\043" +
- "\163\044\164\147\165\137\001\002\000\076\031\120\032" +
- "\144\033\150\034\151\037\174\044\102\047\267\053\223" +
- "\073\116\077\276\100\125\102\215\103\204\105\127\112" +
- "\152\114\045\124\113\142\041\150\047\152\161\154\264" +
- "\155\040\156\176\157\277\160\171\161\263\162\043\163" +
- "\044\164\147\165\137\001\002\000\002\001\ufed4\000\002" +
- "\001\ufed0\000\116\031\120\032\144\033\150\034\151\036" +
- "\124\037\174\044\102\047\210\053\223\072\220\073\116" +
- "\077\165\100\125\102\215\103\204\104\153\105\127\112" +
- "\152\113\212\114\045\115\134\124\113\125\154\142\200" +
- "\143\177\150\047\152\161\153\205\154\162\155\040\156" +
- "\176\157\121\160\171\161\135\162\043\163\044\164\147" +
- "\165\137\001\002\000\116\031\120\032\144\033\150\034" +
- "\151\036\u0139\037\174\044\102\047\267\053\223\072\261" +
- "\073\116\077\262\100\125\102\215\103\204\104\u0138\105" +
- "\127\112\152\113\u0137\114\045\115\u0130\124\113\125\u0136" +
- "\142\u012e\143\u013b\150\047\152\161\153\u012f\154\264\155" +
- "\040\156\176\157\272\160\171\161\263\162\043\163\044" +
- "\164\147\165\137\001\002\000\002\001\uff42\000\002\001" +
- "\uff4c\000\002\001\uff4a\000\004\056\u01dc\001\uff49\000\116" +
- "\031\120\032\144\033\150\034\151\036\124\037\174\044" +
- "\102\047\210\053\223\072\220\073\116\077\165\100\125" +
- "\102\215\103\204\104\153\105\127\112\152\113\212\114" +
- "\045\115\134\124\113\125\154\142\200\143\177\150\047" +
- "\152\161\153\205\154\162\155\040\156\176\157\121\160" +
- "\171\161\135\162\043\163\044\164\147\165\137\001\002" +
- "\000\002\001\uff4b\000\002\001\uff4e\000\002\001\uff4d\000" +
- "\002\001\ufea7\000\002\001\uff81\000\120\031\120\032\144" +
- "\033\150\034\151\036\124\037\174\044\102\047\210\053" +
- "\223\072\220\073\116\077\165\100\125\101\225\102\215" +
- "\103\204\104\153\105\127\112\152\113\212\114\045\115" +
- "\134\124\113\125\154\142\200\143\177\150\047\152\161" +
- "\153\205\154\162\155\040\156\176\157\121\160\171\161" +
- "\135\162\043\163\044\164\147\165\137\001\002\000\002" +
- "\001\uff7b\000\002\001\uff97\000\010\051\u01ad\052\077\060" +
- "\u01e6\001\002\000\116\031\120\032\144\033\150\034\151" +
- "\036\124\037\174\044\102\047\210\053\u01e8\072\220\073" +
- "\116\077\165\100\125\102\215\103\204\104\153\105\127" +
- "\112\152\113\212\114\045\115\134\124\113\125\154\142" +
- "\200\143\177\150\047\152\161\153\205\154\162\155\040" +
- "\156\176\157\121\160\171\161\135\162\043\163\044\164" +
- "\147\165\137\001\002\000\002\001\uff82\000\120\031\120" +
- "\032\144\033\150\034\151\036\124\037\174\044\102\047" +
- "\210\053\223\072\220\073\116\077\165\100\125\101\225" +
- "\102\215\103\204\104\153\105\127\112\152\113\212\114" +
- "\045\115\134\124\113\125\154\142\200\143\177\150\047" +
- "\152\161\153\205\154\162\155\040\156\176\157\121\160" +
- "\171\161\135\162\043\163\044\164\147\165\137\001\002" +
- "\000\002\001\uff7c\000\004\051\u01eb\001\002\000\116\031" +
- "\120\032\144\033\150\034\151\036\124\037\174\044\102" +
- "\047\210\053\223\072\220\073\116\077\165\100\125\102" +
- "\215\103\204\104\153\105\127\112\152\113\212\114\045" +
- "\115\134\124\113\125\154\142\200\143\177\150\047\152" +
- "\161\153\205\154\162\155\040\156\176\157\121\160\171" +
- "\161\135\162\043\163\044\164\147\165\137\001\002\000" +
- "\004\100\242\001\002\000\002\001\uffbf\000\002\001\uff72" +
- "\000\116\031\120\032\144\033\150\034\151\036\124\037" +
- "\174\044\102\047\210\053\u01f1\072\220\073\116\077\165" +
- "\100\125\102\215\103\204\104\153\105\127\112\152\113" +
- "\212\114\045\115\134\124\113\125\154\142\200\143\177" +
- "\150\047\152\161\153\205\154\162\155\040\156\176\157" +
- "\121\160\171\161\135\162\043\163\044\164\147\165\137" +
- "\001\002\000\002\001\uff80\000\120\031\120\032\144\033" +
- "\150\034\151\036\124\037\174\044\102\047\210\053\223" +
- "\072\220\073\116\077\165\100\125\101\225\102\215\103" +
- "\204\104\153\105\127\112\152\113\212\114\045\115\134" +
- "\124\113\125\154\142\200\143\177\150\047\152\161\153" +
- "\205\154\162\155\040\156\176\157\121\160\171\161\135" +
- "\162\043\163\044\164\147\165\137\001\002\000\002\001" +
- "\uff7a\000\022\052\072\053\063\062\065\130\064\134\074" +
- "\142\053\160\046\163\044\001\uff75\000\002\001\uff73\000" +
- "\010\051\u01c6\052\077\060\u01f6\001\002\000\116\031\120" +
- "\032\144\033\150\034\151\036\124\037\174\044\102\047" +
- "\210\053\u01f8\072\220\073\116\077\165\100\125\102\215" +
- "\103\204\104\153\105\127\112\152\113\212\114\045\115" +
- "\134\124\113\125\154\142\200\143\177\150\047\152\161" +
- "\153\205\154\162\155\040\156\176\157\121\160\171\161" +
- "\135\162\043\163\044\164\147\165\137\001\002\000\002" +
- "\001\uff84\000\120\031\120\032\144\033\150\034\151\036" +
- "\124\037\174\044\102\047\210\053\223\072\220\073\116" +
- "\077\165\100\125\101\225\102\215\103\204\104\153\105" +
- "\127\112\152\113\212\114\045\115\134\124\113\125\154" +
- "\142\200\143\177\150\047\152\161\153\205\154\162\155" +
- "\040\156\176\157\121\160\171\161\135\162\043\163\044" +
- "\164\147\165\137\001\002\000\002\001\uff7e\000\010\051" +
- "\u01c1\052\077\060\u01fb\001\002\000\116\031\120\032\144" +
- "\033\150\034\151\036\124\037\174\044\102\047\210\053" +
- "\u01fd\072\220\073\116\077\165\100\125\102\215\103\204" +
- "\104\153\105\127\112\152\113\212\114\045\115\134\124" +
- "\113\125\154\142\200\143\177\150\047\152\161\153\205" +
- "\154\162\155\040\156\176\157\121\160\171\161\135\162" +
- "\043\163\044\164\147\165\137\001\002\000\002\001\uff85" +
- "\000\120\031\120\032\144\033\150\034\151\036\124\037" +
- "\174\044\102\047\210\053\223\072\220\073\116\077\165" +
- "\100\125\101\225\102\215\103\204\104\153\105\127\112" +
- "\152\113\212\114\045\115\134\124\113\125\154\142\200" +
- "\143\177\150\047\152\161\153\205\154\162\155\040\156" +
- "\176\157\121\160\171\161\135\162\043\163\044\164\147" +
- "\165\137\001\002\000\002\001\uff7f\000\010\051\u01b2\052" +
- "\077\060\u0200\001\002\000\116\031\120\032\144\033\150" +
- "\034\151\036\124\037\174\044\102\047\210\053\u0202\072" +
- "\220\073\116\077\165\100\125\102\215\103\204\104\153" +
- "\105\127\112\152\113\212\114\045\115\134\124\113\125" +
- "\154\142\200\143\177\150\047\152\161\153\205\154\162" +
- "\155\040\156\176\157\121\160\171\161\135\162\043\163" +
- "\044\164\147\165\137\001\002\000\002\001\uff83\000\120" +
- "\031\120\032\144\033\150\034\151\036\124\037\174\044" +
- "\102\047\210\053\223\072\220\073\116\077\165\100\125" +
- "\101\225\102\215\103\204\104\153\105\127\112\152\113" +
- "\212\114\045\115\134\124\113\125\154\142\200\143\177" +
- "\150\047\152\161\153\205\154\162\155\040\156\176\157" +
- "\121\160\171\161\135\162\043\163\044\164\147\165\137" +
- "\001\002\000\002\001\uff7d\000\004\140\u0205\001\002\000" +
- "\004\051\u0206\001\002\000\116\031\120\032\144\033\150" +
- "\034\151\036\124\037\174\044\102\047\210\053\223\072" +
- "\220\073\116\077\165\100\125\102\215\103\204\104\153" +
- "\105\127\112\152\113\212\114\045\115\134\124\113\125" +
- "\154\142\200\143\177\150\047\152\161\153\205\154\162" +
- "\155\040\156\176\157\121\160\171\161\135\162\043\163" +
- "\044\164\147\165\137\001\002\000\004\100\242\001\002" +
- "\000\002\001\uffc0\000\004\100\242\001\002\000\002\001" +
- "\uffbe\000\116\031\120\032\144\033\150\034\151\036\124" +
- "\037\174\044\102\047\210\053\223\072\220\073\116\077" +
- "\165\100\125\102\215\103\204\104\153\105\127\112\152" +
- "\113\212\114\045\115\134\124\113\125\154\142\200\143" +
- "\177\150\047\152\161\153\205\154\162\155\040\156\176" +
- "\157\121\160\171\161\135\162\043\163\044\164\147\165" +
- "\137\001\002\000\022\052\072\053\063\062\065\130\064" +
- "\134\074\142\053\160\046\163\044\001\uff75\000\022\052" +
- "\072\053\063\062\065\130\064\134\074\142\053\160\046" +
- "\163\044\001\uff75\000\004\137\u020f\001\002\000\004\051" +
- "\u0210\001\002\000\116\031\120\032\144\033\150\034\151" +
- "\036\124\037\174\044\102\047\210\053\223\072\220\073" +
- "\116\077\165\100\125\102\215\103\204\104\153\105\127" +
- "\112\152\113\212\114\045\115\134\124\113\125\154\142" +
- "\200\143\177\150\047\152\161\153\205\154\162\155\040" +
- "\156\176\157\121\160\171\161\135\162\043\163\044\164" +
- "\147\165\137\001\002\000\004\100\242\001\002\000\002" +
- "\001\uffc2\000\004\140\u0214\001\002\000\004\051\u0215\001" +
- "\002\000\116\031\120\032\144\033\150\034\151\036\124" +
- "\037\174\044\102\047\210\053\223\072\220\073\116\077" +
- "\165\100\125\102\215\103\204\104\153\105\127\112\152" +
- "\113\212\114\045\115\134\124\113\125\154\142\200\143" +
- "\177\150\047\152\161\153\205\154\162\155\040\156\176" +
- "\157\121\160\171\161\135\162\043\163\044\164\147\165" +
- "\137\001\002\000\004\100\242\001\002\000\002\001\uffc3" +
- "\000\004\100\242\001\002\000\002\001\uffc1\000\006\042" +
- "\u021b\101\u021c\001\ufffd\000\010\142\053\160\046\163\044" +
- "\001\002\000\020\114\045\142\041\150\047\155\040\160" +
- "\046\162\043\163\044\001\uffa3\000\004\137\u0222\001\002" +
- "\000\004\052\u0220\001\uffa2\000\002\001\uffa1\000\020\114" +
- "\045\142\041\150\047\155\040\160\046\162\043\163\044" +
- "\001\002\000\002\001\uffa0\000\004\042\u0223\001\ufffb\000" +
- "\010\142\053\160\046\163\044\001\002\000\002\001\ufffa" +
- "\000\002\001\ufffc\000\010\100\242\101\u0235\105\u0234\001" +
- "\uffa9\000\004\055\u0228\001\002\000\010\142\053\160\046" +
- "\163\044\001\002\000\010\100\242\101\u022c\105\u022b\001" +
- "\002\000\002\001\uffb8\000\022\052\072\053\063\062\065" +
- "\130\064\134\074\142\053\160\046\163\044\001\uff75\000" +
- "\022\052\072\053\063\062\065\130\064\134\074\142\053" +
- "\160\046\163\044\001\uff75\000\004\137\u022e\001\002\000" +
- "\004\100\242\001\002\000\002\001\uffb9\000\004\140\u0231" +
- "\001\002\000\004\100\242\001\002\000\002\001\uffba\000" +
- "\002\001\uffbb\000\022\052\072\053\063\062\065\130\064" +
- "\134\074\142\053\160\046\163\044\001\uff75\000\022\052" +
- "\072\053\063\062\065\130\064\134\074\142\053\160\046" +
- "\163\044\001\uff75\000\004\137\u0237\001\002\000\004\100" +
- "\242\001\002\000\002\001\uffbc\000\004\140\u023a\001\002" +
- "\000\004\100\242\001\002\000\002\001\uffbd\000\012\060" +
- "\u023d\100\242\101\u0241\105\u0240\001\002\000\116\031\120" +
- "\032\144\033\150\034\151\036\124\037\174\044\102\047" +
- "\210\053\223\072\220\073\116\077\165\100\125\102\215" +
- "\103\204\104\153\105\127\112\152\113\212\114\045\115" +
- "\134\124\113\125\154\142\200\143\177\150\047\152\161" +
- "\153\205\154\162\155\040\156\176\157\121\160\171\161" +
- "\135\162\043\163\044\164\147\165\137\001\002\000\002" +
- "\001\uffc6\000\002\001\uffc5\000\012\140\u0247\142\053\160" +
- "\046\163\044\001\002\000\012\137\u0243\142\053\160\046" +
- "\163\044\001\002\000\006\052\077\137\u0245\001\002\000" +
- "\006\060\u023d\100\242\001\002\000\002\001\uffc7\000\006" +
- "\060\u023d\100\242\001\002\000\002\001\uffc8\000\006\060" +
- "\u023d\100\242\001\002\000\006\052\077\140\u0249\001\002" +
- "\000\006\060\u023d\100\242\001\002\000\002\001\uffca\000" +
- "\002\001\uffc9\000\002\001\uffc4\000\004\100\u024e\001\002" +
- "\000\012\136\u0250\142\053\160\046\163\044\001\002\000" +
- "\006\052\077\136\u0251\001\002\000\002\001\ufff8\000\002" +
- "\001\ufff9\000\006\050\017\141\024\001\002\000\012\100" +
- "\242\142\053\160\046\163\044\001\002\000\014\066\u0257" +
- "\100\242\142\053\160\046\163\044\001\uffdc\000\004\066" +
- "\u0257\001\uffdc\000\004\063\u0279\001\uffe1\000\006\061\u0258" +
- "\164\u025b\001\002\000\004\164\u0270\001\002\000\022\077" +
- "\u0269\114\u026e\142\u026c\150\u026f\155\u026b\160\046\162\u026d" +
- "\163\044\001\002\000\004\052\u0266\001\uffdd\000\030\046" +
- "\u025e\051\u025d\055\u025f\077\uffce\114\uffce\142\uffce\150\uffce" +
- "\155\uffce\160\uffce\162\uffce\163\uffce\001\uffdf\000\002\001" +
- "\uffdb\000\004\164\u0268\001\002\000\006\061\u0258\164\u0265" +
- "\001\002\000\004\055\u0260\001\002\000\004\164\u0261\001" +
- "\002\000\004\051\u0262\001\uffcd\000\004\164\u0263\001\002" +
- "\000\002\001\uffcc\000\004\052\u0266\001\uffde\000\006\051" +
- "\u025d\055\u025f\001\uffce\000\006\061\u0258\164\u0265\001\002" +
- "\000\002\001\uffda\000\002\001\uffcb\000\002\001\uffd7\000" +
- "\002\001\uffd9\000\002\001\uffd4\000\004\151\054\001\uffd6" +
- "\000\002\001\uffd5\000\002\001\uffd3\000\002\001\uffd8\000" +
- "\006\051\u0271\055\u0272\001\uffd2\000\004\164\u0277\001\002" +
- "\000\004\055\u0273\001\002\000\004\164\u0274\001\002\000" +
- "\004\051\u0275\001\uffd1\000\004\164\u0276\001\002\000\002" +
- "\001\uffd0\000\002\001\uffcf\000\002\001\uffe6\000\004\164" +
- "\u027a\001\002\000\002\001\uffe0\000\004\066\u0257\001\uffdc" +
- "\000\004\066\u0257\001\uffdc\000\004\063\u0279\001\uffe1\000" +
- "\002\001\uffe2\000\004\063\u0279\001\uffe1\000\002\001\uffe7" +
- "\000\004\063\u0279\001\uffe1\000\002\001\uffe3\000\012\052" +
- "\077\060\u0286\064\u0285\076\u0284\001\uffaa\000\020\114\045" +
- "\142\041\150\047\155\040\160\046\162\043\163\044\001" +
- "\002\000\020\114\045\142\041\150\047\155\040\160\046" +
- "\162\043\163\044\001\002\000\020\114\045\142\041\150" +
- "\047\155\040\160\046\162\043\163\044\001\002\000\004" +
- "\100\u0288\001\002\000\022\052\072\053\063\062\065\130" +
- "\064\134\074\142\053\160\046\163\044\001\uff75\000\004" +
- "\136\u028a\001\002\000\004\100\242\001\uff6f\000\002\001" +
- "\uffb5\000\002\001\uff6e\000\004\131\u028f\001\uffab\000\002" +
- "\001\uff9f\000\020\114\045\142\041\150\047\155\040\160" +
- "\046\162\043\163\044\001\002\000\002\001\uff9e\000\002" +
- "\001\uffad\000\004\131\u028f\001\uffac\000\002\001\uffae\000" +
- "\002\001\uffb0\000\004\101\u0296\001\uffff\000\012\061\u0298" +
- "\142\053\160\046\163\044\001\002\000\002\001\uff96\000" +
- "\010\142\053\160\046\163\044\001\002\000\006\052\u029a" +
- "\137\u029b\001\002\000\012\061\u029d\142\053\160\046\163" +
- "\044\001\002\000\002\001\ufffe\000\002\001\uff94\000\010" +
- "\142\053\160\046\163\044\001\002\000\002\001\uff93\000" +
- "\002\001\uff95\000\004\100\242\001\002\000\004\100\242" +
- "\001\002\000\002\001\ufff7\000\002\001\ufff5\000\002\001" +
- "\ufff6\000\014\066\u0257\100\242\142\053\160\046\163\044" +
- "\001\uffdc\000\004\066\u0257\001\uffdc\000\004\063\u0279\001" +
- "\uffe1\000\002\001\uffe8\000\004\066\u0257\001\uffdc\000\004" +
- "\066\u0257\001\uffdc\000\004\063\u0279\001\uffe1\000\002\001" +
- "\uffe4\000\004\063\u0279\001\uffe1\000\002\001\uffe9\000\004" +
- "\063\u0279\001\uffe1\000\002\001\uffe5\000\004\100\242\001" +
- "\002\000\004\100\242\001\002\000\002\001\ufff4\000\002" +
- "\001\ufff2\000\002\001\ufff3\000\002\001\000" });
+ "\000\u030b\000\002\001\uffec\000\004\002\u030d\001\002\000" +
+ "\034\002\001\035\026\043\010\050\017\065\016\104\006" +
+ "\111\021\125\027\134\012\141\023\147\013\153\030\163" +
+ "\032\001\uffb4\000\002\001\uffb0\000\002\001\uffef\000\014" +
+ "\100\257\142\055\160\050\201\046\203\u0309\001\002\000" +
+ "\002\001\uffee\000\014\057\uffb3\067\uffb3\102\uffb3\126\uffb3" +
+ "\133\uffb3\001\uffad\000\002\001\uffab\000\012\100\257\142" +
+ "\055\160\050\201\046\001\002\000\002\001\ufff0\000\014" +
+ "\100\257\142\055\160\050\201\046\203\u02f8\001\002\000" +
+ "\002\001\uffeb\000\002\001\ufff1\000\010\142\055\160\050" +
+ "\201\046\001\002\000\020\035\026\104\006\125\027\134" +
+ "\u02eb\147\013\153\030\163\032\001\002\000\002\001\uffea" +
+ "\000\010\142\055\160\050\201\046\001\002\000\004\075" +
+ "\u02a8\001\uffed\000\002\001\uffb1\000\002\001\uffaf\000\002" +
+ "\001\uffae\000\014\057\033\067\037\102\034\126\036\133" +
+ "\035\001\002\000\002\001\uffac\000\010\142\055\160\050" +
+ "\201\046\001\002\000\010\142\055\160\050\201\046\001" +
+ "\002\000\022\114\047\142\043\150\051\155\042\160\050" +
+ "\162\045\177\040\201\046\001\002\000\010\142\055\160" +
+ "\050\201\046\001\002\000\022\114\047\142\043\150\051" +
+ "\155\042\160\050\162\045\177\040\201\046\001\002\000" +
+ "\002\001\uffa2\000\010\051\u0261\101\u0263\105\u0262\001\uffa5" +
+ "\000\002\001\uffa3\000\004\151\u0129\001\002\000\004\151" +
+ "\060\001\uff98\000\002\001\uffa4\000\002\001\uff95\000\002" +
+ "\001\uff9f\000\004\151\u017e\001\002\000\002\001\uffa1\000" +
+ "\004\055\053\001\002\000\010\142\055\160\050\201\046" +
+ "\001\002\000\010\051\062\101\064\105\063\001\002\000" +
+ "\004\151\056\001\002\000\004\201\046\001\002\000\004" +
+ "\151\060\001\uff96\000\004\201\061\001\002\000\002\001" +
+ "\uff94\000\134\031\126\032\153\033\157\034\160\036\130" +
+ "\037\205\044\105\047\223\053\237\072\234\073\124\077" +
+ "\174\100\132\102\231\103\217\104\162\105\134\112\161" +
+ "\113\226\114\047\115\141\124\122\125\163\142\213\143" +
+ "\210\150\051\152\170\153\220\154\171\155\042\156\207" +
+ "\157\127\160\200\161\142\162\045\164\131\165\202\166" +
+ "\143\167\150\170\224\171\112\177\040\201\046\202\156" +
+ "\203\145\001\002\000\024\052\075\053\065\062\067\130" +
+ "\066\134\077\142\055\160\050\163\074\201\046\001\uff68" +
+ "\000\024\052\075\053\065\062\067\130\066\134\077\142" +
+ "\055\160\050\163\074\201\046\001\uff68\000\010\142\055" +
+ "\160\050\201\046\001\002\000\010\142\055\160\050\201" +
+ "\046\001\002\000\010\142\055\160\050\201\046\001\002" +
+ "\000\002\001\uff93\000\004\052\u0249\001\uff67\000\010\051" +
+ "\u01f7\052\102\060\u0245\001\002\000\002\001\uff79\000\014" +
+ "\053\u022e\134\u0230\142\055\160\050\201\046\001\002\000" +
+ "\024\052\075\053\065\062\067\130\066\134\077\142\055" +
+ "\160\050\163\074\201\046\001\uff68\000\004\137\u0229\001" +
+ "\002\000\012\053\100\142\055\160\050\201\046\001\002" +
+ "\000\010\142\055\160\050\201\046\001\002\000\010\051" +
+ "\104\052\102\060\103\001\002\000\010\142\055\160\050" +
+ "\201\046\001\002\000\134\031\126\032\153\033\157\034" +
+ "\160\036\130\037\205\044\105\047\223\053\u0221\072\234" +
+ "\073\124\077\174\100\132\102\231\103\217\104\162\105" +
+ "\134\112\161\113\226\114\047\115\141\124\122\125\163" +
+ "\142\213\143\210\150\051\152\170\153\220\154\171\155" +
+ "\042\156\207\157\127\160\200\161\142\162\045\164\131" +
+ "\165\202\166\143\167\150\170\224\171\112\177\040\201" +
+ "\046\202\156\203\145\001\002\000\134\031\126\032\153" +
+ "\033\157\034\160\036\130\037\205\044\105\047\223\053" +
+ "\176\072\234\073\124\077\174\100\132\102\231\103\217" +
+ "\104\162\105\134\112\161\113\226\114\047\115\141\124" +
+ "\122\125\163\142\213\143\210\150\051\152\170\153\220" +
+ "\154\171\155\042\156\207\157\127\160\200\161\142\162" +
+ "\045\164\131\165\202\166\143\167\150\170\224\171\112" +
+ "\177\040\201\046\202\156\203\145\001\002\000\010\142" +
+ "\055\160\050\201\046\001\002\000\002\001\uff29\000\002" +
+ "\001\uff2e\000\002\001\uff42\000\002\001\uff44\000\134\031" +
+ "\126\032\153\033\157\034\160\036\130\037\205\044\105" +
+ "\047\223\053\237\072\234\073\124\077\174\100\132\102" +
+ "\231\103\217\104\162\105\134\112\161\113\226\114\047" +
+ "\115\141\124\122\125\163\142\213\143\210\150\051\152" +
+ "\170\153\220\154\171\155\042\156\207\157\127\160\200" +
+ "\161\142\162\045\164\131\165\202\166\143\167\150\170" +
+ "\224\171\112\177\040\201\046\202\156\203\145\001\002" +
+ "\000\004\200\241\001\uff50\000\006\041\u0214\075\u0213\001" +
+ "\uff36\000\002\001\uff3e\000\044\004\372\005\357\006\373" +
+ "\007\365\010\366\011\375\012\370\013\362\014\376\015" +
+ "\364\016\361\017\367\020\360\021\371\022\363\023\377" +
+ "\054\u020f\001\ufea6\000\002\001\ufea8\000\002\001\ufecf\000" +
+ "\002\001\ufed3\000\022\053\065\062\067\130\066\134\077" +
+ "\142\055\160\050\163\074\201\046\001\002\000\004\132" +
+ "\u020b\001\ufec4\000\002\001\ufe7e\000\002\001\ufecb\000\002" +
+ "\001\ufe7c\000\104\031\126\032\153\033\157\034\160\037" +
+ "\205\044\105\047\223\053\237\072\234\073\124\077\174" +
+ "\100\132\101\334\102\231\103\217\105\134\112\161\114" +
+ "\047\124\122\142\043\150\051\152\170\154\171\155\042" +
+ "\156\207\157\127\160\200\161\142\162\045\177\040\201" +
+ "\046\202\156\203\145\001\002\000\102\031\126\032\153" +
+ "\033\157\034\160\037\205\044\105\047\223\053\237\072" +
+ "\234\073\124\077\174\100\132\102\231\103\217\105\134" +
+ "\112\161\114\047\124\122\142\043\150\051\152\170\154" +
+ "\171\155\042\156\207\157\127\160\200\161\142\162\045" +
+ "\177\040\201\046\202\156\203\145\001\002\000\134\031" +
+ "\126\032\153\033\157\034\160\036\130\037\205\044\105" +
+ "\047\223\053\237\072\234\073\124\077\174\100\132\102" +
+ "\231\103\217\104\162\105\134\112\161\113\226\114\047" +
+ "\115\141\124\122\125\163\142\213\143\210\150\051\152" +
+ "\170\153\220\154\171\155\042\156\207\157\127\160\200" +
+ "\161\142\162\045\164\131\165\202\166\143\167\150\170" +
+ "\224\171\112\177\040\201\046\202\156\203\145\001\002" +
+ "\000\146\031\126\032\153\033\157\034\160\036\130\037" +
+ "\205\044\105\047\223\053\u01e1\062\u01dd\072\234\073\124" +
+ "\077\174\100\132\102\231\103\217\104\162\105\134\112" +
+ "\161\113\226\114\047\115\141\124\122\125\163\130\u01de" +
+ "\134\u01e4\136\265\142\213\143\210\150\051\152\170\153" +
+ "\220\154\171\155\042\156\207\157\127\160\200\161\142" +
+ "\162\045\163\074\164\131\165\202\166\143\167\150\170" +
+ "\224\171\112\177\040\201\046\202\156\203\145\001\002" +
+ "\000\002\001\uff89\000\134\031\126\032\153\033\157\034" +
+ "\160\036\130\037\205\044\105\047\223\053\237\072\234" +
+ "\073\124\077\174\100\132\102\231\103\217\104\162\105" +
+ "\134\112\161\113\226\114\047\115\141\124\122\125\163" +
+ "\142\213\143\210\150\051\152\170\153\220\154\171\155" +
+ "\042\156\207\157\127\160\200\161\142\162\045\164\131" +
+ "\165\202\166\143\167\150\170\224\171\112\177\040\201" +
+ "\046\202\156\203\145\001\002\000\004\135\u01d9\001\ufea2" +
+ "\000\002\001\ufea4\000\006\055\u01d7\101\322\001\ufe9e\000" +
+ "\002\001\ufea0\000\134\031\126\032\153\033\157\034\160" +
+ "\036\130\037\205\044\105\047\223\053\237\072\234\073" +
+ "\124\077\174\100\132\102\231\103\217\104\162\105\134" +
+ "\112\161\113\226\114\047\115\141\124\122\125\163\142" +
+ "\213\143\210\150\051\152\170\153\220\154\171\155\042" +
+ "\156\207\157\127\160\200\161\142\162\045\164\131\165" +
+ "\202\166\143\167\150\170\224\171\112\177\040\201\046" +
+ "\202\156\203\145\001\002\000\070\031\126\032\153\033" +
+ "\157\037\205\044\105\047\223\073\124\100\132\102\231" +
+ "\103\217\105\134\112\161\114\047\124\122\142\043\150" +
+ "\051\152\170\154\171\155\042\156\207\160\200\161\142" +
+ "\162\045\177\040\201\046\202\156\203\145\001\002\000" +
+ "\134\031\126\032\153\033\157\034\160\036\130\037\205" +
+ "\044\105\047\223\053\237\072\234\073\124\077\174\100" +
+ "\132\102\231\103\217\104\162\105\134\112\161\113\226" +
+ "\114\047\115\141\124\122\125\163\142\213\143\210\150" +
+ "\051\152\170\153\220\154\171\155\042\156\207\157\127" +
+ "\160\200\161\142\162\045\164\131\165\202\166\143\167" +
+ "\150\170\224\171\112\177\040\201\046\202\156\203\145" +
+ "\001\002\000\002\001\ufe78\000\002\001\ufe7f\000\010\144" +
+ "\u010f\145\u010e\146\u0110\001\ufee6\000\002\001\ufefa\000\134" +
+ "\031\126\032\153\033\157\034\160\036\130\037\205\044" +
+ "\105\047\223\053\237\072\234\073\124\077\174\100\132" +
+ "\102\231\103\217\104\162\105\134\112\161\113\226\114" +
+ "\047\115\141\124\122\125\163\142\213\143\210\150\051" +
+ "\152\170\153\220\154\171\155\042\156\207\157\127\160" +
+ "\200\161\142\162\045\164\131\165\202\166\143\167\150" +
+ "\170\224\171\112\177\040\201\046\202\156\203\145\001" +
+ "\002\000\032\060\u01b5\070\u01b3\071\u01ac\076\u01ae\106\u01b6" +
+ "\107\u01af\116\u01ad\117\u01b2\120\u01b0\121\u01ab\122\u01b4\123" +
+ "\u01b1\001\uff15\000\002\001\uff24\000\002\001\ufe7b\000\004" +
+ "\127\u01a7\001\uff51\000\002\001\uff52\000\002\001\ufe80\000" +
+ "\002\001\ufe7a\000\004\101\u01a4\001\002\000\022\053\065" +
+ "\062\067\130\066\134\077\142\055\160\050\163\074\201" +
+ "\046\001\002\000\102\031\126\032\153\033\157\034\160" +
+ "\037\205\044\105\047\223\053\237\072\234\073\124\077" +
+ "\174\100\132\102\231\103\217\105\134\112\161\114\047" +
+ "\124\122\142\043\150\051\152\170\154\171\155\042\156" +
+ "\207\157\127\160\200\161\142\162\045\177\040\201\046" +
+ "\202\156\203\145\001\002\000\102\031\126\032\153\033" +
+ "\157\034\160\037\205\044\105\047\223\053\237\072\234" +
+ "\073\124\077\174\100\132\102\231\103\217\105\134\112" +
+ "\161\114\047\124\122\142\043\150\051\152\170\154\171" +
+ "\155\042\156\207\157\127\160\200\161\142\162\045\177" +
+ "\040\201\046\202\156\203\145\001\002\000\004\074\u018d" +
+ "\001\uff46\000\002\001\uff48\000\002\001\ufeba\000\002\001" +
+ "\ufebc\000\022\053\065\062\067\130\066\134\077\142\055" +
+ "\160\050\163\074\201\046\001\002\000\070\031\126\032" +
+ "\153\033\157\037\205\044\105\047\223\073\124\100\132" +
+ "\102\231\103\217\105\134\112\161\114\047\124\122\142" +
+ "\043\150\051\152\170\154\171\155\042\156\207\160\200" +
+ "\161\142\162\045\177\040\201\046\202\156\203\145\001" +
+ "\002\000\004\200\331\001\ufe93\000\004\200\u0121\001\ufe95" +
+ "\000\104\031\126\032\153\033\157\034\160\037\205\044" +
+ "\105\047\223\053\237\072\234\073\124\077\174\100\132" +
+ "\101\337\102\231\103\217\105\134\112\161\114\047\124" +
+ "\122\142\043\150\051\152\170\154\171\155\042\156\207" +
+ "\157\127\160\200\161\142\162\045\177\040\201\046\202" +
+ "\156\203\145\001\002\000\002\001\ufe87\000\136\031\126" +
+ "\032\153\033\157\034\160\036\130\037\205\044\105\047" +
+ "\223\053\237\072\234\073\124\077\174\100\132\101\242" +
+ "\102\231\103\217\104\162\105\134\112\161\113\226\114" +
+ "\047\115\141\124\122\125\163\142\213\143\210\150\051" +
+ "\152\170\153\220\154\171\155\042\156\207\157\127\160" +
+ "\200\161\142\162\045\164\131\165\202\166\143\167\150" +
+ "\170\224\171\112\177\040\201\046\202\156\203\145\001" +
+ "\002\000\010\026\u0180\027\u0182\030\u0181\001\ufed8\000\004" +
+ "\151\u017e\001\ufe7d\000\002\001\ufedd\000\134\031\126\032" +
+ "\153\033\157\034\160\036\130\037\205\044\105\047\223" +
+ "\053\237\072\234\073\124\077\174\100\132\102\231\103" +
+ "\217\104\162\105\134\112\161\113\226\114\047\115\141" +
+ "\124\122\125\163\142\213\143\210\150\051\152\170\153" +
+ "\220\154\171\155\042\156\207\157\127\160\200\161\142" +
+ "\162\045\164\131\165\202\166\143\167\150\170\224\171" +
+ "\112\177\040\201\046\202\156\203\145\001\002\000\004" +
+ "\176\u017a\001\uff54\000\004\040\u0178\001\ufebe\000\022\053" +
+ "\065\062\067\130\066\134\077\142\055\160\050\163\074" +
+ "\201\046\001\002\000\002\001\ufec0\000\022\053\065\062" +
+ "\067\130\066\134\077\142\055\160\050\163\074\201\046" +
+ "\001\002\000\102\031\126\032\153\033\157\034\160\037" +
+ "\205\044\105\047\223\053\237\072\234\073\124\077\174" +
+ "\100\132\102\231\103\217\105\134\112\161\114\047\124" +
+ "\122\142\043\150\051\152\170\154\171\155\042\156\207" +
+ "\157\127\160\200\161\142\162\045\177\040\201\046\202" +
+ "\156\203\145\001\002\000\012\172\u012f\173\u012e\174\u0130" +
+ "\175\u012d\001\uff30\000\002\001\uff32\000\104\031\126\032" +
+ "\153\033\157\034\160\037\205\044\105\047\223\053\237" +
+ "\072\234\073\124\077\174\100\132\102\231\103\217\105" +
+ "\134\112\161\114\047\124\122\142\043\150\051\151\u0129" +
+ "\152\170\154\171\155\042\156\207\157\127\160\200\161" +
+ "\142\162\045\177\040\201\046\202\156\203\145\001\002" +
+ "\000\002\001\uffa5\000\002\001\ufe9b\000\002\001\ufe9c\000" +
+ "\022\053\065\062\067\130\066\134\077\142\055\160\050" +
+ "\163\074\201\046\001\002\000\102\031\126\032\153\033" +
+ "\157\034\160\037\205\044\105\047\223\053\237\072\234" +
+ "\073\124\077\174\100\132\102\231\103\217\105\134\112" +
+ "\161\114\047\124\122\142\043\150\051\152\170\154\171" +
+ "\155\042\156\207\157\127\160\200\161\142\162\045\177" +
+ "\040\201\046\202\156\203\145\001\002\000\002\001\uff38" +
+ "\000\002\001\uff40\000\070\031\126\032\153\033\157\037" +
+ "\205\044\105\047\223\073\124\100\132\102\231\103\217" +
+ "\105\134\112\161\114\047\124\122\142\043\150\051\152" +
+ "\170\154\171\155\042\156\207\160\200\161\142\162\045" +
+ "\177\040\201\046\202\156\203\145\001\002\000\134\031" +
+ "\126\032\153\033\157\034\160\036\130\037\205\044\105" +
+ "\047\223\053\237\072\234\073\124\077\174\100\132\102" +
+ "\231\103\217\104\162\105\134\112\161\113\226\114\047" +
+ "\115\141\124\122\125\163\142\213\143\210\150\051\152" +
+ "\170\153\220\154\171\155\042\156\207\157\127\160\200" +
+ "\161\142\162\045\164\131\165\202\166\143\167\150\170" +
+ "\224\171\112\177\040\201\046\202\156\203\145\001\002" +
+ "\000\002\001\ufe76\000\102\031\126\032\153\033\157\034" +
+ "\160\037\205\044\105\047\223\053\237\072\234\073\124" +
+ "\077\174\100\132\102\231\103\217\105\134\112\161\114" +
+ "\047\124\122\142\043\150\051\152\170\154\171\155\042" +
+ "\156\207\157\127\160\200\161\142\162\045\177\040\201" +
+ "\046\202\156\203\145\001\002\000\012\024\300\025\275" +
+ "\110\277\131\276\001\ufee1\000\002\001\ufee5\000\010\142" +
+ "\055\160\050\201\046\001\002\000\002\001\uff37\000\002" +
+ "\001\uff3f\000\102\031\126\032\153\033\157\034\160\037" +
+ "\205\044\105\047\223\053\237\072\234\073\124\077\174" +
+ "\100\132\102\231\103\217\105\134\112\161\114\047\124" +
+ "\122\142\043\150\051\152\170\154\171\155\042\156\207" +
+ "\157\127\160\200\161\142\162\045\177\040\201\046\202" +
+ "\156\203\145\001\002\000\002\001\ufec3\000\002\001\ufec7" +
+ "\000\004\101\242\001\002\000\004\200\241\001\ufeca\000" +
+ "\002\001\ufe83\000\134\031\126\032\153\033\157\034\160" +
+ "\036\130\037\205\044\105\047\223\053\237\072\234\073" +
+ "\124\077\174\100\132\102\231\103\217\104\162\105\134" +
+ "\112\161\113\226\114\047\115\141\124\122\125\163\142" +
+ "\213\143\210\150\051\152\170\153\220\154\171\155\042" +
+ "\156\207\157\127\160\200\161\142\162\045\164\131\165" +
+ "\202\166\143\167\150\170\224\171\112\177\040\201\046" +
+ "\202\156\203\145\001\uff58\000\002\001\uff56\000\004\137" +
+ "\250\001\002\000\004\052\246\001\uff57\000\134\031\126" +
+ "\032\153\033\157\034\160\036\130\037\205\044\105\047" +
+ "\223\053\237\072\234\073\124\077\174\100\132\102\231" +
+ "\103\217\104\162\105\134\112\161\113\226\114\047\115" +
+ "\141\124\122\125\163\142\213\143\210\150\051\152\170" +
+ "\153\220\154\171\155\042\156\207\157\127\160\200\161" +
+ "\142\162\045\164\131\165\202\166\143\167\150\170\224" +
+ "\171\112\177\040\201\046\202\156\203\145\001\002\000" +
+ "\002\001\uff55\000\002\001\ufe99\000\004\060\253\001\002" +
+ "\000\002\001\uff4f\000\134\031\126\032\153\033\157\034" +
+ "\160\036\130\037\205\044\105\047\223\053\237\072\234" +
+ "\073\124\077\174\100\132\102\231\103\217\104\162\105" +
+ "\134\112\161\113\226\114\047\115\141\124\122\125\163" +
+ "\142\213\143\210\150\051\152\170\153\220\154\171\155" +
+ "\042\156\207\157\127\160\200\161\142\162\045\164\131" +
+ "\165\202\166\143\167\150\170\224\171\112\177\040\201" +
+ "\046\202\156\203\145\001\002\000\010\045\260\052\255" +
+ "\100\257\001\002\000\010\142\055\160\050\201\046\001" +
+ "\002\000\002\001\uff64\000\136\031\126\032\153\033\157" +
+ "\034\160\036\130\037\205\044\105\047\223\053\237\072" +
+ "\234\073\124\077\174\100\132\102\231\103\217\104\162" +
+ "\105\134\112\161\113\226\114\047\115\141\124\122\125" +
+ "\163\136\265\142\213\143\210\150\051\152\170\153\220" +
+ "\154\171\155\042\156\207\157\127\160\200\161\142\162" +
+ "\045\164\131\165\202\166\143\167\150\170\224\171\112" +
+ "\177\040\201\046\202\156\203\145\001\002\000\134\031" +
+ "\126\032\153\033\157\034\160\036\130\037\205\044\105" +
+ "\047\223\053\237\072\234\073\124\077\174\100\132\102" +
+ "\231\103\217\104\162\105\134\112\161\113\226\114\047" +
+ "\115\141\124\122\125\163\142\213\143\210\150\051\152" +
+ "\170\153\220\154\171\155\042\156\207\157\127\160\200" +
+ "\161\142\162\045\164\131\165\202\166\143\167\150\170" +
+ "\224\171\112\177\040\201\046\202\156\203\145\001\002" +
+ "\000\002\001\uff5a\000\002\001\uff5b\000\134\031\126\032" +
+ "\153\033\157\034\160\036\130\037\205\044\105\047\223" +
+ "\053\237\072\234\073\124\077\174\100\132\102\231\103" +
+ "\217\104\162\105\134\112\161\113\226\114\047\115\141" +
+ "\124\122\125\163\142\213\143\210\150\051\152\170\153" +
+ "\220\154\171\155\042\156\207\157\127\160\200\161\142" +
+ "\162\045\164\131\165\202\166\143\167\150\170\224\171" +
+ "\112\177\040\201\046\202\156\203\145\001\002\000\002" +
+ "\001\uff59\000\002\001\uff5f\000\004\176\272\001\uff5e\000" +
+ "\136\031\126\032\153\033\157\034\160\036\130\037\205" +
+ "\044\105\047\223\053\237\072\234\073\124\077\174\100" +
+ "\132\102\231\103\217\104\162\105\134\112\161\113\226" +
+ "\114\047\115\141\124\122\125\163\136\270\142\213\143" +
+ "\210\150\051\152\170\153\220\154\171\155\042\156\207" +
+ "\157\127\160\200\161\142\162\045\164\131\165\202\166" +
+ "\143\167\150\170\224\171\112\177\040\201\046\202\156" +
+ "\203\145\001\002\000\002\001\uff60\000\002\001\uff5d\000" +
+ "\134\031\126\032\153\033\157\034\160\036\130\037\205" +
+ "\044\105\047\223\053\237\072\234\073\124\077\174\100" +
+ "\132\102\231\103\217\104\162\105\134\112\161\113\226" +
+ "\114\047\115\141\124\122\125\163\142\213\143\210\150" +
+ "\051\152\170\153\220\154\171\155\042\156\207\157\127" +
+ "\160\200\161\142\162\045\164\131\165\202\166\143\167" +
+ "\150\170\224\171\112\177\040\201\046\202\156\203\145" +
+ "\001\002\000\036\047\223\104\162\113\226\115\141\125" +
+ "\163\153\220\154\171\161\142\164\131\165\202\166\143" +
+ "\167\150\170\224\171\112\001\uff5c\000\002\001\uff63\000" +
+ "\102\031\126\032\153\033\157\034\160\037\205\044\105" +
+ "\047\310\053\237\072\302\073\124\077\303\100\132\102" +
+ "\231\103\217\105\134\112\161\114\047\124\122\142\043" +
+ "\150\051\152\170\154\305\155\042\156\207\157\313\160" +
+ "\200\161\304\162\045\177\040\201\046\202\156\203\145" +
+ "\001\002\000\102\031\126\032\153\033\157\034\160\037" +
+ "\205\044\105\047\310\053\237\072\302\073\124\077\303" +
+ "\100\132\102\231\103\217\105\134\112\161\114\047\124" +
+ "\122\142\043\150\051\152\170\154\305\155\042\156\207" +
+ "\157\313\160\200\161\304\162\045\177\040\201\046\202" +
+ "\156\203\145\001\002\000\102\031\126\032\153\033\157" +
+ "\034\160\037\205\044\105\047\310\053\237\072\302\073" +
+ "\124\077\303\100\132\102\231\103\217\105\134\112\161" +
+ "\114\047\124\122\142\043\150\051\152\170\154\305\155" +
+ "\042\156\207\157\313\160\200\161\304\162\045\177\040" +
+ "\201\046\202\156\203\145\001\002\000\102\031\126\032" +
+ "\153\033\157\034\160\037\205\044\105\047\310\053\237" +
+ "\072\302\073\124\077\303\100\132\102\231\103\217\105" +
+ "\134\112\161\114\047\124\122\142\043\150\051\152\170" +
+ "\154\305\155\042\156\207\157\313\160\200\161\304\162" +
+ "\045\177\040\201\046\202\156\203\145\001\002\000\004" +
+ "\040\354\001\ufebe\000\064\031\126\032\153\033\157\034" +
+ "\160\044\105\047\310\053\237\072\302\073\124\077\303" +
+ "\100\132\105\134\114\047\142\043\150\051\154\305\155" +
+ "\042\157\313\160\200\161\304\162\045\177\040\201\046" +
+ "\202\156\203\145\001\002\000\066\031\126\032\153\033" +
+ "\157\034\160\044\105\047\310\053\237\072\302\073\124" +
+ "\077\303\100\132\101\337\105\134\114\047\142\043\150" +
+ "\051\154\305\155\042\157\313\160\200\161\304\162\045" +
+ "\177\040\201\046\202\156\203\145\001\002\000\052\031" +
+ "\126\032\153\033\157\044\105\047\310\073\124\100\132" +
+ "\105\134\114\047\142\043\150\051\154\305\155\042\160" +
+ "\200\161\304\162\045\177\040\201\046\202\156\203\145" +
+ "\001\002\000\052\031\126\032\153\033\157\044\105\047" +
+ "\310\073\124\100\132\105\134\114\047\142\043\150\051" +
+ "\154\305\155\042\160\200\161\304\162\045\177\040\201" +
+ "\046\202\156\203\145\001\002\000\044\004\372\005\357" +
+ "\006\373\007\365\010\366\011\375\012\370\013\362\014" +
+ "\376\015\364\016\361\017\367\020\360\021\371\022\363" +
+ "\023\377\054\356\001\ufea6\000\004\132\352\001\ufec4\000" +
+ "\052\031\126\032\153\033\157\044\105\047\310\073\124" +
+ "\100\132\105\134\114\047\142\043\150\051\154\305\155" +
+ "\042\160\200\161\304\162\045\177\040\201\046\202\156" +
+ "\203\145\001\002\000\010\026\343\027\344\030\345\001" +
+ "\ufed5\000\006\055\323\101\322\001\ufe9e\000\066\031\126" +
+ "\032\153\033\157\034\160\044\105\047\310\053\237\072" +
+ "\302\073\124\077\303\100\132\101\334\105\134\114\047" +
+ "\142\043\150\051\154\305\155\042\157\313\160\200\161" +
+ "\304\162\045\177\040\201\046\202\156\203\145\001\002" +
+ "\000\004\135\316\001\ufea2\000\002\001\ufeda\000\062\031" +
+ "\126\032\153\033\157\034\160\044\105\047\310\053\237" +
+ "\073\124\077\317\100\132\105\134\114\047\142\043\150" +
+ "\051\154\305\155\042\157\320\160\200\161\304\162\045" +
+ "\177\040\201\046\202\156\203\145\001\002\000\004\101" +
+ "\337\001\002\000\004\101\334\001\002\000\006\055\323" +
+ "\101\322\001\ufe9d\000\134\031\126\032\153\033\157\034" +
+ "\160\036\130\037\205\044\105\047\223\053\237\072\234" +
+ "\073\124\077\174\100\132\102\231\103\217\104\162\105" +
+ "\134\112\161\113\226\114\047\115\141\124\122\125\163" +
+ "\142\213\143\210\150\051\152\170\153\220\154\171\155" +
+ "\042\156\207\157\127\160\200\161\142\162\045\164\131" +
+ "\165\202\166\143\167\150\170\224\171\112\177\040\201" +
+ "\046\202\156\203\145\001\uff58\000\062\031\126\032\153" +
+ "\033\157\034\324\044\105\047\310\053\326\073\124\077" +
+ "\325\100\132\105\134\114\047\142\043\150\051\154\305" +
+ "\155\042\157\327\160\200\161\304\162\045\177\040\201" +
+ "\046\202\156\203\145\001\002\000\002\001\ufe90\000\002" +
+ "\001\ufe8f\000\002\001\ufe91\000\002\001\ufe8e\000\004\200" +
+ "\331\001\ufe92\000\002\001\ufe81\000\004\137\333\001\002" +
+ "\000\002\001\ufe9a\000\134\031\126\032\153\033\157\034" +
+ "\160\036\130\037\205\044\105\047\223\053\237\072\234" +
+ "\073\124\077\174\100\132\102\231\103\217\104\162\105" +
+ "\134\112\161\113\226\114\047\115\141\124\122\125\163" +
+ "\142\213\143\210\150\051\152\170\153\220\154\171\155" +
+ "\042\156\207\157\127\160\200\161\142\162\045\164\131" +
+ "\165\202\166\143\167\150\170\224\171\112\177\040\201" +
+ "\046\202\156\203\145\001\uff58\000\004\137\336\001\002" +
+ "\000\002\001\ufe96\000\134\031\126\032\153\033\157\034" +
+ "\160\036\130\037\205\044\105\047\223\053\237\072\234" +
+ "\073\124\077\174\100\132\102\231\103\217\104\162\105" +
+ "\134\112\161\113\226\114\047\115\141\124\122\125\163" +
+ "\142\213\143\210\150\051\152\170\153\220\154\171\155" +
+ "\042\156\207\157\127\160\200\161\142\162\045\164\131" +
+ "\165\202\166\143\167\150\170\224\171\112\177\040\201" +
+ "\046\202\156\203\145\001\uff58\000\004\137\341\001\002" +
+ "\000\002\001\ufe97\000\002\001\ufec2\000\064\031\126\032" +
+ "\153\033\157\034\160\044\105\047\310\053\237\072\302" +
+ "\073\124\077\303\100\132\105\134\114\047\142\043\150" +
+ "\051\154\305\155\042\157\313\160\200\161\304\162\045" +
+ "\177\040\201\046\202\156\203\145\001\002\000\064\031" +
+ "\126\032\153\033\157\034\160\044\105\047\310\053\237" +
+ "\072\302\073\124\077\303\100\132\105\134\114\047\142" +
+ "\043\150\051\154\305\155\042\157\313\160\200\161\304" +
+ "\162\045\177\040\201\046\202\156\203\145\001\002\000" +
+ "\064\031\126\032\153\033\157\034\160\044\105\047\310" +
+ "\053\237\072\302\073\124\077\303\100\132\105\134\114" +
+ "\047\142\043\150\051\154\305\155\042\157\313\160\200" +
+ "\161\304\162\045\177\040\201\046\202\156\203\145\001" +
+ "\002\000\002\001\ufecc\000\002\001\ufecd\000\002\001\ufece" +
+ "\000\002\001\ufe84\000\062\031\126\032\153\033\157\034" +
+ "\160\044\105\047\310\053\237\073\124\077\317\100\132" +
+ "\105\134\114\047\142\043\150\051\154\305\155\042\157" +
+ "\320\160\200\161\304\162\045\177\040\201\046\202\156" +
+ "\203\145\001\002\000\004\040\354\001\ufebd\000\062\031" +
+ "\126\032\153\033\157\034\160\044\105\047\310\053\237" +
+ "\073\124\077\317\100\132\105\134\114\047\142\043\150" +
+ "\051\154\305\155\042\157\320\160\200\161\304\162\045" +
+ "\177\040\201\046\202\156\203\145\001\002\000\002\001" +
+ "\ufeb9\000\062\031\126\032\153\033\157\034\160\044\105" +
+ "\047\310\053\237\073\124\077\317\100\132\105\134\114" +
+ "\047\142\043\150\051\154\305\155\042\157\320\160\200" +
+ "\161\304\162\045\177\040\201\046\202\156\203\145\001" +
+ "\002\000\002\001\ufeb7\000\002\001\ufeac\000\002\001\ufeae" +
+ "\000\002\001\ufeb1\000\002\001\ufeaa\000\002\001\ufeaf\000" +
+ "\002\001\ufeb5\000\002\001\ufeb4\000\002\001\ufead\000\002" +
+ "\001\ufeb2\000\002\001\ufeab\000\002\001\ufeb8\000\002\001" +
+ "\ufeb6\000\062\031\126\032\153\033\157\034\160\044\105" +
+ "\047\310\053\237\073\124\077\317\100\132\105\134\114" +
+ "\047\142\043\150\051\154\305\155\042\157\320\160\200" +
+ "\161\304\162\045\177\040\201\046\202\156\203\145\001" +
+ "\002\000\002\001\ufeb3\000\002\001\ufeb0\000\002\001\ufea9" +
+ "\000\002\001\ufea5\000\004\135\316\001\ufea1\000\002\001" +
+ "\ufe85\000\002\001\ufe86\000\002\001\ufec1\000\010\026\343" +
+ "\027\344\030\345\001\ufed6\000\002\001\ufedb\000\010\026" +
+ "\343\027\344\030\345\001\ufed7\000\002\001\ufedc\000\010" +
+ "\026\343\027\344\030\345\001\ufed4\000\002\001\ufed9\000" +
+ "\010\144\u010f\145\u010e\146\u0110\001\ufeec\000\002\001\uff00" +
+ "\000\004\200\241\001\002\000\102\031\126\032\153\033" +
+ "\157\034\160\037\205\044\105\047\310\053\237\072\302" +
+ "\073\124\077\303\100\132\102\231\103\217\105\134\112" +
+ "\161\114\047\124\122\142\043\150\051\152\170\154\305" +
+ "\155\042\156\207\157\313\160\200\161\304\162\045\177" +
+ "\040\201\046\202\156\203\145\001\002\000\102\031\126" +
+ "\032\153\033\157\034\160\037\205\044\105\047\310\053" +
+ "\237\072\302\073\124\077\303\100\132\102\231\103\217" +
+ "\105\134\112\161\114\047\124\122\142\043\150\051\152" +
+ "\170\154\305\155\042\156\207\157\313\160\200\161\304" +
+ "\162\045\177\040\201\046\202\156\203\145\001\002\000" +
+ "\102\031\126\032\153\033\157\034\160\037\205\044\105" +
+ "\047\310\053\237\072\302\073\124\077\303\100\132\102" +
+ "\231\103\217\105\134\112\161\114\047\124\122\142\043" +
+ "\150\051\152\170\154\305\155\042\156\207\157\313\160" +
+ "\200\161\304\162\045\177\040\201\046\202\156\203\145" +
+ "\001\002\000\010\026\343\027\344\030\345\001\ufed8\000" +
+ "\012\024\u0117\025\u0115\110\u0116\131\u0114\001\ufede\000\002" +
+ "\001\ufee2\000\064\031\126\032\153\033\157\034\160\044" +
+ "\105\047\310\053\237\072\302\073\124\077\303\100\132" +
+ "\105\134\114\047\142\043\150\051\154\305\155\042\157" +
+ "\313\160\200\161\304\162\045\177\040\201\046\202\156" +
+ "\203\145\001\002\000\064\031\126\032\153\033\157\034" +
+ "\160\044\105\047\310\053\237\072\302\073\124\077\303" +
+ "\100\132\105\134\114\047\142\043\150\051\154\305\155" +
+ "\042\157\313\160\200\161\304\162\045\177\040\201\046" +
+ "\202\156\203\145\001\002\000\064\031\126\032\153\033" +
+ "\157\034\160\044\105\047\310\053\237\072\302\073\124" +
+ "\077\303\100\132\105\134\114\047\142\043\150\051\154" +
+ "\305\155\042\157\313\160\200\161\304\162\045\177\040" +
+ "\201\046\202\156\203\145\001\002\000\064\031\126\032" +
+ "\153\033\157\034\160\044\105\047\310\053\237\072\302" +
+ "\073\124\077\303\100\132\105\134\114\047\142\043\150" +
+ "\051\154\305\155\042\157\313\160\200\161\304\162\045" +
+ "\177\040\201\046\202\156\203\145\001\002\000\012\024" +
+ "\u0117\025\u0115\110\u0116\131\u0114\001\ufee0\000\002\001\ufee4" +
+ "\000\012\024\u0117\025\u0115\110\u0116\131\u0114\001\ufedf\000" +
+ "\002\001\ufee3\000\002\001\uff10\000\002\001\uff1a\000\004" +
+ "\200\241\001\uff1b\000\002\001\ufe8b\000\002\001\ufe88\000" +
+ "\002\001\ufe82\000\010\144\u010f\145\u010e\146\u0110\001\ufeeb" +
+ "\000\002\001\ufeff\000\002\001\uff69\000\010\045\260\052" +
+ "\u0126\100\257\001\002\000\022\053\065\062\067\130\066" +
+ "\134\077\142\055\160\050\163\074\201\046\001\002\000" +
+ "\002\001\uff4b\000\002\001\uff6a\000\006\150\u012c\201\046" +
+ "\001\002\000\010\144\u010f\145\u010e\146\u0110\001\ufee7\000" +
+ "\002\001\ufefb\000\002\001\uffa0\000\134\031\126\032\153" +
+ "\033\157\034\160\036\u013f\037\205\044\105\047\310\053" +
+ "\237\072\302\073\124\077\303\100\132\102\231\103\217" +
+ "\104\u0140\105\134\112\161\113\u013b\114\047\115\u0134\124" +
+ "\122\125\u013a\142\u0131\143\u0142\150\051\152\170\153\u0132" +
+ "\154\305\155\042\156\207\157\313\160\200\161\304\162" +
+ "\045\164\u0143\165\u013c\166\u013e\167\u013d\170\u0138\171\u0133" +
+ "\177\040\201\046\202\156\203\145\001\002\000\134\031" +
+ "\126\032\153\033\157\034\160\036\u013f\037\205\044\105" +
+ "\047\310\053\237\072\302\073\124\077\303\100\132\102" +
+ "\231\103\217\104\u0140\105\134\112\161\113\u013b\114\047" +
+ "\115\u0134\124\122\125\u013a\142\u0131\143\u0142\150\051\152" +
+ "\170\153\u0132\154\305\155\042\156\207\157\313\160\200" +
+ "\161\304\162\045\164\u0143\165\u013c\166\u013e\167\u013d\170" +
+ "\u0138\171\u0133\177\040\201\046\202\156\203\145\001\002" +
+ "\000\134\031\126\032\153\033\157\034\160\036\u013f\037" +
+ "\205\044\105\047\310\053\237\072\302\073\124\077\303" +
+ "\100\132\102\231\103\217\104\u0140\105\134\112\161\113" +
+ "\u013b\114\047\115\u0134\124\122\125\u013a\142\u0131\143\u0142" +
+ "\150\051\152\170\153\u0132\154\305\155\042\156\207\157" +
+ "\313\160\200\161\304\162\045\164\u0143\165\u013c\166\u013e" +
+ "\167\u013d\170\u0138\171\u0133\177\040\201\046\202\156\203" +
+ "\145\001\002\000\134\031\126\032\153\033\157\034\160" +
+ "\036\u013f\037\205\044\105\047\310\053\237\072\302\073" +
+ "\124\077\303\100\132\102\231\103\217\104\u0140\105\134" +
+ "\112\161\113\u013b\114\047\115\u0134\124\122\125\u013a\142" +
+ "\u0131\143\u0142\150\051\152\170\153\u0132\154\305\155\042" +
+ "\156\207\157\313\160\200\161\304\162\045\164\u0143\165" +
+ "\u013c\166\u013e\167\u013d\170\u0138\171\u0133\177\040\201\046" +
+ "\202\156\203\145\001\002\000\066\031\126\032\153\033" +
+ "\157\034\160\044\105\047\310\053\237\072\302\073\124" +
+ "\077\303\100\132\105\134\114\047\142\043\150\051\151" +
+ "\u0129\154\305\155\042\157\313\160\200\161\304\162\045" +
+ "\177\040\201\046\202\156\203\145\001\002\000\064\031" +
+ "\126\032\153\033\157\034\160\044\105\047\310\053\237" +
+ "\072\302\073\124\077\303\100\132\105\134\114\047\142" +
+ "\043\150\051\154\305\155\042\157\313\160\200\161\304" +
+ "\162\045\177\040\201\046\202\156\203\145\001\002\000" +
+ "\116\031\126\032\153\033\157\034\160\036\u013f\044\105" +
+ "\047\310\053\237\072\302\073\124\077\303\100\132\104" +
+ "\u0140\105\134\113\u013b\114\047\115\u0134\125\u013a\142\u0131" +
+ "\143\u0142\150\051\153\u0132\154\305\155\042\157\313\160" +
+ "\200\161\304\162\045\164\u0143\165\u013c\166\u013e\167\u013d" +
+ "\170\u0138\171\u0133\177\040\201\046\202\156\203\145\001" +
+ "\002\000\116\031\126\032\153\033\157\034\160\036\u013f" +
+ "\044\105\047\310\053\237\072\302\073\124\077\303\100" +
+ "\132\104\u0140\105\134\113\u013b\114\047\115\u0134\125\u013a" +
+ "\142\u0131\143\u0142\150\051\153\u0132\154\305\155\042\157" +
+ "\313\160\200\161\304\162\045\164\u0143\165\u013c\166\u013e" +
+ "\167\u013d\170\u0138\171\u0133\177\040\201\046\202\156\203" +
+ "\145\001\002\000\002\001\uff27\000\010\144\u0147\145\u0146" +
+ "\146\u0148\001\ufee6\000\032\060\u015a\070\u0158\071\u0153\076" +
+ "\u0152\106\u015b\107\u0154\116\u0151\117\u0156\120\u0155\121\u0150" +
+ "\122\u0159\123\u0157\001\uff15\000\116\031\126\032\153\033" +
+ "\157\034\160\036\u013f\044\105\047\310\053\237\072\302" +
+ "\073\124\077\303\100\132\104\u0140\105\134\113\u013b\114" +
+ "\047\115\u0134\125\u013a\142\u0131\143\u0142\150\051\153\u0132" +
+ "\154\305\155\042\157\313\160\200\161\304\162\045\164" +
+ "\u0143\165\u013c\166\u013e\167\u013d\170\u0138\171\u0133\177\040" +
+ "\201\046\202\156\203\145\001\002\000\012\024\u0117\025" +
+ "\u0115\110\u0116\131\u0114\001\ufee1\000\064\031\126\032\153" +
+ "\033\157\034\160\044\105\047\310\053\237\072\302\073" +
+ "\124\077\303\100\132\105\134\114\047\142\043\150\051" +
+ "\154\305\155\042\157\313\160\200\161\304\162\045\177" +
+ "\040\201\046\202\156\203\145\001\002\000\064\031\126" +
+ "\032\153\033\157\034\160\044\105\047\310\053\237\072" +
+ "\302\073\124\077\303\100\132\105\134\114\047\142\043" +
+ "\150\051\154\305\155\042\157\313\160\200\161\304\162" +
+ "\045\177\040\201\046\202\156\203\145\001\002\000\116" +
+ "\031\126\032\153\033\157\034\160\036\u013f\044\105\047" +
+ "\310\053\237\072\302\073\124\077\303\100\132\104\u0140" +
+ "\105\134\113\u013b\114\047\115\u0134\125\u013a\142\u0131\143" +
+ "\u0142\150\051\153\u0132\154\305\155\042\157\313\160\200" +
+ "\161\304\162\045\164\u0143\165\u013c\166\u013e\167\u013d\170" +
+ "\u0138\171\u0133\177\040\201\046\202\156\203\145\001\002" +
+ "\000\116\031\126\032\153\033\157\034\160\036\u013f\044" +
+ "\105\047\310\053\237\072\302\073\124\077\303\100\132" +
+ "\104\u0140\105\134\113\u013b\114\047\115\u0134\125\u013a\142" +
+ "\u0131\143\u0142\150\051\153\u0132\154\305\155\042\157\313" +
+ "\160\200\161\304\162\045\164\u0143\165\u013c\166\u013e\167" +
+ "\u013d\170\u0138\171\u0133\177\040\201\046\202\156\203\145" +
+ "\001\002\000\116\031\126\032\153\033\157\034\160\036" +
+ "\u013f\044\105\047\310\053\237\072\302\073\124\077\303" +
+ "\100\132\104\u0140\105\134\113\u013b\114\047\115\u0134\125" +
+ "\u013a\142\u0131\143\u0142\150\051\153\u0132\154\305\155\042" +
+ "\157\313\160\200\161\304\162\045\164\u0143\165\u013c\166" +
+ "\u013e\167\u013d\170\u0138\171\u0133\177\040\201\046\202\156" +
+ "\203\145\001\002\000\064\031\126\032\153\033\157\034" +
+ "\160\044\105\047\310\053\237\072\302\073\124\077\303" +
+ "\100\132\105\134\114\047\142\043\150\051\154\305\155" +
+ "\042\157\313\160\200\161\304\162\045\177\040\201\046" +
+ "\202\156\203\145\001\002\000\064\031\126\032\153\033" +
+ "\157\034\160\044\105\047\310\053\237\072\302\073\124" +
+ "\077\303\100\132\105\134\114\047\142\043\150\051\154" +
+ "\305\155\042\157\313\160\200\161\304\162\045\177\040" +
+ "\201\046\202\156\203\145\001\002\000\002\001\uff2c\000" +
+ "\064\031\126\032\153\033\157\034\160\044\105\047\310" +
+ "\053\237\072\302\073\124\077\303\100\132\105\134\114" +
+ "\047\142\043\150\051\154\305\155\042\157\313\160\200" +
+ "\161\304\162\045\177\040\201\046\202\156\203\145\001" +
+ "\002\000\116\031\126\032\153\033\157\034\160\036\u013f" +
+ "\044\105\047\310\053\237\072\302\073\124\077\303\100" +
+ "\132\104\u0140\105\134\113\u013b\114\047\115\u0134\125\u013a" +
+ "\142\u0131\143\u0142\150\051\153\u0132\154\305\155\042\157" +
+ "\313\160\200\161\304\162\045\164\u0143\165\u013c\166\u013e" +
+ "\167\u013d\170\u0138\171\u0133\177\040\201\046\202\156\203" +
+ "\145\001\002\000\002\001\uff13\000\010\144\u0147\145\u0146" +
+ "\146\u0148\001\ufee8\000\064\031\126\032\153\033\157\034" +
+ "\160\044\105\047\310\053\237\072\302\073\124\077\303" +
+ "\100\132\105\134\114\047\142\043\150\051\154\305\155" +
+ "\042\157\313\160\200\161\304\162\045\177\040\201\046" +
+ "\202\156\203\145\001\002\000\064\031\126\032\153\033" +
+ "\157\034\160\044\105\047\310\053\237\072\302\073\124" +
+ "\077\303\100\132\105\134\114\047\142\043\150\051\154" +
+ "\305\155\042\157\313\160\200\161\304\162\045\177\040" +
+ "\201\046\202\156\203\145\001\002\000\064\031\126\032" +
+ "\153\033\157\034\160\044\105\047\310\053\237\072\302" +
+ "\073\124\077\303\100\132\105\134\114\047\142\043\150" +
+ "\051\154\305\155\042\157\313\160\200\161\304\162\045" +
+ "\177\040\201\046\202\156\203\145\001\002\000\010\144" +
+ "\u0147\145\u0146\146\u0148\001\ufeea\000\010\144\u0147\145\u0146" +
+ "\146\u0148\001\ufeed\000\002\001\uff11\000\002\001\uff0f\000" +
+ "\002\001\uff12\000\010\144\u0147\145\u0146\146\u0148\001\ufeec" +
+ "\000\010\144\u0147\145\u0146\146\u0148\001\ufee9\000\064\031" +
+ "\126\032\153\033\157\034\160\044\105\047\310\053\237" +
+ "\072\302\073\124\077\303\100\132\105\134\114\047\142" +
+ "\043\150\051\154\305\155\042\157\313\160\200\161\304" +
+ "\162\045\177\040\201\046\202\156\203\145\001\002\000" +
+ "\064\031\126\032\153\033\157\034\160\044\105\047\310" +
+ "\053\237\072\302\073\124\077\303\100\132\105\134\114" +
+ "\047\142\043\150\051\154\305\155\042\157\313\160\200" +
+ "\161\304\162\045\177\040\201\046\202\156\203\145\001" +
+ "\002\000\064\031\126\032\153\033\157\034\160\044\105" +
+ "\047\310\053\237\072\302\073\124\077\303\100\132\105" +
+ "\134\114\047\142\043\150\051\154\305\155\042\157\313" +
+ "\160\200\161\304\162\045\177\040\201\046\202\156\203" +
+ "\145\001\002\000\064\031\126\032\153\033\157\034\160" +
+ "\044\105\047\310\053\237\072\302\073\124\077\303\100" +
+ "\132\105\134\114\047\142\043\150\051\154\305\155\042" +
+ "\157\313\160\200\161\304\162\045\177\040\201\046\202" +
+ "\156\203\145\001\002\000\064\031\126\032\153\033\157" +
+ "\034\160\044\105\047\310\053\237\072\302\073\124\077" +
+ "\303\100\132\105\134\114\047\142\043\150\051\154\305" +
+ "\155\042\157\313\160\200\161\304\162\045\177\040\201" +
+ "\046\202\156\203\145\001\002\000\064\031\126\032\153" +
+ "\033\157\034\160\044\105\047\310\053\237\072\302\073" +
+ "\124\077\303\100\132\105\134\114\047\142\043\150\051" +
+ "\154\305\155\042\157\313\160\200\161\304\162\045\177" +
+ "\040\201\046\202\156\203\145\001\002\000\064\031\126" +
+ "\032\153\033\157\034\160\044\105\047\310\053\237\072" +
+ "\302\073\124\077\303\100\132\105\134\114\047\142\043" +
+ "\150\051\154\305\155\042\157\313\160\200\161\304\162" +
+ "\045\177\040\201\046\202\156\203\145\001\002\000\064" +
+ "\031\126\032\153\033\157\034\160\044\105\047\310\053" +
+ "\237\072\302\073\124\077\303\100\132\105\134\114\047" +
+ "\142\043\150\051\154\305\155\042\157\313\160\200\161" +
+ "\304\162\045\177\040\201\046\202\156\203\145\001\002" +
+ "\000\064\031\126\032\153\033\157\034\160\044\105\047" +
+ "\310\053\237\072\302\073\124\077\303\100\132\105\134" +
+ "\114\047\142\043\150\051\154\305\155\042\157\313\160" +
+ "\200\161\304\162\045\177\040\201\046\202\156\203\145" +
+ "\001\002\000\064\031\126\032\153\033\157\034\160\044" +
+ "\105\047\310\053\237\072\302\073\124\077\303\100\132" +
+ "\105\134\114\047\142\043\150\051\154\305\155\042\157" +
+ "\313\160\200\161\304\162\045\177\040\201\046\202\156" +
+ "\203\145\001\002\000\064\031\126\032\153\033\157\034" +
+ "\160\044\105\047\310\053\237\072\302\073\124\077\303" +
+ "\100\132\105\134\114\047\142\043\150\051\154\305\155" +
+ "\042\157\313\160\200\161\304\162\045\177\040\201\046" +
+ "\202\156\203\145\001\002\000\064\031\126\032\153\033" +
+ "\157\034\160\044\105\047\310\053\237\072\302\073\124" +
+ "\077\303\100\132\105\134\114\047\142\043\150\051\154" +
+ "\305\155\042\157\313\160\200\161\304\162\045\177\040" +
+ "\201\046\202\156\203\145\001\002\000\010\144\u0147\145" +
+ "\u0146\146\u0148\001\ufef7\000\010\144\u0147\145\u0146\146\u0148" +
+ "\001\ufef8\000\010\144\u0147\145\u0146\146\u0148\001\ufef1\000" +
+ "\010\144\u0147\145\u0146\146\u0148\001\ufef6\000\010\144\u0147" +
+ "\145\u0146\146\u0148\001\ufeef\000\010\144\u0147\145\u0146\146" +
+ "\u0148\001\ufef0\000\010\144\u0147\145\u0146\146\u0148\001\ufeee" +
+ "\000\010\144\u0147\145\u0146\146\u0148\001\ufef5\000\010\144" +
+ "\u0147\145\u0146\146\u0148\001\ufef4\000\010\144\u0147\145\u0146" +
+ "\146\u0148\001\ufef9\000\010\144\u0147\145\u0146\146\u0148\001" +
+ "\ufef2\000\010\144\u0147\145\u0146\146\u0148\001\ufef3\000\002" +
+ "\001\uff14\000\002\001\uff0e\000\010\144\u0147\145\u0146\146" +
+ "\u0148\001\ufeeb\000\010\144\u0147\145\u0146\146\u0148\001\ufee7" +
+ "\000\002\001\uff26\000\002\001\uff2a\000\002\001\uff28\000" +
+ "\002\001\uff2d\000\002\001\uff25\000\002\001\uff2b\000\010" +
+ "\144\u010f\145\u010e\146\u0110\001\ufee8\000\002\001\ufefc\000" +
+ "\010\045\260\052\u0126\100\257\001\002\000\002\001\uff49" +
+ "\000\010\045\260\052\u0126\100\257\001\002\000\002\001" +
+ "\uff4e\000\100\031\126\032\153\033\157\034\160\037\205" +
+ "\044\105\047\310\053\237\073\124\077\317\100\132\102" +
+ "\231\103\217\105\134\112\161\114\047\124\122\142\043" +
+ "\150\051\152\170\154\305\155\042\156\207\157\320\160" +
+ "\200\161\304\162\045\177\040\201\046\202\156\203\145" +
+ "\001\002\000\002\001\ufebb\000\134\031\126\032\153\033" +
+ "\157\034\160\036\130\037\205\044\105\047\223\053\237" +
+ "\072\234\073\124\077\174\100\132\102\231\103\217\104" +
+ "\162\105\134\112\161\113\226\114\047\115\141\124\122" +
+ "\125\163\142\213\143\210\150\051\152\170\153\220\154" +
+ "\171\155\042\156\207\157\127\160\200\161\142\162\045" +
+ "\164\131\165\202\166\143\167\150\170\224\171\112\177" +
+ "\040\201\046\202\156\203\145\001\002\000\002\001\uff53" +
+ "\000\002\001\uff1e\000\004\200\241\001\uff1f\000\004\201" +
+ "\046\001\002\000\004\151\060\001\uff97\000\102\031\126" +
+ "\032\153\033\157\034\160\037\205\044\105\047\310\053" +
+ "\237\072\302\073\124\077\303\100\132\102\231\103\217" +
+ "\105\134\112\161\114\047\124\122\142\043\150\051\152" +
+ "\170\154\305\155\042\156\207\157\313\160\200\161\304" +
+ "\162\045\177\040\201\046\202\156\203\145\001\002\000" +
+ "\102\031\126\032\153\033\157\034\160\037\205\044\105" +
+ "\047\310\053\237\072\302\073\124\077\303\100\132\102" +
+ "\231\103\217\105\134\112\161\114\047\124\122\142\043" +
+ "\150\051\152\170\154\305\155\042\156\207\157\313\160" +
+ "\200\161\304\162\045\177\040\201\046\202\156\203\145" +
+ "\001\002\000\102\031\126\032\153\033\157\034\160\037" +
+ "\205\044\105\047\310\053\237\072\302\073\124\077\303" +
+ "\100\132\102\231\103\217\105\134\112\161\114\047\124" +
+ "\122\142\043\150\051\152\170\154\305\155\042\156\207" +
+ "\157\313\160\200\161\304\162\045\177\040\201\046\202" +
+ "\156\203\145\001\002\000\002\001\ufed1\000\002\001\ufed0" +
+ "\000\002\001\ufed2\000\002\001\uff7f\000\002\001\ufec5\000" +
+ "\004\200\241\001\ufec8\000\002\001\ufe8c\000\002\001\ufe89" +
+ "\000\010\045\260\052\u0126\100\257\001\002\000\002\001" +
+ "\uff4c\000\134\031\126\032\153\033\157\034\160\036\u013f" +
+ "\037\205\044\105\047\310\053\237\072\302\073\124\077" +
+ "\303\100\132\102\231\103\217\104\u0140\105\134\112\161" +
+ "\113\u013b\114\047\115\u0134\124\122\125\u013a\142\u0131\143" +
+ "\u0142\150\051\152\170\153\u0132\154\305\155\042\156\207" +
+ "\157\313\160\200\161\304\162\045\164\u0143\165\u013c\166" +
+ "\u013e\167\u013d\170\u0138\171\u0133\177\040\201\046\202\156" +
+ "\203\145\001\002\000\006\041\u0197\075\u0196\001\uff36\000" +
+ "\002\001\uff41\000\012\172\u0195\173\u0193\174\u0194\175\u0192" +
+ "\001\uff30\000\002\001\uff43\000\116\031\126\032\153\033" +
+ "\157\034\160\036\u013f\044\105\047\310\053\237\072\302" +
+ "\073\124\077\303\100\132\104\u0140\105\134\113\u013b\114" +
+ "\047\115\u0134\125\u013a\142\u0131\143\u0142\150\051\153\u0132" +
+ "\154\305\155\042\157\313\160\200\161\304\162\045\164" +
+ "\u0143\165\u013c\166\u013e\167\u013d\170\u0138\171\u0133\177\040" +
+ "\201\046\202\156\203\145\001\002\000\116\031\126\032" +
+ "\153\033\157\034\160\036\u013f\044\105\047\310\053\237" +
+ "\072\302\073\124\077\303\100\132\104\u0140\105\134\113" +
+ "\u013b\114\047\115\u0134\125\u013a\142\u0131\143\u0142\150\051" +
+ "\153\u0132\154\305\155\042\157\313\160\200\161\304\162" +
+ "\045\164\u0143\165\u013c\166\u013e\167\u013d\170\u0138\171\u0133" +
+ "\177\040\201\046\202\156\203\145\001\002\000\116\031" +
+ "\126\032\153\033\157\034\160\036\u013f\044\105\047\310" +
+ "\053\237\072\302\073\124\077\303\100\132\104\u0140\105" +
+ "\134\113\u013b\114\047\115\u0134\125\u013a\142\u0131\143\u0142" +
+ "\150\051\153\u0132\154\305\155\042\157\313\160\200\161" +
+ "\304\162\045\164\u0143\165\u013c\166\u013e\167\u013d\170\u0138" +
+ "\171\u0133\177\040\201\046\202\156\203\145\001\002\000" +
+ "\116\031\126\032\153\033\157\034\160\036\u013f\044\105" +
+ "\047\310\053\237\072\302\073\124\077\303\100\132\104" +
+ "\u0140\105\134\113\u013b\114\047\115\u0134\125\u013a\142\u0131" +
+ "\143\u0142\150\051\153\u0132\154\305\155\042\157\313\160" +
+ "\200\161\304\162\045\164\u0143\165\u013c\166\u013e\167\u013d" +
+ "\170\u0138\171\u0133\177\040\201\046\202\156\203\145\001" +
+ "\002\000\116\031\126\032\153\033\157\034\160\036\u013f" +
+ "\044\105\047\310\053\237\072\302\073\124\077\303\100" +
+ "\132\104\u0140\105\134\113\u013b\114\047\115\u0134\125\u013a" +
+ "\142\u0131\143\u0142\150\051\153\u0132\154\305\155\042\157" +
+ "\313\160\200\161\304\162\045\164\u0143\165\u013c\166\u013e" +
+ "\167\u013d\170\u0138\171\u0133\177\040\201\046\202\156\203" +
+ "\145\001\002\000\116\031\126\032\153\033\157\034\160" +
+ "\036\u013f\044\105\047\310\053\237\072\302\073\124\077" +
+ "\303\100\132\104\u0140\105\134\113\u013b\114\047\115\u0134" +
+ "\125\u013a\142\u0131\143\u0142\150\051\153\u0132\154\305\155" +
+ "\042\157\313\160\200\161\304\162\045\164\u0143\165\u013c" +
+ "\166\u013e\167\u013d\170\u0138\171\u0133\177\040\201\046\202" +
+ "\156\203\145\001\002\000\012\172\u0195\173\u0193\174\u0194" +
+ "\175\u0192\001\uff2f\000\002\001\uff33\000\004\056\u019b\001" +
+ "\uff38\000\116\031\126\032\153\033\157\034\160\036\u013f" +
+ "\044\105\047\310\053\237\072\302\073\124\077\303\100" +
+ "\132\104\u0140\105\134\113\u013b\114\047\115\u0134\125\u013a" +
+ "\142\u0131\143\u0142\150\051\153\u0132\154\305\155\042\157" +
+ "\313\160\200\161\304\162\045\164\u0143\165\u013c\166\u013e" +
+ "\167\u013d\170\u0138\171\u0133\177\040\201\046\202\156\203" +
+ "\145\001\002\000\002\001\uff34\000\002\001\uff35\000\010" +
+ "\144\u010f\145\u010e\146\u0110\001\ufee9\000\002\001\ufefd\000" +
+ "\010\144\u010f\145\u010e\146\u0110\001\ufeea\000\002\001\ufefe" +
+ "\000\010\045\260\052\u0126\100\257\001\002\000\002\001" +
+ "\uff4d\000\134\031\126\032\153\033\157\034\160\036\130" +
+ "\037\205\044\105\047\223\053\237\072\234\073\124\077" +
+ "\174\100\132\102\231\103\217\104\162\105\134\112\161" +
+ "\113\226\114\047\115\141\124\122\125\163\142\213\143" +
+ "\210\150\051\152\170\153\220\154\171\155\042\156\207" +
+ "\157\127\160\200\161\142\162\045\164\131\165\202\166" +
+ "\143\167\150\170\224\171\112\177\040\201\046\202\156" +
+ "\203\145\001\uff58\000\004\137\u01a6\001\002\000\002\001" +
+ "\ufe98\000\134\031\126\032\153\033\157\034\160\036\u013f" +
+ "\037\205\044\105\047\310\053\237\072\302\073\124\077" +
+ "\303\100\132\102\231\103\217\104\u0140\105\134\112\161" +
+ "\113\u013b\114\047\115\u0134\124\122\125\u013a\142\u0131\143" +
+ "\u0142\150\051\152\170\153\u0132\154\305\155\042\156\207" +
+ "\157\313\160\200\161\304\162\045\164\u0143\165\u013c\166" +
+ "\u013e\167\u013d\170\u0138\171\u0133\177\040\201\046\202\156" +
+ "\203\145\001\002\000\004\074\u01aa\001\uff45\000\002\001" +
+ "\uff47\000\116\031\126\032\153\033\157\034\160\036\u013f" +
+ "\044\105\047\310\053\237\072\302\073\124\077\303\100" +
+ "\132\104\u0140\105\134\113\u013b\114\047\115\u0134\125\u013a" +
+ "\142\u0131\143\u0142\150\051\153\u0132\154\305\155\042\157" +
+ "\313\160\200\161\304\162\045\164\u0143\165\u013c\166\u013e" +
+ "\167\u013d\170\u0138\171\u0133\177\040\201\046\202\156\203" +
+ "\145\001\002\000\102\031\126\032\153\033\157\034\160" +
+ "\037\205\044\105\047\223\053\237\072\234\073\124\077" +
+ "\174\100\132\102\231\103\217\105\134\112\161\114\047" +
+ "\124\122\142\043\150\051\152\170\154\171\155\042\156" +
+ "\207\157\127\160\200\161\142\162\045\177\040\201\046" +
+ "\202\156\203\145\001\002\000\102\031\126\032\153\033" +
+ "\157\034\160\037\205\044\105\047\223\053\237\072\234" +
+ "\073\124\077\174\100\132\102\231\103\217\105\134\112" +
+ "\161\114\047\124\122\142\043\150\051\152\170\154\171" +
+ "\155\042\156\207\157\127\160\200\161\142\162\045\177" +
+ "\040\201\046\202\156\203\145\001\002\000\102\031\126" +
+ "\032\153\033\157\034\160\037\205\044\105\047\223\053" +
+ "\237\072\234\073\124\077\174\100\132\102\231\103\217" +
+ "\105\134\112\161\114\047\124\122\142\043\150\051\152" +
+ "\170\154\171\155\042\156\207\157\127\160\200\161\142" +
+ "\162\045\177\040\201\046\202\156\203\145\001\002\000" +
+ "\102\031\126\032\153\033\157\034\160\037\205\044\105" +
+ "\047\223\053\237\072\234\073\124\077\174\100\132\102" +
+ "\231\103\217\105\134\112\161\114\047\124\122\142\043" +
+ "\150\051\152\170\154\171\155\042\156\207\157\127\160" +
+ "\200\161\142\162\045\177\040\201\046\202\156\203\145" +
+ "\001\002\000\102\031\126\032\153\033\157\034\160\037" +
+ "\205\044\105\047\223\053\237\072\234\073\124\077\174" +
+ "\100\132\102\231\103\217\105\134\112\161\114\047\124" +
+ "\122\142\043\150\051\152\170\154\171\155\042\156\207" +
+ "\157\127\160\200\161\142\162\045\177\040\201\046\202" +
+ "\156\203\145\001\002\000\102\031\126\032\153\033\157" +
+ "\034\160\037\205\044\105\047\223\053\237\072\234\073" +
+ "\124\077\174\100\132\102\231\103\217\105\134\112\161" +
+ "\114\047\124\122\142\043\150\051\152\170\154\171\155" +
+ "\042\156\207\157\127\160\200\161\142\162\045\177\040" +
+ "\201\046\202\156\203\145\001\002\000\102\031\126\032" +
+ "\153\033\157\034\160\037\205\044\105\047\223\053\237" +
+ "\072\234\073\124\077\174\100\132\102\231\103\217\105" +
+ "\134\112\161\114\047\124\122\142\043\150\051\152\170" +
+ "\154\171\155\042\156\207\157\127\160\200\161\142\162" +
+ "\045\177\040\201\046\202\156\203\145\001\002\000\102" +
+ "\031\126\032\153\033\157\034\160\037\205\044\105\047" +
+ "\223\053\237\072\234\073\124\077\174\100\132\102\231" +
+ "\103\217\105\134\112\161\114\047\124\122\142\043\150" +
+ "\051\152\170\154\171\155\042\156\207\157\127\160\200" +
+ "\161\142\162\045\177\040\201\046\202\156\203\145\001" +
+ "\002\000\102\031\126\032\153\033\157\034\160\037\205" +
+ "\044\105\047\223\053\237\072\234\073\124\077\174\100" +
+ "\132\102\231\103\217\105\134\112\161\114\047\124\122" +
+ "\142\043\150\051\152\170\154\171\155\042\156\207\157" +
+ "\127\160\200\161\142\162\045\177\040\201\046\202\156" +
+ "\203\145\001\002\000\102\031\126\032\153\033\157\034" +
+ "\160\037\205\044\105\047\223\053\237\072\234\073\124" +
+ "\077\174\100\132\102\231\103\217\105\134\112\161\114" +
+ "\047\124\122\142\043\150\051\152\170\154\171\155\042" +
+ "\156\207\157\127\160\200\161\142\162\045\177\040\201" +
+ "\046\202\156\203\145\001\002\000\102\031\126\032\153" +
+ "\033\157\034\160\037\205\044\105\047\223\053\237\072" +
+ "\234\073\124\077\174\100\132\102\231\103\217\105\134" +
+ "\112\161\114\047\124\122\142\043\150\051\152\170\154" +
+ "\171\155\042\156\207\157\127\160\200\161\142\162\045" +
+ "\177\040\201\046\202\156\203\145\001\002\000\102\031" +
+ "\126\032\153\033\157\034\160\037\205\044\105\047\223" +
+ "\053\237\072\234\073\124\077\174\100\132\102\231\103" +
+ "\217\105\134\112\161\114\047\124\122\142\043\150\051" +
+ "\152\170\154\171\155\042\156\207\157\127\160\200\161" +
+ "\142\162\045\177\040\201\046\202\156\203\145\001\002" +
+ "\000\010\144\u010f\145\u010e\146\u0110\001\ufef7\000\002\001" +
+ "\uff0b\000\010\144\u010f\145\u010e\146\u0110\001\ufef8\000\002" +
+ "\001\uff0c\000\010\144\u010f\145\u010e\146\u0110\001\ufef1\000" +
+ "\002\001\uff05\000\010\144\u010f\145\u010e\146\u0110\001\ufef6" +
+ "\000\002\001\uff0a\000\010\144\u010f\145\u010e\146\u0110\001" +
+ "\ufef0\000\002\001\uff04\000\010\144\u010f\145\u010e\146\u0110" +
+ "\001\ufeef\000\002\001\uff03\000\010\144\u010f\145\u010e\146" +
+ "\u0110\001\ufeee\000\002\001\uff02\000\010\144\u010f\145\u010e" +
+ "\146\u0110\001\ufef5\000\002\001\uff09\000\010\144\u010f\145" +
+ "\u010e\146\u0110\001\ufef9\000\002\001\uff0d\000\010\144\u010f" +
+ "\145\u010e\146\u0110\001\ufef2\000\002\001\uff06\000\010\144" +
+ "\u010f\145\u010e\146\u0110\001\ufef4\000\002\001\uff08\000\010" +
+ "\144\u010f\145\u010e\146\u0110\001\ufef3\000\002\001\uff07\000" +
+ "\002\001\uff18\000\004\200\241\001\uff19\000\002\001\uff1c" +
+ "\000\004\200\241\001\uff1d\000\002\001\ufe8d\000\002\001" +
+ "\ufe8a\000\002\001\uff22\000\004\200\241\001\uff23\000\100" +
+ "\031\126\032\153\033\157\034\324\037\205\044\105\047" +
+ "\310\053\326\073\124\077\325\100\132\102\231\103\217" +
+ "\105\134\112\161\114\047\124\122\142\043\150\051\152" +
+ "\170\154\305\155\042\156\207\157\327\160\200\161\304" +
+ "\162\045\177\040\201\046\202\156\203\145\001\002\000" +
+ "\002\001\ufe94\000\100\031\126\032\153\033\157\034\160" +
+ "\037\205\044\105\047\310\053\237\073\124\077\317\100" +
+ "\132\102\231\103\217\105\134\112\161\114\047\124\122" +
+ "\142\043\150\051\152\170\154\305\155\042\156\207\157" +
+ "\320\160\200\161\304\162\045\177\040\201\046\202\156" +
+ "\203\145\001\002\000\002\001\ufe9f\000\004\140\u01dc\001" +
+ "\002\000\002\001\ufe79\000\010\142\055\160\050\201\046" +
+ "\001\002\000\010\142\055\160\050\201\046\001\002\000" +
+ "\006\051\u01f7\052\102\001\002\000\012\045\260\052\u01f1" +
+ "\100\257\136\u01f3\001\002\000\012\101\242\142\055\160" +
+ "\050\201\046\001\002\000\002\001\uff6b\000\006\051\uff93" +
+ "\052\uff93\001\uffa5\000\012\053\u01e5\142\055\160\050\201" +
+ "\046\001\002\000\010\142\055\160\050\201\046\001\002" +
+ "\000\006\051\104\052\102\001\002\000\006\051\u01e8\052" +
+ "\102\001\002\000\134\031\126\032\153\033\157\034\160" +
+ "\036\130\037\205\044\105\047\223\053\u01ea\072\234\073" +
+ "\124\077\174\100\132\102\231\103\217\104\162\105\134" +
+ "\112\161\113\226\114\047\115\141\124\122\125\163\142" +
+ "\213\143\210\150\051\152\170\153\220\154\171\155\042" +
+ "\156\207\157\127\160\200\161\142\162\045\164\131\165" +
+ "\202\166\143\167\150\170\224\171\112\177\040\201\046" +
+ "\202\156\203\145\001\002\000\002\001\uff8a\000\136\031" +
+ "\126\032\153\033\157\034\160\036\130\037\205\044\105" +
+ "\047\223\053\237\072\234\073\124\077\174\100\132\101" +
+ "\242\102\231\103\217\104\162\105\134\112\161\113\226" +
+ "\114\047\115\141\124\122\125\163\142\213\143\210\150" +
+ "\051\152\170\153\220\154\171\155\042\156\207\157\127" +
+ "\160\200\161\142\162\045\164\131\165\202\166\143\167" +
+ "\150\170\224\171\112\177\040\201\046\202\156\203\145" +
+ "\001\002\000\002\001\uff80\000\006\051\u01ed\052\102\001" +
+ "\002\000\134\031\126\032\153\033\157\034\160\036\130" +
+ "\037\205\044\105\047\223\053\u01ef\072\234\073\124\077" +
+ "\174\100\132\102\231\103\217\104\162\105\134\112\161" +
+ "\113\226\114\047\115\141\124\122\125\163\142\213\143" +
+ "\210\150\051\152\170\153\220\154\171\155\042\156\207" +
+ "\157\127\160\200\161\142\162\045\164\131\165\202\166" +
+ "\143\167\150\170\224\171\112\177\040\201\046\202\156" +
+ "\203\145\001\002\000\002\001\uff8b\000\136\031\126\032" +
+ "\153\033\157\034\160\036\130\037\205\044\105\047\223" +
+ "\053\237\072\234\073\124\077\174\100\132\101\242\102" +
+ "\231\103\217\104\162\105\134\112\161\113\226\114\047" +
+ "\115\141\124\122\125\163\142\213\143\210\150\051\152" +
+ "\170\153\220\154\171\155\042\156\207\157\127\160\200" +
+ "\161\142\162\045\164\131\165\202\166\143\167\150\170" +
+ "\224\171\112\177\040\201\046\202\156\203\145\001\002" +
+ "\000\002\001\uff81\000\022\053\u01f5\062\u01dd\130\u01de\134" +
+ "\u01e4\142\055\160\050\163\074\201\046\001\002\000\004" +
+ "\136\u01f4\001\002\000\002\001\ufe74\000\002\001\ufe75\000" +
+ "\010\142\055\160\050\201\046\001\002\000\002\001\uff6c" +
+ "\000\134\031\126\032\153\033\157\034\160\036\130\037" +
+ "\205\044\105\047\223\053\u01f9\072\234\073\124\077\174" +
+ "\100\132\102\231\103\217\104\162\105\134\112\161\113" +
+ "\226\114\047\115\141\124\122\125\163\142\213\143\210" +
+ "\150\051\152\170\153\220\154\171\155\042\156\207\157" +
+ "\127\160\200\161\142\162\045\164\131\165\202\166\143" +
+ "\167\150\170\224\171\112\177\040\201\046\202\156\203" +
+ "\145\001\002\000\002\001\uff88\000\136\031\126\032\153" +
+ "\033\157\034\160\036\130\037\205\044\105\047\223\053" +
+ "\237\072\234\073\124\077\174\100\132\101\242\102\231" +
+ "\103\217\104\162\105\134\112\161\113\226\114\047\115" +
+ "\141\124\122\125\163\142\213\143\210\150\051\152\170" +
+ "\153\220\154\171\155\042\156\207\157\127\160\200\161" +
+ "\142\162\045\164\131\165\202\166\143\167\150\170\224" +
+ "\171\112\177\040\201\046\202\156\203\145\001\002\000" +
+ "\002\001\uff7e\000\006\051\u01fc\052\102\001\002\000\134" +
+ "\031\126\032\153\033\157\034\160\036\130\037\205\044" +
+ "\105\047\223\053\u01fe\072\234\073\124\077\174\100\132" +
+ "\102\231\103\217\104\162\105\134\112\161\113\226\114" +
+ "\047\115\141\124\122\125\163\142\213\143\210\150\051" +
+ "\152\170\153\220\154\171\155\042\156\207\157\127\160" +
+ "\200\161\142\162\045\164\131\165\202\166\143\167\150" +
+ "\170\224\171\112\177\040\201\046\202\156\203\145\001" +
+ "\002\000\002\001\uff8d\000\136\031\126\032\153\033\157" +
+ "\034\160\036\130\037\205\044\105\047\223\053\237\072" +
+ "\234\073\124\077\174\100\132\101\242\102\231\103\217" +
+ "\104\162\105\134\112\161\113\226\114\047\115\141\124" +
+ "\122\125\163\142\213\143\210\150\051\152\170\153\220" +
+ "\154\171\155\042\156\207\157\127\160\200\161\142\162" +
+ "\045\164\131\165\202\166\143\167\150\170\224\171\112" +
+ "\177\040\201\046\202\156\203\145\001\002\000\002\001" +
+ "\uff83\000\006\051\u0201\052\102\001\002\000\134\031\126" +
+ "\032\153\033\157\034\160\036\130\037\205\044\105\047" +
+ "\223\053\u0203\072\234\073\124\077\174\100\132\102\231" +
+ "\103\217\104\162\105\134\112\161\113\226\114\047\115" +
+ "\141\124\122\125\163\142\213\143\210\150\051\152\170" +
+ "\153\220\154\171\155\042\156\207\157\127\160\200\161" +
+ "\142\162\045\164\131\165\202\166\143\167\150\170\224" +
+ "\171\112\177\040\201\046\202\156\203\145\001\002\000" +
+ "\002\001\uff8c\000\136\031\126\032\153\033\157\034\160" +
+ "\036\130\037\205\044\105\047\223\053\237\072\234\073" +
+ "\124\077\174\100\132\101\242\102\231\103\217\104\162" +
+ "\105\134\112\161\113\226\114\047\115\141\124\122\125" +
+ "\163\142\213\143\210\150\051\152\170\153\220\154\171" +
+ "\155\042\156\207\157\127\160\200\161\142\162\045\164" +
+ "\131\165\202\166\143\167\150\170\224\171\112\177\040" +
+ "\201\046\202\156\203\145\001\002\000\002\001\uff82\000" +
+ "\002\001\uff20\000\004\200\241\001\uff21\000\010\144\u010f" +
+ "\145\u010e\146\u0110\001\ufeed\000\002\001\uff01\000\002\001" +
+ "\ufec6\000\004\200\241\001\ufec9\000\100\031\126\032\153" +
+ "\033\157\034\160\037\205\044\105\047\310\053\237\073" +
+ "\124\077\317\100\132\102\231\103\217\105\134\112\161" +
+ "\114\047\124\122\142\043\150\051\152\170\154\305\155" +
+ "\042\156\207\157\320\160\200\161\304\162\045\177\040" +
+ "\201\046\202\156\203\145\001\002\000\002\001\ufebf\000" +
+ "\010\045\260\052\u0126\100\257\001\002\000\002\001\uff4a" +
+ "\000\100\031\126\032\153\033\157\034\160\037\205\044" +
+ "\105\047\310\053\237\073\124\077\317\100\132\102\231" +
+ "\103\217\105\134\112\161\114\047\124\122\142\043\150" +
+ "\051\152\170\154\305\155\042\156\207\157\320\160\200" +
+ "\161\304\162\045\177\040\201\046\202\156\203\145\001" +
+ "\002\000\100\031\126\032\153\033\157\034\160\037\205" +
+ "\044\105\047\310\053\237\073\124\077\317\100\132\102" +
+ "\231\103\217\105\134\112\161\114\047\124\122\142\043" +
+ "\150\051\152\170\154\305\155\042\156\207\157\320\160" +
+ "\200\161\304\162\045\177\040\201\046\202\156\203\145" +
+ "\001\002\000\002\001\ufea7\000\002\001\ufea3\000\134\031" +
+ "\126\032\153\033\157\034\160\036\130\037\205\044\105" +
+ "\047\223\053\237\072\234\073\124\077\174\100\132\102" +
+ "\231\103\217\104\162\105\134\112\161\113\226\114\047" +
+ "\115\141\124\122\125\163\142\213\143\210\150\051\152" +
+ "\170\153\220\154\171\155\042\156\207\157\127\160\200" +
+ "\161\142\162\045\164\131\165\202\166\143\167\150\170" +
+ "\224\171\112\177\040\201\046\202\156\203\145\001\002" +
+ "\000\134\031\126\032\153\033\157\034\160\036\u013f\037" +
+ "\205\044\105\047\310\053\237\072\302\073\124\077\303" +
+ "\100\132\102\231\103\217\104\u0140\105\134\112\161\113" +
+ "\u013b\114\047\115\u0134\124\122\125\u013a\142\u0131\143\u0142" +
+ "\150\051\152\170\153\u0132\154\305\155\042\156\207\157" +
+ "\313\160\200\161\304\162\045\164\u0143\165\u013c\166\u013e" +
+ "\167\u013d\170\u0138\171\u0133\177\040\201\046\202\156\203" +
+ "\145\001\002\000\002\001\uff31\000\002\001\uff3b\000\004" +
+ "\200\241\001\uff39\000\004\056\u0219\001\uff38\000\134\031" +
+ "\126\032\153\033\157\034\160\036\130\037\205\044\105" +
+ "\047\223\053\237\072\234\073\124\077\174\100\132\102" +
+ "\231\103\217\104\162\105\134\112\161\113\226\114\047" +
+ "\115\141\124\122\125\163\142\213\143\210\150\051\152" +
+ "\170\153\220\154\171\155\042\156\207\157\127\160\200" +
+ "\161\142\162\045\164\131\165\202\166\143\167\150\170" +
+ "\224\171\112\177\040\201\046\202\156\203\145\001\002" +
+ "\000\004\200\241\001\uff3a\000\002\001\uff3d\000\002\001" +
+ "\uff3c\000\002\001\uff16\000\004\200\241\001\uff17\000\002" +
+ "\001\ufe77\000\002\001\uff74\000\136\031\126\032\153\033" +
+ "\157\034\160\036\130\037\205\044\105\047\223\053\237" +
+ "\072\234\073\124\077\174\100\132\101\242\102\231\103" +
+ "\217\104\162\105\134\112\161\113\226\114\047\115\141" +
+ "\124\122\125\163\142\213\143\210\150\051\152\170\153" +
+ "\220\154\171\155\042\156\207\157\127\160\200\161\142" +
+ "\162\045\164\131\165\202\166\143\167\150\170\224\171" +
+ "\112\177\040\201\046\202\156\203\145\001\002\000\002" +
+ "\001\uff6e\000\002\001\uff92\000\010\051\u01e8\052\102\060" +
+ "\u0225\001\002\000\134\031\126\032\153\033\157\034\160" +
+ "\036\130\037\205\044\105\047\223\053\u0227\072\234\073" +
+ "\124\077\174\100\132\102\231\103\217\104\162\105\134" +
+ "\112\161\113\226\114\047\115\141\124\122\125\163\142" +
+ "\213\143\210\150\051\152\170\153\220\154\171\155\042" +
+ "\156\207\157\127\160\200\161\142\162\045\164\131\165" +
+ "\202\166\143\167\150\170\224\171\112\177\040\201\046" +
+ "\202\156\203\145\001\002\000\002\001\uff75\000\136\031" +
+ "\126\032\153\033\157\034\160\036\130\037\205\044\105" +
+ "\047\223\053\237\072\234\073\124\077\174\100\132\101" +
+ "\242\102\231\103\217\104\162\105\134\112\161\113\226" +
+ "\114\047\115\141\124\122\125\163\142\213\143\210\150" +
+ "\051\152\170\153\220\154\171\155\042\156\207\157\127" +
+ "\160\200\161\142\162\045\164\131\165\202\166\143\167" +
+ "\150\170\224\171\112\177\040\201\046\202\156\203\145" +
+ "\001\002\000\002\001\uff6f\000\004\051\u022a\001\002\000" +
+ "\134\031\126\032\153\033\157\034\160\036\130\037\205" +
+ "\044\105\047\223\053\237\072\234\073\124\077\174\100" +
+ "\132\102\231\103\217\104\162\105\134\112\161\113\226" +
+ "\114\047\115\141\124\122\125\163\142\213\143\210\150" +
+ "\051\152\170\153\220\154\171\155\042\156\207\157\127" +
+ "\160\200\161\142\162\045\164\131\165\202\166\143\167" +
+ "\150\170\224\171\112\177\040\201\046\202\156\203\145" +
+ "\001\002\000\004\100\257\001\002\000\002\001\uffbc\000" +
+ "\002\001\uff65\000\010\142\055\160\050\201\046\001\002" +
+ "\000\006\051\u023c\052\102\001\002\000\012\053\u0231\142" +
+ "\055\160\050\201\046\001\002\000\010\142\055\160\050" +
+ "\201\046\001\002\000\006\051\u0233\052\102\001\002\000" +
+ "\134\031\126\032\153\033\157\034\160\036\130\037\205" +
+ "\044\105\047\223\053\u0235\072\234\073\124\077\174\100" +
+ "\132\102\231\103\217\104\162\105\134\112\161\113\226" +
+ "\114\047\115\141\124\122\125\163\142\213\143\210\150" +
+ "\051\152\170\153\220\154\171\155\042\156\207\157\127" +
+ "\160\200\161\142\162\045\164\131\165\202\166\143\167" +
+ "\150\170\224\171\112\177\040\201\046\202\156\203\145" +
+ "\001\002\000\002\001\uff85\000\136\031\126\032\153\033" +
+ "\157\034\160\036\130\037\205\044\105\047\223\053\237" +
+ "\072\234\073\124\077\174\100\132\101\242\102\231\103" +
+ "\217\104\162\105\134\112\161\113\226\114\047\115\141" +
+ "\124\122\125\163\142\213\143\210\150\051\152\170\153" +
+ "\220\154\171\155\042\156\207\157\127\160\200\161\142" +
+ "\162\045\164\131\165\202\166\143\167\150\170\224\171" +
+ "\112\177\040\201\046\202\156\203\145\001\002\000\002" +
+ "\001\uff7b\000\006\051\u0238\052\102\001\002\000\134\031" +
+ "\126\032\153\033\157\034\160\036\130\037\205\044\105" +
+ "\047\223\053\u023a\072\234\073\124\077\174\100\132\102" +
+ "\231\103\217\104\162\105\134\112\161\113\226\114\047" +
+ "\115\141\124\122\125\163\142\213\143\210\150\051\152" +
+ "\170\153\220\154\171\155\042\156\207\157\127\160\200" +
+ "\161\142\162\045\164\131\165\202\166\143\167\150\170" +
+ "\224\171\112\177\040\201\046\202\156\203\145\001\002" +
+ "\000\002\001\uff86\000\136\031\126\032\153\033\157\034" +
+ "\160\036\130\037\205\044\105\047\223\053\237\072\234" +
+ "\073\124\077\174\100\132\101\242\102\231\103\217\104" +
+ "\162\105\134\112\161\113\226\114\047\115\141\124\122" +
+ "\125\163\142\213\143\210\150\051\152\170\153\220\154" +
+ "\171\155\042\156\207\157\127\160\200\161\142\162\045" +
+ "\164\131\165\202\166\143\167\150\170\224\171\112\177" +
+ "\040\201\046\202\156\203\145\001\002\000\002\001\uff7c" +
+ "\000\134\031\126\032\153\033\157\034\160\036\130\037" +
+ "\205\044\105\047\223\053\u023e\072\234\073\124\077\174" +
+ "\100\132\102\231\103\217\104\162\105\134\112\161\113" +
+ "\226\114\047\115\141\124\122\125\163\142\213\143\210" +
+ "\150\051\152\170\153\220\154\171\155\042\156\207\157" +
+ "\127\160\200\161\142\162\045\164\131\165\202\166\143" +
+ "\167\150\170\224\171\112\177\040\201\046\202\156\203" +
+ "\145\001\002\000\002\001\uff84\000\136\031\126\032\153" +
+ "\033\157\034\160\036\130\037\205\044\105\047\223\053" +
+ "\237\072\234\073\124\077\174\100\132\101\242\102\231" +
+ "\103\217\104\162\105\134\112\161\113\226\114\047\115" +
+ "\141\124\122\125\163\142\213\143\210\150\051\152\170" +
+ "\153\220\154\171\155\042\156\207\157\127\160\200\161" +
+ "\142\162\045\164\131\165\202\166\143\167\150\170\224" +
+ "\171\112\177\040\201\046\202\156\203\145\001\002\000" +
+ "\002\001\uff7a\000\006\051\u0241\052\102\001\002\000\134" +
+ "\031\126\032\153\033\157\034\160\036\130\037\205\044" +
+ "\105\047\223\053\u0243\072\234\073\124\077\174\100\132" +
+ "\102\231\103\217\104\162\105\134\112\161\113\226\114" +
+ "\047\115\141\124\122\125\163\142\213\143\210\150\051" +
+ "\152\170\153\220\154\171\155\042\156\207\157\127\160" +
+ "\200\161\142\162\045\164\131\165\202\166\143\167\150" +
+ "\170\224\171\112\177\040\201\046\202\156\203\145\001" +
+ "\002\000\002\001\uff87\000\136\031\126\032\153\033\157" +
+ "\034\160\036\130\037\205\044\105\047\223\053\237\072" +
+ "\234\073\124\077\174\100\132\101\242\102\231\103\217" +
+ "\104\162\105\134\112\161\113\226\114\047\115\141\124" +
+ "\122\125\163\142\213\143\210\150\051\152\170\153\220" +
+ "\154\171\155\042\156\207\157\127\160\200\161\142\162" +
+ "\045\164\131\165\202\166\143\167\150\170\224\171\112" +
+ "\177\040\201\046\202\156\203\145\001\002\000\002\001" +
+ "\uff7d\000\134\031\126\032\153\033\157\034\160\036\130" +
+ "\037\205\044\105\047\223\053\u0247\072\234\073\124\077" +
+ "\174\100\132\102\231\103\217\104\162\105\134\112\161" +
+ "\113\226\114\047\115\141\124\122\125\163\142\213\143" +
+ "\210\150\051\152\170\153\220\154\171\155\042\156\207" +
+ "\157\127\160\200\161\142\162\045\164\131\165\202\166" +
+ "\143\167\150\170\224\171\112\177\040\201\046\202\156" +
+ "\203\145\001\002\000\002\001\uff73\000\136\031\126\032" +
+ "\153\033\157\034\160\036\130\037\205\044\105\047\223" +
+ "\053\237\072\234\073\124\077\174\100\132\101\242\102" +
+ "\231\103\217\104\162\105\134\112\161\113\226\114\047" +
+ "\115\141\124\122\125\163\142\213\143\210\150\051\152" +
+ "\170\153\220\154\171\155\042\156\207\157\127\160\200" +
+ "\161\142\162\045\164\131\165\202\166\143\167\150\170" +
+ "\224\171\112\177\040\201\046\202\156\203\145\001\002" +
+ "\000\002\001\uff6d\000\024\052\075\053\065\062\067\130" +
+ "\066\134\077\142\055\160\050\163\074\201\046\001\uff68" +
+ "\000\002\001\uff66\000\010\051\u0201\052\102\060\u024c\001" +
+ "\002\000\134\031\126\032\153\033\157\034\160\036\130" +
+ "\037\205\044\105\047\223\053\u024e\072\234\073\124\077" +
+ "\174\100\132\102\231\103\217\104\162\105\134\112\161" +
+ "\113\226\114\047\115\141\124\122\125\163\142\213\143" +
+ "\210\150\051\152\170\153\220\154\171\155\042\156\207" +
+ "\157\127\160\200\161\142\162\045\164\131\165\202\166" +
+ "\143\167\150\170\224\171\112\177\040\201\046\202\156" +
+ "\203\145\001\002\000\002\001\uff77\000\136\031\126\032" +
+ "\153\033\157\034\160\036\130\037\205\044\105\047\223" +
+ "\053\237\072\234\073\124\077\174\100\132\101\242\102" +
+ "\231\103\217\104\162\105\134\112\161\113\226\114\047" +
+ "\115\141\124\122\125\163\142\213\143\210\150\051\152" +
+ "\170\153\220\154\171\155\042\156\207\157\127\160\200" +
+ "\161\142\162\045\164\131\165\202\166\143\167\150\170" +
+ "\224\171\112\177\040\201\046\202\156\203\145\001\002" +
+ "\000\002\001\uff71\000\010\051\u01fc\052\102\060\u0251\001" +
+ "\002\000\134\031\126\032\153\033\157\034\160\036\130" +
+ "\037\205\044\105\047\223\053\u0253\072\234\073\124\077" +
+ "\174\100\132\102\231\103\217\104\162\105\134\112\161" +
+ "\113\226\114\047\115\141\124\122\125\163\142\213\143" +
+ "\210\150\051\152\170\153\220\154\171\155\042\156\207" +
+ "\157\127\160\200\161\142\162\045\164\131\165\202\166" +
+ "\143\167\150\170\224\171\112\177\040\201\046\202\156" +
+ "\203\145\001\002\000\002\001\uff78\000\136\031\126\032" +
+ "\153\033\157\034\160\036\130\037\205\044\105\047\223" +
+ "\053\237\072\234\073\124\077\174\100\132\101\242\102" +
+ "\231\103\217\104\162\105\134\112\161\113\226\114\047" +
+ "\115\141\124\122\125\163\142\213\143\210\150\051\152" +
+ "\170\153\220\154\171\155\042\156\207\157\127\160\200" +
+ "\161\142\162\045\164\131\165\202\166\143\167\150\170" +
+ "\224\171\112\177\040\201\046\202\156\203\145\001\002" +
+ "\000\002\001\uff72\000\010\051\u01ed\052\102\060\u0256\001" +
+ "\002\000\134\031\126\032\153\033\157\034\160\036\130" +
+ "\037\205\044\105\047\223\053\u0258\072\234\073\124\077" +
+ "\174\100\132\102\231\103\217\104\162\105\134\112\161" +
+ "\113\226\114\047\115\141\124\122\125\163\142\213\143" +
+ "\210\150\051\152\170\153\220\154\171\155\042\156\207" +
+ "\157\127\160\200\161\142\162\045\164\131\165\202\166" +
+ "\143\167\150\170\224\171\112\177\040\201\046\202\156" +
+ "\203\145\001\002\000\002\001\uff76\000\136\031\126\032" +
+ "\153\033\157\034\160\036\130\037\205\044\105\047\223" +
+ "\053\237\072\234\073\124\077\174\100\132\101\242\102" +
+ "\231\103\217\104\162\105\134\112\161\113\226\114\047" +
+ "\115\141\124\122\125\163\142\213\143\210\150\051\152" +
+ "\170\153\220\154\171\155\042\156\207\157\127\160\200" +
+ "\161\142\162\045\164\131\165\202\166\143\167\150\170" +
+ "\224\171\112\177\040\201\046\202\156\203\145\001\002" +
+ "\000\002\001\uff70\000\004\140\u025b\001\002\000\004\051" +
+ "\u025c\001\002\000\134\031\126\032\153\033\157\034\160" +
+ "\036\130\037\205\044\105\047\223\053\237\072\234\073" +
+ "\124\077\174\100\132\102\231\103\217\104\162\105\134" +
+ "\112\161\113\226\114\047\115\141\124\122\125\163\142" +
+ "\213\143\210\150\051\152\170\153\220\154\171\155\042" +
+ "\156\207\157\127\160\200\161\142\162\045\164\131\165" +
+ "\202\166\143\167\150\170\224\171\112\177\040\201\046" +
+ "\202\156\203\145\001\002\000\004\100\257\001\002\000" +
+ "\002\001\uffbd\000\004\100\257\001\002\000\002\001\uffbb" +
+ "\000\134\031\126\032\153\033\157\034\160\036\130\037" +
+ "\205\044\105\047\223\053\237\072\234\073\124\077\174" +
+ "\100\132\102\231\103\217\104\162\105\134\112\161\113" +
+ "\226\114\047\115\141\124\122\125\163\142\213\143\210" +
+ "\150\051\152\170\153\220\154\171\155\042\156\207\157" +
+ "\127\160\200\161\142\162\045\164\131\165\202\166\143" +
+ "\167\150\170\224\171\112\177\040\201\046\202\156\203" +
+ "\145\001\002\000\024\052\075\053\065\062\067\130\066" +
+ "\134\077\142\055\160\050\163\074\201\046\001\uff68\000" +
+ "\024\052\075\053\065\062\067\130\066\134\077\142\055" +
+ "\160\050\163\074\201\046\001\uff68\000\004\137\u0265\001" +
+ "\002\000\004\051\u0266\001\002\000\134\031\126\032\153" +
+ "\033\157\034\160\036\130\037\205\044\105\047\223\053" +
+ "\237\072\234\073\124\077\174\100\132\102\231\103\217" +
+ "\104\162\105\134\112\161\113\226\114\047\115\141\124" +
+ "\122\125\163\142\213\143\210\150\051\152\170\153\220" +
+ "\154\171\155\042\156\207\157\127\160\200\161\142\162" +
+ "\045\164\131\165\202\166\143\167\150\170\224\171\112" +
+ "\177\040\201\046\202\156\203\145\001\002\000\004\100" +
+ "\257\001\002\000\002\001\uffbf\000\004\140\u026a\001\002" +
+ "\000\004\051\u026b\001\002\000\134\031\126\032\153\033" +
+ "\157\034\160\036\130\037\205\044\105\047\223\053\237" +
+ "\072\234\073\124\077\174\100\132\102\231\103\217\104" +
+ "\162\105\134\112\161\113\226\114\047\115\141\124\122" +
+ "\125\163\142\213\143\210\150\051\152\170\153\220\154" +
+ "\171\155\042\156\207\157\127\160\200\161\142\162\045" +
+ "\164\131\165\202\166\143\167\150\170\224\171\112\177" +
+ "\040\201\046\202\156\203\145\001\002\000\004\100\257" +
+ "\001\002\000\002\001\uffc0\000\004\100\257\001\002\000" +
+ "\002\001\uffbe\000\006\042\u0271\101\u0272\001\ufffd\000\010" +
+ "\142\055\160\050\201\046\001\002\000\022\114\047\142" +
+ "\043\150\051\155\042\160\050\162\045\177\040\201\046" +
+ "\001\uff9e\000\004\137\u0278\001\002\000\004\052\u0276\001" +
+ "\uff9d\000\002\001\uff9c\000\022\114\047\142\043\150\051" +
+ "\155\042\160\050\162\045\177\040\201\046\001\002\000" +
+ "\002\001\uff9b\000\004\042\u0279\001\ufffb\000\010\142\055" +
+ "\160\050\201\046\001\002\000\002\001\ufffa\000\002\001" +
+ "\ufffc\000\010\100\257\101\u028b\105\u028a\001\uffa5\000\004" +
+ "\055\u027e\001\002\000\010\142\055\160\050\201\046\001" +
+ "\002\000\010\100\257\101\u0282\105\u0281\001\002\000\002" +
+ "\001\uffb5\000\024\052\075\053\065\062\067\130\066\134" +
+ "\077\142\055\160\050\163\074\201\046\001\uff68\000\024" +
+ "\052\075\053\065\062\067\130\066\134\077\142\055\160" +
+ "\050\163\074\201\046\001\uff68\000\004\137\u0284\001\002" +
+ "\000\004\100\257\001\002\000\002\001\uffb6\000\004\140" +
+ "\u0287\001\002\000\004\100\257\001\002\000\002\001\uffb7" +
+ "\000\002\001\uffb8\000\024\052\075\053\065\062\067\130" +
+ "\066\134\077\142\055\160\050\163\074\201\046\001\uff68" +
+ "\000\024\052\075\053\065\062\067\130\066\134\077\142" +
+ "\055\160\050\163\074\201\046\001\uff68\000\004\137\u028d" +
+ "\001\002\000\004\100\257\001\002\000\002\001\uffb9\000" +
+ "\004\140\u0290\001\002\000\004\100\257\001\002\000\002" +
+ "\001\uffba\000\012\060\u0293\100\257\101\u0297\105\u0296\001" +
+ "\002\000\134\031\126\032\153\033\157\034\160\036\130" +
+ "\037\205\044\105\047\223\053\237\072\234\073\124\077" +
+ "\174\100\132\102\231\103\217\104\162\105\134\112\161" +
+ "\113\226\114\047\115\141\124\122\125\163\142\213\143" +
+ "\210\150\051\152\170\153\220\154\171\155\042\156\207" +
+ "\157\127\160\200\161\142\162\045\164\131\165\202\166" +
+ "\143\167\150\170\224\171\112\177\040\201\046\202\156" +
+ "\203\145\001\002\000\002\001\uffc3\000\002\001\uffc2\000" +
+ "\012\140\u029d\142\055\160\050\201\046\001\002\000\012" +
+ "\137\u0299\142\055\160\050\201\046\001\002\000\006\052" +
+ "\102\137\u029b\001\002\000\006\060\u0293\100\257\001\002" +
+ "\000\002\001\uffc4\000\006\060\u0293\100\257\001\002\000" +
+ "\002\001\uffc5\000\006\060\u0293\100\257\001\002\000\006" +
+ "\052\102\140\u029f\001\002\000\006\060\u0293\100\257\001" +
+ "\002\000\002\001\uffc7\000\002\001\uffc6\000\002\001\uffc1" +
+ "\000\004\100\u02a4\001\002\000\012\136\u02a6\142\055\160" +
+ "\050\201\046\001\002\000\006\052\102\136\u02a7\001\002" +
+ "\000\002\001\ufff8\000\002\001\ufff9\000\006\050\017\141" +
+ "\023\001\002\000\012\100\257\142\055\160\050\201\046" +
+ "\001\002\000\014\066\u02ad\100\257\142\055\160\050\201" +
+ "\046\001\uffdc\000\004\066\u02ad\001\uffdc\000\004\063\u02d0" +
+ "\001\uffe1\000\006\061\u02ae\202\u02b1\001\002\000\004\202" +
+ "\u02c7\001\002\000\024\077\u02bf\114\u02c5\142\u02c3\150\u02c6" +
+ "\155\u02c2\160\050\162\u02c4\177\u02c0\201\046\001\002\000" +
+ "\004\052\u02bc\001\uffdd\000\032\046\u02b4\051\u02b3\055\u02b5" +
+ "\077\uffcc\114\uffcc\142\uffcc\150\uffcc\155\uffcc\160\uffcc\162" +
+ "\uffcc\177\uffcc\201\uffcc\001\uffdf\000\002\001\uffdb\000\004" +
+ "\202\u02be\001\002\000\006\061\u02ae\202\u02bb\001\002\000" +
+ "\004\055\u02b6\001\002\000\004\202\u02b7\001\uffca\000\004" +
+ "\051\u02b8\001\uffcb\000\004\202\u02b9\001\002\000\002\001" +
+ "\uffc9\000\004\052\u02bc\001\uffde\000\006\051\u02b3\055\u02b5" +
+ "\001\uffcc\000\006\061\u02ae\202\u02bb\001\002\000\002\001" +
+ "\uffda\000\002\001\uffc8\000\002\001\uffd7\000\002\001\uffd3" +
+ "\000\002\001\uffd9\000\002\001\uffd4\000\004\151\056\001" +
+ "\uffd6\000\002\001\uffd5\000\002\001\uffd2\000\002\001\uffd8" +
+ "\000\006\051\u02c8\055\u02c9\001\uffd1\000\004\202\u02ce\001" +
+ "\002\000\004\055\u02ca\001\002\000\004\202\u02cb\001\uffcf" +
+ "\000\004\051\u02cc\001\uffd0\000\004\202\u02cd\001\002\000" +
+ "\002\001\uffce\000\002\001\uffcd\000\002\001\uffe6\000\004" +
+ "\202\u02d1\001\002\000\002\001\uffe0\000\004\066\u02ad\001" +
+ "\uffdc\000\004\066\u02ad\001\uffdc\000\004\063\u02d0\001\uffe1" +
+ "\000\002\001\uffe2\000\004\063\u02d0\001\uffe1\000\002\001" +
+ "\uffe7\000\004\063\u02d0\001\uffe1\000\002\001\uffe3\000\012" +
+ "\052\102\060\u02dd\064\u02dc\076\u02db\001\uffa6\000\022\114" +
+ "\047\142\043\150\051\155\042\160\050\162\045\177\040" +
+ "\201\046\001\002\000\022\114\047\142\043\150\051\155" +
+ "\042\160\050\162\045\177\040\201\046\001\002\000\022" +
+ "\114\047\142\043\150\051\155\042\160\050\162\045\177" +
+ "\040\201\046\001\002\000\004\100\u02df\001\002\000\024" +
+ "\052\075\053\065\062\067\130\066\134\077\142\055\160" +
+ "\050\163\074\201\046\001\uff68\000\004\136\u02e1\001\002" +
+ "\000\004\100\257\001\uff62\000\002\001\uffb2\000\002\001" +
+ "\uff61\000\004\131\u02e6\001\uffa7\000\002\001\uff9a\000\022" +
+ "\114\047\142\043\150\051\155\042\160\050\162\045\177" +
+ "\040\201\046\001\002\000\002\001\uff99\000\002\001\uffa9" +
+ "\000\004\131\u02e6\001\uffa8\000\002\001\uffaa\000\002\001" +
+ "\uffad\000\004\101\u02ed\001\uffff\000\012\061\u02ef\142\055" +
+ "\160\050\201\046\001\002\000\002\001\uff91\000\010\142" +
+ "\055\160\050\201\046\001\002\000\006\052\u02f1\137\u02f2" +
+ "\001\002\000\012\061\u02f4\142\055\160\050\201\046\001" +
+ "\002\000\002\001\ufffe\000\002\001\uff8f\000\010\142\055" +
+ "\160\050\201\046\001\002\000\002\001\uff8e\000\002\001" +
+ "\uff90\000\004\100\257\001\002\000\004\100\257\001\002" +
+ "\000\002\001\ufff7\000\002\001\ufff5\000\002\001\ufff6\000" +
+ "\014\066\u02ad\100\257\142\055\160\050\201\046\001\uffdc" +
+ "\000\004\066\u02ad\001\uffdc\000\004\063\u02d0\001\uffe1\000" +
+ "\002\001\uffe8\000\004\066\u02ad\001\uffdc\000\004\066\u02ad" +
+ "\001\uffdc\000\004\063\u02d0\001\uffe1\000\002\001\uffe4\000" +
+ "\004\063\u02d0\001\uffe1\000\002\001\uffe9\000\004\063\u02d0" +
+ "\001\uffe1\000\002\001\uffe5\000\004\100\257\001\002\000" +
+ "\004\100\257\001\002\000\002\001\ufff4\000\002\001\ufff2" +
+ "\000\002\001\ufff3\000\002\001\000" });
/** Access to parse-action table. */
+ @Override
public short[][] action_table() {return _action_table;}
/** reduce_goto
table. */
protected static final short[][] _reduce_table =
unpackFromStrings(new String[] {
- "\000\u02b4\000\006\106\003\107\004\001\001\000\002\001" +
+ "\000\u030b\000\006\106\003\107\004\001\001\000\002\001" +
"\001\000\024\012\024\013\013\037\014\051\010\067\006" +
- "\076\017\100\021\101\022\123\030\001\001\000\002\001" +
- "\001\000\002\001\001\000\010\031\u02b2\053\u02b0\054\041" +
+ "\076\017\100\021\101\023\123\030\001\001\000\002\001" +
+ "\001\000\002\001\001\000\010\031\u0309\053\u0307\054\043" +
"\001\001\000\002\001\001\000\002\001\001\000\002\001" +
- "\001\000\010\031\u02a5\053\u02a4\054\041\001\001\000\002" +
- "\001\001\000\010\031\u02a1\053\u029f\054\041\001\001\000" +
- "\002\001\001\000\002\001\001\000\006\053\u0294\054\041" +
- "\001\001\000\006\100\021\101\u0292\001\001\000\010\053" +
- "\066\054\041\055\u0282\001\001\000\002\001\001\000\002" +
+ "\001\000\010\031\u02fc\053\u02fb\054\043\001\001\000\002" +
+ "\001\001\000\010\031\u02f8\053\u02f6\054\043\001\001\000" +
+ "\002\001\001\000\002\001\001\000\006\053\u02eb\054\043" +
+ "\001\001\000\006\100\021\101\u02e9\001\001\000\002\001" +
+ "\001\000\010\053\067\054\043\055\u02d9\001\001\000\002" +
"\001\001\000\002\001\001\000\002\001\001\000\002\001" +
- "\001\000\002\001\001\000\006\053\u024c\054\041\001\001" +
- "\000\006\053\u023b\054\041\001\001\000\010\053\u0225\054" +
- "\041\102\u0226\001\001\000\006\053\u0219\054\041\001\001" +
- "\000\010\053\036\054\041\102\047\001\001\000\002\001" +
+ "\001\000\002\001\001\000\002\001\001\000\006\053\u02a2" +
+ "\054\043\001\001\000\006\053\u0291\054\043\001\001\000" +
+ "\010\053\u027b\054\043\102\u027c\001\001\000\006\053\u026f" +
+ "\054\043\001\001\000\010\053\040\054\043\102\051\001" +
"\001\000\002\001\001\000\002\001\001\000\002\001\001" +
"\000\002\001\001\000\002\001\001\000\002\001\001\000" +
- "\002\001\001\000\002\001\001\000\002\001\001\000\006" +
- "\053\051\054\041\001\001\000\002\001\001\000\002\001" +
- "\001\000\004\054\054\001\001\000\002\001\001\000\002" +
- "\001\001\000\002\001\001\000\140\002\106\003\105\004" +
- "\165\005\104\006\132\007\131\010\142\011\141\021\110" +
- "\022\107\023\202\024\201\025\155\026\154\030\u0208\031" +
- "\210\040\103\041\102\042\206\043\205\044\216\045\215" +
- "\046\174\047\172\053\200\054\041\057\122\060\121\061" +
- "\113\062\111\063\145\064\144\065\116\066\114\070\130" +
- "\071\127\073\157\074\156\102\135\113\140\114\137\115" +
- "\171\116\167\117\213\120\212\121\163\122\162\001\001" +
- "\000\016\014\070\015\065\017\u0203\053\066\054\041\055" +
- "\067\001\001\000\016\014\070\015\065\017\072\053\066" +
- "\054\041\055\067\001\001\000\010\053\066\054\041\055" +
- "\u01fe\001\001\000\010\053\066\054\041\055\u01f9\001\001" +
- "\000\010\053\066\054\041\055\u01f4\001\001\000\002\001" +
- "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
- "\000\016\014\070\015\065\017\u01ed\053\066\054\041\055" +
- "\067\001\001\000\002\001\001\000\010\053\066\054\041" +
- "\055\075\001\001\000\010\053\066\054\041\055\u01e4\001" +
- "\001\000\002\001\001\000\006\053\u01e3\054\041\001\001" +
- "\000\140\002\106\003\105\004\165\005\104\006\132\007" +
- "\131\010\142\011\141\021\110\022\107\023\202\024\201" +
- "\025\155\026\154\030\u01e0\031\210\040\103\041\102\042" +
- "\206\043\205\044\216\045\215\046\174\047\172\053\200" +
- "\054\041\057\122\060\121\061\113\062\111\063\145\064" +
- "\144\065\116\066\114\070\130\071\127\073\157\074\156" +
- "\102\135\113\140\114\137\115\171\116\167\117\213\120" +
- "\212\121\163\122\162\001\001\000\140\002\106\003\105" +
- "\004\165\005\104\006\132\007\131\010\142\011\141\021" +
- "\110\022\107\023\202\024\201\025\155\026\154\030\125" +
- "\031\210\040\103\041\102\042\206\043\205\044\216\045" +
- "\215\046\174\047\172\053\200\054\041\057\122\060\121" +
- "\061\113\062\111\063\145\064\144\065\116\066\114\070" +
- "\130\071\127\073\157\074\156\102\135\113\140\114\137" +
- "\115\171\116\167\117\213\120\212\121\163\122\162\001" +
- "\001\000\006\053\u01df\054\041\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
- "\002\001\001\000\004\072\u01d2\001\001\000\002\001\001" +
- "\000\002\001\001\000\016\014\070\015\u010c\016\u01cf\053" +
- "\066\054\041\055\067\001\001\000\002\001\001\000\002" +
+ "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
+ "\001\001\000\002\001\001\000\006\053\053\054\043\001" +
+ "\001\000\002\001\001\000\002\001\001\000\004\054\056" +
+ "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
+ "\001\000\146\002\114\003\113\004\174\005\112\006\137" +
+ "\007\136\010\151\011\150\021\116\022\115\023\215\024" +
+ "\214\025\164\026\163\030\u025e\031\224\040\110\041\107" +
+ "\042\221\043\220\044\232\045\231\046\205\047\203\053" +
+ "\213\054\043\057\106\060\105\061\120\062\117\063\154" +
+ "\064\153\065\124\066\122\070\135\071\134\073\166\074" +
+ "\165\102\143\113\146\114\145\115\200\116\176\117\227" +
+ "\120\226\121\172\122\171\124\211\125\210\126\202\001" +
+ "\001\000\016\014\072\015\070\017\u0259\053\067\054\043" +
+ "\055\071\001\001\000\016\014\072\015\070\017\075\053" +
+ "\067\054\043\055\071\001\001\000\010\053\067\054\043" +
+ "\055\u0254\001\001\000\010\053\067\054\043\055\u024f\001" +
+ "\001\000\010\053\067\054\043\055\u024a\001\001\000\002" +
"\001\001\000\002\001\001\000\002\001\001\000\002\001" +
- "\001\000\062\004\165\005\u01cc\006\132\007\131\021\110" +
- "\022\107\023\202\024\201\031\210\046\174\047\172\053" +
- "\200\054\041\061\u01cb\062\317\065\116\066\114\070\130" +
- "\071\127\073\157\074\156\102\135\121\163\122\162\001" +
- "\001\000\002\001\001\000\002\001\001\000\074\004\165" +
- "\006\132\007\131\021\110\022\107\023\202\024\201\031" +
- "\210\046\174\047\172\053\200\054\041\061\113\062\111" +
- "\065\116\066\114\070\130\071\127\073\157\074\156\102" +
- "\135\113\u01ca\114\u01c9\115\171\116\167\117\213\120\212" +
- "\121\163\122\162\001\001\000\150\002\106\003\105\004" +
- "\165\005\104\006\132\007\131\010\142\011\141\014\u01a6" +
- "\020\u01a4\021\110\022\107\023\202\024\201\025\155\026" +
- "\154\030\246\031\210\033\247\040\103\041\102\042\206" +
- "\043\205\044\216\045\215\046\174\047\172\053\u01a7\054" +
- "\041\055\u01a3\057\122\060\121\061\113\062\111\063\145" +
- "\064\144\065\116\066\114\070\130\071\127\073\157\074" +
- "\156\102\135\113\140\114\137\115\171\116\167\117\213" +
- "\120\212\121\163\122\162\001\001\000\002\001\001\000" +
- "\140\002\106\003\105\004\165\005\104\006\132\007\131" +
- "\010\142\011\141\021\110\022\107\023\202\024\201\025" +
- "\155\026\154\030\u019f\031\210\040\103\041\102\042\206" +
- "\043\205\044\216\045\215\046\174\047\172\053\200\054" +
- "\041\057\122\060\121\061\113\062\111\063\145\064\144" +
- "\065\116\066\114\070\130\071\127\073\157\074\156\102" +
- "\135\113\140\114\137\115\171\116\167\117\213\120\212" +
- "\121\163\122\162\001\001\000\002\001\001\000\002\001" +
- "\001\000\002\001\001\000\002\001\001\000\106\004\165" +
- "\005\u0199\006\132\007\131\010\142\011\141\021\110\022" +
- "\107\023\202\024\201\031\210\046\174\047\172\053\200" +
- "\054\041\057\u019a\060\u0163\061\113\062\111\065\116\066" +
- "\114\070\130\071\127\073\157\074\156\102\135\113\140" +
- "\114\137\115\171\116\167\117\213\120\212\121\163\122" +
- "\162\001\001\000\022\004\165\005\u0197\031\210\053\200" +
- "\054\041\102\135\121\u0198\122\360\001\001\000\002\001" +
+ "\001\000\010\053\067\054\043\055\u022e\001\001\000\016" +
+ "\014\072\015\070\017\u022c\053\067\054\043\055\071\001" +
+ "\001\000\002\001\001\000\010\053\067\054\043\055\100" +
+ "\001\001\000\010\053\067\054\043\055\u0223\001\001\000" +
+ "\002\001\001\000\006\053\u0222\054\043\001\001\000\146" +
+ "\002\114\003\113\004\174\005\112\006\137\007\136\010" +
+ "\151\011\150\021\116\022\115\023\215\024\214\025\164" +
+ "\026\163\030\u021f\031\224\040\110\041\107\042\221\043" +
+ "\220\044\232\045\231\046\205\047\203\053\213\054\043" +
+ "\057\106\060\105\061\120\062\117\063\154\064\153\065" +
+ "\124\066\122\070\135\071\134\073\166\074\165\102\143" +
+ "\113\146\114\145\115\200\116\176\117\227\120\226\121" +
+ "\172\122\171\124\211\125\210\126\202\001\001\000\146" +
+ "\002\114\003\113\004\174\005\112\006\137\007\136\010" +
+ "\151\011\150\021\116\022\115\023\215\024\214\025\164" +
+ "\026\163\030\132\031\224\040\110\041\107\042\221\043" +
+ "\220\044\232\045\231\046\205\047\203\053\213\054\043" +
+ "\057\106\060\105\061\120\062\117\063\154\064\153\065" +
+ "\124\066\122\070\135\071\134\073\166\074\165\102\143" +
+ "\113\146\114\145\115\200\116\176\117\227\120\226\121" +
+ "\172\122\171\124\211\125\210\126\202\001\001\000\006" +
+ "\053\u021e\054\043\001\001\000\002\001\001\000\002\001" +
+ "\001\000\002\001\001\000\002\001\001\000\106\004\174" +
+ "\005\u021d\006\137\007\136\010\151\011\150\021\116\022" +
+ "\115\023\215\024\214\031\224\046\205\047\203\053\213" +
+ "\054\043\057\u021c\060\u0168\061\120\062\117\065\124\066" +
+ "\122\070\135\071\134\073\166\074\165\102\143\113\146" +
+ "\114\145\115\200\116\176\117\227\120\226\121\172\122" +
+ "\171\001\001\000\002\001\001\000\002\001\001\000\002" +
+ "\001\001\000\004\072\u020f\001\001\000\002\001\001\000" +
+ "\002\001\001\000\002\001\001\000\016\014\072\015\u0123" +
+ "\016\u020c\053\067\054\043\055\071\001\001\000\002\001" +
"\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+ "\000\062\004\174\005\u0209\006\137\007\136\021\116\022" +
+ "\115\023\215\024\214\031\224\046\205\047\203\053\213" +
+ "\054\043\061\u0208\062\341\065\124\066\122\070\135\071" +
+ "\134\073\166\074\165\102\143\121\172\122\171\001\001" +
+ "\000\076\004\174\005\u010c\006\137\007\136\021\116\022" +
+ "\115\023\215\024\214\031\224\046\205\047\203\053\213" +
+ "\054\043\061\120\062\117\065\124\066\122\070\135\071" +
+ "\134\073\166\074\165\102\143\113\u0207\114\u0206\115\200" +
+ "\116\176\117\227\120\226\121\172\122\171\001\001\000" +
+ "\106\004\174\005\u0205\006\137\007\136\010\151\011\150" +
+ "\021\116\022\115\023\215\024\214\031\224\046\205\047" +
+ "\203\053\213\054\043\057\u0204\060\u0143\061\120\062\117" +
+ "\065\124\066\122\070\135\071\134\073\166\074\165\102" +
+ "\143\113\146\114\145\115\200\116\176\117\227\120\226" +
+ "\121\172\122\171\001\001\000\156\002\114\003\113\004" +
+ "\174\005\112\006\137\007\136\010\151\011\150\014\u01e1" +
+ "\020\u01df\021\116\022\115\023\215\024\214\025\164\026" +
+ "\163\030\265\031\224\033\266\040\110\041\107\042\221" +
+ "\043\220\044\232\045\231\046\205\047\203\053\u01e2\054" +
+ "\043\055\u01de\057\106\060\105\061\120\062\117\063\154" +
+ "\064\153\065\124\066\122\070\135\071\134\073\166\074" +
+ "\165\102\143\113\146\114\145\115\200\116\176\117\227" +
+ "\120\226\121\172\122\171\124\211\125\210\126\202\001" +
+ "\001\000\002\001\001\000\146\002\114\003\113\004\174" +
+ "\005\112\006\137\007\136\010\151\011\150\021\116\022" +
+ "\115\023\215\024\214\025\164\026\163\030\u01da\031\224" +
+ "\040\110\041\107\042\221\043\220\044\232\045\231\046" +
+ "\205\047\203\053\213\054\043\057\106\060\105\061\120" +
+ "\062\117\063\154\064\153\065\124\066\122\070\135\071" +
+ "\134\073\166\074\165\102\143\113\146\114\145\115\200" +
+ "\116\176\117\227\120\226\121\172\122\171\124\211\125" +
+ "\210\126\202\001\001\000\002\001\001\000\002\001\001" +
+ "\000\002\001\001\000\002\001\001\000\106\004\174\005" +
+ "\u01d5\006\137\007\136\010\151\011\150\021\116\022\115" +
+ "\023\215\024\214\031\224\046\205\047\203\053\213\054" +
+ "\043\057\u01d4\060\u0167\061\120\062\117\065\124\066\122" +
+ "\070\135\071\134\073\166\074\165\102\143\113\146\114" +
+ "\145\115\200\116\176\117\227\120\226\121\172\122\171" +
+ "\001\001\000\022\004\174\005\u01d2\031\224\053\213\054" +
+ "\043\102\143\121\u01d3\122\u0102\001\001\000\106\004\174" +
+ "\005\u01d1\006\137\007\136\010\151\011\150\021\116\022" +
+ "\115\023\215\024\214\031\224\046\205\047\203\053\213" +
+ "\054\043\057\u01d0\060\u014a\061\120\062\117\065\124\066" +
+ "\122\070\135\071\134\073\166\074\165\102\143\113\146" +
+ "\114\145\115\200\116\176\117\227\120\226\121\172\122" +
+ "\171\001\001\000\002\001\001\000\002\001\001\000\002" +
+ "\001\001\000\002\001\001\000\106\004\174\005\u01cf\006" +
+ "\137\007\136\010\151\011\150\021\116\022\115\023\215" +
+ "\024\214\031\224\046\205\047\203\053\213\054\043\057" +
+ "\u01ce\060\u014b\061\120\062\117\065\124\066\122\070\135" +
+ "\071\134\073\166\074\165\102\143\113\146\114\145\115" +
+ "\200\116\176\117\227\120\226\121\172\122\171\001\001" +
"\000\002\001\001\000\002\001\001\000\002\001\001\000" +
"\002\001\001\000\002\001\001\000\002\001\001\000\002" +
- "\001\001\000\002\001\001\000\016\014\070\015\u010c\016" +
- "\u016a\053\066\054\041\055\067\001\001\000\074\004\165" +
- "\006\132\007\131\021\110\022\107\023\202\024\201\031" +
- "\210\046\174\047\172\053\200\054\041\061\113\062\111" +
- "\065\116\066\114\070\130\071\127\073\157\074\156\102" +
- "\135\113\u0169\114\u0168\115\171\116\167\117\213\120\212" +
- "\121\163\122\162\001\001\000\074\004\165\006\132\007" +
- "\131\021\110\022\107\023\202\024\201\031\210\046\174" +
- "\047\172\053\200\054\041\061\113\062\111\065\116\066" +
- "\114\070\130\071\127\073\157\074\156\102\135\113\u0167" +
- "\114\u0166\115\171\116\167\117\213\120\212\121\163\122" +
- "\162\001\001\000\002\001\001\000\002\001\001\000\002" +
- "\001\001\000\002\001\001\000\016\014\070\015\u010c\016" +
- "\u012a\053\066\054\041\055\067\001\001\000\022\004\165" +
- "\005\u0128\031\210\053\200\054\041\102\135\121\u0129\122" +
- "\357\001\001\000\002\001\001\000\002\001\001\000\062" +
- "\004\165\005\u0127\006\132\007\131\021\110\022\107\023" +
- "\202\024\201\031\210\046\174\047\172\053\200\054\041" +
- "\061\u0126\062\361\065\116\066\114\070\130\071\127\073" +
- "\157\074\156\102\135\121\163\122\162\001\001\000\002" +
- "\001\001\000\140\002\106\003\105\004\165\005\104\006" +
- "\132\007\131\010\142\011\141\021\110\022\107\023\202" +
- "\024\201\025\155\026\154\030\u0125\031\210\040\103\041" +
- "\102\042\206\043\205\044\216\045\215\046\174\047\172" +
- "\053\200\054\041\057\122\060\121\061\113\062\111\063" +
- "\145\064\144\065\116\066\114\070\130\071\127\073\157" +
- "\074\156\102\135\113\140\114\137\115\171\116\167\117" +
- "\213\120\212\121\163\122\162\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
- "\016\014\070\015\u010c\016\u0119\053\066\054\041\055\067" +
- "\001\001\000\002\001\001\000\016\014\070\015\u010c\016" +
- "\u0117\053\066\054\041\055\067\001\001\000\074\004\165" +
- "\006\132\007\131\021\110\022\107\023\202\024\201\031" +
- "\210\046\174\047\172\053\200\054\041\061\113\062\111" +
- "\065\116\066\114\070\130\071\127\073\157\074\156\102" +
- "\135\113\u0116\114\u0115\115\171\116\167\117\213\120\212" +
- "\121\163\122\162\001\001\000\074\004\165\006\132\007" +
- "\131\021\110\022\107\023\202\024\201\031\210\046\174" +
- "\047\172\053\200\054\041\061\113\062\111\065\116\066" +
- "\114\070\130\071\127\073\157\074\156\102\135\113\u0113" +
- "\114\u0112\115\171\116\167\117\213\120\212\121\163\122" +
- "\162\001\001\000\002\001\001\000\002\001\001\000\002" +
- "\001\001\000\016\014\070\015\u010c\016\u010d\053\066\054" +
- "\041\055\067\001\001\000\074\004\165\006\132\007\131" +
- "\021\110\022\107\023\202\024\201\031\210\046\174\047" +
- "\172\053\200\054\041\061\113\062\111\065\116\066\114" +
- "\070\130\071\127\073\157\074\156\102\135\113\u010b\114" +
- "\u010a\115\171\116\167\117\213\120\212\121\163\122\162" +
- "\001\001\000\002\001\001\000\002\001\001\000\022\004" +
- "\165\005\u0108\031\210\053\200\054\041\102\135\121\u0109" +
- "\122\326\001\001\000\002\001\001\000\074\004\165\006" +
- "\132\007\131\021\110\022\107\023\202\024\201\031\210" +
- "\046\174\047\172\053\200\054\041\061\113\062\111\065" +
- "\116\066\114\070\130\071\127\073\157\074\156\102\135" +
- "\113\371\114\370\115\171\116\167\117\213\120\212\121" +
- "\163\122\162\001\001\000\002\001\001\000\002\001\001" +
- "\000\010\050\234\053\233\054\041\001\001\000\002\001" +
- "\001\000\002\001\001\000\062\004\165\005\223\006\132" +
- "\007\131\021\110\022\107\023\202\024\201\031\210\046" +
- "\174\047\172\053\200\054\041\061\221\062\220\065\116" +
- "\066\114\070\130\071\127\073\157\074\156\102\135\121" +
- "\163\122\162\001\001\000\002\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\144\002\106\003" +
- "\105\004\165\005\104\006\132\007\131\010\142\011\141" +
- "\021\110\022\107\023\202\024\201\025\155\026\154\030" +
- "\225\031\210\035\226\036\227\040\103\041\102\042\206" +
- "\043\205\044\216\045\215\046\174\047\172\053\200\054" +
- "\041\057\122\060\121\061\113\062\111\063\145\064\144" +
- "\065\116\066\114\070\130\071\127\073\157\074\156\102" +
- "\135\113\140\114\137\115\171\116\167\117\213\120\212" +
- "\121\163\122\162\001\001\000\002\001\001\000\002\001" +
- "\001\000\002\001\001\000\140\002\106\003\105\004\165" +
- "\005\104\006\132\007\131\010\142\011\141\021\110\022" +
- "\107\023\202\024\201\025\155\026\154\030\231\031\210" +
- "\040\103\041\102\042\206\043\205\044\216\045\215\046" +
- "\174\047\172\053\200\054\041\057\122\060\121\061\113" +
- "\062\111\063\145\064\144\065\116\066\114\070\130\071" +
- "\127\073\157\074\156\102\135\113\140\114\137\115\171" +
- "\116\167\117\213\120\212\121\163\122\162\001\001\000" +
- "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
- "\001\001\000\140\002\106\003\105\004\165\005\104\006" +
- "\132\007\131\010\142\011\141\021\110\022\107\023\202" +
- "\024\201\025\155\026\154\030\236\031\210\040\103\041" +
- "\102\042\206\043\205\044\216\045\215\046\174\047\172" +
- "\053\200\054\041\057\122\060\121\061\113\062\111\063" +
- "\145\064\144\065\116\066\114\070\130\071\127\073\157" +
- "\074\156\102\135\113\140\114\137\115\171\116\167\117" +
- "\213\120\212\121\163\122\162\001\001\000\006\031\243" +
- "\034\240\001\001\000\010\050\252\053\233\054\041\001" +
- "\001\000\002\001\001\000\142\002\106\003\105\004\165" +
- "\005\104\006\132\007\131\010\142\011\141\021\110\022" +
- "\107\023\202\024\201\025\155\026\154\030\246\031\210" +
- "\033\247\040\103\041\102\042\206\043\205\044\216\045" +
- "\215\046\174\047\172\053\200\054\041\057\122\060\121" +
- "\061\113\062\111\063\145\064\144\065\116\066\114\070" +
- "\130\071\127\073\157\074\156\102\135\113\140\114\137" +
- "\115\171\116\167\117\213\120\212\121\163\122\162\001" +
- "\001\000\140\002\106\003\105\004\165\005\104\006\132" +
- "\007\131\010\142\011\141\021\110\022\107\023\202\024" +
- "\201\025\155\026\154\030\244\031\210\040\103\041\102" +
- "\042\206\043\205\044\216\045\215\046\174\047\172\053" +
- "\200\054\041\057\122\060\121\061\113\062\111\063\145" +
- "\064\144\065\116\066\114\070\130\071\127\073\157\074" +
- "\156\102\135\113\140\114\137\115\171\116\167\117\213" +
- "\120\212\121\163\122\162\001\001\000\002\001\001\000" +
- "\002\001\001\000\002\001\001\000\002\001\001\000\140" +
- "\002\106\003\105\004\165\005\104\006\132\007\131\010" +
- "\142\011\141\021\110\022\107\023\202\024\201\025\155" +
- "\026\154\030\251\031\210\040\103\041\102\042\206\043" +
- "\205\044\216\045\215\046\174\047\172\053\200\054\041" +
- "\057\122\060\121\061\113\062\111\063\145\064\144\065" +
- "\116\066\114\070\130\071\127\073\157\074\156\102\135" +
- "\113\140\114\137\115\171\116\167\117\213\120\212\121" +
- "\163\122\162\001\001\000\002\001\001\000\002\001\001" +
- "\000\002\001\001\000\042\004\165\005\367\007\270\022" +
- "\264\024\201\031\210\047\257\053\200\054\041\062\111" +
- "\066\265\071\272\074\156\102\135\116\366\122\162\001" +
- "\001\000\042\004\165\005\365\007\270\022\264\024\201" +
- "\031\210\047\257\053\200\054\041\062\111\066\265\071" +
- "\272\074\156\102\135\116\364\122\162\001\001\000\042" +
- "\004\165\005\363\007\270\022\264\024\201\031\210\047" +
- "\257\053\200\054\041\062\111\066\265\071\272\074\156" +
- "\102\135\116\362\122\162\001\001\000\042\004\165\005" +
- "\273\007\270\022\264\024\201\031\210\047\257\053\200" +
- "\054\041\062\111\066\265\071\272\074\156\102\135\116" +
- "\267\122\162\001\001\000\002\001\001\000\036\004\165" +
- "\007\270\022\264\024\201\031\210\047\257\053\200\054" +
- "\041\062\220\066\265\071\272\074\156\102\135\122\162" +
- "\001\001\000\036\004\165\007\270\022\264\024\201\031" +
- "\210\047\257\053\200\054\041\062\361\066\265\071\272" +
- "\074\156\102\135\122\162\001\001\000\016\004\165\031" +
- "\210\053\200\054\041\102\135\122\360\001\001\000\016" +
- "\004\165\031\210\053\200\054\041\102\135\122\357\001" +
- "\001\000\004\072\351\001\001\000\002\001\001\000\016" +
- "\004\165\031\210\053\200\054\041\102\135\122\326\001" +
- "\001\000\002\001\001\000\002\001\001\000\036\004\165" +
- "\007\270\022\264\024\201\031\210\047\257\053\200\054" +
- "\041\062\317\066\265\071\272\074\156\102\135\122\162" +
- "\001\001\000\002\001\001\000\002\001\001\000\022\004" +
- "\165\007\277\024\201\031\210\053\200\054\041\102\135" +
- "\122\162\001\001\000\002\001\001\000\002\001\001\000" +
- "\002\001\001\000\144\002\106\003\105\004\165\005\104" +
- "\006\132\007\131\010\142\011\141\021\110\022\107\023" +
- "\202\024\201\025\155\026\154\030\225\031\210\035\307" +
- "\036\227\040\103\041\102\042\206\043\205\044\216\045" +
- "\215\046\174\047\172\053\200\054\041\057\122\060\121" +
- "\061\113\062\111\063\145\064\144\065\116\066\114\070" +
- "\130\071\127\073\157\074\156\102\135\113\140\114\137" +
- "\115\171\116\167\117\213\120\212\121\163\122\162\001" +
- "\001\000\016\004\165\031\210\053\200\054\041\102\135" +
- "\122\306\001\001\000\002\001\001\000\002\001\001\000" +
- "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
- "\001\001\000\002\001\001\000\144\002\106\003\105\004" +
- "\165\005\104\006\132\007\131\010\142\011\141\021\110" +
- "\022\107\023\202\024\201\025\155\026\154\030\225\031" +
- "\210\035\312\036\227\040\103\041\102\042\206\043\205" +
- "\044\216\045\215\046\174\047\172\053\200\054\041\057" +
- "\122\060\121\061\113\062\111\063\145\064\144\065\116" +
- "\066\114\070\130\071\127\073\157\074\156\102\135\113" +
- "\140\114\137\115\171\116\167\117\213\120\212\121\163" +
- "\122\162\001\001\000\002\001\001\000\002\001\001\000" +
- "\144\002\106\003\105\004\165\005\104\006\132\007\131" +
- "\010\142\011\141\021\110\022\107\023\202\024\201\025" +
- "\155\026\154\030\225\031\210\035\315\036\227\040\103" +
- "\041\102\042\206\043\205\044\216\045\215\046\174\047" +
- "\172\053\200\054\041\057\122\060\121\061\113\062\111" +
- "\063\145\064\144\065\116\066\114\070\130\071\127\073" +
- "\157\074\156\102\135\113\140\114\137\115\171\116\167" +
- "\117\213\120\212\121\163\122\162\001\001\000\002\001" +
- "\001\000\002\001\001\000\002\001\001\000\036\004\165" +
- "\007\270\022\264\024\201\031\210\047\257\053\200\054" +
- "\041\062\325\066\265\071\272\074\156\102\135\122\162" +
- "\001\001\000\036\004\165\007\270\022\264\024\201\031" +
- "\210\047\257\053\200\054\041\062\324\066\265\071\272" +
- "\074\156\102\135\122\162\001\001\000\036\004\165\007" +
- "\270\022\264\024\201\031\210\047\257\053\200\054\041" +
- "\062\323\066\265\071\272\074\156\102\135\122\162\001" +
+ "\001\001\000\002\001\001\000\016\014\072\015\u0123\016" +
+ "\u01a1\053\067\054\043\055\071\001\001\000\076\004\174" +
+ "\005\u010c\006\137\007\136\021\116\022\115\023\215\024" +
+ "\214\031\224\046\205\047\203\053\213\054\043\061\120" +
+ "\062\117\065\124\066\122\070\135\071\134\073\166\074" +
+ "\165\102\143\113\u01a0\114\u019f\115\200\116\176\117\227" +
+ "\120\226\121\172\122\171\001\001\000\076\004\174\005" +
+ "\u010c\006\137\007\136\021\116\022\115\023\215\024\214" +
+ "\031\224\046\205\047\203\053\213\054\043\061\120\062" +
+ "\117\065\124\066\122\070\135\071\134\073\166\074\165" +
+ "\102\143\113\u019e\114\u019d\115\200\116\176\117\227\120" +
+ "\226\121\172\122\171\001\001\000\002\001\001\000\002" +
+ "\001\001\000\002\001\001\000\002\001\001\000\016\014" +
+ "\072\015\u0123\016\u018a\053\067\054\043\055\071\001\001" +
+ "\000\022\004\174\005\u0188\031\224\053\213\054\043\102" +
+ "\143\121\u0189\122\u0101\001\001\000\002\001\001\000\002" +
+ "\001\001\000\062\004\174\005\u0187\006\137\007\136\021" +
+ "\116\022\115\023\215\024\214\031\224\046\205\047\203" +
+ "\053\213\054\043\061\u0186\062\u0103\065\124\066\122\070" +
+ "\135\071\134\073\166\074\165\102\143\121\172\122\171" +
+ "\001\001\000\002\001\001\000\146\002\114\003\113\004" +
+ "\174\005\112\006\137\007\136\010\151\011\150\021\116" +
+ "\022\115\023\215\024\214\025\164\026\163\030\u0185\031" +
+ "\224\040\110\041\107\042\221\043\220\044\232\045\231" +
+ "\046\205\047\203\053\213\054\043\057\106\060\105\061" +
+ "\120\062\117\063\154\064\153\065\124\066\122\070\135" +
+ "\071\134\073\166\074\165\102\143\113\146\114\145\115" +
+ "\200\116\176\117\227\120\226\121\172\122\171\124\211" +
+ "\125\210\126\202\001\001\000\002\001\001\000\002\001" +
+ "\001\000\002\001\001\000\106\004\174\005\u017c\006\137" +
+ "\007\136\010\151\011\150\021\116\022\115\023\215\024" +
+ "\214\031\224\046\205\047\203\053\213\054\043\057\u017b" +
+ "\060\u014c\061\120\062\117\065\124\066\122\070\135\071" +
+ "\134\073\166\074\165\102\143\113\146\114\145\115\200" +
+ "\116\176\117\227\120\226\121\172\122\171\001\001\000" +
+ "\002\001\001\000\002\001\001\000\016\014\072\015\u0123" +
+ "\016\u0175\053\067\054\043\055\071\001\001\000\002\001" +
+ "\001\000\016\014\072\015\u0123\016\u0173\053\067\054\043" +
+ "\055\071\001\001\000\076\004\174\005\u010c\006\137\007" +
+ "\136\021\116\022\115\023\215\024\214\031\224\046\205" +
+ "\047\203\053\213\054\043\061\120\062\117\065\124\066" +
+ "\122\070\135\071\134\073\166\074\165\102\143\113\u0172" +
+ "\114\u0171\115\200\116\176\117\227\120\226\121\172\122" +
+ "\171\001\001\000\002\001\001\000\002\001\001\000\076" +
+ "\004\174\005\u010c\006\137\007\136\021\116\022\115\023" +
+ "\215\024\214\031\224\046\205\047\203\053\213\054\043" +
+ "\061\120\062\117\065\124\066\122\070\135\071\134\073" +
+ "\166\074\165\102\143\113\u012a\114\u0129\115\200\116\176" +
+ "\117\227\120\226\121\172\122\171\001\001\000\002\001" +
+ "\001\000\002\001\001\000\002\001\001\000\016\014\072" +
+ "\015\u0123\016\u0124\053\067\054\043\055\071\001\001\000" +
+ "\076\004\174\005\u010c\006\137\007\136\021\116\022\115" +
+ "\023\215\024\214\031\224\046\205\047\203\053\213\054" +
+ "\043\061\120\062\117\065\124\066\122\070\135\071\134" +
+ "\073\166\074\165\102\143\113\u0122\114\u0121\115\200\116" +
+ "\176\117\227\120\226\121\172\122\171\001\001\000\002" +
+ "\001\001\000\002\001\001\000\022\004\174\005\u011e\031" +
+ "\224\053\213\054\043\102\143\121\u011f\122\350\001\001" +
+ "\000\106\004\174\005\u011d\006\137\007\136\010\151\011" +
+ "\150\021\116\022\115\023\215\024\214\031\224\046\205" +
+ "\047\203\053\213\054\043\057\u011c\060\u011b\061\120\062" +
+ "\117\065\124\066\122\070\135\071\134\073\166\074\165" +
+ "\102\143\113\146\114\145\115\200\116\176\117\227\120" +
+ "\226\121\172\122\171\001\001\000\002\001\001\000\076" +
+ "\004\174\005\u010c\006\137\007\136\021\116\022\115\023" +
+ "\215\024\214\031\224\046\205\047\203\053\213\054\043" +
+ "\061\120\062\117\065\124\066\122\070\135\071\134\073" +
+ "\166\074\165\102\143\113\u010b\114\u010a\115\200\116\176" +
+ "\117\227\120\226\121\172\122\171\001\001\000\002\001" +
+ "\001\000\002\001\001\000\010\050\251\053\250\054\043" +
+ "\001\001\000\002\001\001\000\002\001\001\000\062\004" +
+ "\174\005\237\006\137\007\136\021\116\022\115\023\215" +
+ "\024\214\031\224\046\205\047\203\053\213\054\043\061" +
+ "\235\062\234\065\124\066\122\070\135\071\134\073\166" +
+ "\074\165\102\143\121\172\122\171\001\001\000\002\001" +
"\001\000\002\001\001\000\002\001\001\000\002\001\001" +
- "\000\002\001\001\000\032\004\165\007\270\022\264\024" +
- "\201\031\210\047\330\053\200\054\041\071\272\074\156" +
- "\102\135\122\162\001\001\000\002\001\001\000\030\004" +
- "\165\007\270\022\264\024\201\031\210\053\200\054\041" +
- "\071\272\074\332\102\135\122\162\001\001\000\002\001" +
- "\001\000\024\004\165\007\270\024\201\031\210\053\200" +
- "\054\041\071\356\102\135\122\162\001\001\000\002\001" +
+ "\000\002\001\001\000\152\002\114\003\113\004\174\005" +
+ "\112\006\137\007\136\010\151\011\150\021\116\022\115" +
+ "\023\215\024\214\025\164\026\163\030\242\031\224\035" +
+ "\243\036\244\040\110\041\107\042\221\043\220\044\232" +
+ "\045\231\046\205\047\203\053\213\054\043\057\106\060" +
+ "\105\061\120\062\117\063\154\064\153\065\124\066\122" +
+ "\070\135\071\134\073\166\074\165\102\143\113\146\114" +
+ "\145\115\200\116\176\117\227\120\226\121\172\122\171" +
+ "\124\211\125\210\126\202\001\001\000\002\001\001\000" +
+ "\002\001\001\000\002\001\001\000\146\002\114\003\113" +
+ "\004\174\005\112\006\137\007\136\010\151\011\150\021" +
+ "\116\022\115\023\215\024\214\025\164\026\163\030\246" +
+ "\031\224\040\110\041\107\042\221\043\220\044\232\045" +
+ "\231\046\205\047\203\053\213\054\043\057\106\060\105" +
+ "\061\120\062\117\063\154\064\153\065\124\066\122\070" +
+ "\135\071\134\073\166\074\165\102\143\113\146\114\145" +
+ "\115\200\116\176\117\227\120\226\121\172\122\171\124" +
+ "\211\125\210\126\202\001\001\000\002\001\001\000\002" +
+ "\001\001\000\002\001\001\000\002\001\001\000\146\002" +
+ "\114\003\113\004\174\005\112\006\137\007\136\010\151" +
+ "\011\150\021\116\022\115\023\215\024\214\025\164\026" +
+ "\163\030\253\031\224\040\110\041\107\042\221\043\220" +
+ "\044\232\045\231\046\205\047\203\053\213\054\043\057" +
+ "\106\060\105\061\120\062\117\063\154\064\153\065\124" +
+ "\066\122\070\135\071\134\073\166\074\165\102\143\113" +
+ "\146\114\145\115\200\116\176\117\227\120\226\121\172" +
+ "\122\171\124\211\125\210\126\202\001\001\000\006\031" +
+ "\260\034\255\001\001\000\010\050\273\053\250\054\043" +
+ "\001\001\000\002\001\001\000\150\002\114\003\113\004" +
+ "\174\005\112\006\137\007\136\010\151\011\150\021\116" +
+ "\022\115\023\215\024\214\025\164\026\163\030\265\031" +
+ "\224\033\266\040\110\041\107\042\221\043\220\044\232" +
+ "\045\231\046\205\047\203\053\213\054\043\057\106\060" +
+ "\105\061\120\062\117\063\154\064\153\065\124\066\122" +
+ "\070\135\071\134\073\166\074\165\102\143\113\146\114" +
+ "\145\115\200\116\176\117\227\120\226\121\172\122\171" +
+ "\124\211\125\210\126\202\001\001\000\144\002\114\003" +
+ "\113\004\174\005\112\006\137\007\136\010\151\011\150" +
+ "\021\116\022\115\023\215\024\214\025\164\026\163\031" +
+ "\224\040\110\041\107\042\221\043\220\044\232\045\231" +
+ "\046\205\047\203\053\213\054\043\057\106\060\105\061" +
+ "\120\062\117\063\154\064\153\065\124\066\122\070\135" +
+ "\071\134\073\166\074\165\102\143\113\146\114\145\115" +
+ "\200\116\176\117\227\120\226\121\172\122\171\124\211" +
+ "\125\210\126\261\001\001\000\002\001\001\000\002\001" +
+ "\001\000\146\002\114\003\113\004\174\005\112\006\137" +
+ "\007\136\010\151\011\150\021\116\022\115\023\215\024" +
+ "\214\025\164\026\163\030\263\031\224\040\110\041\107" +
+ "\042\221\043\220\044\232\045\231\046\205\047\203\053" +
+ "\213\054\043\057\106\060\105\061\120\062\117\063\154" +
+ "\064\153\065\124\066\122\070\135\071\134\073\166\074" +
+ "\165\102\143\113\146\114\145\115\200\116\176\117\227" +
+ "\120\226\121\172\122\171\124\211\125\210\126\202\001" +
"\001\000\002\001\001\000\002\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
- "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
- "\001\001\000\002\001\001\000\002\001\001\000\030\004" +
- "\165\007\270\022\264\024\201\031\210\053\200\054\041" +
- "\071\272\074\355\102\135\122\162\001\001\000\002\001" +
+ "\000\146\002\114\003\113\004\174\005\112\006\137\007" +
+ "\136\010\151\011\150\021\116\022\115\023\215\024\214" +
+ "\025\164\026\163\030\270\031\224\040\110\041\107\042" +
+ "\221\043\220\044\232\045\231\046\205\047\203\053\213" +
+ "\054\043\057\106\060\105\061\120\062\117\063\154\064" +
+ "\153\065\124\066\122\070\135\071\134\073\166\074\165" +
+ "\102\143\113\146\114\145\115\200\116\176\117\227\120" +
+ "\226\121\172\122\171\124\211\125\210\126\202\001\001" +
+ "\000\002\001\001\000\002\001\001\000\150\002\114\003" +
+ "\113\004\174\005\112\006\137\007\136\010\151\011\150" +
+ "\021\116\022\115\023\215\024\214\025\164\026\163\030" +
+ "\265\031\224\033\272\040\110\041\107\042\221\043\220" +
+ "\044\232\045\231\046\205\047\203\053\213\054\043\057" +
+ "\106\060\105\061\120\062\117\063\154\064\153\065\124" +
+ "\066\122\070\135\071\134\073\166\074\165\102\143\113" +
+ "\146\114\145\115\200\116\176\117\227\120\226\121\172" +
+ "\122\171\124\211\125\210\126\202\001\001\000\146\002" +
+ "\114\003\113\004\174\005\112\006\137\007\136\010\151" +
+ "\011\150\021\116\022\115\023\215\024\214\025\164\026" +
+ "\163\030\270\031\224\040\110\041\107\042\221\043\220" +
+ "\044\232\045\231\046\205\047\203\053\213\054\043\057" +
+ "\106\060\105\061\120\062\117\063\154\064\153\065\124" +
+ "\066\122\070\135\071\134\073\166\074\165\102\143\113" +
+ "\146\114\145\115\200\116\176\117\227\120\226\121\172" +
+ "\122\171\124\211\125\210\126\202\001\001\000\002\001" +
+ "\001\000\042\004\174\005\u0109\007\311\022\305\024\214" +
+ "\031\224\047\300\053\213\054\043\062\117\066\306\071" +
+ "\313\074\165\102\143\116\u0108\122\171\001\001\000\042" +
+ "\004\174\005\u0107\007\311\022\305\024\214\031\224\047" +
+ "\300\053\213\054\043\062\117\066\306\071\313\074\165" +
+ "\102\143\116\u0106\122\171\001\001\000\042\004\174\005" +
+ "\u0105\007\311\022\305\024\214\031\224\047\300\053\213" +
+ "\054\043\062\117\066\306\071\313\074\165\102\143\116" +
+ "\u0104\122\171\001\001\000\042\004\174\005\314\007\311" +
+ "\022\305\024\214\031\224\047\300\053\213\054\043\062" +
+ "\117\066\306\071\313\074\165\102\143\116\310\122\171" +
+ "\001\001\000\002\001\001\000\036\004\174\007\311\022" +
+ "\305\024\214\031\224\047\300\053\213\054\043\062\234" +
+ "\066\306\071\313\074\165\102\143\122\171\001\001\000" +
+ "\036\004\174\007\311\022\305\024\214\031\224\047\300" +
+ "\053\213\054\043\062\u0103\066\306\071\313\074\165\102" +
+ "\143\122\171\001\001\000\016\004\174\031\224\053\213" +
+ "\054\043\102\143\122\u0102\001\001\000\016\004\174\031" +
+ "\224\053\213\054\043\102\143\122\u0101\001\001\000\004" +
+ "\072\373\001\001\000\002\001\001\000\016\004\174\031" +
+ "\224\053\213\054\043\102\143\122\350\001\001\000\002" +
+ "\001\001\000\002\001\001\000\036\004\174\007\311\022" +
+ "\305\024\214\031\224\047\300\053\213\054\043\062\341" +
+ "\066\306\071\313\074\165\102\143\122\171\001\001\000" +
+ "\002\001\001\000\002\001\001\000\022\004\174\007\320" +
+ "\024\214\031\224\053\213\054\043\102\143\122\171\001" +
"\001\000\002\001\001\000\002\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
- "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
+ "\000\152\002\114\003\113\004\174\005\112\006\137\007" +
+ "\136\010\151\011\150\021\116\022\115\023\215\024\214" +
+ "\025\164\026\163\030\242\031\224\035\331\036\244\040" +
+ "\110\041\107\042\221\043\220\044\232\045\231\046\205" +
+ "\047\203\053\213\054\043\057\106\060\105\061\120\062" +
+ "\117\063\154\064\153\065\124\066\122\070\135\071\134" +
+ "\073\166\074\165\102\143\113\146\114\145\115\200\116" +
+ "\176\117\227\120\226\121\172\122\171\124\211\125\210" +
+ "\126\202\001\001\000\016\004\174\031\224\053\213\054" +
+ "\043\102\143\122\327\001\001\000\002\001\001\000\002" +
"\001\001\000\002\001\001\000\002\001\001\000\002\001" +
- "\001\000\002\001\001\000\002\001\001\000\044\004\165" +
- "\005\u0107\007\270\022\264\024\201\031\210\047\257\053" +
- "\200\054\041\062\111\066\265\071\272\074\156\102\135" +
- "\116\375\120\u0106\122\162\001\001\000\044\004\165\005" +
- "\u0105\007\270\022\264\024\201\031\210\047\257\053\200" +
- "\054\041\062\111\066\265\071\272\074\156\102\135\116" +
- "\375\120\u0104\122\162\001\001\000\044\004\165\005\377" +
- "\007\270\022\264\024\201\031\210\047\257\053\200\054" +
- "\041\062\111\066\265\071\272\074\156\102\135\116\375" +
- "\120\376\122\162\001\001\000\002\001\001\000\002\001" +
- "\001\000\002\001\001\000\040\004\165\007\270\022\264" +
- "\024\201\031\210\047\257\053\200\054\041\062\111\066" +
- "\265\071\272\074\156\102\135\116\366\122\162\001\001" +
- "\000\040\004\165\007\270\022\264\024\201\031\210\047" +
- "\257\053\200\054\041\062\111\066\265\071\272\074\156" +
- "\102\135\116\364\122\162\001\001\000\040\004\165\007" +
- "\270\022\264\024\201\031\210\047\257\053\200\054\041" +
- "\062\111\066\265\071\272\074\156\102\135\116\362\122" +
- "\162\001\001\000\040\004\165\007\270\022\264\024\201" +
- "\031\210\047\257\053\200\054\041\062\111\066\265\071" +
- "\272\074\156\102\135\116\267\122\162\001\001\000\002" +
+ "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+ "\000\152\002\114\003\113\004\174\005\112\006\137\007" +
+ "\136\010\151\011\150\021\116\022\115\023\215\024\214" +
+ "\025\164\026\163\030\242\031\224\035\334\036\244\040" +
+ "\110\041\107\042\221\043\220\044\232\045\231\046\205" +
+ "\047\203\053\213\054\043\057\106\060\105\061\120\062" +
+ "\117\063\154\064\153\065\124\066\122\070\135\071\134" +
+ "\073\166\074\165\102\143\113\146\114\145\115\200\116" +
+ "\176\117\227\120\226\121\172\122\171\124\211\125\210" +
+ "\126\202\001\001\000\002\001\001\000\002\001\001\000" +
+ "\152\002\114\003\113\004\174\005\112\006\137\007\136" +
+ "\010\151\011\150\021\116\022\115\023\215\024\214\025" +
+ "\164\026\163\030\242\031\224\035\337\036\244\040\110" +
+ "\041\107\042\221\043\220\044\232\045\231\046\205\047" +
+ "\203\053\213\054\043\057\106\060\105\061\120\062\117" +
+ "\063\154\064\153\065\124\066\122\070\135\071\134\073" +
+ "\166\074\165\102\143\113\146\114\145\115\200\116\176" +
+ "\117\227\120\226\121\172\122\171\124\211\125\210\126" +
+ "\202\001\001\000\002\001\001\000\002\001\001\000\002" +
+ "\001\001\000\036\004\174\007\311\022\305\024\214\031" +
+ "\224\047\300\053\213\054\043\062\347\066\306\071\313" +
+ "\074\165\102\143\122\171\001\001\000\036\004\174\007" +
+ "\311\022\305\024\214\031\224\047\300\053\213\054\043" +
+ "\062\346\066\306\071\313\074\165\102\143\122\171\001" +
+ "\001\000\036\004\174\007\311\022\305\024\214\031\224" +
+ "\047\300\053\213\054\043\062\345\066\306\071\313\074" +
+ "\165\102\143\122\171\001\001\000\002\001\001\000\002" +
+ "\001\001\000\002\001\001\000\002\001\001\000\032\004" +
+ "\174\007\311\022\305\024\214\031\224\047\352\053\213" +
+ "\054\043\071\313\074\165\102\143\122\171\001\001\000" +
+ "\002\001\001\000\030\004\174\007\311\022\305\024\214" +
+ "\031\224\053\213\054\043\071\313\074\354\102\143\122" +
+ "\171\001\001\000\002\001\001\000\024\004\174\007\311" +
+ "\024\214\031\224\053\213\054\043\071\u0100\102\143\122" +
+ "\171\001\001\000\002\001\001\000\002\001\001\000\002" +
"\001\001\000\002\001\001\000\002\001\001\000\002\001" +
"\001\000\002\001\001\000\002\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\006\031\243\034" +
- "\u010f\001\001\000\014\014\070\015\u0110\053\066\054\041" +
- "\055\067\001\001\000\002\001\001\000\002\001\001\000" +
- "\004\054\054\001\001\000\002\001\001\000\002\001\001" +
"\000\002\001\001\000\002\001\001\000\002\001\001\000" +
- "\006\031\243\034\u0118\001\001\000\002\001\001\000\006" +
- "\031\243\034\u011a\001\001\000\002\001\001\000\032\004" +
- "\165\005\u011c\007\270\022\264\024\201\031\210\053\200" +
- "\054\041\071\272\074\332\102\135\122\162\001\001\000" +
- "\002\001\001\000\004\054\u011e\001\001\000\002\001\001" +
- "\000\040\004\165\005\u0124\007\270\022\264\024\201\031" +
- "\210\047\257\053\200\054\041\062\325\066\265\071\272" +
- "\074\156\102\135\122\162\001\001\000\040\004\165\005" +
- "\u0123\007\270\022\264\024\201\031\210\047\257\053\200" +
- "\054\041\062\324\066\265\071\272\074\156\102\135\122" +
- "\162\001\001\000\040\004\165\005\u0122\007\270\022\264" +
- "\024\201\031\210\047\257\053\200\054\041\062\323\066" +
- "\265\071\272\074\156\102\135\122\162\001\001\000\002" +
+ "\002\001\001\000\030\004\174\007\311\022\305\024\214" +
+ "\031\224\053\213\054\043\071\313\074\377\102\143\122" +
+ "\171\001\001\000\002\001\001\000\002\001\001\000\002" +
"\001\001\000\002\001\001\000\002\001\001\000\002\001" +
"\001\000\002\001\001\000\002\001\001\000\002\001\001" +
- "\000\002\001\001\000\006\031\243\034\u012b\001\001\000" +
- "\002\001\001\000\062\003\u0132\004\165\005\u0139\007\270" +
- "\011\u0131\022\264\024\201\031\210\041\u0133\043\205\045" +
- "\215\047\257\053\200\054\041\060\121\062\111\066\265" +
- "\071\272\074\156\102\135\114\u0130\116\375\120\u0134\122" +
- "\162\001\001\000\044\004\165\007\270\022\264\024\201" +
- "\031\210\047\257\053\200\054\041\062\111\066\265\071" +
- "\272\074\156\102\135\114\u0165\116\375\120\u0134\122\162" +
- "\001\001\000\044\004\165\007\270\022\264\024\201\031" +
- "\210\047\257\053\200\054\041\062\111\066\265\071\272" +
- "\074\156\102\135\114\u0164\116\375\120\u0134\122\162\001" +
- "\001\000\050\004\165\007\270\011\u0131\022\264\024\201" +
- "\031\210\047\257\053\200\054\041\060\u0163\062\111\066" +
- "\265\071\272\074\156\102\135\114\u0130\116\375\120\u0134" +
- "\122\162\001\001\000\002\001\001\000\002\001\001\000" +
- "\002\001\001\000\002\001\001\000\002\001\001\000\044" +
- "\004\165\007\270\022\264\024\201\031\210\047\257\053" +
- "\200\054\041\062\111\066\265\071\272\074\156\102\135" +
- "\114\u0142\116\375\120\u0134\122\162\001\001\000\044\004" +
- "\165\007\270\022\264\024\201\031\210\047\257\053\200" +
- "\054\041\062\111\066\265\071\272\074\156\102\135\114" +
- "\u0141\116\375\120\u0134\122\162\001\001\000\044\004\165" +
- "\007\270\022\264\024\201\031\210\047\257\053\200\054" +
- "\041\062\111\066\265\071\272\074\156\102\135\114\u0140" +
- "\116\375\120\u0134\122\162\001\001\000\044\004\165\007" +
- "\270\022\264\024\201\031\210\047\257\053\200\054\041" +
- "\062\111\066\265\071\272\074\156\102\135\114\u013f\116" +
- "\375\120\u0134\122\162\001\001\000\002\001\001\000\044" +
- "\004\165\007\270\022\264\024\201\031\210\047\257\053" +
- "\200\054\041\062\111\066\265\071\272\074\156\102\135" +
- "\114\u013b\116\375\120\u0134\122\162\001\001\000\002\001" +
- "\001\000\042\004\165\007\270\022\264\024\201\031\210" +
- "\047\257\053\200\054\041\062\111\066\265\071\272\074" +
- "\156\102\135\116\375\120\u0106\122\162\001\001\000\042" +
- "\004\165\007\270\022\264\024\201\031\210\047\257\053" +
- "\200\054\041\062\111\066\265\071\272\074\156\102\135" +
- "\116\375\120\u0104\122\162\001\001\000\042\004\165\007" +
- "\270\022\264\024\201\031\210\047\257\053\200\054\041" +
- "\062\111\066\265\071\272\074\156\102\135\116\375\120" +
- "\376\122\162\001\001\000\002\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\060\003\u0132\004" +
- "\165\007\270\011\u0131\022\264\024\201\031\210\041\u0146" +
- "\043\u0147\045\215\047\257\053\200\054\041\060\121\062" +
- "\111\066\265\071\272\074\156\102\135\114\u0130\116\375" +
- "\120\u0134\122\162\001\001\000\050\004\165\007\270\011" +
- "\u0131\022\264\024\201\031\210\047\257\053\200\054\041" +
- "\060\u0145\062\111\066\265\071\272\074\156\102\135\114" +
- "\u0130\116\375\120\u0134\122\162\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\056\003\u0132\004" +
- "\165\007\270\011\u0131\022\264\024\201\031\210\043\u014a" +
- "\045\u0149\047\257\053\200\054\041\060\121\062\111\066" +
- "\265\071\272\074\156\102\135\114\u0130\116\375\120\u0134" +
- "\122\162\001\001\000\002\001\001\000\002\001\001\000" +
- "\044\004\165\007\270\022\264\024\201\031\210\047\257" +
- "\053\200\054\041\062\111\066\265\071\272\074\156\102" +
- "\135\114\u0162\116\375\120\u0134\122\162\001\001\000\044" +
- "\004\165\007\270\022\264\024\201\031\210\047\257\053" +
- "\200\054\041\062\111\066\265\071\272\074\156\102\135" +
- "\114\u0161\116\375\120\u0134\122\162\001\001\000\044\004" +
- "\165\007\270\022\264\024\201\031\210\047\257\053\200" +
- "\054\041\062\111\066\265\071\272\074\156\102\135\114" +
- "\u0160\116\375\120\u0134\122\162\001\001\000\044\004\165" +
- "\007\270\022\264\024\201\031\210\047\257\053\200\054" +
- "\041\062\111\066\265\071\272\074\156\102\135\114\u015f" +
- "\116\375\120\u0134\122\162\001\001\000\044\004\165\007" +
- "\270\022\264\024\201\031\210\047\257\053\200\054\041" +
- "\062\111\066\265\071\272\074\156\102\135\114\u015e\116" +
- "\375\120\u0134\122\162\001\001\000\044\004\165\007\270" +
- "\022\264\024\201\031\210\047\257\053\200\054\041\062" +
- "\111\066\265\071\272\074\156\102\135\114\u015d\116\375" +
- "\120\u0134\122\162\001\001\000\044\004\165\007\270\022" +
- "\264\024\201\031\210\047\257\053\200\054\041\062\111" +
- "\066\265\071\272\074\156\102\135\114\u015c\116\375\120" +
- "\u0134\122\162\001\001\000\044\004\165\007\270\022\264" +
- "\024\201\031\210\047\257\053\200\054\041\062\111\066" +
- "\265\071\272\074\156\102\135\114\u015b\116\375\120\u0134" +
- "\122\162\001\001\000\044\004\165\007\270\022\264\024" +
- "\201\031\210\047\257\053\200\054\041\062\111\066\265" +
- "\071\272\074\156\102\135\114\u015a\116\375\120\u0134\122" +
- "\162\001\001\000\044\004\165\007\270\022\264\024\201" +
- "\031\210\047\257\053\200\054\041\062\111\066\265\071" +
- "\272\074\156\102\135\114\u0159\116\375\120\u0134\122\162" +
- "\001\001\000\044\004\165\007\270\022\264\024\201\031" +
- "\210\047\257\053\200\054\041\062\111\066\265\071\272" +
- "\074\156\102\135\114\u0158\116\375\120\u0134\122\162\001" +
- "\001\000\044\004\165\007\270\022\264\024\201\031\210" +
- "\047\257\053\200\054\041\062\111\066\265\071\272\074" +
- "\156\102\135\114\u0157\116\375\120\u0134\122\162\001\001" +
"\000\002\001\001\000\002\001\001\000\002\001\001\000" +
"\002\001\001\000\002\001\001\000\002\001\001\000\002" +
+ "\001\001\000\002\001\001\000\044\004\174\005\u011a\007" +
+ "\311\022\305\024\214\031\224\047\300\053\213\054\043" +
+ "\062\117\066\306\071\313\074\165\102\143\116\u0110\120" +
+ "\u0119\122\171\001\001\000\044\004\174\005\u0118\007\311" +
+ "\022\305\024\214\031\224\047\300\053\213\054\043\062" +
+ "\117\066\306\071\313\074\165\102\143\116\u0110\120\u0117" +
+ "\122\171\001\001\000\044\004\174\005\u0112\007\311\022" +
+ "\305\024\214\031\224\047\300\053\213\054\043\062\117" +
+ "\066\306\071\313\074\165\102\143\116\u0110\120\u0111\122" +
+ "\171\001\001\000\002\001\001\000\002\001\001\000\002" +
+ "\001\001\000\040\004\174\007\311\022\305\024\214\031" +
+ "\224\047\300\053\213\054\043\062\117\066\306\071\313" +
+ "\074\165\102\143\116\u0106\122\171\001\001\000\040\004" +
+ "\174\007\311\022\305\024\214\031\224\047\300\053\213" +
+ "\054\043\062\117\066\306\071\313\074\165\102\143\116" +
+ "\u0108\122\171\001\001\000\040\004\174\007\311\022\305" +
+ "\024\214\031\224\047\300\053\213\054\043\062\117\066" +
+ "\306\071\313\074\165\102\143\116\u0104\122\171\001\001" +
+ "\000\040\004\174\007\311\022\305\024\214\031\224\047" +
+ "\300\053\213\054\043\062\117\066\306\071\313\074\165" +
+ "\102\143\116\310\122\171\001\001\000\002\001\001\000" +
+ "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
"\001\001\000\002\001\001\000\002\001\001\000\002\001" +
"\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+ "\000\002\001\001\000\002\001\001\000\006\031\260\034" +
+ "\u0126\001\001\000\014\014\072\015\u0127\053\067\054\043" +
+ "\055\071\001\001\000\002\001\001\000\002\001\001\000" +
+ "\004\054\056\001\001\000\002\001\001\000\002\001\001" +
+ "\000\002\001\001\000\052\004\174\005\u0170\007\311\011" +
+ "\u0136\022\305\024\214\031\224\047\300\053\213\054\043" +
+ "\060\u016f\062\117\066\306\071\313\074\165\102\143\114" +
+ "\u0135\116\u0110\120\u0138\122\171\001\001\000\052\004\174" +
+ "\005\u016e\007\311\011\u0136\022\305\024\214\031\224\047" +
+ "\300\053\213\054\043\060\u016d\062\117\066\306\071\313" +
+ "\074\165\102\143\114\u0135\116\u0110\120\u0138\122\171\001" +
+ "\001\000\052\004\174\005\u016c\007\311\011\u0136\022\305" +
+ "\024\214\031\224\047\300\053\213\054\043\060\u016b\062" +
+ "\117\066\306\071\313\074\165\102\143\114\u0135\116\u0110" +
+ "\120\u0138\122\171\001\001\000\052\004\174\005\u0140\007" +
+ "\311\011\u0136\022\305\024\214\031\224\047\300\053\213" +
+ "\054\043\060\u0134\062\117\066\306\071\313\074\165\102" +
+ "\143\114\u0135\116\u0110\120\u0138\122\171\001\001\000\044" +
+ "\004\174\007\311\022\305\024\214\031\224\047\300\053" +
+ "\213\054\043\062\117\066\306\071\313\074\165\102\143" +
+ "\114\u016a\116\u0110\120\u0138\122\171\001\001\000\044\004" +
+ "\174\007\311\022\305\024\214\031\224\047\300\053\213" +
+ "\054\043\062\117\066\306\071\313\074\165\102\143\114" +
+ "\u0169\116\u0110\120\u0138\122\171\001\001\000\050\004\174" +
+ "\007\311\011\u0136\022\305\024\214\031\224\047\300\053" +
+ "\213\054\043\060\u0168\062\117\066\306\071\313\074\165" +
+ "\102\143\114\u0135\116\u0110\120\u0138\122\171\001\001\000" +
+ "\050\004\174\007\311\011\u0136\022\305\024\214\031\224" +
+ "\047\300\053\213\054\043\060\u0167\062\117\066\306\071" +
+ "\313\074\165\102\143\114\u0135\116\u0110\120\u0138\122\171" +
+ "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
+ "\001\000\050\004\174\007\311\011\u0136\022\305\024\214" +
+ "\031\224\047\300\053\213\054\043\060\u011b\062\117\066" +
+ "\306\071\313\074\165\102\143\114\u0135\116\u0110\120\u0138" +
+ "\122\171\001\001\000\002\001\001\000\044\004\174\007" +
+ "\311\022\305\024\214\031\224\047\300\053\213\054\043" +
+ "\062\117\066\306\071\313\074\165\102\143\114\u014e\116" +
+ "\u0110\120\u0138\122\171\001\001\000\044\004\174\007\311" +
+ "\022\305\024\214\031\224\047\300\053\213\054\043\062" +
+ "\117\066\306\071\313\074\165\102\143\114\u014d\116\u0110" +
+ "\120\u0138\122\171\001\001\000\050\004\174\007\311\011" +
+ "\u0136\022\305\024\214\031\224\047\300\053\213\054\043" +
+ "\060\u014c\062\117\066\306\071\313\074\165\102\143\114" +
+ "\u0135\116\u0110\120\u0138\122\171\001\001\000\050\004\174" +
+ "\007\311\011\u0136\022\305\024\214\031\224\047\300\053" +
+ "\213\054\043\060\u014b\062\117\066\306\071\313\074\165" +
+ "\102\143\114\u0135\116\u0110\120\u0138\122\171\001\001\000" +
+ "\050\004\174\007\311\011\u0136\022\305\024\214\031\224" +
+ "\047\300\053\213\054\043\060\u014a\062\117\066\306\071" +
+ "\313\074\165\102\143\114\u0135\116\u0110\120\u0138\122\171" +
+ "\001\001\000\044\004\174\007\311\022\305\024\214\031" +
+ "\224\047\300\053\213\054\043\062\117\066\306\071\313" +
+ "\074\165\102\143\114\u0149\116\u0110\120\u0138\122\171\001" +
+ "\001\000\044\004\174\007\311\022\305\024\214\031\224" +
+ "\047\300\053\213\054\043\062\117\066\306\071\313\074" +
+ "\165\102\143\114\u0148\116\u0110\120\u0138\122\171\001\001" +
+ "\000\002\001\001\000\044\004\174\007\311\022\305\024" +
+ "\214\031\224\047\300\053\213\054\043\062\117\066\306" +
+ "\071\313\074\165\102\143\114\u0144\116\u0110\120\u0138\122" +
+ "\171\001\001\000\050\004\174\007\311\011\u0136\022\305" +
+ "\024\214\031\224\047\300\053\213\054\043\060\u0143\062" +
+ "\117\066\306\071\313\074\165\102\143\114\u0135\116\u0110" +
+ "\120\u0138\122\171\001\001\000\002\001\001\000\002\001" +
+ "\001\000\042\004\174\007\311\022\305\024\214\031\224" +
+ "\047\300\053\213\054\043\062\117\066\306\071\313\074" +
+ "\165\102\143\116\u0110\120\u0119\122\171\001\001\000\042" +
+ "\004\174\007\311\022\305\024\214\031\224\047\300\053" +
+ "\213\054\043\062\117\066\306\071\313\074\165\102\143" +
+ "\116\u0110\120\u0117\122\171\001\001\000\042\004\174\007" +
+ "\311\022\305\024\214\031\224\047\300\053\213\054\043" +
+ "\062\117\066\306\071\313\074\165\102\143\116\u0110\120" +
+ "\u0111\122\171\001\001\000\002\001\001\000\002\001\001" +
"\000\002\001\001\000\002\001\001\000\002\001\001\000" +
- "\002\001\001\000\002\001\001\000\002\001\001\000\006" +
- "\031\243\034\u016b\001\001\000\002\001\001\000\144\002" +
- "\106\003\105\004\165\005\104\006\132\007\131\010\142" +
- "\011\141\021\110\022\107\023\202\024\201\025\155\026" +
- "\154\030\225\031\210\035\u016d\036\227\040\103\041\102" +
- "\042\206\043\205\044\216\045\215\046\174\047\172\053" +
- "\200\054\041\057\122\060\121\061\113\062\111\063\145" +
- "\064\144\065\116\066\114\070\130\071\127\073\157\074" +
- "\156\102\135\113\140\114\137\115\171\116\167\117\213" +
- "\120\212\121\163\122\162\001\001\000\002\001\001\000" +
- "\002\001\001\000\064\003\u0132\004\165\005\u0171\007\270" +
- "\011\u0131\022\264\024\201\026\u0170\031\210\041\102\043" +
- "\205\045\215\047\257\053\200\054\041\060\121\062\111" +
- "\066\265\071\272\074\156\102\135\114\u0130\116\375\120" +
- "\u0134\122\162\001\001\000\002\001\001\000\002\001\001" +
- "\000\060\003\u0132\004\165\007\270\011\u0131\022\264\024" +
- "\201\031\210\041\u0133\043\205\045\215\047\257\053\200" +
- "\054\041\060\121\062\111\066\265\071\272\074\156\102" +
- "\135\114\u0130\116\375\120\u0134\122\162\001\001\000\074" +
- "\004\165\006\132\007\131\021\110\022\107\023\202\024" +
- "\201\031\210\046\174\047\172\053\200\054\041\061\113" +
- "\062\111\065\116\066\114\070\130\071\127\073\157\074" +
- "\156\102\135\113\u0196\114\u0195\115\171\116\167\117\213" +
- "\120\212\121\163\122\162\001\001\000\074\004\165\006" +
- "\132\007\131\021\110\022\107\023\202\024\201\031\210" +
- "\046\174\047\172\053\200\054\041\061\113\062\111\065" +
- "\116\066\114\070\130\071\127\073\157\074\156\102\135" +
- "\113\u0194\114\u0193\115\171\116\167\117\213\120\212\121" +
- "\163\122\162\001\001\000\074\004\165\006\132\007\131" +
- "\021\110\022\107\023\202\024\201\031\210\046\174\047" +
- "\172\053\200\054\041\061\113\062\111\065\116\066\114" +
- "\070\130\071\127\073\157\074\156\102\135\113\u0192\114" +
- "\u0191\115\171\116\167\117\213\120\212\121\163\122\162" +
- "\001\001\000\074\004\165\006\132\007\131\021\110\022" +
- "\107\023\202\024\201\031\210\046\174\047\172\053\200" +
- "\054\041\061\113\062\111\065\116\066\114\070\130\071" +
- "\127\073\157\074\156\102\135\113\u0190\114\u018f\115\171" +
- "\116\167\117\213\120\212\121\163\122\162\001\001\000" +
- "\074\004\165\006\132\007\131\021\110\022\107\023\202" +
- "\024\201\031\210\046\174\047\172\053\200\054\041\061" +
- "\113\062\111\065\116\066\114\070\130\071\127\073\157" +
- "\074\156\102\135\113\u018e\114\u018d\115\171\116\167\117" +
- "\213\120\212\121\163\122\162\001\001\000\074\004\165" +
- "\006\132\007\131\021\110\022\107\023\202\024\201\031" +
- "\210\046\174\047\172\053\200\054\041\061\113\062\111" +
- "\065\116\066\114\070\130\071\127\073\157\074\156\102" +
- "\135\113\u018c\114\u018b\115\171\116\167\117\213\120\212" +
- "\121\163\122\162\001\001\000\074\004\165\006\132\007" +
- "\131\021\110\022\107\023\202\024\201\031\210\046\174" +
- "\047\172\053\200\054\041\061\113\062\111\065\116\066" +
- "\114\070\130\071\127\073\157\074\156\102\135\113\u018a" +
- "\114\u0189\115\171\116\167\117\213\120\212\121\163\122" +
- "\162\001\001\000\074\004\165\006\132\007\131\021\110" +
- "\022\107\023\202\024\201\031\210\046\174\047\172\053" +
- "\200\054\041\061\113\062\111\065\116\066\114\070\130" +
- "\071\127\073\157\074\156\102\135\113\u0188\114\u0187\115" +
- "\171\116\167\117\213\120\212\121\163\122\162\001\001" +
- "\000\074\004\165\006\132\007\131\021\110\022\107\023" +
- "\202\024\201\031\210\046\174\047\172\053\200\054\041" +
- "\061\113\062\111\065\116\066\114\070\130\071\127\073" +
- "\157\074\156\102\135\113\u0186\114\u0185\115\171\116\167" +
- "\117\213\120\212\121\163\122\162\001\001\000\074\004" +
- "\165\006\132\007\131\021\110\022\107\023\202\024\201" +
- "\031\210\046\174\047\172\053\200\054\041\061\113\062" +
- "\111\065\116\066\114\070\130\071\127\073\157\074\156" +
- "\102\135\113\u0184\114\u0183\115\171\116\167\117\213\120" +
- "\212\121\163\122\162\001\001\000\074\004\165\006\132" +
- "\007\131\021\110\022\107\023\202\024\201\031\210\046" +
- "\174\047\172\053\200\054\041\061\113\062\111\065\116" +
- "\066\114\070\130\071\127\073\157\074\156\102\135\113" +
- "\u0182\114\u0181\115\171\116\167\117\213\120\212\121\163" +
- "\122\162\001\001\000\074\004\165\006\132\007\131\021" +
- "\110\022\107\023\202\024\201\031\210\046\174\047\172" +
- "\053\200\054\041\061\113\062\111\065\116\066\114\070" +
- "\130\071\127\073\157\074\156\102\135\113\u0180\114\u017f" +
- "\115\171\116\167\117\213\120\212\121\163\122\162\001" +
+ "\002\001\001\000\002\001\001\000\044\004\174\007\311" +
+ "\022\305\024\214\031\224\047\300\053\213\054\043\062" +
+ "\117\066\306\071\313\074\165\102\143\114\u0166\116\u0110" +
+ "\120\u0138\122\171\001\001\000\044\004\174\007\311\022" +
+ "\305\024\214\031\224\047\300\053\213\054\043\062\117" +
+ "\066\306\071\313\074\165\102\143\114\u0165\116\u0110\120" +
+ "\u0138\122\171\001\001\000\044\004\174\007\311\022\305" +
+ "\024\214\031\224\047\300\053\213\054\043\062\117\066" +
+ "\306\071\313\074\165\102\143\114\u0164\116\u0110\120\u0138" +
+ "\122\171\001\001\000\044\004\174\007\311\022\305\024" +
+ "\214\031\224\047\300\053\213\054\043\062\117\066\306" +
+ "\071\313\074\165\102\143\114\u0163\116\u0110\120\u0138\122" +
+ "\171\001\001\000\044\004\174\007\311\022\305\024\214" +
+ "\031\224\047\300\053\213\054\043\062\117\066\306\071" +
+ "\313\074\165\102\143\114\u0162\116\u0110\120\u0138\122\171" +
+ "\001\001\000\044\004\174\007\311\022\305\024\214\031" +
+ "\224\047\300\053\213\054\043\062\117\066\306\071\313" +
+ "\074\165\102\143\114\u0161\116\u0110\120\u0138\122\171\001" +
+ "\001\000\044\004\174\007\311\022\305\024\214\031\224" +
+ "\047\300\053\213\054\043\062\117\066\306\071\313\074" +
+ "\165\102\143\114\u0160\116\u0110\120\u0138\122\171\001\001" +
+ "\000\044\004\174\007\311\022\305\024\214\031\224\047" +
+ "\300\053\213\054\043\062\117\066\306\071\313\074\165" +
+ "\102\143\114\u015f\116\u0110\120\u0138\122\171\001\001\000" +
+ "\044\004\174\007\311\022\305\024\214\031\224\047\300" +
+ "\053\213\054\043\062\117\066\306\071\313\074\165\102" +
+ "\143\114\u015e\116\u0110\120\u0138\122\171\001\001\000\044" +
+ "\004\174\007\311\022\305\024\214\031\224\047\300\053" +
+ "\213\054\043\062\117\066\306\071\313\074\165\102\143" +
+ "\114\u015d\116\u0110\120\u0138\122\171\001\001\000\044\004" +
+ "\174\007\311\022\305\024\214\031\224\047\300\053\213" +
+ "\054\043\062\117\066\306\071\313\074\165\102\143\114" +
+ "\u015c\116\u0110\120\u0138\122\171\001\001\000\044\004\174" +
+ "\007\311\022\305\024\214\031\224\047\300\053\213\054" +
+ "\043\062\117\066\306\071\313\074\165\102\143\114\u015b" +
+ "\116\u0110\120\u0138\122\171\001\001\000\002\001\001\000" +
+ "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
+ "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
"\001\000\002\001\001\000\002\001\001\000\002\001\001" +
"\000\002\001\001\000\002\001\001\000\002\001\001\000" +
"\002\001\001\000\002\001\001\000\002\001\001\000\002" +
"\001\001\000\002\001\001\000\002\001\001\000\002\001" +
"\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+ "\000\006\031\260\034\u0174\001\001\000\002\001\001\000" +
+ "\006\031\260\034\u0176\001\001\000\002\001\001\000\032" +
+ "\004\174\005\u0178\007\311\022\305\024\214\031\224\053" +
+ "\213\054\043\071\313\074\354\102\143\122\171\001\001" +
+ "\000\002\001\001\000\146\002\114\003\113\004\174\005" +
+ "\112\006\137\007\136\010\151\011\150\021\116\022\115" +
+ "\023\215\024\214\025\164\026\163\030\u017a\031\224\040" +
+ "\110\041\107\042\221\043\220\044\232\045\231\046\205" +
+ "\047\203\053\213\054\043\057\106\060\105\061\120\062" +
+ "\117\063\154\064\153\065\124\066\122\070\135\071\134" +
+ "\073\166\074\165\102\143\113\146\114\145\115\200\116" +
+ "\176\117\227\120\226\121\172\122\171\124\211\125\210" +
+ "\126\202\001\001\000\002\001\001\000\002\001\001\000" +
+ "\002\001\001\000\004\054\u017e\001\001\000\002\001\001" +
+ "\000\040\004\174\005\u0184\007\311\022\305\024\214\031" +
+ "\224\047\300\053\213\054\043\062\347\066\306\071\313" +
+ "\074\165\102\143\122\171\001\001\000\040\004\174\005" +
+ "\u0183\007\311\022\305\024\214\031\224\047\300\053\213" +
+ "\054\043\062\345\066\306\071\313\074\165\102\143\122" +
+ "\171\001\001\000\040\004\174\005\u0182\007\311\022\305" +
+ "\024\214\031\224\047\300\053\213\054\043\062\346\066" +
+ "\306\071\313\074\165\102\143\122\171\001\001\000\002" +
+ "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
+ "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+ "\000\002\001\001\000\006\031\260\034\u018b\001\001\000" +
+ "\002\001\001\000\064\003\u018d\004\174\005\u0190\007\311" +
+ "\011\u0136\022\305\024\214\031\224\041\u018e\043\220\045" +
+ "\231\047\300\053\213\054\043\060\105\062\117\066\306" +
+ "\071\313\074\165\102\143\114\u0135\116\u0110\120\u0138\122" +
+ "\171\125\u018f\001\001\000\002\001\001\000\002\001\001" +
+ "\000\002\001\001\000\002\001\001\000\050\004\174\007" +
+ "\311\011\u0136\022\305\024\214\031\224\047\300\053\213" +
+ "\054\043\060\u016f\062\117\066\306\071\313\074\165\102" +
+ "\143\114\u0135\116\u0110\120\u0138\122\171\001\001\000\050" +
+ "\004\174\007\311\011\u0136\022\305\024\214\031\224\047" +
+ "\300\053\213\054\043\060\u016d\062\117\066\306\071\313" +
+ "\074\165\102\143\114\u0135\116\u0110\120\u0138\122\171\001" +
+ "\001\000\050\004\174\007\311\011\u0136\022\305\024\214" +
+ "\031\224\047\300\053\213\054\043\060\u0134\062\117\066" +
+ "\306\071\313\074\165\102\143\114\u0135\116\u0110\120\u0138" +
+ "\122\171\001\001\000\050\004\174\007\311\011\u0136\022" +
+ "\305\024\214\031\224\047\300\053\213\054\043\060\u016b" +
+ "\062\117\066\306\071\313\074\165\102\143\114\u0135\116" +
+ "\u0110\120\u0138\122\171\001\001\000\062\003\u018d\004\174" +
+ "\007\311\011\u0136\022\305\024\214\031\224\041\u0198\043" +
+ "\u0199\045\231\047\300\053\213\054\043\060\105\062\117" +
+ "\066\306\071\313\074\165\102\143\114\u0135\116\u0110\120" +
+ "\u0138\122\171\125\u018f\001\001\000\052\004\174\007\311" +
+ "\011\u0136\022\305\024\214\031\224\047\300\053\213\054" +
+ "\043\060\105\062\117\066\306\071\313\074\165\102\143" +
+ "\114\u0135\116\u0110\120\u0138\122\171\125\u0197\001\001\000" +
+ "\002\001\001\000\002\001\001\000\002\001\001\000\060" +
+ "\003\u018d\004\174\007\311\011\u0136\022\305\024\214\031" +
+ "\224\043\u019c\045\u019b\047\300\053\213\054\043\060\105" +
+ "\062\117\066\306\071\313\074\165\102\143\114\u0135\116" +
+ "\u0110\120\u0138\122\171\125\u018f\001\001\000\002\001\001" +
+ "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
+ "\002\001\001\000\002\001\001\000\006\031\260\034\u01a2" +
+ "\001\001\000\002\001\001\000\152\002\114\003\113\004" +
+ "\174\005\112\006\137\007\136\010\151\011\150\021\116" +
+ "\022\115\023\215\024\214\025\164\026\163\030\242\031" +
+ "\224\035\u01a4\036\244\040\110\041\107\042\221\043\220" +
+ "\044\232\045\231\046\205\047\203\053\213\054\043\057" +
+ "\106\060\105\061\120\062\117\063\154\064\153\065\124" +
+ "\066\122\070\135\071\134\073\166\074\165\102\143\113" +
+ "\146\114\145\115\200\116\176\117\227\120\226\121\172" +
+ "\122\171\124\211\125\210\126\202\001\001\000\002\001" +
+ "\001\000\002\001\001\000\066\003\u018d\004\174\005\u01a8" +
+ "\007\311\011\u0136\022\305\024\214\026\u01a7\031\224\041" +
+ "\107\043\220\045\231\047\300\053\213\054\043\060\105" +
+ "\062\117\066\306\071\313\074\165\102\143\114\u0135\116" +
+ "\u0110\120\u0138\122\171\125\u018f\001\001\000\002\001\001" +
+ "\000\002\001\001\000\062\003\u018d\004\174\007\311\011" +
+ "\u0136\022\305\024\214\031\224\041\u018e\043\220\045\231" +
+ "\047\300\053\213\054\043\060\105\062\117\066\306\071" +
+ "\313\074\165\102\143\114\u0135\116\u0110\120\u0138\122\171" +
+ "\125\u018f\001\001\000\076\004\174\005\u010c\006\137\007" +
+ "\136\021\116\022\115\023\215\024\214\031\224\046\205" +
+ "\047\203\053\213\054\043\061\120\062\117\065\124\066" +
+ "\122\070\135\071\134\073\166\074\165\102\143\113\u01cd" +
+ "\114\u01cc\115\200\116\176\117\227\120\226\121\172\122" +
+ "\171\001\001\000\076\004\174\005\u010c\006\137\007\136" +
+ "\021\116\022\115\023\215\024\214\031\224\046\205\047" +
+ "\203\053\213\054\043\061\120\062\117\065\124\066\122" +
+ "\070\135\071\134\073\166\074\165\102\143\113\u01cb\114" +
+ "\u01ca\115\200\116\176\117\227\120\226\121\172\122\171" +
+ "\001\001\000\076\004\174\005\u010c\006\137\007\136\021" +
+ "\116\022\115\023\215\024\214\031\224\046\205\047\203" +
+ "\053\213\054\043\061\120\062\117\065\124\066\122\070" +
+ "\135\071\134\073\166\074\165\102\143\113\u01c9\114\u01c8" +
+ "\115\200\116\176\117\227\120\226\121\172\122\171\001" +
+ "\001\000\076\004\174\005\u010c\006\137\007\136\021\116" +
+ "\022\115\023\215\024\214\031\224\046\205\047\203\053" +
+ "\213\054\043\061\120\062\117\065\124\066\122\070\135" +
+ "\071\134\073\166\074\165\102\143\113\u01c7\114\u01c6\115" +
+ "\200\116\176\117\227\120\226\121\172\122\171\001\001" +
+ "\000\076\004\174\005\u010c\006\137\007\136\021\116\022" +
+ "\115\023\215\024\214\031\224\046\205\047\203\053\213" +
+ "\054\043\061\120\062\117\065\124\066\122\070\135\071" +
+ "\134\073\166\074\165\102\143\113\u01c5\114\u01c4\115\200" +
+ "\116\176\117\227\120\226\121\172\122\171\001\001\000" +
+ "\076\004\174\005\u010c\006\137\007\136\021\116\022\115" +
+ "\023\215\024\214\031\224\046\205\047\203\053\213\054" +
+ "\043\061\120\062\117\065\124\066\122\070\135\071\134" +
+ "\073\166\074\165\102\143\113\u01c3\114\u01c2\115\200\116" +
+ "\176\117\227\120\226\121\172\122\171\001\001\000\076" +
+ "\004\174\005\u010c\006\137\007\136\021\116\022\115\023" +
+ "\215\024\214\031\224\046\205\047\203\053\213\054\043" +
+ "\061\120\062\117\065\124\066\122\070\135\071\134\073" +
+ "\166\074\165\102\143\113\u01c1\114\u01c0\115\200\116\176" +
+ "\117\227\120\226\121\172\122\171\001\001\000\076\004" +
+ "\174\005\u010c\006\137\007\136\021\116\022\115\023\215" +
+ "\024\214\031\224\046\205\047\203\053\213\054\043\061" +
+ "\120\062\117\065\124\066\122\070\135\071\134\073\166" +
+ "\074\165\102\143\113\u01bf\114\u01be\115\200\116\176\117" +
+ "\227\120\226\121\172\122\171\001\001\000\076\004\174" +
+ "\005\u010c\006\137\007\136\021\116\022\115\023\215\024" +
+ "\214\031\224\046\205\047\203\053\213\054\043\061\120" +
+ "\062\117\065\124\066\122\070\135\071\134\073\166\074" +
+ "\165\102\143\113\u01bd\114\u01bc\115\200\116\176\117\227" +
+ "\120\226\121\172\122\171\001\001\000\076\004\174\005" +
+ "\u010c\006\137\007\136\021\116\022\115\023\215\024\214" +
+ "\031\224\046\205\047\203\053\213\054\043\061\120\062" +
+ "\117\065\124\066\122\070\135\071\134\073\166\074\165" +
+ "\102\143\113\u01bb\114\u01ba\115\200\116\176\117\227\120" +
+ "\226\121\172\122\171\001\001\000\076\004\174\005\u010c" +
+ "\006\137\007\136\021\116\022\115\023\215\024\214\031" +
+ "\224\046\205\047\203\053\213\054\043\061\120\062\117" +
+ "\065\124\066\122\070\135\071\134\073\166\074\165\102" +
+ "\143\113\u01b9\114\u01b8\115\200\116\176\117\227\120\226" +
+ "\121\172\122\171\001\001\000\076\004\174\005\u010c\006" +
+ "\137\007\136\021\116\022\115\023\215\024\214\031\224" +
+ "\046\205\047\203\053\213\054\043\061\120\062\117\065" +
+ "\124\066\122\070\135\071\134\073\166\074\165\102\143" +
+ "\113\u01b7\114\u01b6\115\200\116\176\117\227\120\226\121" +
+ "\172\122\171\001\001\000\002\001\001\000\002\001\001" +
"\000\002\001\001\000\002\001\001\000\002\001\001\000" +
"\002\001\001\000\002\001\001\000\002\001\001\000\002" +
"\001\001\000\002\001\001\000\002\001\001\000\002\001" +
- "\001\000\002\001\001\000\002\001\001\000\020\004\165" +
- "\005\u019c\031\210\053\200\054\041\102\135\122\306\001" +
- "\001\000\002\001\001\000\024\004\165\005\u019e\007\277" +
- "\024\201\031\210\053\200\054\041\102\135\122\162\001" +
"\001\000\002\001\001\000\002\001\001\000\002\001\001" +
- "\000\010\053\066\054\041\055\u01c4\001\001\000\010\053" +
- "\066\054\041\055\u01bf\001\001\000\002\001\001\000\006" +
- "\031\243\034\u01b6\001\001\000\010\053\066\054\041\055" +
- "\u01b0\001\001\000\002\001\001\000\002\001\001\000\010" +
- "\053\066\054\041\055\u01aa\001\001\000\010\053\066\054" +
- "\041\055\u01ab\001\001\000\002\001\001\000\002\001\001" +
- "\000\140\002\106\003\105\004\165\005\104\006\132\007" +
- "\131\010\142\011\141\021\110\022\107\023\202\024\201" +
- "\025\155\026\154\030\u01ad\031\210\040\103\041\102\042" +
- "\206\043\205\044\216\045\215\046\174\047\172\053\200" +
- "\054\041\057\122\060\121\061\113\062\111\063\145\064" +
- "\144\065\116\066\114\070\130\071\127\073\157\074\156" +
- "\102\135\113\140\114\137\115\171\116\167\117\213\120" +
- "\212\121\163\122\162\001\001\000\002\001\001\000\140" +
- "\002\106\003\105\004\165\005\104\006\132\007\131\010" +
- "\142\011\141\021\110\022\107\023\202\024\201\025\155" +
- "\026\154\030\u01af\031\210\040\103\041\102\042\206\043" +
- "\205\044\216\045\215\046\174\047\172\053\200\054\041" +
- "\057\122\060\121\061\113\062\111\063\145\064\144\065" +
- "\116\066\114\070\130\071\127\073\157\074\156\102\135" +
- "\113\140\114\137\115\171\116\167\117\213\120\212\121" +
- "\163\122\162\001\001\000\002\001\001\000\002\001\001" +
- "\000\140\002\106\003\105\004\165\005\104\006\132\007" +
- "\131\010\142\011\141\021\110\022\107\023\202\024\201" +
- "\025\155\026\154\030\u01b2\031\210\040\103\041\102\042" +
- "\206\043\205\044\216\045\215\046\174\047\172\053\200" +
- "\054\041\057\122\060\121\061\113\062\111\063\145\064" +
- "\144\065\116\066\114\070\130\071\127\073\157\074\156" +
- "\102\135\113\140\114\137\115\171\116\167\117\213\120" +
- "\212\121\163\122\162\001\001\000\002\001\001\000\140" +
- "\002\106\003\105\004\165\005\104\006\132\007\131\010" +
- "\142\011\141\021\110\022\107\023\202\024\201\025\155" +
- "\026\154\030\u01b4\031\210\040\103\041\102\042\206\043" +
- "\205\044\216\045\215\046\174\047\172\053\200\054\041" +
- "\057\122\060\121\061\113\062\111\063\145\064\144\065" +
- "\116\066\114\070\130\071\127\073\157\074\156\102\135" +
- "\113\140\114\137\115\171\116\167\117\213\120\212\121" +
- "\163\122\162\001\001\000\002\001\001\000\012\014\u01ba" +
- "\053\066\054\041\055\u01a3\001\001\000\002\001\001\000" +
- "\002\001\001\000\002\001\001\000\010\053\066\054\041" +
- "\055\u01b0\001\001\000\002\001\001\000\140\002\106\003" +
- "\105\004\165\005\104\006\132\007\131\010\142\011\141" +
- "\021\110\022\107\023\202\024\201\025\155\026\154\030" +
- "\u01bc\031\210\040\103\041\102\042\206\043\205\044\216" +
- "\045\215\046\174\047\172\053\200\054\041\057\122\060" +
- "\121\061\113\062\111\063\145\064\144\065\116\066\114" +
- "\070\130\071\127\073\157\074\156\102\135\113\140\114" +
- "\137\115\171\116\167\117\213\120\212\121\163\122\162" +
- "\001\001\000\002\001\001\000\140\002\106\003\105\004" +
- "\165\005\104\006\132\007\131\010\142\011\141\021\110" +
- "\022\107\023\202\024\201\025\155\026\154\030\u01be\031" +
- "\210\040\103\041\102\042\206\043\205\044\216\045\215" +
- "\046\174\047\172\053\200\054\041\057\122\060\121\061" +
- "\113\062\111\063\145\064\144\065\116\066\114\070\130" +
- "\071\127\073\157\074\156\102\135\113\140\114\137\115" +
- "\171\116\167\117\213\120\212\121\163\122\162\001\001" +
- "\000\002\001\001\000\002\001\001\000\140\002\106\003" +
- "\105\004\165\005\104\006\132\007\131\010\142\011\141" +
- "\021\110\022\107\023\202\024\201\025\155\026\154\030" +
- "\u01c1\031\210\040\103\041\102\042\206\043\205\044\216" +
- "\045\215\046\174\047\172\053\200\054\041\057\122\060" +
- "\121\061\113\062\111\063\145\064\144\065\116\066\114" +
- "\070\130\071\127\073\157\074\156\102\135\113\140\114" +
- "\137\115\171\116\167\117\213\120\212\121\163\122\162" +
- "\001\001\000\002\001\001\000\140\002\106\003\105\004" +
- "\165\005\104\006\132\007\131\010\142\011\141\021\110" +
- "\022\107\023\202\024\201\025\155\026\154\030\u01c3\031" +
- "\210\040\103\041\102\042\206\043\205\044\216\045\215" +
- "\046\174\047\172\053\200\054\041\057\122\060\121\061" +
- "\113\062\111\063\145\064\144\065\116\066\114\070\130" +
- "\071\127\073\157\074\156\102\135\113\140\114\137\115" +
- "\171\116\167\117\213\120\212\121\163\122\162\001\001" +
- "\000\002\001\001\000\002\001\001\000\140\002\106\003" +
- "\105\004\165\005\104\006\132\007\131\010\142\011\141" +
- "\021\110\022\107\023\202\024\201\025\155\026\154\030" +
- "\u01c6\031\210\040\103\041\102\042\206\043\205\044\216" +
- "\045\215\046\174\047\172\053\200\054\041\057\122\060" +
- "\121\061\113\062\111\063\145\064\144\065\116\066\114" +
- "\070\130\071\127\073\157\074\156\102\135\113\140\114" +
- "\137\115\171\116\167\117\213\120\212\121\163\122\162" +
- "\001\001\000\002\001\001\000\140\002\106\003\105\004" +
- "\165\005\104\006\132\007\131\010\142\011\141\021\110" +
- "\022\107\023\202\024\201\025\155\026\154\030\u01c8\031" +
- "\210\040\103\041\102\042\206\043\205\044\216\045\215" +
- "\046\174\047\172\053\200\054\041\057\122\060\121\061" +
- "\113\062\111\063\145\064\144\065\116\066\114\070\130" +
- "\071\127\073\157\074\156\102\135\113\140\114\137\115" +
- "\171\116\167\117\213\120\212\121\163\122\162\001\001" +
"\000\002\001\001\000\002\001\001\000\002\001\001\000" +
- "\002\001\001\000\002\001\001\000\034\004\165\005\u01ce" +
- "\007\270\022\264\024\201\031\210\047\330\053\200\054" +
- "\041\071\272\074\156\102\135\122\162\001\001\000\002" +
- "\001\001\000\006\031\243\034\u01d0\001\001\000\002\001" +
- "\001\000\026\004\165\005\u01d4\007\270\024\201\031\210" +
- "\053\200\054\041\071\356\102\135\122\162\001\001\000" +
- "\032\004\165\005\u01d3\007\270\022\264\024\201\031\210" +
- "\053\200\054\041\071\272\074\355\102\135\122\162\001" +
- "\001\000\002\001\001\000\002\001\001\000\126\002\106" +
- "\003\105\004\165\005\u01d9\006\132\007\131\010\142\011" +
- "\141\021\110\022\107\023\202\024\201\031\210\040\u01d8" +
- "\041\u0146\042\206\043\u01da\044\216\045\215\046\174\047" +
- "\172\053\200\054\041\057\122\060\121\061\113\062\111" +
- "\065\116\066\114\070\130\071\127\073\157\074\156\102" +
- "\135\113\140\114\137\115\171\116\167\117\213\120\212" +
- "\121\163\122\162\001\001\000\052\004\165\005\u01d7\007" +
- "\270\011\u0131\022\264\024\201\031\210\047\257\053\200" +
- "\054\041\060\u0145\062\111\066\265\071\272\074\156\102" +
- "\135\114\u0130\116\375\120\u0134\122\162\001\001\000\002" +
+ "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
"\001\001\000\002\001\001\000\002\001\001\000\002\001" +
- "\001\000\122\002\106\003\105\004\165\005\u01dc\006\132" +
- "\007\131\010\142\011\141\021\110\022\107\023\202\024" +
- "\201\031\210\042\u01dd\043\u014a\044\u01de\045\u0149\046\174" +
- "\047\172\053\200\054\041\057\122\060\121\061\113\062" +
- "\111\065\116\066\114\070\130\071\127\073\157\074\156" +
- "\102\135\113\140\114\137\115\171\116\167\117\213\120" +
- "\212\121\163\122\162\001\001\000\002\001\001\000\002" +
+ "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+ "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
+ "\002\001\001\000\020\004\174\005\u01d7\031\224\053\213" +
+ "\054\043\102\143\122\327\001\001\000\002\001\001\000" +
+ "\024\004\174\005\u01d9\007\320\024\214\031\224\053\213" +
+ "\054\043\102\143\122\171\001\001\000\002\001\001\000" +
+ "\002\001\001\000\002\001\001\000\010\053\067\054\043" +
+ "\055\u01ff\001\001\000\010\053\067\054\043\055\u01fa\001" +
+ "\001\000\002\001\001\000\006\031\260\034\u01f1\001\001" +
+ "\000\010\053\067\054\043\055\u01eb\001\001\000\002\001" +
+ "\001\000\002\001\001\000\010\053\067\054\043\055\u01e5" +
+ "\001\001\000\010\053\067\054\043\055\u01e6\001\001\000" +
+ "\002\001\001\000\002\001\001\000\146\002\114\003\113" +
+ "\004\174\005\112\006\137\007\136\010\151\011\150\021" +
+ "\116\022\115\023\215\024\214\025\164\026\163\030\u01e8" +
+ "\031\224\040\110\041\107\042\221\043\220\044\232\045" +
+ "\231\046\205\047\203\053\213\054\043\057\106\060\105" +
+ "\061\120\062\117\063\154\064\153\065\124\066\122\070" +
+ "\135\071\134\073\166\074\165\102\143\113\146\114\145" +
+ "\115\200\116\176\117\227\120\226\121\172\122\171\124" +
+ "\211\125\210\126\202\001\001\000\002\001\001\000\146" +
+ "\002\114\003\113\004\174\005\112\006\137\007\136\010" +
+ "\151\011\150\021\116\022\115\023\215\024\214\025\164" +
+ "\026\163\030\u01ea\031\224\040\110\041\107\042\221\043" +
+ "\220\044\232\045\231\046\205\047\203\053\213\054\043" +
+ "\057\106\060\105\061\120\062\117\063\154\064\153\065" +
+ "\124\066\122\070\135\071\134\073\166\074\165\102\143" +
+ "\113\146\114\145\115\200\116\176\117\227\120\226\121" +
+ "\172\122\171\124\211\125\210\126\202\001\001\000\002" +
+ "\001\001\000\002\001\001\000\146\002\114\003\113\004" +
+ "\174\005\112\006\137\007\136\010\151\011\150\021\116" +
+ "\022\115\023\215\024\214\025\164\026\163\030\u01ed\031" +
+ "\224\040\110\041\107\042\221\043\220\044\232\045\231" +
+ "\046\205\047\203\053\213\054\043\057\106\060\105\061" +
+ "\120\062\117\063\154\064\153\065\124\066\122\070\135" +
+ "\071\134\073\166\074\165\102\143\113\146\114\145\115" +
+ "\200\116\176\117\227\120\226\121\172\122\171\124\211" +
+ "\125\210\126\202\001\001\000\002\001\001\000\146\002" +
+ "\114\003\113\004\174\005\112\006\137\007\136\010\151" +
+ "\011\150\021\116\022\115\023\215\024\214\025\164\026" +
+ "\163\030\u01ef\031\224\040\110\041\107\042\221\043\220" +
+ "\044\232\045\231\046\205\047\203\053\213\054\043\057" +
+ "\106\060\105\061\120\062\117\063\154\064\153\065\124" +
+ "\066\122\070\135\071\134\073\166\074\165\102\143\113" +
+ "\146\114\145\115\200\116\176\117\227\120\226\121\172" +
+ "\122\171\124\211\125\210\126\202\001\001\000\002\001" +
+ "\001\000\012\014\u01f5\053\067\054\043\055\u01de\001\001" +
+ "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
+ "\010\053\067\054\043\055\u01eb\001\001\000\002\001\001" +
+ "\000\146\002\114\003\113\004\174\005\112\006\137\007" +
+ "\136\010\151\011\150\021\116\022\115\023\215\024\214" +
+ "\025\164\026\163\030\u01f7\031\224\040\110\041\107\042" +
+ "\221\043\220\044\232\045\231\046\205\047\203\053\213" +
+ "\054\043\057\106\060\105\061\120\062\117\063\154\064" +
+ "\153\065\124\066\122\070\135\071\134\073\166\074\165" +
+ "\102\143\113\146\114\145\115\200\116\176\117\227\120" +
+ "\226\121\172\122\171\124\211\125\210\126\202\001\001" +
+ "\000\002\001\001\000\146\002\114\003\113\004\174\005" +
+ "\112\006\137\007\136\010\151\011\150\021\116\022\115" +
+ "\023\215\024\214\025\164\026\163\030\u01f9\031\224\040" +
+ "\110\041\107\042\221\043\220\044\232\045\231\046\205" +
+ "\047\203\053\213\054\043\057\106\060\105\061\120\062" +
+ "\117\063\154\064\153\065\124\066\122\070\135\071\134" +
+ "\073\166\074\165\102\143\113\146\114\145\115\200\116" +
+ "\176\117\227\120\226\121\172\122\171\124\211\125\210" +
+ "\126\202\001\001\000\002\001\001\000\002\001\001\000" +
+ "\146\002\114\003\113\004\174\005\112\006\137\007\136" +
+ "\010\151\011\150\021\116\022\115\023\215\024\214\025" +
+ "\164\026\163\030\u01fc\031\224\040\110\041\107\042\221" +
+ "\043\220\044\232\045\231\046\205\047\203\053\213\054" +
+ "\043\057\106\060\105\061\120\062\117\063\154\064\153" +
+ "\065\124\066\122\070\135\071\134\073\166\074\165\102" +
+ "\143\113\146\114\145\115\200\116\176\117\227\120\226" +
+ "\121\172\122\171\124\211\125\210\126\202\001\001\000" +
+ "\002\001\001\000\146\002\114\003\113\004\174\005\112" +
+ "\006\137\007\136\010\151\011\150\021\116\022\115\023" +
+ "\215\024\214\025\164\026\163\030\u01fe\031\224\040\110" +
+ "\041\107\042\221\043\220\044\232\045\231\046\205\047" +
+ "\203\053\213\054\043\057\106\060\105\061\120\062\117" +
+ "\063\154\064\153\065\124\066\122\070\135\071\134\073" +
+ "\166\074\165\102\143\113\146\114\145\115\200\116\176" +
+ "\117\227\120\226\121\172\122\171\124\211\125\210\126" +
+ "\202\001\001\000\002\001\001\000\002\001\001\000\146" +
+ "\002\114\003\113\004\174\005\112\006\137\007\136\010" +
+ "\151\011\150\021\116\022\115\023\215\024\214\025\164" +
+ "\026\163\030\u0201\031\224\040\110\041\107\042\221\043" +
+ "\220\044\232\045\231\046\205\047\203\053\213\054\043" +
+ "\057\106\060\105\061\120\062\117\063\154\064\153\065" +
+ "\124\066\122\070\135\071\134\073\166\074\165\102\143" +
+ "\113\146\114\145\115\200\116\176\117\227\120\226\121" +
+ "\172\122\171\124\211\125\210\126\202\001\001\000\002" +
+ "\001\001\000\146\002\114\003\113\004\174\005\112\006" +
+ "\137\007\136\010\151\011\150\021\116\022\115\023\215" +
+ "\024\214\025\164\026\163\030\u0203\031\224\040\110\041" +
+ "\107\042\221\043\220\044\232\045\231\046\205\047\203" +
+ "\053\213\054\043\057\106\060\105\061\120\062\117\063" +
+ "\154\064\153\065\124\066\122\070\135\071\134\073\166" +
+ "\074\165\102\143\113\146\114\145\115\200\116\176\117" +
+ "\227\120\226\121\172\122\171\124\211\125\210\126\202" +
"\001\001\000\002\001\001\000\002\001\001\000\002\001" +
- "\001\000\140\002\106\003\105\004\165\005\104\006\132" +
- "\007\131\010\142\011\141\021\110\022\107\023\202\024" +
- "\201\025\155\026\154\030\u01e2\031\210\040\103\041\102" +
- "\042\206\043\205\044\216\045\215\046\174\047\172\053" +
- "\200\054\041\057\122\060\121\061\113\062\111\063\145" +
- "\064\144\065\116\066\114\070\130\071\127\073\157\074" +
- "\156\102\135\113\140\114\137\115\171\116\167\117\213" +
- "\120\212\121\163\122\162\001\001\000\002\001\001\000" +
- "\002\001\001\000\002\001\001\000\140\002\106\003\105" +
- "\004\165\005\104\006\132\007\131\010\142\011\141\021" +
- "\110\022\107\023\202\024\201\025\155\026\154\030\u01e6" +
- "\031\210\040\103\041\102\042\206\043\205\044\216\045" +
- "\215\046\174\047\172\053\200\054\041\057\122\060\121" +
- "\061\113\062\111\063\145\064\144\065\116\066\114\070" +
- "\130\071\127\073\157\074\156\102\135\113\140\114\137" +
- "\115\171\116\167\117\213\120\212\121\163\122\162\001" +
- "\001\000\002\001\001\000\140\002\106\003\105\004\165" +
- "\005\104\006\132\007\131\010\142\011\141\021\110\022" +
- "\107\023\202\024\201\025\155\026\154\030\u01e8\031\210" +
- "\040\103\041\102\042\206\043\205\044\216\045\215\046" +
- "\174\047\172\053\200\054\041\057\122\060\121\061\113" +
- "\062\111\063\145\064\144\065\116\066\114\070\130\071" +
- "\127\073\157\074\156\102\135\113\140\114\137\115\171" +
- "\116\167\117\213\120\212\121\163\122\162\001\001\000" +
- "\002\001\001\000\002\001\001\000\140\002\106\003\105" +
- "\004\165\005\104\006\132\007\131\010\142\011\141\021" +
- "\110\022\107\023\202\024\201\025\155\026\154\030\u01eb" +
- "\031\210\040\103\041\102\042\206\043\205\044\216\045" +
- "\215\046\174\047\172\053\200\054\041\057\122\060\121" +
- "\061\113\062\111\063\145\064\144\065\116\066\114\070" +
- "\130\071\127\073\157\074\156\102\135\113\140\114\137" +
- "\115\171\116\167\117\213\120\212\121\163\122\162\001" +
- "\001\000\004\031\u01ec\001\001\000\002\001\001\000\002" +
- "\001\001\000\140\002\106\003\105\004\165\005\104\006" +
- "\132\007\131\010\142\011\141\021\110\022\107\023\202" +
- "\024\201\025\155\026\154\030\u01ef\031\210\040\103\041" +
- "\102\042\206\043\205\044\216\045\215\046\174\047\172" +
- "\053\200\054\041\057\122\060\121\061\113\062\111\063" +
- "\145\064\144\065\116\066\114\070\130\071\127\073\157" +
- "\074\156\102\135\113\140\114\137\115\171\116\167\117" +
- "\213\120\212\121\163\122\162\001\001\000\002\001\001" +
- "\000\140\002\106\003\105\004\165\005\104\006\132\007" +
- "\131\010\142\011\141\021\110\022\107\023\202\024\201" +
- "\025\155\026\154\030\u01f1\031\210\040\103\041\102\042" +
- "\206\043\205\044\216\045\215\046\174\047\172\053\200" +
- "\054\041\057\122\060\121\061\113\062\111\063\145\064" +
- "\144\065\116\066\114\070\130\071\127\073\157\074\156" +
- "\102\135\113\140\114\137\115\171\116\167\117\213\120" +
- "\212\121\163\122\162\001\001\000\002\001\001\000\016" +
- "\014\070\015\065\017\u01f3\053\066\054\041\055\067\001" +
- "\001\000\002\001\001\000\002\001\001\000\140\002\106" +
- "\003\105\004\165\005\104\006\132\007\131\010\142\011" +
- "\141\021\110\022\107\023\202\024\201\025\155\026\154" +
- "\030\u01f6\031\210\040\103\041\102\042\206\043\205\044" +
- "\216\045\215\046\174\047\172\053\200\054\041\057\122" +
- "\060\121\061\113\062\111\063\145\064\144\065\116\066" +
- "\114\070\130\071\127\073\157\074\156\102\135\113\140" +
- "\114\137\115\171\116\167\117\213\120\212\121\163\122" +
- "\162\001\001\000\002\001\001\000\140\002\106\003\105" +
- "\004\165\005\104\006\132\007\131\010\142\011\141\021" +
- "\110\022\107\023\202\024\201\025\155\026\154\030\u01f8" +
- "\031\210\040\103\041\102\042\206\043\205\044\216\045" +
- "\215\046\174\047\172\053\200\054\041\057\122\060\121" +
- "\061\113\062\111\063\145\064\144\065\116\066\114\070" +
- "\130\071\127\073\157\074\156\102\135\113\140\114\137" +
- "\115\171\116\167\117\213\120\212\121\163\122\162\001" +
- "\001\000\002\001\001\000\002\001\001\000\140\002\106" +
- "\003\105\004\165\005\104\006\132\007\131\010\142\011" +
- "\141\021\110\022\107\023\202\024\201\025\155\026\154" +
- "\030\u01fb\031\210\040\103\041\102\042\206\043\205\044" +
- "\216\045\215\046\174\047\172\053\200\054\041\057\122" +
- "\060\121\061\113\062\111\063\145\064\144\065\116\066" +
- "\114\070\130\071\127\073\157\074\156\102\135\113\140" +
- "\114\137\115\171\116\167\117\213\120\212\121\163\122" +
- "\162\001\001\000\002\001\001\000\140\002\106\003\105" +
- "\004\165\005\104\006\132\007\131\010\142\011\141\021" +
- "\110\022\107\023\202\024\201\025\155\026\154\030\u01fd" +
- "\031\210\040\103\041\102\042\206\043\205\044\216\045" +
- "\215\046\174\047\172\053\200\054\041\057\122\060\121" +
- "\061\113\062\111\063\145\064\144\065\116\066\114\070" +
- "\130\071\127\073\157\074\156\102\135\113\140\114\137" +
- "\115\171\116\167\117\213\120\212\121\163\122\162\001" +
- "\001\000\002\001\001\000\002\001\001\000\140\002\106" +
- "\003\105\004\165\005\104\006\132\007\131\010\142\011" +
- "\141\021\110\022\107\023\202\024\201\025\155\026\154" +
- "\030\u0200\031\210\040\103\041\102\042\206\043\205\044" +
- "\216\045\215\046\174\047\172\053\200\054\041\057\122" +
- "\060\121\061\113\062\111\063\145\064\144\065\116\066" +
- "\114\070\130\071\127\073\157\074\156\102\135\113\140" +
- "\114\137\115\171\116\167\117\213\120\212\121\163\122" +
- "\162\001\001\000\002\001\001\000\140\002\106\003\105" +
- "\004\165\005\104\006\132\007\131\010\142\011\141\021" +
- "\110\022\107\023\202\024\201\025\155\026\154\030\u0202" +
- "\031\210\040\103\041\102\042\206\043\205\044\216\045" +
- "\215\046\174\047\172\053\200\054\041\057\122\060\121" +
- "\061\113\062\111\063\145\064\144\065\116\066\114\070" +
- "\130\071\127\073\157\074\156\102\135\113\140\114\137" +
- "\115\171\116\167\117\213\120\212\121\163\122\162\001" +
"\001\000\002\001\001\000\002\001\001\000\002\001\001" +
- "\000\140\002\106\003\105\004\165\005\104\006\132\007" +
- "\131\010\142\011\141\021\110\022\107\023\202\024\201" +
- "\025\155\026\154\030\u0206\031\210\040\103\041\102\042" +
- "\206\043\205\044\216\045\215\046\174\047\172\053\200" +
- "\054\041\057\122\060\121\061\113\062\111\063\145\064" +
- "\144\065\116\066\114\070\130\071\127\073\157\074\156" +
- "\102\135\113\140\114\137\115\171\116\167\117\213\120" +
- "\212\121\163\122\162\001\001\000\004\031\u0207\001\001" +
- "\000\002\001\001\000\004\031\u0209\001\001\000\002\001" +
- "\001\000\140\002\106\003\105\004\165\005\104\006\132" +
- "\007\131\010\142\011\141\021\110\022\107\023\202\024" +
- "\201\025\155\026\154\030\u0217\031\210\040\103\041\102" +
- "\042\206\043\205\044\216\045\215\046\174\047\172\053" +
- "\200\054\041\057\122\060\121\061\113\062\111\063\145" +
- "\064\144\065\116\066\114\070\130\071\127\073\157\074" +
- "\156\102\135\113\140\114\137\115\171\116\167\117\213" +
- "\120\212\121\163\122\162\001\001\000\016\014\070\015" +
- "\065\017\u0212\053\066\054\041\055\067\001\001\000\016" +
- "\014\070\015\065\017\u020d\053\066\054\041\055\067\001" +
- "\001\000\002\001\001\000\002\001\001\000\140\002\106" +
- "\003\105\004\165\005\104\006\132\007\131\010\142\011" +
- "\141\021\110\022\107\023\202\024\201\025\155\026\154" +
- "\030\u0210\031\210\040\103\041\102\042\206\043\205\044" +
- "\216\045\215\046\174\047\172\053\200\054\041\057\122" +
- "\060\121\061\113\062\111\063\145\064\144\065\116\066" +
- "\114\070\130\071\127\073\157\074\156\102\135\113\140" +
- "\114\137\115\171\116\167\117\213\120\212\121\163\122" +
- "\162\001\001\000\004\031\u0211\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\140\002\106\003" +
- "\105\004\165\005\104\006\132\007\131\010\142\011\141" +
- "\021\110\022\107\023\202\024\201\025\155\026\154\030" +
- "\u0215\031\210\040\103\041\102\042\206\043\205\044\216" +
- "\045\215\046\174\047\172\053\200\054\041\057\122\060" +
- "\121\061\113\062\111\063\145\064\144\065\116\066\114" +
- "\070\130\071\127\073\157\074\156\102\135\113\140\114" +
- "\137\115\171\116\167\117\213\120\212\121\163\122\162" +
- "\001\001\000\004\031\u0216\001\001\000\002\001\001\000" +
- "\004\031\u0218\001\001\000\002\001\001\000\002\001\001" +
- "\000\006\053\u0224\054\041\001\001\000\014\053\200\054" +
- "\041\102\u021e\103\u021d\104\u021c\001\001\000\002\001\001" +
- "\000\002\001\001\000\002\001\001\000\010\053\200\054" +
- "\041\102\u0220\001\001\000\002\001\001\000\002\001\001" +
- "\000\006\053\u0223\054\041\001\001\000\002\001\001\000" +
- "\002\001\001\000\004\031\u0232\001\001\000\002\001\001" +
- "\000\006\053\u0228\054\041\001\001\000\004\031\u0229\001" +
- "\001\000\002\001\001\000\016\014\070\015\065\017\u022f" +
- "\053\066\054\041\055\067\001\001\000\016\014\070\015" +
- "\065\017\u022c\053\066\054\041\055\067\001\001\000\002" +
- "\001\001\000\004\031\u022e\001\001\000\002\001\001\000" +
- "\002\001\001\000\004\031\u0231\001\001\000\002\001\001" +
- "\000\002\001\001\000\016\014\070\015\065\017\u0238\053" +
- "\066\054\041\055\067\001\001\000\016\014\070\015\065" +
- "\017\u0235\053\066\054\041\055\067\001\001\000\002\001" +
- "\001\000\004\031\u0237\001\001\000\002\001\001\000\002" +
- "\001\001\000\004\031\u023a\001\001\000\002\001\001\000" +
- "\006\031\u023e\052\u023d\001\001\000\140\002\106\003\105" +
- "\004\165\005\104\006\132\007\131\010\142\011\141\021" +
- "\110\022\107\023\202\024\201\025\155\026\154\030\u024b" +
- "\031\210\040\103\041\102\042\206\043\205\044\216\045" +
- "\215\046\174\047\172\053\200\054\041\057\122\060\121" +
- "\061\113\062\111\063\145\064\144\065\116\066\114\070" +
- "\130\071\127\073\157\074\156\102\135\113\140\114\137" +
- "\115\171\116\167\117\213\120\212\121\163\122\162\001" +
- "\001\000\002\001\001\000\002\001\001\000\010\053\066" +
- "\054\041\055\u0247\001\001\000\010\053\066\054\041\055" +
- "\u0241\001\001\000\002\001\001\000\006\031\u023e\052\u0243" +
- "\001\001\000\002\001\001\000\006\031\u023e\052\u0245\001" +
- "\001\000\002\001\001\000\006\031\u023e\052\u024a\001\001" +
- "\000\002\001\001\000\006\031\u023e\052\u0249\001\001\000" +
+ "\000\002\001\001\000\034\004\174\005\u020b\007\311\022" +
+ "\305\024\214\031\224\047\352\053\213\054\043\071\313" +
+ "\074\165\102\143\122\171\001\001\000\002\001\001\000" +
+ "\006\031\260\034\u020d\001\001\000\002\001\001\000\026" +
+ "\004\174\005\u0211\007\311\024\214\031\224\053\213\054" +
+ "\043\071\u0100\102\143\122\171\001\001\000\032\004\174" +
+ "\005\u0210\007\311\022\305\024\214\031\224\053\213\054" +
+ "\043\071\313\074\377\102\143\122\171\001\001\000\002" +
+ "\001\001\000\002\001\001\000\132\002\114\003\113\004" +
+ "\174\005\u0216\006\137\007\136\010\151\011\150\021\116" +
+ "\022\115\023\215\024\214\031\224\040\u0215\041\u0198\042" +
+ "\221\043\u0217\044\232\045\231\046\205\047\203\053\213" +
+ "\054\043\057\106\060\105\061\120\062\117\065\124\066" +
+ "\122\070\135\071\134\073\166\074\165\102\143\113\146" +
+ "\114\145\115\200\116\176\117\227\120\226\121\172\122" +
+ "\171\124\211\125\210\001\001\000\054\004\174\005\u0214" +
+ "\007\311\011\u0136\022\305\024\214\031\224\047\300\053" +
+ "\213\054\043\060\105\062\117\066\306\071\313\074\165" +
+ "\102\143\114\u0135\116\u0110\120\u0138\122\171\125\u0197\001" +
+ "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+ "\000\002\001\001\000\126\002\114\003\113\004\174\005" +
+ "\u0219\006\137\007\136\010\151\011\150\021\116\022\115" +
+ "\023\215\024\214\031\224\042\u021a\043\u019c\044\u021b\045" +
+ "\u019b\046\205\047\203\053\213\054\043\057\106\060\105" +
+ "\061\120\062\117\065\124\066\122\070\135\071\134\073" +
+ "\166\074\165\102\143\113\146\114\145\115\200\116\176" +
+ "\117\227\120\226\121\172\122\171\124\211\125\210\001" +
+ "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+ "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
+ "\002\001\001\000\146\002\114\003\113\004\174\005\112" +
+ "\006\137\007\136\010\151\011\150\021\116\022\115\023" +
+ "\215\024\214\025\164\026\163\030\u0221\031\224\040\110" +
+ "\041\107\042\221\043\220\044\232\045\231\046\205\047" +
+ "\203\053\213\054\043\057\106\060\105\061\120\062\117" +
+ "\063\154\064\153\065\124\066\122\070\135\071\134\073" +
+ "\166\074\165\102\143\113\146\114\145\115\200\116\176" +
+ "\117\227\120\226\121\172\122\171\124\211\125\210\126" +
+ "\202\001\001\000\002\001\001\000\002\001\001\000\002" +
+ "\001\001\000\146\002\114\003\113\004\174\005\112\006" +
+ "\137\007\136\010\151\011\150\021\116\022\115\023\215" +
+ "\024\214\025\164\026\163\030\u0225\031\224\040\110\041" +
+ "\107\042\221\043\220\044\232\045\231\046\205\047\203" +
+ "\053\213\054\043\057\106\060\105\061\120\062\117\063" +
+ "\154\064\153\065\124\066\122\070\135\071\134\073\166" +
+ "\074\165\102\143\113\146\114\145\115\200\116\176\117" +
+ "\227\120\226\121\172\122\171\124\211\125\210\126\202" +
+ "\001\001\000\002\001\001\000\146\002\114\003\113\004" +
+ "\174\005\112\006\137\007\136\010\151\011\150\021\116" +
+ "\022\115\023\215\024\214\025\164\026\163\030\u0227\031" +
+ "\224\040\110\041\107\042\221\043\220\044\232\045\231" +
+ "\046\205\047\203\053\213\054\043\057\106\060\105\061" +
+ "\120\062\117\063\154\064\153\065\124\066\122\070\135" +
+ "\071\134\073\166\074\165\102\143\113\146\114\145\115" +
+ "\200\116\176\117\227\120\226\121\172\122\171\124\211" +
+ "\125\210\126\202\001\001\000\002\001\001\000\002\001" +
+ "\001\000\146\002\114\003\113\004\174\005\112\006\137" +
+ "\007\136\010\151\011\150\021\116\022\115\023\215\024" +
+ "\214\025\164\026\163\030\u022a\031\224\040\110\041\107" +
+ "\042\221\043\220\044\232\045\231\046\205\047\203\053" +
+ "\213\054\043\057\106\060\105\061\120\062\117\063\154" +
+ "\064\153\065\124\066\122\070\135\071\134\073\166\074" +
+ "\165\102\143\113\146\114\145\115\200\116\176\117\227" +
+ "\120\226\121\172\122\171\124\211\125\210\126\202\001" +
+ "\001\000\004\031\u022b\001\001\000\002\001\001\000\002" +
+ "\001\001\000\010\053\067\054\043\055\u023f\001\001\000" +
+ "\002\001\001\000\010\053\067\054\043\055\u0231\001\001" +
+ "\000\010\053\067\054\043\055\u0236\001\001\000\002\001" +
+ "\001\000\146\002\114\003\113\004\174\005\112\006\137" +
+ "\007\136\010\151\011\150\021\116\022\115\023\215\024" +
+ "\214\025\164\026\163\030\u0233\031\224\040\110\041\107" +
+ "\042\221\043\220\044\232\045\231\046\205\047\203\053" +
+ "\213\054\043\057\106\060\105\061\120\062\117\063\154" +
+ "\064\153\065\124\066\122\070\135\071\134\073\166\074" +
+ "\165\102\143\113\146\114\145\115\200\116\176\117\227" +
+ "\120\226\121\172\122\171\124\211\125\210\126\202\001" +
+ "\001\000\002\001\001\000\146\002\114\003\113\004\174" +
+ "\005\112\006\137\007\136\010\151\011\150\021\116\022" +
+ "\115\023\215\024\214\025\164\026\163\030\u0235\031\224" +
+ "\040\110\041\107\042\221\043\220\044\232\045\231\046" +
+ "\205\047\203\053\213\054\043\057\106\060\105\061\120" +
+ "\062\117\063\154\064\153\065\124\066\122\070\135\071" +
+ "\134\073\166\074\165\102\143\113\146\114\145\115\200" +
+ "\116\176\117\227\120\226\121\172\122\171\124\211\125" +
+ "\210\126\202\001\001\000\002\001\001\000\002\001\001" +
+ "\000\146\002\114\003\113\004\174\005\112\006\137\007" +
+ "\136\010\151\011\150\021\116\022\115\023\215\024\214" +
+ "\025\164\026\163\030\u0238\031\224\040\110\041\107\042" +
+ "\221\043\220\044\232\045\231\046\205\047\203\053\213" +
+ "\054\043\057\106\060\105\061\120\062\117\063\154\064" +
+ "\153\065\124\066\122\070\135\071\134\073\166\074\165" +
+ "\102\143\113\146\114\145\115\200\116\176\117\227\120" +
+ "\226\121\172\122\171\124\211\125\210\126\202\001\001" +
+ "\000\002\001\001\000\146\002\114\003\113\004\174\005" +
+ "\112\006\137\007\136\010\151\011\150\021\116\022\115" +
+ "\023\215\024\214\025\164\026\163\030\u023a\031\224\040" +
+ "\110\041\107\042\221\043\220\044\232\045\231\046\205" +
+ "\047\203\053\213\054\043\057\106\060\105\061\120\062" +
+ "\117\063\154\064\153\065\124\066\122\070\135\071\134" +
+ "\073\166\074\165\102\143\113\146\114\145\115\200\116" +
+ "\176\117\227\120\226\121\172\122\171\124\211\125\210" +
+ "\126\202\001\001\000\002\001\001\000\146\002\114\003" +
+ "\113\004\174\005\112\006\137\007\136\010\151\011\150" +
+ "\021\116\022\115\023\215\024\214\025\164\026\163\030" +
+ "\u023c\031\224\040\110\041\107\042\221\043\220\044\232" +
+ "\045\231\046\205\047\203\053\213\054\043\057\106\060" +
+ "\105\061\120\062\117\063\154\064\153\065\124\066\122" +
+ "\070\135\071\134\073\166\074\165\102\143\113\146\114" +
+ "\145\115\200\116\176\117\227\120\226\121\172\122\171" +
+ "\124\211\125\210\126\202\001\001\000\002\001\001\000" +
+ "\146\002\114\003\113\004\174\005\112\006\137\007\136" +
+ "\010\151\011\150\021\116\022\115\023\215\024\214\025" +
+ "\164\026\163\030\u023e\031\224\040\110\041\107\042\221" +
+ "\043\220\044\232\045\231\046\205\047\203\053\213\054" +
+ "\043\057\106\060\105\061\120\062\117\063\154\064\153" +
+ "\065\124\066\122\070\135\071\134\073\166\074\165\102" +
+ "\143\113\146\114\145\115\200\116\176\117\227\120\226" +
+ "\121\172\122\171\124\211\125\210\126\202\001\001\000" +
+ "\002\001\001\000\002\001\001\000\146\002\114\003\113" +
+ "\004\174\005\112\006\137\007\136\010\151\011\150\021" +
+ "\116\022\115\023\215\024\214\025\164\026\163\030\u0241" +
+ "\031\224\040\110\041\107\042\221\043\220\044\232\045" +
+ "\231\046\205\047\203\053\213\054\043\057\106\060\105" +
+ "\061\120\062\117\063\154\064\153\065\124\066\122\070" +
+ "\135\071\134\073\166\074\165\102\143\113\146\114\145" +
+ "\115\200\116\176\117\227\120\226\121\172\122\171\124" +
+ "\211\125\210\126\202\001\001\000\002\001\001\000\146" +
+ "\002\114\003\113\004\174\005\112\006\137\007\136\010" +
+ "\151\011\150\021\116\022\115\023\215\024\214\025\164" +
+ "\026\163\030\u0243\031\224\040\110\041\107\042\221\043" +
+ "\220\044\232\045\231\046\205\047\203\053\213\054\043" +
+ "\057\106\060\105\061\120\062\117\063\154\064\153\065" +
+ "\124\066\122\070\135\071\134\073\166\074\165\102\143" +
+ "\113\146\114\145\115\200\116\176\117\227\120\226\121" +
+ "\172\122\171\124\211\125\210\126\202\001\001\000\002" +
+ "\001\001\000\146\002\114\003\113\004\174\005\112\006" +
+ "\137\007\136\010\151\011\150\021\116\022\115\023\215" +
+ "\024\214\025\164\026\163\030\u0245\031\224\040\110\041" +
+ "\107\042\221\043\220\044\232\045\231\046\205\047\203" +
+ "\053\213\054\043\057\106\060\105\061\120\062\117\063" +
+ "\154\064\153\065\124\066\122\070\135\071\134\073\166" +
+ "\074\165\102\143\113\146\114\145\115\200\116\176\117" +
+ "\227\120\226\121\172\122\171\124\211\125\210\126\202" +
+ "\001\001\000\002\001\001\000\146\002\114\003\113\004" +
+ "\174\005\112\006\137\007\136\010\151\011\150\021\116" +
+ "\022\115\023\215\024\214\025\164\026\163\030\u0247\031" +
+ "\224\040\110\041\107\042\221\043\220\044\232\045\231" +
+ "\046\205\047\203\053\213\054\043\057\106\060\105\061" +
+ "\120\062\117\063\154\064\153\065\124\066\122\070\135" +
+ "\071\134\073\166\074\165\102\143\113\146\114\145\115" +
+ "\200\116\176\117\227\120\226\121\172\122\171\124\211" +
+ "\125\210\126\202\001\001\000\002\001\001\000\016\014" +
+ "\072\015\070\017\u0249\053\067\054\043\055\071\001\001" +
+ "\000\002\001\001\000\002\001\001\000\146\002\114\003" +
+ "\113\004\174\005\112\006\137\007\136\010\151\011\150" +
+ "\021\116\022\115\023\215\024\214\025\164\026\163\030" +
+ "\u024c\031\224\040\110\041\107\042\221\043\220\044\232" +
+ "\045\231\046\205\047\203\053\213\054\043\057\106\060" +
+ "\105\061\120\062\117\063\154\064\153\065\124\066\122" +
+ "\070\135\071\134\073\166\074\165\102\143\113\146\114" +
+ "\145\115\200\116\176\117\227\120\226\121\172\122\171" +
+ "\124\211\125\210\126\202\001\001\000\002\001\001\000" +
+ "\146\002\114\003\113\004\174\005\112\006\137\007\136" +
+ "\010\151\011\150\021\116\022\115\023\215\024\214\025" +
+ "\164\026\163\030\u024e\031\224\040\110\041\107\042\221" +
+ "\043\220\044\232\045\231\046\205\047\203\053\213\054" +
+ "\043\057\106\060\105\061\120\062\117\063\154\064\153" +
+ "\065\124\066\122\070\135\071\134\073\166\074\165\102" +
+ "\143\113\146\114\145\115\200\116\176\117\227\120\226" +
+ "\121\172\122\171\124\211\125\210\126\202\001\001\000" +
+ "\002\001\001\000\002\001\001\000\146\002\114\003\113" +
+ "\004\174\005\112\006\137\007\136\010\151\011\150\021" +
+ "\116\022\115\023\215\024\214\025\164\026\163\030\u0251" +
+ "\031\224\040\110\041\107\042\221\043\220\044\232\045" +
+ "\231\046\205\047\203\053\213\054\043\057\106\060\105" +
+ "\061\120\062\117\063\154\064\153\065\124\066\122\070" +
+ "\135\071\134\073\166\074\165\102\143\113\146\114\145" +
+ "\115\200\116\176\117\227\120\226\121\172\122\171\124" +
+ "\211\125\210\126\202\001\001\000\002\001\001\000\146" +
+ "\002\114\003\113\004\174\005\112\006\137\007\136\010" +
+ "\151\011\150\021\116\022\115\023\215\024\214\025\164" +
+ "\026\163\030\u0253\031\224\040\110\041\107\042\221\043" +
+ "\220\044\232\045\231\046\205\047\203\053\213\054\043" +
+ "\057\106\060\105\061\120\062\117\063\154\064\153\065" +
+ "\124\066\122\070\135\071\134\073\166\074\165\102\143" +
+ "\113\146\114\145\115\200\116\176\117\227\120\226\121" +
+ "\172\122\171\124\211\125\210\126\202\001\001\000\002" +
+ "\001\001\000\002\001\001\000\146\002\114\003\113\004" +
+ "\174\005\112\006\137\007\136\010\151\011\150\021\116" +
+ "\022\115\023\215\024\214\025\164\026\163\030\u0256\031" +
+ "\224\040\110\041\107\042\221\043\220\044\232\045\231" +
+ "\046\205\047\203\053\213\054\043\057\106\060\105\061" +
+ "\120\062\117\063\154\064\153\065\124\066\122\070\135" +
+ "\071\134\073\166\074\165\102\143\113\146\114\145\115" +
+ "\200\116\176\117\227\120\226\121\172\122\171\124\211" +
+ "\125\210\126\202\001\001\000\002\001\001\000\146\002" +
+ "\114\003\113\004\174\005\112\006\137\007\136\010\151" +
+ "\011\150\021\116\022\115\023\215\024\214\025\164\026" +
+ "\163\030\u0258\031\224\040\110\041\107\042\221\043\220" +
+ "\044\232\045\231\046\205\047\203\053\213\054\043\057" +
+ "\106\060\105\061\120\062\117\063\154\064\153\065\124" +
+ "\066\122\070\135\071\134\073\166\074\165\102\143\113" +
+ "\146\114\145\115\200\116\176\117\227\120\226\121\172" +
+ "\122\171\124\211\125\210\126\202\001\001\000\002\001" +
+ "\001\000\002\001\001\000\002\001\001\000\146\002\114" +
+ "\003\113\004\174\005\112\006\137\007\136\010\151\011" +
+ "\150\021\116\022\115\023\215\024\214\025\164\026\163" +
+ "\030\u025c\031\224\040\110\041\107\042\221\043\220\044" +
+ "\232\045\231\046\205\047\203\053\213\054\043\057\106" +
+ "\060\105\061\120\062\117\063\154\064\153\065\124\066" +
+ "\122\070\135\071\134\073\166\074\165\102\143\113\146" +
+ "\114\145\115\200\116\176\117\227\120\226\121\172\122" +
+ "\171\124\211\125\210\126\202\001\001\000\004\031\u025d" +
+ "\001\001\000\002\001\001\000\004\031\u025f\001\001\000" +
+ "\002\001\001\000\146\002\114\003\113\004\174\005\112" +
+ "\006\137\007\136\010\151\011\150\021\116\022\115\023" +
+ "\215\024\214\025\164\026\163\030\u026d\031\224\040\110" +
+ "\041\107\042\221\043\220\044\232\045\231\046\205\047" +
+ "\203\053\213\054\043\057\106\060\105\061\120\062\117" +
+ "\063\154\064\153\065\124\066\122\070\135\071\134\073" +
+ "\166\074\165\102\143\113\146\114\145\115\200\116\176" +
+ "\117\227\120\226\121\172\122\171\124\211\125\210\126" +
+ "\202\001\001\000\016\014\072\015\070\017\u0268\053\067" +
+ "\054\043\055\071\001\001\000\016\014\072\015\070\017" +
+ "\u0263\053\067\054\043\055\071\001\001\000\002\001\001" +
+ "\000\002\001\001\000\146\002\114\003\113\004\174\005" +
+ "\112\006\137\007\136\010\151\011\150\021\116\022\115" +
+ "\023\215\024\214\025\164\026\163\030\u0266\031\224\040" +
+ "\110\041\107\042\221\043\220\044\232\045\231\046\205" +
+ "\047\203\053\213\054\043\057\106\060\105\061\120\062" +
+ "\117\063\154\064\153\065\124\066\122\070\135\071\134" +
+ "\073\166\074\165\102\143\113\146\114\145\115\200\116" +
+ "\176\117\227\120\226\121\172\122\171\124\211\125\210" +
+ "\126\202\001\001\000\004\031\u0267\001\001\000\002\001" +
+ "\001\000\002\001\001\000\002\001\001\000\146\002\114" +
+ "\003\113\004\174\005\112\006\137\007\136\010\151\011" +
+ "\150\021\116\022\115\023\215\024\214\025\164\026\163" +
+ "\030\u026b\031\224\040\110\041\107\042\221\043\220\044" +
+ "\232\045\231\046\205\047\203\053\213\054\043\057\106" +
+ "\060\105\061\120\062\117\063\154\064\153\065\124\066" +
+ "\122\070\135\071\134\073\166\074\165\102\143\113\146" +
+ "\114\145\115\200\116\176\117\227\120\226\121\172\122" +
+ "\171\124\211\125\210\126\202\001\001\000\004\031\u026c" +
+ "\001\001\000\002\001\001\000\004\031\u026e\001\001\000" +
+ "\002\001\001\000\002\001\001\000\006\053\u027a\054\043" +
+ "\001\001\000\014\053\213\054\043\102\u0274\103\u0273\104" +
+ "\u0272\001\001\000\002\001\001\000\002\001\001\000\002" +
+ "\001\001\000\010\053\213\054\043\102\u0276\001\001\000" +
+ "\002\001\001\000\002\001\001\000\006\053\u0279\054\043" +
+ "\001\001\000\002\001\001\000\002\001\001\000\004\031" +
+ "\u0288\001\001\000\002\001\001\000\006\053\u027e\054\043" +
+ "\001\001\000\004\031\u027f\001\001\000\002\001\001\000" +
+ "\016\014\072\015\070\017\u0285\053\067\054\043\055\071" +
+ "\001\001\000\016\014\072\015\070\017\u0282\053\067\054" +
+ "\043\055\071\001\001\000\002\001\001\000\004\031\u0284" +
+ "\001\001\000\002\001\001\000\002\001\001\000\004\031" +
+ "\u0287\001\001\000\002\001\001\000\002\001\001\000\016" +
+ "\014\072\015\070\017\u028e\053\067\054\043\055\071\001" +
+ "\001\000\016\014\072\015\070\017\u028b\053\067\054\043" +
+ "\055\071\001\001\000\002\001\001\000\004\031\u028d\001" +
+ "\001\000\002\001\001\000\002\001\001\000\004\031\u0290" +
+ "\001\001\000\002\001\001\000\006\031\u0294\052\u0293\001" +
+ "\001\000\146\002\114\003\113\004\174\005\112\006\137" +
+ "\007\136\010\151\011\150\021\116\022\115\023\215\024" +
+ "\214\025\164\026\163\030\u02a1\031\224\040\110\041\107" +
+ "\042\221\043\220\044\232\045\231\046\205\047\203\053" +
+ "\213\054\043\057\106\060\105\061\120\062\117\063\154" +
+ "\064\153\065\124\066\122\070\135\071\134\073\166\074" +
+ "\165\102\143\113\146\114\145\115\200\116\176\117\227" +
+ "\120\226\121\172\122\171\124\211\125\210\126\202\001" +
+ "\001\000\002\001\001\000\002\001\001\000\010\053\067" +
+ "\054\043\055\u029d\001\001\000\010\053\067\054\043\055" +
+ "\u0297\001\001\000\002\001\001\000\006\031\u0294\052\u0299" +
+ "\001\001\000\002\001\001\000\006\031\u0294\052\u029b\001" +
+ "\001\000\002\001\001\000\006\031\u0294\052\u02a0\001\001" +
+ "\000\002\001\001\000\006\031\u0294\052\u029f\001\001\000" +
"\002\001\001\000\002\001\001\000\002\001\001\000\002" +
- "\001\001\000\010\053\066\054\041\055\u024e\001\001\000" +
+ "\001\001\000\010\053\067\054\043\055\u02a4\001\001\000" +
"\002\001\001\000\002\001\001\000\002\001\001\000\004" +
- "\013\u0252\001\001\000\010\031\u0254\053\u0253\054\041\001" +
- "\001\000\012\031\u027b\053\u027a\054\041\075\u027c\001\001" +
- "\000\004\075\u0255\001\001\000\004\027\u0277\001\001\000" +
- "\010\110\u0258\111\u025b\112\u0259\001\001\000\002\001\001" +
- "\000\006\053\u0269\054\041\001\001\000\002\001\001\000" +
+ "\013\u02a8\001\001\000\010\031\u02aa\053\u02a9\054\043\001" +
+ "\001\000\012\031\u02d2\053\u02d1\054\043\075\u02d3\001\001" +
+ "\000\004\075\u02ab\001\001\000\004\027\u02ce\001\001\000" +
+ "\010\110\u02ae\111\u02b1\112\u02af\001\001\000\002\001\001" +
+ "\000\006\053\u02c0\054\043\001\001\000\002\001\001\000" +
"\002\001\001\000\002\001\001\000\002\001\001\000\010" +
- "\110\u0258\111\u025b\112\u0263\001\001\000\002\001\001\000" +
+ "\110\u02ae\111\u02b1\112\u02b9\001\001\000\002\001\001\000" +
"\002\001\001\000\002\001\001\000\002\001\001\000\002" +
"\001\001\000\002\001\001\000\002\001\001\000\006\110" +
- "\u0258\111\u0266\001\001\000\002\001\001\000\002\001\001" +
+ "\u02ae\111\u02bc\001\001\000\002\001\001\000\002\001\001" +
"\000\002\001\001\000\002\001\001\000\002\001\001\000" +
"\002\001\001\000\002\001\001\000\002\001\001\000\002" +
"\001\001\000\002\001\001\000\002\001\001\000\002\001" +
"\001\000\002\001\001\000\002\001\001\000\002\001\001" +
"\000\002\001\001\000\002\001\001\000\002\001\001\000" +
- "\002\001\001\000\002\001\001\000\004\075\u0280\001\001" +
- "\000\004\075\u027e\001\001\000\004\027\u027d\001\001\000" +
- "\002\001\001\000\004\027\u027f\001\001\000\002\001\001" +
- "\000\004\027\u0281\001\001\000\002\001\001\000\004\077" +
- "\u0286\001\001\000\012\053\200\054\041\102\u028d\105\u0291" +
- "\001\001\000\010\053\200\054\041\102\u0290\001\001\000" +
- "\012\053\200\054\041\102\u028d\105\u028c\001\001\000\002" +
- "\001\001\000\016\014\070\015\065\017\u0288\053\066\054" +
- "\041\055\067\001\001\000\002\001\001\000\006\031\u028b" +
- "\032\u028a\001\001\000\002\001\001\000\002\001\001\000" +
- "\002\001\001\000\002\001\001\000\010\053\200\054\041" +
- "\102\u028f\001\001\000\002\001\001\000\002\001\001\000" +
+ "\002\001\001\000\002\001\001\000\002\001\001\000\004" +
+ "\075\u02d7\001\001\000\004\075\u02d5\001\001\000\004\027" +
+ "\u02d4\001\001\000\002\001\001\000\004\027\u02d6\001\001" +
+ "\000\002\001\001\000\004\027\u02d8\001\001\000\002\001" +
+ "\001\000\004\077\u02dd\001\001\000\012\053\213\054\043" +
+ "\102\u02e4\105\u02e8\001\001\000\010\053\213\054\043\102" +
+ "\u02e7\001\001\000\012\053\213\054\043\102\u02e4\105\u02e3" +
+ "\001\001\000\002\001\001\000\016\014\072\015\070\017" +
+ "\u02df\053\067\054\043\055\071\001\001\000\002\001\001" +
+ "\000\006\031\u02e2\032\u02e1\001\001\000\002\001\001\000" +
+ "\002\001\001\000\002\001\001\000\002\001\001\000\010" +
+ "\053\213\054\043\102\u02e6\001\001\000\002\001\001\000" +
"\002\001\001\000\002\001\001\000\002\001\001\000\002" +
- "\001\001\000\010\053\u0296\054\041\056\u0298\001\001\000" +
- "\002\001\001\000\006\053\u029e\054\041\001\001\000\002" +
- "\001\001\000\006\053\u029b\054\041\001\001\000\002\001" +
- "\001\000\002\001\001\000\006\053\u029d\054\041\001\001" +
- "\000\002\001\001\000\002\001\001\000\004\031\u02a3\001" +
- "\001\000\004\031\u02a2\001\001\000\002\001\001\000\002" +
- "\001\001\000\002\001\001\000\012\031\u02a9\053\u02a8\054" +
- "\041\075\u02aa\001\001\000\004\075\u02a6\001\001\000\004" +
- "\027\u02a7\001\001\000\002\001\001\000\004\075\u02ae\001" +
- "\001\000\004\075\u02ac\001\001\000\004\027\u02ab\001\001" +
- "\000\002\001\001\000\004\027\u02ad\001\001\000\002\001" +
- "\001\000\004\027\u02af\001\001\000\002\001\001\000\004" +
- "\031\u02b4\001\001\000\004\031\u02b3\001\001\000\002\001" +
+ "\001\001\000\002\001\001\000\010\053\u02ed\054\043\056" +
+ "\u02ef\001\001\000\002\001\001\000\006\053\u02f5\054\043" +
+ "\001\001\000\002\001\001\000\006\053\u02f2\054\043\001" +
+ "\001\000\002\001\001\000\002\001\001\000\006\053\u02f4" +
+ "\054\043\001\001\000\002\001\001\000\002\001\001\000" +
+ "\004\031\u02fa\001\001\000\004\031\u02f9\001\001\000\002" +
+ "\001\001\000\002\001\001\000\002\001\001\000\012\031" +
+ "\u0300\053\u02ff\054\043\075\u0301\001\001\000\004\075\u02fd" +
+ "\001\001\000\004\027\u02fe\001\001\000\002\001\001\000" +
+ "\004\075\u0305\001\001\000\004\075\u0303\001\001\000\004" +
+ "\027\u0302\001\001\000\002\001\001\000\004\027\u0304\001" +
+ "\001\000\002\001\001\000\004\027\u0306\001\001\000\002" +
+ "\001\001\000\004\031\u030b\001\001\000\004\031\u030a\001" +
"\001\000\002\001\001\000\002\001\001\000\002\001\001" +
- "" });
+ "\000\002\001\001" });
/** Access to reduce_goto
table. */
+ @Override
public short[][] reduce_table() {return _reduce_table;}
/** Instance of action encapsulation class. */
protected CUP$CompParser$actions action_obj;
/** Action encapsulation object initializer. */
+ @Override
protected void init_actions()
{
action_obj = new CUP$CompParser$actions(this);
}
/** Invoke a user supplied parse action. */
+ @Override
public java_cup.runtime.Symbol do_action(
int act_num,
java_cup.runtime.lr_parser parser,
- java.util.Stack stack,
+ java.util.Stack stack,
int top)
throws java.lang.Exception
{
@@ -2027,14 +2603,18 @@ public java_cup.runtime.Symbol do_action(
}
/** Indicates start state. */
+ @Override
public int start_state() {return 0;}
/** Indicates start production. */
+ @Override
public int start_production() {return 1;}
/** EOF
Symbol index. */
+ @Override
public int EOF_sym() {return 0;}
/** error
Symbol index. */
+ @Override
public int error_sym() {return 1;}
@@ -2060,13 +2640,13 @@ public java_cup.runtime.Symbol do_action(
for (_done_parsing = false; !_done_parsing; ) {
act = get_action(((Symbol)stack.peek()).parse_state, cur_token.sym);
if (act > 0) { // "shift"; thus, we shift to the encoded state by pushing it on the stack
- if (logging) System.out.println("shift " + cur_token.sym);
+ // if (logging) System.out.println("shift " + cur_token.sym);
cur_token.parse_state = act-1;
stack.push(cur_token);
tos++;
cur_token = scan();
} else if (act<0) { // "reduce"
- if (logging) System.out.println("reduce " + ((-act)-1));
+ // if (logging) System.out.println("reduce " + ((-act)-1));
lhs_sym = do_action((-act)-1, this, stack, tos);
lhs_sym_num = production_tab[(-act)-1][0];
handle_size = production_tab[(-act)-1][1];
@@ -2200,6 +2780,20 @@ public void syntax_error(Symbol x) throws Err {
ch.put(CompSym.ID, "NAME");
ch.put(CompSym.NUMBER, "NUMBER");
ch.put(CompSym.STR, "STRING");
+ ch.put(CompSym.VAR, "var");
+ ch.put(CompSym.ALWAYS, "always");
+ ch.put(CompSym.EVENTUALLY, "eventually");
+ ch.put(CompSym.AFTER, "after");
+ ch.put(CompSym.BEFORE, "before");
+ ch.put(CompSym.HISTORICALLY, "historically");
+ ch.put(CompSym.ONCE, "once");
+ ch.put(CompSym.RELEASES, "releases");
+ ch.put(CompSym.UNTIL, "until");
+ ch.put(CompSym.SINCE, "since");
+ ch.put(CompSym.TRIGGERED, "triggered");
+ ch.put(CompSym.TRCSEQ, ";");
+ ch.put(CompSym.PRIME, "'");
+ ch.put(CompSym.TIME, "steps");
TreeSet list = new TreeSet();
Pos p=Pos.UNKNOWN;
if (x!=null && x.value instanceof Pos) p=(Pos)(x.value);
@@ -2314,6 +2908,7 @@ private void nod(List names) throws Err {
private void c(boolean follow, ExprVar o, ExprVar x, ExprVar n, Expr e, List s, ExprConstant c) throws Err {
if (n!=null) nod(n);
int bitwidth=(-1), maxseq=(-1), overall=(-1), expects=(c==null ? -1 : c.num);
+ int maxtime = (-1), mintime = (-1);
Pos p = o.pos.merge(n!=null ? n.span() : e.span());
for(int i=s.size()-1; i>=0; i--) {
Sig j=s.get(i).sig; int k=s.get(i).startingScope;
@@ -2321,11 +2916,23 @@ private void c(boolean follow, ExprVar o, ExprVar x, ExprVar n, Expr e, List=0) throw new ErrorSyntax(j.pos, "The bitwidth cannot be specified more than once."); bitwidth=k; s.remove(i); continue; }
if (j.label.equals("seq")) { if (maxseq>=0) throw new ErrorSyntax(j.pos, "The maximum sequence length cannot be specified more than once."); maxseq=k; s.remove(i); continue; }
+ // [electrum] process time scopes
+ if (j.label.equals("steps")) {
+ if (s.get(i).endingScope == Integer.MAX_VALUE && s.get(i).startingScope != 1) throw new ErrorSyntax(j.pos, "Unbounded time scope must start at 1.");
+ if (s.get(i).increment != 1) throw new ErrorSyntax(j.pos, "Step scopes must be incremented by 1.");
+ if (k<1) throw new ErrorSyntax(j.pos, "Trace solutions must contain at least one step.");
+ if (maxtime>=0) throw new ErrorSyntax(j.pos, "Steps scope cannot be specified more than once.");
+ maxtime=k;
+ if (s.get(i).isExact) mintime = k;
+ else if (s.get(i).endingScope != s.get(i).startingScope) {
+ maxtime = s.get(i).endingScope; mintime = s.get(i).startingScope; }
+ s.remove(i); continue;
+ }
}
if (n!=null)
- parser.alloymodule.addCommand(follow, p, n, o.label.equals("c"), overall, bitwidth, maxseq, expects, s, x);
+ parser.alloymodule.addCommand(follow, p, n, o.label.equals("c"), overall, bitwidth, maxseq, mintime, maxtime, expects, s, x);
else
- parser.alloymodule.addCommand(follow, p, e, o.label.equals("c"), overall, bitwidth, maxseq, expects, s, x);
+ parser.alloymodule.addCommand(follow, p, e, o.label.equals("c"), overall, bitwidth, maxseq, mintime, maxtime, expects, s, x);
}
private Expr t(Pos pos, Pos oldClosing, Expr left, Expr right, Pos close) throws Err {
if (right instanceof ExprVar) {
@@ -2351,7 +2958,7 @@ else if (right instanceof ExprList) {
public final java_cup.runtime.Symbol CUP$CompParser$do_action(
int CUP$CompParser$act_num,
java_cup.runtime.lr_parser CUP$CompParser$parser,
- java.util.Stack CUP$CompParser$stack,
+ java.util.Stack CUP$CompParser$stack,
int CUP$CompParser$top)
throws java.lang.Exception
{
@@ -2362,5474 +2969,13033 @@ else if (right instanceof ExprList) {
switch (CUP$CompParser$act_num)
{
/*. . . . . . . . . . . . . . . . . . . .*/
- case 349: // BaseExpr ::= LBRACE Declz RBRACE
+ case 397: // BaseExpr ::= LBRACE Declz RBRACE
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- List a = (List)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int cleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int cright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos c = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprQt.Op.COMPREHENSION.make(o, c, a, ExprConstant.TRUE);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BaseExpr",2, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case397(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 348: // BaseExpr ::= LBRACE Declz SuperOrBar RBRACE
+ case 396: // BaseExpr ::= LBRACE Declz SuperOrBar RBRACE
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).value;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- List a = (List)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int cleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int cright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos c = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprQt.Op.COMPREHENSION.make(o, c, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BaseExpr",2, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case396(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 347: // BaseExpr ::= Super
+ case 395: // BaseExpr ::= Super
{
- Expr RESULT =null;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr x = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = x;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BaseExpr",2, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case395(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 346: // BaseExpr ::= AT Name
+ case 394: // BaseExpr ::= AT Name
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- ExprVar x = (ExprVar)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- nod(x); RESULT = ExprVar.make(o.merge(x.pos), "@"+x.label);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BaseExpr",2, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case394(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 345: // BaseExpr ::= SigRef
+ case 393: // BaseExpr ::= SigRef
{
- Expr RESULT =null;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- ExprVar x = (ExprVar)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = x;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BaseExpr",2, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case393(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 344: // BaseExpr ::= LPAREN Expr RPAREN
+ case 392: // BaseExpr ::= LPAREN Expr RPAREN
{
- Expr RESULT =null;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Expr x = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- RESULT = x;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BaseExpr",2, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case392(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 343: // BaseExpr ::= INTNEXT
+ case 391: // BaseExpr ::= INTNEXT
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprConstant.Op.NEXT.make(o, 0);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BaseExpr",2, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case391(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 342: // BaseExpr ::= INTMAX
+ case 390: // BaseExpr ::= INTMAX
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprConstant.Op.MAX.make(o, 0);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BaseExpr",2, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case390(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 341: // BaseExpr ::= INTMIN
+ case 389: // BaseExpr ::= INTMIN
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprConstant.Op.MIN.make(o, 0);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BaseExpr",2, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case389(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 340: // BaseExpr ::= THIS
+ case 388: // BaseExpr ::= THIS
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprVar.make(o, "this");
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BaseExpr",2, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case388(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 339: // BaseExpr ::= IDEN
+ case 387: // BaseExpr ::= IDEN
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprVar.make(o, "iden");
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BaseExpr",2, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case387(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 338: // BaseExpr ::= STR
+ case 386: // BaseExpr ::= STR
{
- Expr RESULT =null;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- ExprConstant x = (ExprConstant)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = x;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BaseExpr",2, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case386(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 337: // BaseExpr ::= NUMBER
+ case 385: // BaseExpr ::= NUMBER
{
- Expr RESULT =null;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- ExprConstant x = (ExprConstant)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = x;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BaseExpr",2, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case385(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 336: // UnopExprB ::= CARET UnopExprB
+ case 384: // UnopExprB ::= UnopExprB PRIME
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.CLOSURE .make(o,b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnopExprB",80, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case384(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 335: // UnopExprB ::= STAR UnopExprB
+ case 383: // UnopExprA ::= UnopExprA PRIME
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.RCLOSURE .make(o,b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnopExprB",80, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case383(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 334: // UnopExprB ::= TILDE UnopExprB
+ case 382: // UnopExprA ::= Bind PRIME
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.TRANSPOSE.make(o,b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnopExprB",80, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case382(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 333: // UnopExprB ::= BaseExpr
+ case 381: // UnopExprB ::= CARET UnopExprB
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnopExprB",80, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case381(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 332: // UnopExprA ::= CARET UnopExprA
+ case 380: // UnopExprB ::= STAR UnopExprB
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.CLOSURE .make(o,b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnopExprA",79, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case380(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 331: // UnopExprA ::= STAR UnopExprA
+ case 379: // UnopExprB ::= TILDE UnopExprB
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.RCLOSURE .make(o,b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnopExprA",79, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case379(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 330: // UnopExprA ::= TILDE UnopExprA
+ case 378: // UnopExprB ::= BaseExpr
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.TRANSPOSE.make(o,b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnopExprA",79, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case378(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 329: // UnopExprA ::= CARET Bind
+ case 377: // UnopExprA ::= CARET UnopExprA
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.CLOSURE .make(o,b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnopExprA",79, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case377(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 328: // UnopExprA ::= STAR Bind
+ case 376: // UnopExprA ::= STAR UnopExprA
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.RCLOSURE .make(o,b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnopExprA",79, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case376(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 327: // UnopExprA ::= TILDE Bind
+ case 375: // UnopExprA ::= TILDE UnopExprA
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.TRANSPOSE.make(o,b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnopExprA",79, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case375(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 326: // DotExprB ::= BracketExprB DOT SUM
+ case 374: // UnopExprA ::= CARET Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- RESULT=ExprUnary.Op.CAST2SIGINT.make(o, ExprUnary.Op.CAST2INT.make(o, a));
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("DotExprB",18, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case374(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 325: // DotExprB ::= BracketExprB DOT INT
+ case 373: // UnopExprA ::= STAR Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- RESULT=ExprUnary.Op.CAST2SIGINT.make(o, ExprUnary.Op.CAST2INT.make(o, a));
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("DotExprB",18, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case373(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 324: // DotExprB ::= BracketExprB DOT TOTALORDER
+ case 372: // UnopExprA ::= TILDE Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos b = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=t(o, null, a, ExprVar.make(b, "pred/totalOrder"), null);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("DotExprB",18, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case372(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 323: // DotExprB ::= BracketExprB DOT DISJ
+ case 371: // DotExprB ::= BracketExprB DOT SUM
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos b = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=t(o, null, a, ExprVar.make(b, "disj"), null);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("DotExprB",18, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case371(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 322: // DotExprB ::= BracketExprB DOT UnopExprB
+ case 370: // DotExprB ::= BracketExprB DOT INT
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=t(o, null, a, b, null);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("DotExprB",18, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case370(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 321: // DotExprB ::= UnopExprB
+ case 369: // DotExprB ::= BracketExprB DOT TOTALORDER
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("DotExprB",18, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case369(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 320: // DotExprA ::= BracketExprB DOT Bind
+ case 368: // DotExprB ::= BracketExprB DOT DISJ
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=t(o, null, a, b, null);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("DotExprA",17, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case368(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 319: // DotExprA ::= UnopExprA
+ case 367: // DotExprB ::= BracketExprB DOT UnopExprB
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("DotExprA",17, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case367(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 318: // BracketExprB ::= SUM LBRACKET Exprs RBRACKET
+ case 366: // DotExprB ::= UnopExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).right;
- Pos a = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- List b = (List)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int cleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int cright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos c = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- Expr aa=ExprVar.make(a, "int"); for(Expr bb:b) aa=t(aa.span().merge(bb.span()), c, bb, aa, c); RESULT=ExprUnary.Op.CAST2SIGINT.make(a, aa);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BracketExprB",5, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case366(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 317: // BracketExprB ::= INT LBRACKET Exprs RBRACKET
+ case 365: // DotExprA ::= BracketExprB DOT Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).right;
- Pos a = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- List b = (List)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int cleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int cright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos c = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- Expr aa=ExprVar.make(a, "int"); for(Expr bb:b) aa=t(aa.span().merge(bb.span()), c, bb, aa, c); RESULT=ExprUnary.Op.CAST2SIGINT.make(a, aa);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BracketExprB",5, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case365(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 316: // BracketExprB ::= TOTALORDER LBRACKET Exprs RBRACKET
+ case 364: // DotExprA ::= UnopExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).right;
- Pos a = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- List b = (List)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int cleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int cright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos c = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- Expr aa=ExprVar.make(a, "pred/totalOrder"); for(Expr bb:b) aa=t(aa.span().merge(bb.span()), c, bb, aa, c); RESULT=aa;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BracketExprB",5, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case364(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 315: // BracketExprB ::= DISJ LBRACKET Exprs RBRACKET
+ case 363: // BracketExprB ::= SUM LBRACKET Exprs RBRACKET
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).right;
- Pos a = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- List b = (List)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int cleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int cright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos c = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- Expr aa=ExprVar.make(a, "disj"); for(Expr bb:b) aa=t(aa.span().merge(bb.span()), c, bb, aa, c); RESULT=aa;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BracketExprB",5, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case363(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 314: // BracketExprB ::= BracketExprB LBRACKET Exprs RBRACKET
+ case 362: // BracketExprB ::= INT LBRACKET Exprs RBRACKET
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- List b = (List)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int cleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int cright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos c = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- Expr aa=a; for(Expr bb:b) aa=t(aa.span().merge(bb.span()), c, bb, aa, c); RESULT=aa;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BracketExprB",5, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case362(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 313: // BracketExprB ::= DotExprB
+ case 361: // BracketExprB ::= TOTALORDER LBRACKET Exprs RBRACKET
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BracketExprB",5, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case361(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 312: // BracketExprA ::= DotExprA
+ case 360: // BracketExprB ::= DISJ LBRACKET Exprs RBRACKET
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("BracketExprA",4, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case360(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 311: // RangeExprB ::= RangeExprB RANGE BracketExprB
+ case 359: // BracketExprB ::= BracketExprB LBRACKET Exprs RBRACKET
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.RANGE.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RangeExprB",55, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case359(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 310: // RangeExprB ::= BracketExprB
+ case 358: // BracketExprB ::= DotExprB
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RangeExprB",55, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case358(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 309: // RangeExprA ::= RangeExprB RANGE Bind
+ case 357: // BracketExprA ::= DotExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.RANGE.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RangeExprA",54, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case357(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 308: // RangeExprA ::= BracketExprA
+ case 356: // RangeExprB ::= RangeExprB RANGE BracketExprB
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RangeExprA",54, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case356(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 307: // DomainExprB ::= DomainExprB DOMAIN RangeExprB
+ case 355: // RangeExprB ::= BracketExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.DOMAIN.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("DomainExprB",16, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case355(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 306: // DomainExprB ::= RangeExprB
+ case 354: // RangeExprA ::= RangeExprB RANGE Bind
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("DomainExprB",16, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case354(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 305: // DomainExprA ::= DomainExprB DOMAIN Bind
+ case 353: // RangeExprA ::= BracketExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.DOMAIN.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("DomainExprA",15, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case353(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 304: // DomainExprA ::= RangeExprA
+ case 352: // DomainExprB ::= DomainExprB DOMAIN RangeExprB
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("DomainExprA",15, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case352(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 303: // RelationExprB ::= DomainExprB RelOp RelationExprB
+ case 351: // DomainExprB ::= RangeExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pair o = (Pair)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=o.b.make(o.a, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelationExprB",58, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case351(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 302: // RelationExprB ::= DomainExprB
+ case 350: // DomainExprA ::= DomainExprB DOMAIN Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=a;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelationExprB",58, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case350(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 301: // RelationExprA ::= DomainExprB RelOp Bind
+ case 349: // DomainExprA ::= RangeExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pair o = (Pair)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=o.b.make(o.a, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelationExprA",57, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case349(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 300: // RelationExprA ::= DomainExprA
+ case 348: // RelationExprB ::= DomainExprB RelOp RelationExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=a;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelationExprA",57, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case348(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 299: // RelOp ::= LONE_ARROW_LONE
+ case 347: // RelationExprB ::= DomainExprB
{
- Pair RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new Pair(o, ExprBinary.Op.LONE_ARROW_LONE);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelOp",56, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case347(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 298: // RelOp ::= LONE_ARROW_ONE
+ case 346: // RelationExprA ::= DomainExprB RelOp Bind
{
- Pair RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new Pair(o, ExprBinary.Op.LONE_ARROW_ONE );
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelOp",56, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case346(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 297: // RelOp ::= LONE_ARROW_SOME
+ case 345: // RelationExprA ::= DomainExprA
{
- Pair RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new Pair(o, ExprBinary.Op.LONE_ARROW_SOME);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelOp",56, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case345(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 296: // RelOp ::= LONE_ARROW_ANY
+ case 344: // RelOp ::= LONE_ARROW_LONE
{
- Pair RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new Pair(o, ExprBinary.Op.LONE_ARROW_ANY );
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelOp",56, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case344(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 295: // RelOp ::= ONE_ARROW_LONE
+ case 343: // RelOp ::= LONE_ARROW_ONE
{
- Pair RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new Pair(o, ExprBinary.Op.ONE_ARROW_LONE );
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelOp",56, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case343(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 294: // RelOp ::= ONE_ARROW_ONE
+ case 342: // RelOp ::= LONE_ARROW_SOME
{
- Pair RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new Pair(o, ExprBinary.Op.ONE_ARROW_ONE );
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelOp",56, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case342(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 293: // RelOp ::= ONE_ARROW_SOME
+ case 341: // RelOp ::= LONE_ARROW_ANY
{
- Pair RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new Pair(o, ExprBinary.Op.ONE_ARROW_SOME );
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelOp",56, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case341(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 292: // RelOp ::= ONE_ARROW_ANY
+ case 340: // RelOp ::= ONE_ARROW_LONE
{
- Pair RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new Pair(o, ExprBinary.Op.ONE_ARROW_ANY );
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelOp",56, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case340(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 291: // RelOp ::= SOME_ARROW_LONE
+ case 339: // RelOp ::= ONE_ARROW_ONE
{
- Pair RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new Pair(o, ExprBinary.Op.SOME_ARROW_LONE);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelOp",56, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case339(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 290: // RelOp ::= SOME_ARROW_ONE
+ case 338: // RelOp ::= ONE_ARROW_SOME
{
- Pair RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new Pair(o, ExprBinary.Op.SOME_ARROW_ONE );
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelOp",56, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case338(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 289: // RelOp ::= SOME_ARROW_SOME
+ case 337: // RelOp ::= ONE_ARROW_ANY
{
- Pair RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new Pair(o, ExprBinary.Op.SOME_ARROW_SOME);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelOp",56, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case337(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 288: // RelOp ::= SOME_ARROW_ANY
+ case 336: // RelOp ::= SOME_ARROW_LONE
{
- Pair RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new Pair(o, ExprBinary.Op.SOME_ARROW_ANY );
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelOp",56, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case336(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 287: // RelOp ::= ANY_ARROW_LONE
+ case 335: // RelOp ::= SOME_ARROW_ONE
{
- Pair RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new Pair(o, ExprBinary.Op.ANY_ARROW_LONE );
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelOp",56, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case335(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 286: // RelOp ::= ANY_ARROW_ONE
+ case 334: // RelOp ::= SOME_ARROW_SOME
{
- Pair RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new Pair(o, ExprBinary.Op.ANY_ARROW_ONE );
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelOp",56, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case334(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 285: // RelOp ::= ANY_ARROW_SOME
+ case 333: // RelOp ::= SOME_ARROW_ANY
{
- Pair RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new Pair(o, ExprBinary.Op.ANY_ARROW_SOME );
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelOp",56, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case333(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 284: // RelOp ::= ARROW
+ case 332: // RelOp ::= ANY_ARROW_LONE
{
- Pair RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new Pair(o, ExprBinary.Op.ARROW );
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("RelOp",56, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case332(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 283: // IntersectExprB ::= IntersectExprB AMPERSAND RelationExprB
+ case 331: // RelOp ::= ANY_ARROW_ONE
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.INTERSECT.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("IntersectExprB",37, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case331(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 282: // IntersectExprB ::= RelationExprB
+ case 330: // RelOp ::= ANY_ARROW_SOME
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("IntersectExprB",37, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case330(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 281: // IntersectExprA ::= IntersectExprB AMPERSAND Bind
+ case 329: // RelOp ::= ARROW
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.INTERSECT.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("IntersectExprA",36, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case329(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 280: // IntersectExprA ::= RelationExprA
+ case 328: // IntersectExprB ::= IntersectExprB AMPERSAND RelationExprB
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("IntersectExprA",36, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case328(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 279: // OverrideExprB ::= OverrideExprB PLUSPLUS IntersectExprB
+ case 327: // IntersectExprB ::= RelationExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.PLUSPLUS.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("OverrideExprB",52, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case327(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 278: // OverrideExprB ::= IntersectExprB
+ case 326: // IntersectExprA ::= IntersectExprB AMPERSAND Bind
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("OverrideExprB",52, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case326(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 277: // OverrideExprA ::= OverrideExprB PLUSPLUS Bind
+ case 325: // IntersectExprA ::= RelationExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.PLUSPLUS.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("OverrideExprA",51, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case325(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 276: // OverrideExprA ::= IntersectExprA
+ case 324: // OverrideExprB ::= OverrideExprB PLUSPLUS IntersectExprB
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("OverrideExprA",51, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case324(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 275: // NumUnopExprB ::= INT NumUnopExprB
+ case 323: // OverrideExprB ::= IntersectExprB
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.CAST2SIGINT.make(o, ExprUnary.Op.CAST2INT.make(o, b));
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("NumUnopExprB",48, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case323(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 274: // NumUnopExprB ::= SUM NumUnopExprB
+ case 322: // OverrideExprA ::= OverrideExprB PLUSPLUS Bind
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.CAST2SIGINT.make(o, ExprUnary.Op.CAST2INT.make(o, b));
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("NumUnopExprB",48, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case322(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 273: // NumUnopExprB ::= HASH NumUnopExprB
+ case 321: // OverrideExprA ::= IntersectExprA
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.CARDINALITY.make(o, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("NumUnopExprB",48, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case321(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 272: // NumUnopExprB ::= OverrideExprB
+ case 320: // NumUnopExprB ::= INT NumUnopExprB
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("NumUnopExprB",48, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case320(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 271: // NumUnopExprA ::= INT NumUnopExprA
+ case 319: // NumUnopExprB ::= SUM NumUnopExprB
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.CAST2SIGINT.make(o, ExprUnary.Op.CAST2INT.make(o, b));
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("NumUnopExprA",47, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case319(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 270: // NumUnopExprA ::= SUM NumUnopExprA
+ case 318: // NumUnopExprB ::= HASH NumUnopExprB
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.CAST2SIGINT.make(o, ExprUnary.Op.CAST2INT.make(o, b));
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("NumUnopExprA",47, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case318(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 269: // NumUnopExprA ::= HASH NumUnopExprA
+ case 317: // NumUnopExprB ::= OverrideExprB
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.CARDINALITY.make(o, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("NumUnopExprA",47, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case317(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 268: // NumUnopExprA ::= INT Bind
+ case 316: // NumUnopExprA ::= INT NumUnopExprA
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.CAST2SIGINT.make(o, ExprUnary.Op.CAST2INT.make(o, b));
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("NumUnopExprA",47, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case316(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 267: // NumUnopExprA ::= SUM Bind
+ case 315: // NumUnopExprA ::= SUM NumUnopExprA
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.CAST2SIGINT.make(o, ExprUnary.Op.CAST2INT.make(o, b));
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("NumUnopExprA",47, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case315(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 266: // NumUnopExprA ::= HASH Bind
+ case 314: // NumUnopExprA ::= HASH NumUnopExprA
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.CARDINALITY.make(o, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("NumUnopExprA",47, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case314(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 265: // NumUnopExprA ::= OverrideExprA
+ case 313: // NumUnopExprA ::= INT Bind
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("NumUnopExprA",47, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case313(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 264: // MulExprB ::= MulExprB INTREM NumUnopExprB
+ case 312: // NumUnopExprA ::= SUM Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.REM .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("MulExprB",76, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case312(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 263: // MulExprB ::= MulExprB INTDIV NumUnopExprB
+ case 311: // NumUnopExprA ::= HASH Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.DIV .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("MulExprB",76, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case311(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 262: // MulExprB ::= MulExprB INTMUL NumUnopExprB
+ case 310: // NumUnopExprA ::= OverrideExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.MUL .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("MulExprB",76, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case310(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 261: // MulExprB ::= NumUnopExprB
+ case 309: // MulExprB ::= MulExprB INTREM NumUnopExprB
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("MulExprB",76, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case309(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 260: // MulExprA ::= MulExprB INTREM Bind
+ case 308: // MulExprB ::= MulExprB INTDIV NumUnopExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.REM .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("MulExprA",75, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case308(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 259: // MulExprA ::= MulExprB INTDIV Bind
+ case 307: // MulExprB ::= MulExprB INTMUL NumUnopExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.DIV .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("MulExprA",75, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case307(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 258: // MulExprA ::= MulExprB INTMUL Bind
+ case 306: // MulExprB ::= NumUnopExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.MUL .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("MulExprA",75, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case306(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 257: // MulExprA ::= NumUnopExprA
+ case 305: // MulExprA ::= MulExprB INTREM Bind
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("MulExprA",75, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case305(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 256: // UnionDiffExprB ::= UnionDiffExprB INTSUB MulExprB
+ case 304: // MulExprA ::= MulExprB INTDIV Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.IMINUS.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnionDiffExprB",78, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case304(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 255: // UnionDiffExprB ::= UnionDiffExprB INTADD MulExprB
+ case 303: // MulExprA ::= MulExprB INTMUL Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.IPLUS.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnionDiffExprB",78, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case303(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 254: // UnionDiffExprB ::= UnionDiffExprB MINUS MulExprB
+ case 302: // MulExprA ::= NumUnopExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.MINUS.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnionDiffExprB",78, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case302(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 253: // UnionDiffExprB ::= UnionDiffExprB PLUS MulExprB
+ case 301: // UnionDiffExprB ::= UnionDiffExprB INTSUB MulExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.PLUS .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnionDiffExprB",78, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case301(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 252: // UnionDiffExprB ::= MulExprB
+ case 300: // UnionDiffExprB ::= UnionDiffExprB INTADD MulExprB
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnionDiffExprB",78, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case300(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 251: // UnionDiffExprA ::= UnionDiffExprB INTSUB Bind
+ case 299: // UnionDiffExprB ::= UnionDiffExprB MINUS MulExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.IMINUS.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnionDiffExprA",77, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case299(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 250: // UnionDiffExprA ::= UnionDiffExprB INTADD Bind
+ case 298: // UnionDiffExprB ::= UnionDiffExprB PLUS MulExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.IPLUS.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnionDiffExprA",77, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case298(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 249: // UnionDiffExprA ::= UnionDiffExprB MINUS Bind
+ case 297: // UnionDiffExprB ::= MulExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.MINUS.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnionDiffExprA",77, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case297(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 248: // UnionDiffExprA ::= UnionDiffExprB PLUS Bind
+ case 296: // UnionDiffExprA ::= UnionDiffExprB INTSUB Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.PLUS .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnionDiffExprA",77, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case296(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 247: // UnionDiffExprA ::= MulExprA
+ case 295: // UnionDiffExprA ::= UnionDiffExprB INTADD Bind
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("UnionDiffExprA",77, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case295(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 246: // ShiftExprB ::= ShiftExprB SHA UnionDiffExprB
+ case 294: // UnionDiffExprA ::= UnionDiffExprB MINUS Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.SHA.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ShiftExprB",74, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case294(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 245: // ShiftExprB ::= ShiftExprB SHR UnionDiffExprB
+ case 293: // UnionDiffExprA ::= UnionDiffExprB PLUS Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.SHR.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ShiftExprB",74, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case293(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 244: // ShiftExprB ::= ShiftExprB SHL UnionDiffExprB
+ case 292: // UnionDiffExprA ::= MulExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.SHL.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ShiftExprB",74, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case292(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 243: // ShiftExprB ::= UnionDiffExprB
+ case 291: // ShiftExprB ::= ShiftExprB SHA UnionDiffExprB
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ShiftExprB",74, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case291(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 242: // ShiftExprA ::= ShiftExprB SHA Bind
+ case 290: // ShiftExprB ::= ShiftExprB SHR UnionDiffExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.SHA.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ShiftExprA",73, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case290(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 241: // ShiftExprA ::= ShiftExprB SHR Bind
+ case 289: // ShiftExprB ::= ShiftExprB SHL UnionDiffExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.SHR.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ShiftExprA",73, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case289(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 240: // ShiftExprA ::= ShiftExprB SHL Bind
+ case 288: // ShiftExprB ::= UnionDiffExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.SHL.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ShiftExprA",73, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case288(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 239: // ShiftExprA ::= UnionDiffExprA
+ case 287: // ShiftExprA ::= ShiftExprB SHA Bind
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ShiftExprA",73, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case287(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 238: // CompareExprB ::= ShiftExprB
+ case 286: // ShiftExprA ::= ShiftExprB SHR Bind
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case286(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 237: // CompareExprB ::= SEQ ShiftExprB
+ case 285: // ShiftExprA ::= ShiftExprB SHL Bind
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.ISSEQ_ARROW_LONE.make(o, null, ExprVar.make(o,"seq/Int"), b); parser.alloymodule.addSeq(o);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case285(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 236: // CompareExprB ::= SET ShiftExprB
+ case 284: // ShiftExprA ::= UnionDiffExprA
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.SETOF.make(o, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case284(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 235: // CompareExprB ::= ONE ShiftExprB
+ case 283: // CompareExprB ::= ShiftExprB
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.ONE .make(o, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case283(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 234: // CompareExprB ::= LONE ShiftExprB
+ case 282: // CompareExprB ::= SEQ ShiftExprB
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.LONE .make(o, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case282(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 233: // CompareExprB ::= SOME ShiftExprB
+ case 281: // CompareExprB ::= SET ShiftExprB
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.SOME .make(o, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case281(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 232: // CompareExprB ::= NO ShiftExprB
+ case 280: // CompareExprB ::= ONE ShiftExprB
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.NO .make(o, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case280(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 231: // CompareExprB ::= ALL ShiftExprB
+ case 279: // CompareExprB ::= LONE ShiftExprB
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- if (1==1) throw new ErrorSyntax(o,"The \"all x\" construct is no longer supported. If you know the range of possible values of x, consider rewriting it as \"x == set_of_all_possible_values\".");
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case279(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 230: // CompareExprB ::= CompareExprB NOTGTE ShiftExprB
+ case 278: // CompareExprB ::= SOME ShiftExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.NOT_GTE .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case278(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 229: // CompareExprB ::= CompareExprB NOTLTE ShiftExprB
+ case 277: // CompareExprB ::= NO ShiftExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.NOT_LTE .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case277(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 228: // CompareExprB ::= CompareExprB NOTGT ShiftExprB
+ case 276: // CompareExprB ::= ALL ShiftExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.NOT_GT .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case276(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 227: // CompareExprB ::= CompareExprB NOTLT ShiftExprB
+ case 275: // CompareExprB ::= CompareExprB NOTGTE ShiftExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.NOT_LT .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case275(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 226: // CompareExprB ::= CompareExprB NOTEQUALS ShiftExprB
+ case 274: // CompareExprB ::= CompareExprB NOTLTE ShiftExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.NOT_EQUALS.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case274(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 225: // CompareExprB ::= CompareExprB NOTIN ShiftExprB
+ case 273: // CompareExprB ::= CompareExprB NOTGT ShiftExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.NOT_IN .make(o, null, a, mult(b));
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case273(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 224: // CompareExprB ::= CompareExprB GTE ShiftExprB
+ case 272: // CompareExprB ::= CompareExprB NOTLT ShiftExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.GTE .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case272(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 223: // CompareExprB ::= CompareExprB LTE ShiftExprB
+ case 271: // CompareExprB ::= CompareExprB NOTEQUALS ShiftExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.LTE .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case271(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 222: // CompareExprB ::= CompareExprB GT ShiftExprB
+ case 270: // CompareExprB ::= CompareExprB NOTIN ShiftExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.GT .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case270(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 221: // CompareExprB ::= CompareExprB LT ShiftExprB
+ case 269: // CompareExprB ::= CompareExprB GTE ShiftExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.LT .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case269(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 220: // CompareExprB ::= CompareExprB EQUALS ShiftExprB
+ case 268: // CompareExprB ::= CompareExprB LTE ShiftExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.EQUALS .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case268(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 219: // CompareExprB ::= CompareExprB IN ShiftExprB
+ case 267: // CompareExprB ::= CompareExprB GT ShiftExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.IN .make(o, null, a, mult(b));
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprB",7, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case267(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 218: // CompareExprA ::= ShiftExprA
+ case 266: // CompareExprB ::= CompareExprB LT ShiftExprB
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case266(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 217: // CompareExprA ::= SEQ ShiftExprA
+ case 265: // CompareExprB ::= CompareExprB EQUALS ShiftExprB
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.ISSEQ_ARROW_LONE.make(o, null, ExprVar.make(o, "seq/Int"), b); parser.alloymodule.addSeq(o);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case265(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 216: // CompareExprA ::= SET ShiftExprA
+ case 264: // CompareExprB ::= CompareExprB IN ShiftExprB
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.SETOF.make(o, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case264(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 215: // CompareExprA ::= ONE ShiftExprA
+ case 263: // CompareExprA ::= ShiftExprA
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.ONE .make(o, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case263(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 214: // CompareExprA ::= LONE ShiftExprA
+ case 262: // CompareExprA ::= SEQ ShiftExprA
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.LONE .make(o, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case262(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 213: // CompareExprA ::= SOME ShiftExprA
+ case 261: // CompareExprA ::= SET ShiftExprA
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.SOME .make(o, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case261(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 212: // CompareExprA ::= NO ShiftExprA
+ case 260: // CompareExprA ::= ONE ShiftExprA
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.NO .make(o, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case260(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 211: // CompareExprA ::= ALL ShiftExprA
+ case 259: // CompareExprA ::= LONE ShiftExprA
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- if (1==1) throw new ErrorSyntax(o,"The \"all x\" construct is no longer supported. If you know the range of possible values of x, consider rewriting it as \"x == set_of_all_possible_values\".");
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case259(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 210: // CompareExprA ::= CompareExprB NOTGTE ShiftExprA
+ case 258: // CompareExprA ::= SOME ShiftExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.NOT_GTE .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case258(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 209: // CompareExprA ::= CompareExprB NOTLTE ShiftExprA
+ case 257: // CompareExprA ::= NO ShiftExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.NOT_LTE .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case257(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 208: // CompareExprA ::= CompareExprB NOTGT ShiftExprA
+ case 256: // CompareExprA ::= ALL ShiftExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.NOT_GT .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case256(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 207: // CompareExprA ::= CompareExprB NOTLT ShiftExprA
+ case 255: // CompareExprA ::= CompareExprB NOTGTE ShiftExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.NOT_LT .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case255(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 206: // CompareExprA ::= CompareExprB NOTEQUALS ShiftExprA
+ case 254: // CompareExprA ::= CompareExprB NOTLTE ShiftExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.NOT_EQUALS.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case254(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 205: // CompareExprA ::= CompareExprB NOTIN ShiftExprA
+ case 253: // CompareExprA ::= CompareExprB NOTGT ShiftExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.NOT_IN .make(o, null, a, mult(b));
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case253(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 204: // CompareExprA ::= CompareExprB GTE ShiftExprA
+ case 252: // CompareExprA ::= CompareExprB NOTLT ShiftExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.GTE .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case252(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 203: // CompareExprA ::= CompareExprB LTE ShiftExprA
+ case 251: // CompareExprA ::= CompareExprB NOTEQUALS ShiftExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.LTE .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case251(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 202: // CompareExprA ::= CompareExprB GT ShiftExprA
+ case 250: // CompareExprA ::= CompareExprB NOTIN ShiftExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.GT .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case250(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 201: // CompareExprA ::= CompareExprB LT ShiftExprA
+ case 249: // CompareExprA ::= CompareExprB GTE ShiftExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.LT .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case249(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 200: // CompareExprA ::= CompareExprB EQUALS ShiftExprA
+ case 248: // CompareExprA ::= CompareExprB LTE ShiftExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.EQUALS .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case248(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 199: // CompareExprA ::= CompareExprB IN ShiftExprA
+ case 247: // CompareExprA ::= CompareExprB GT ShiftExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.IN .make(o, null, a, mult(b));
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("CompareExprA",6, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case247(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 198: // NegExprB ::= NOT NegExprB
+ case 246: // CompareExprA ::= CompareExprB LT ShiftExprA
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.NOT.make(o, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("NegExprB",46, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case246(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 197: // NegExprB ::= CompareExprB
+ case 245: // CompareExprA ::= CompareExprB EQUALS ShiftExprA
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("NegExprB",46, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case245(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 196: // NegExprA ::= NOT NegExprA
+ case 244: // CompareExprA ::= CompareExprB IN ShiftExprA
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.NOT.make(o, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("NegExprA",45, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case244(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 195: // NegExprA ::= NOT Bind
+ case 243: // UnaryExprB ::= BEFORE UnaryExprB
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.NOT.make(o, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("NegExprA",45, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case243(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 194: // NegExprA ::= CompareExprA
+ case 242: // UnaryExprB ::= ONCE UnaryExprB
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("NegExprA",45, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case242(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 193: // AndExprB ::= AndExprB AND NegExprB
+ case 241: // UnaryExprB ::= HISTORICALLY UnaryExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.AND.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("AndExprB",1, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case241(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 192: // AndExprB ::= NegExprB
+ case 240: // UnaryExprB ::= AFTER UnaryExprB
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("AndExprB",1, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case240(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 191: // AndExprA ::= AndExprB AND Bind
+ case 239: // UnaryExprB ::= EVENTUALLY UnaryExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.AND.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("AndExprA",0, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case239(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 190: // AndExprA ::= NegExprA
+ case 238: // UnaryExprB ::= ALWAYS UnaryExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=a;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("AndExprA",0, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case238(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 189: // ImpliesExprOpenB ::= AndExprB IMPLIES ImpliesExprB
+ case 237: // UnaryExprB ::= NOT UnaryExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprBinary.Op.IMPLIES.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ImpliesExprOpenB",35, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case237(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 188: // ImpliesExprOpenB ::= AndExprB IMPLIES ImpliesExprCloseB ELSE ImpliesExprOpenB
+ case 236: // UnaryExprB ::= CompareExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int cleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int cright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr c = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprITE.make(o,a,b,c);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ImpliesExprOpenB",35, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case236(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 187: // ImpliesExprCloseB ::= AndExprB IMPLIES ImpliesExprCloseB ELSE ImpliesExprCloseB
+ case 235: // UnaryExprA ::= BEFORE UnaryExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int cleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int cright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr c = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprITE.make(o,a,b,c);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ImpliesExprCloseB",33, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case235(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 186: // ImpliesExprCloseB ::= AndExprB
+ case 234: // UnaryExprA ::= BEFORE Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=a;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ImpliesExprCloseB",33, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case234(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 185: // ImpliesExprB ::= ImpliesExprOpenB
+ case 233: // UnaryExprA ::= ONCE UnaryExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=a;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ImpliesExprB",31, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case233(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 184: // ImpliesExprB ::= ImpliesExprCloseB
+ case 232: // UnaryExprA ::= ONCE Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=a;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ImpliesExprB",31, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case232(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 183: // ImpliesExprOpenA ::= AndExprB IMPLIES Bind
+ case 231: // UnaryExprA ::= HISTORICALLY UnaryExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprBinary.Op.IMPLIES.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ImpliesExprOpenA",34, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case231(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 182: // ImpliesExprCloseA ::= AndExprB IMPLIES ImpliesExprCloseB ELSE Bind
+ case 230: // UnaryExprA ::= HISTORICALLY Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int cleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int cright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr c = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprITE.make(o,a,b,c);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ImpliesExprCloseA",32, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case230(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 181: // ImpliesExprOpenA ::= AndExprB IMPLIES ImpliesExprA
+ case 229: // UnaryExprA ::= AFTER UnaryExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprBinary.Op.IMPLIES.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ImpliesExprOpenA",34, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case229(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 180: // ImpliesExprOpenA ::= AndExprB IMPLIES ImpliesExprCloseB ELSE ImpliesExprOpenA
+ case 228: // UnaryExprA ::= AFTER Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int cleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int cright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr c = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprITE.make(o,a,b,c);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ImpliesExprOpenA",34, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case228(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 179: // ImpliesExprCloseA ::= AndExprB IMPLIES ImpliesExprCloseB ELSE ImpliesExprCloseA
+ case 227: // UnaryExprA ::= EVENTUALLY UnaryExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int cleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int cright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr c = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprITE.make(o,a,b,c);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ImpliesExprCloseA",32, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case227(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 178: // ImpliesExprCloseA ::= AndExprA
+ case 226: // UnaryExprA ::= EVENTUALLY Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=a;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ImpliesExprCloseA",32, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case226(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 177: // ImpliesExprA ::= ImpliesExprOpenA
+ case 225: // UnaryExprA ::= ALWAYS UnaryExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=a;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ImpliesExprA",30, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case225(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 176: // ImpliesExprA ::= ImpliesExprCloseA
+ case 224: // UnaryExprA ::= ALWAYS Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=a;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("ImpliesExprA",30, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case224(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 175: // EquivExprB ::= EquivExprB IFF ImpliesExprB
+ case 223: // UnaryExprA ::= NOT UnaryExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.IFF.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("EquivExprB",20, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case223(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 174: // EquivExprB ::= ImpliesExprB
+ case 222: // UnaryExprA ::= NOT Bind
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("EquivExprB",20, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case222(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 173: // EquivExprA ::= EquivExprB IFF Bind
+ case 221: // UnaryExprA ::= CompareExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.IFF.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("EquivExprA",19, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case221(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 172: // EquivExprA ::= ImpliesExprA
+ case 220: // TempBinaryB ::= TempBinaryB TRIGGERED UnaryExprB
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("EquivExprA",19, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case220(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 171: // OrExprB ::= OrExprB OR EquivExprB
+ case 219: // TempBinaryB ::= TempBinaryB RELEASES UnaryExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.OR.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("OrExprB",50, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case219(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 170: // OrExprB ::= EquivExprB
+ case 218: // TempBinaryB ::= TempBinaryB SINCE UnaryExprB
{
- Expr RESULT =null;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=b;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("OrExprB",50, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case218(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 169: // OrExprA ::= OrExprB OR Bind
+ case 217: // TempBinaryB ::= TempBinaryB UNTIL UnaryExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.OR.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("OrExprA",49, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case217(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 168: // OrExprA ::= EquivExprA
+ case 216: // TempBinaryB ::= UnaryExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=a;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("OrExprA",49, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case216(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 167: // Bind ::= SUM2 Declp SuperOrBar
+ case 215: // TempBinaryA ::= TempBinaryB RELEASES Bind
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- List a = (List)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprQt.Op.SUM .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Bind",3, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case215(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 166: // Bind ::= ONE2 Declp SuperOrBar
+ case 214: // TempBinaryA ::= TempBinaryB TRIGGERED Bind
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- List a = (List)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprQt.Op.ONE .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Bind",3, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case214(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 165: // Bind ::= LONE2 Declp SuperOrBar
+ case 213: // TempBinaryA ::= TempBinaryB SINCE Bind
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- List a = (List)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprQt.Op.LONE.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Bind",3, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case213(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 164: // Bind ::= SOME2 Declp SuperOrBar
+ case 212: // TempBinaryA ::= TempBinaryB UNTIL Bind
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- List a = (List)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprQt.Op.SOME.make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Bind",3, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case212(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 163: // Bind ::= NO2 Declp SuperOrBar
+ case 211: // TempBinaryA ::= UnaryExprA
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- List a = (List)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprQt.Op.NO .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Bind",3, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case211(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 162: // Bind ::= ALL2 Declp SuperOrBar
+ case 210: // AndExprB ::= AndExprB AND TempBinaryB
{
- Expr RESULT =null;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- List a = (List)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = ExprQt.Op.ALL .make(o, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Bind",3, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case210(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 161: // Bind ::= LET Let
+ case 209: // AndExprB ::= TempBinaryB
{
- Expr RESULT =null;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr x = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = x;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Bind",3, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case209(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 160: // Expr ::= Bind
+ case 208: // AndExprA ::= AndExprB AND Bind
{
- Expr RESULT =null;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr x = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = x;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Expr",22, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case208(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 159: // Expr ::= OrExprB
+ case 207: // AndExprA ::= TempBinaryA
{
- Expr RESULT =null;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr x = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = x;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Expr",22, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case207(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 158: // Expr ::= OrExprA
+ case 206: // ImpliesExprOpenB ::= AndExprB IMPLIES ImpliesExprB
{
- Expr RESULT =null;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr x = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT = x;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Expr",22, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case206(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 157: // Exprp ::= Exprp COMMA Expr
+ case 205: // ImpliesExprOpenB ::= AndExprB IMPLIES ImpliesExprCloseB ELSE ImpliesExprOpenB
{
- List RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- List a = (List)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- a.add(b); RESULT=a;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Exprp",28, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case205(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 156: // Exprp ::= Expr
+ case 204: // ImpliesExprCloseB ::= AndExprB IMPLIES ImpliesExprCloseB ELSE ImpliesExprCloseB
{
- List RESULT =null;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr x = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new ArrayList(); RESULT.add(x);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Exprp",28, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case204(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 155: // Exprs ::= Exprp
+ case 203: // ImpliesExprCloseB ::= AndExprB
{
- List RESULT =null;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- List x = (List)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=x;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Exprs",27, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case203(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 154: // Exprs ::=
+ case 202: // ImpliesExprB ::= ImpliesExprOpenB
{
- List RESULT =null;
- RESULT=new ArrayList();
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Exprs",27, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case202(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 153: // SuperOrBar ::= Super
+ case 201: // ImpliesExprB ::= ImpliesExprCloseB
{
- Expr RESULT =null;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr x = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=x;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("SuperOrBar",26, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case201(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 152: // SuperOrBar ::= BAR Expr
+ case 200: // ImpliesExprOpenA ::= AndExprB IMPLIES Bind
{
- Expr RESULT =null;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr x = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=x;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("SuperOrBar",26, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case200(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 151: // SuperP ::= SuperP Expr
+ case 199: // ImpliesExprCloseA ::= AndExprB IMPLIES ImpliesExprCloseB ELSE Bind
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprBinary.Op.AND.make(null, null, a, b);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("SuperP",25, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case199(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 150: // SuperP ::= Expr
+ case 198: // ImpliesExprOpenA ::= AndExprB IMPLIES ImpliesExprA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr a = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=a;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("SuperP",25, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case198(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 149: // Super ::= LBRACE RBRACE
+ case 197: // ImpliesExprOpenA ::= AndExprB IMPLIES ImpliesExprCloseB ELSE ImpliesExprOpenA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Pos a = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos b = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprConstant.Op.TRUE.make(a.merge(b), 0);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Super",23, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case197(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 148: // Super ::= LBRACE SuperP RBRACE
+ case 196: // ImpliesExprCloseA ::= AndExprB IMPLIES ImpliesExprCloseB ELSE ImpliesExprCloseA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Pos a = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Expr x = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Pos b = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=ExprUnary.Op.NOOP.make(a.merge(b), x);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Super",23, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case196(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 147: // SuperOpt ::= Super
+ case 195: // ImpliesExprCloseA ::= AndExprA
{
- Expr RESULT =null;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr x = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=x;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("SuperOpt",24, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case195(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 146: // SuperOpt ::=
+ case 194: // ImpliesExprA ::= ImpliesExprOpenA
{
- Expr RESULT =null;
- RESULT=null;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("SuperOpt",24, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case194(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 145: // Let ::= Name EQUALS Expr COMMA Let
+ case 193: // ImpliesExprA ::= ImpliesExprCloseA
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).right;
- ExprVar a = (ExprVar)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr x = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
-
- nod(a);
- if (a.label.indexOf('/')>=0) throw new ErrorSyntax(a.pos, "Let variable name cannot contain \'/\'");
- if (a.label.indexOf('@')>=0) throw new ErrorSyntax(a.pos, "Let variable name cannot contain \'@\'");
- RESULT = ExprLet.make(o, ExprVar.make(a.pos, a.label), b, x);
+ CUP$CompParser$result = case193(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
+ }
+ return CUP$CompParser$result;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Let",38, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-4)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ /*. . . . . . . . . . . . . . . . . . . .*/
+ case 192: // EquivExprB ::= EquivExprB IFF ImpliesExprB
+ {
+ CUP$CompParser$result = case192(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 144: // Let ::= Name EQUALS Expr SuperOrBar
+ case 191: // EquivExprB ::= ImpliesExprB
{
- Expr RESULT =null;
- int aleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).left;
- int aright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).right;
- ExprVar a = (ExprVar)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)).value;
- int oleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int oright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Pos o = (Pos)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int bleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).left;
- int bright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).right;
- Expr b = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)).value;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Expr x = (Expr)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
-
- nod(a);
- if (a.label.indexOf('/')>=0) throw new ErrorSyntax(a.pos, "Let variable name cannot contain \'/\'");
- if (a.label.indexOf('@')>=0) throw new ErrorSyntax(a.pos, "Let variable name cannot contain \'@\'");
- RESULT = ExprLet.make(o, ExprVar.make(a.pos, a.label), b, x);
+ CUP$CompParser$result = case191(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
+ }
+ return CUP$CompParser$result;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Let",38, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-3)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ /*. . . . . . . . . . . . . . . . . . . .*/
+ case 190: // EquivExprA ::= EquivExprB IFF Bind
+ {
+ CUP$CompParser$result = case190(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 143: // Decls ::= COMMA Decls
+ case 189: // EquivExprA ::= ImpliesExprA
{
- List RESULT =null;
- int yleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int yright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- List y = (List)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=y;
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Decls",13, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-1)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case189(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 142: // Decls ::= Declb COMMA Decls
+ case 188: // OrExprB ::= OrExprB OR EquivExprB
{
- List RESULT =null;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).right;
- Decl x = (Decl)((java_cup.runtime.Symbol) CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)).value;
- int yleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int yright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- List y = (List)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=y; RESULT.add(0,x);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Decls",13, ((java_cup.runtime.Symbol)CUP$CompParser$stack.elementAt(CUP$CompParser$top-2)), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case188(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 141: // Decls ::= Declb
+ case 187: // OrExprB ::= EquivExprB
{
- List RESULT =null;
- int xleft = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).left;
- int xright = ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()).right;
- Decl x = (Decl)((java_cup.runtime.Symbol) CUP$CompParser$stack.peek()).value;
- RESULT=new ArrayList(); RESULT.add(x);
- CUP$CompParser$result = parser.getSymbolFactory().newSymbol("Decls",13, ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$CompParser$stack.peek()), RESULT);
+ CUP$CompParser$result = case187(
+ CUP$CompParser$act_num,
+ CUP$CompParser$parser,
+ CUP$CompParser$stack,
+ CUP$CompParser$top);
}
return CUP$CompParser$result;
/*. . . . . . . . . . . . . . . . . . . .*/
- case 140: // Decls ::=
+ case 186: // OrExprA ::= OrExprB OR Bind
{
- List