diff --git a/CMakeLists.txt b/CMakeLists.txt index dd4130855f9736d803b205a2d218f7be7b635517..34363e4ab5f05025130b3d5a4c0ee99ef55b5e5d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,11 +22,12 @@ option(ENABLE_CGNS "Enable CGNS mesh export" OFF) option(ENABLE_CHACO "Enable Chaco mesh partitioner" ON) option(ENABLE_DINTEGRATION "Enable discrete integration and levelsets" ON) option(ENABLE_FLTK "Build FLTK GUI" ON) +option(ENABLE_FL_TREE "Enable FLTK tree browser widget" ON) option(ENABLE_FOURIER_MODEL "Enable Fourier geometrical models" OFF) option(ENABLE_GMM "Enable GMM linear algebra solvers" ON) option(ENABLE_GRAPHICS "Compile-in OpenGL graphics even if there is no GUI" OFF) option(ENABLE_KBIPACK "Enable Kbipack for homology solver" ON) -option(ENABLE_MATH_EVAL "Enable MathEval expression parser" ON) +option(ENABLE_MATHEX "Enable MathEx expression parser" ON) option(ENABLE_MED "Enable MED mesh and post-processing file formats" ON) option(ENABLE_METIS "Enable Metis mesh partitioner" ON) option(ENABLE_NATIVE_FILE_CHOOSER "Enable native file chooser in GUI" ON) @@ -39,7 +40,6 @@ option(ENABLE_QT "Build QT GUI" OFF) option(ENABLE_TAUCS "Enable Taucs linear algebra solver" ON) option(ENABLE_TETGEN "Enable Tetgen mesh generator" ON) option(ENABLE_TETGEN_NEW "Enable experimental version of Tetgen" OFF) -option(ENABLE_TREE_BROWSER "Enable FLTK tree browser widget" ON) set(GMSH_MAJOR_VERSION 2) set(GMSH_MINOR_VERSION 4) @@ -201,11 +201,11 @@ if(ENABLE_FLTK) list(APPEND CONFIG_OPTIONS "NativeFileChooser") add_definitions(-DFLTK1) endif(ENABLE_NATIVE_FILE_CHOOSER) - if(ENABLE_TREE_BROWSER) - add_subdirectory(contrib/TreeBrowser) - set(HAVE_TREE_BROWSER TRUE) - list(APPEND CONFIG_OPTIONS "TreeBrowser") - endif(ENABLE_TREE_BROWSER) + if(ENABLE_FL_TREE) + add_subdirectory(contrib/Fl_Tree) + set(HAVE_FL_TREE TRUE) + list(APPEND CONFIG_OPTIONS "FlTree") + endif(ENABLE_FL_TREE) endif(FLTK_FOUND) elseif(ENABLE_QT) find_package(Qt4) @@ -331,11 +331,11 @@ if(ENABLE_KBIPACK) endif(GMP_LIB) endif(ENABLE_KBIPACK) -if(ENABLE_MATH_EVAL) - add_subdirectory(contrib/MathEval) - set(HAVE_MATH_EVAL TRUE) - list(APPEND CONFIG_OPTIONS "MathEval") -endif(ENABLE_MATH_EVAL) +if(ENABLE_MATHEX) + add_subdirectory(contrib/MathEx) + set(HAVE_MATHEX TRUE) + list(APPEND CONFIG_OPTIONS "MathEx") +endif(ENABLE_MATHEX) if(ENABLE_METIS) add_subdirectory(contrib/Metis) @@ -562,9 +562,9 @@ endif(EXTERNAL_INCLUDES) # we could specify include dirs more selectively, but this is simpler include_directories(Common Fltk Geo Graphics Mesh Numeric Parser Plugin Post Qt contrib/ANN/include contrib/Chaco/main contrib/DiscreteIntegration - contrib/MathEval contrib/Metis contrib/NativeFileChooser - contrib/Netgen contrib/Netgen/libsrc/include contrib/Netgen/libsrc/interface - contrib/Tetgen contrib/TreeBrowser contrib/gmm contrib/kbipack + contrib/MathEx contrib/Metis contrib/NativeFileChooser contrib/Netgen + contrib/Netgen/libsrc/include contrib/Netgen/libsrc/interface + contrib/Tetgen contrib/Fl_Tree contrib/gmm contrib/kbipack ${EXTERNAL_INCLUDES} ${CMAKE_BINARY_DIR}/Common) # we don't build the lib by default (we could then create the gmsh @@ -577,8 +577,9 @@ include_directories(Common Fltk Geo Graphics Mesh Numeric Parser Plugin # target) add_library(lib STATIC EXCLUDE_FROM_ALL ${GMSH_SRC}) set_target_properties(lib PROPERTIES OUTPUT_NAME Gmsh) -set_target_properties(lib PROPERTIES DEBUG_OUTPUT_NAME Gmshd) -#SET_TARGET_PROPERTIES(lib PROPERTIES DEBUG_POSTFIX d) +if(MSVC) + SET_TARGET_PROPERTIES(lib PROPERTIES DEBUG_POSTFIX d) +endif(MSVC) if(HAVE_FLTK) add_executable(gmsh WIN32 Fltk/Main.cpp ${GMSH_SRC}) diff --git a/Common/Context.cpp b/Common/Context.cpp index 91e86aa378d7844f372667582f6f582c13a2b689..00fc9b693c5f1022f86848f149ccd859dfe32732 100644 --- a/Common/Context.cpp +++ b/Common/Context.cpp @@ -69,7 +69,6 @@ CTX::CTX() lock = 0; // very primitive locking mesh.changed = 0; post.combineTime = 0; // try to combineTime views at startup - post.pluginDrawFunction = 0; #if defined(HAVE_FLTK) glFontEnum = FL_HELVETICA; #else diff --git a/Common/Context.h b/Common/Context.h index f1853d00eabe62025226c77cc8c37a462d9ee748..539f3677a1851adeea75aa27daa9d4e798589ce0 100644 --- a/Common/Context.h +++ b/Common/Context.h @@ -192,7 +192,6 @@ class CTX { int smooth, animCycle, combineTime, combineRemoveOrig; int fileFormat, plugins; double animDelay; - void (*pluginDrawFunction)(void*); }post; // solver options struct{ diff --git a/Common/CreateFile.cpp b/Common/CreateFile.cpp index e9fa934ab730e7fc67632b1b43e7ffac0da85a1d..a67c260adb4896d83d0e27358884f04c874c0195 100644 --- a/Common/CreateFile.cpp +++ b/Common/CreateFile.cpp @@ -14,6 +14,7 @@ #if defined(HAVE_FLTK) #include <FL/gl.h> #include "FlGui.h" +#include "Draw.h" #include "graphicWindow.h" #include "gl2ps.h" #include "gl2gif.h" diff --git a/Common/GmshConfig.h.in b/Common/GmshConfig.h.in index a925fc3ee12a24df236e42e0175b561465bce6b7..7fc341a7714190699778ba9e47b4a3e2d6a0d7e1 100644 --- a/Common/GmshConfig.h.in +++ b/Common/GmshConfig.h.in @@ -12,6 +12,7 @@ #cmakedefine HAVE_CHACO #cmakedefine HAVE_DINTEGRATION #cmakedefine HAVE_FLTK +#cmakedefine HAVE_FL_TREE #cmakedefine HAVE_FOURIER_MODEL #cmakedefine HAVE_GMM #cmakedefine HAVE_KBIPACK @@ -20,7 +21,7 @@ #cmakedefine HAVE_LIBJPEG #cmakedefine HAVE_LIBPNG #cmakedefine HAVE_LIBZ -#cmakedefine HAVE_MATH_EVAL +#cmakedefine HAVE_MATHEX #cmakedefine HAVE_MED #cmakedefine HAVE_METIS #cmakedefine HAVE_MPI @@ -37,7 +38,6 @@ #cmakedefine HAVE_QT #cmakedefine HAVE_TAUCS #cmakedefine HAVE_TETGEN -#cmakedefine HAVE_TREE_BROWSER #define GMSH_CONFIG_OPTIONS "${GMSH_CONFIG_OPTIONS}" diff --git a/Fltk/Draw.cpp b/Fltk/Draw.cpp index 62079b75dd6131a8d51915a41d4673a050f7d80d..eb5d5ad8f7742f49b0f0259dd084368a344f1df1 100644 --- a/Fltk/Draw.cpp +++ b/Fltk/Draw.cpp @@ -37,23 +37,6 @@ void DrawCurrentOpenglWindow(bool make_current) FlGui::instance()->check(); } -void DrawPlugin(void (*draw)(void *context)) -{ - CTX::instance()->post.pluginDrawFunction = draw; - int old = CTX::instance()->drawBBox; - CTX::instance()->drawBBox = 1; - if(CTX::instance()->fastRedraw){ - CTX::instance()->post.draw = 0; - CTX::instance()->mesh.draw = 0; - } - Draw(); - // this is reset in each plugin run/cancel callback: - // CTX::instance()->post.pluginDrawFunction = NULL; - CTX::instance()->drawBBox = old; - CTX::instance()->post.draw = 1; - CTX::instance()->mesh.draw = 1; -} - int GetFontIndex(const char *fontname) { if(fontname){ diff --git a/Fltk/pluginWindow.cpp b/Fltk/pluginWindow.cpp index 5d097aeb11c1b13103f5bccde9132dede5802d4e..4d0577b2130798211366aabf232c03924058b5e5 100644 --- a/Fltk/pluginWindow.cpp +++ b/Fltk/pluginWindow.cpp @@ -140,7 +140,7 @@ static void plugin_run_cb(Fl_Widget *w, void *data) if(no_view_selected) p->execute(0); FlGui::instance()->updateViews(); - CTX::instance()->post.pluginDrawFunction = NULL; + GMSH_Plugin::draw = 0; Draw(); } diff --git a/Fltk/visibilityWindow.cpp b/Fltk/visibilityWindow.cpp index fa0f506931f488ff9fbfe552bcd086bbae29a972..b1cdd652ab77dc2ce2567725a39b1741f932e769 100644 --- a/Fltk/visibilityWindow.cpp +++ b/Fltk/visibilityWindow.cpp @@ -443,87 +443,96 @@ class listBrowser : public Fl_Browser{ : Fl_Browser(x, y, w, h, c){} }; -#if defined(HAVE_TREE_BROWSER) +#if defined(HAVE_FL_TREE) -static void _add_vertex(GVertex *gv, Flu_Tree_Browser::Node *n) +static void _add_vertex(GVertex *gv, Fl_Tree *tree, std::string path) { - char str[128]; - sprintf(str, "Point %d", gv->tag()); - Flu_Tree_Browser::Node *n2 = n->add(str); - if(gv->getVisibility()) n2->select(true); - n2->user_data((void*)gv); + std::ostringstream vertex; + vertex << path << "Point " << gv->tag() << "/"; + Fl_Tree_Item *n = tree->add(vertex.str().c_str()); + if(gv->getVisibility()) n->select(1); + n->userdata((void*)gv); + n->close(); } -static void _add_edge(GEdge *ge, Flu_Tree_Browser::Node *n) +static void _add_edge(GEdge *ge, Fl_Tree *tree, std::string path) { - char str[128]; - sprintf(str, "Line %d/", ge->tag()); - Flu_Tree_Browser::Node *n2 = n->add(str); - if(ge->getVisibility()) n2->select(true); - n2->user_data((void*)ge); + std::ostringstream edge; + edge << path << "Line " << ge->tag() << "/"; + Fl_Tree_Item *n = tree->add(edge.str().c_str()); + if(ge->getVisibility()) n->select(1); + n->userdata((void*)ge); + n->close(); if(ge->getBeginVertex()) - _add_vertex(ge->getBeginVertex(), n2); + _add_vertex(ge->getBeginVertex(), tree, edge.str()); if(ge->getEndVertex()) - _add_vertex(ge->getEndVertex(), n2); + _add_vertex(ge->getEndVertex(), tree, edge.str()); } -static void _add_face(GFace *gf, Flu_Tree_Browser::Node *n) +static void _add_face(GFace *gf, Fl_Tree *tree, std::string path) { - char str[128]; - sprintf(str, "Surface %d/", gf->tag()); - Flu_Tree_Browser::Node *n2 = n->add(str); - if(gf->getVisibility()) n2->select(true); - n2->user_data((void*)gf); + std::ostringstream face; + face << path << "Surface " << gf->tag() << "/"; + Fl_Tree_Item *n = tree->add(face.str().c_str()); + if(gf->getVisibility()) n->select(1); + n->userdata((void*)gf); + n->close(); std::list<GEdge*> edges = gf->edges(); for(std::list<GEdge*>::iterator it = edges.begin(); it != edges.end(); it++) - _add_edge(*it, n2); + _add_edge(*it, tree, face.str()); } -static void _add_region(GRegion *gr, Flu_Tree_Browser::Node *n) +static void _add_region(GRegion *gr, Fl_Tree *tree, std::string path) { - char str[128]; - sprintf(str, "Volume %d/", gr->tag()); - Flu_Tree_Browser::Node *n2 = n->add(str); - if(gr->getVisibility()) n2->select(true); - n2->user_data((void*)gr); + std::ostringstream region; + region << path << "Volume " << gr->tag() << "/"; + Fl_Tree_Item *n = tree->add(region.str().c_str()); + if(gr->getVisibility()) n->select(1); + n->userdata((void*)gr); + n->close(); std::list<GFace*> faces = gr->faces(); for(std::list<GFace*>::iterator it = faces.begin(); it != faces.end(); it++) - _add_face(*it, n2); + _add_face(*it, tree, region.str()); } static void _add_physical_group(int dim, int num, std::vector<GEntity*> &ge, - Flu_Tree_Browser::Node *n) + Fl_Tree *tree, std::string path) { if(ge.empty()) return; - char str[256]; - Flu_Tree_Browser::Node *n2 = 0; std::string name; if(ge[0]->model()->getPhysicalName(dim, num).size()) name += std::string(" <<") + ge[0]->model()->getPhysicalName(dim, num) + ">>"; + Fl_Tree_Item *n; + std::ostringstream group; + group << path; switch(dim){ case 3: - sprintf(str, "Physical Volume %d%s/", num, name.c_str()); - n2 = n->add(str); + group << "Physical Volume " << num << name << "/"; + n = tree->add(group.str().c_str()); + n->close(); for(unsigned int i = 0; i < ge.size(); i++) - _add_region((GRegion*)ge[i], n2); + _add_region((GRegion*)ge[i], tree, group.str()); break; case 2: - sprintf(str, "Physical Surface %d%s/", num, name.c_str()); - n2 = n->add(str); + group << "Physical Surface " << num << name << "/"; + n = tree->add(group.str().c_str()); + n->close(); for(unsigned int i = 0; i < ge.size(); i++) - _add_face((GFace*)ge[i], n2); + _add_face((GFace*)ge[i], tree, group.str()); break; case 1: - sprintf(str, "Physical Line %d%s/", num, name.c_str()); - n2 = n->add(str); + group << "Physical Line " << num << name << "/"; + n = tree->add(group.str().c_str()); + n->close(); for(unsigned int i = 0; i < ge.size(); i++) - _add_edge((GEdge*)ge[i], n2); + _add_edge((GEdge*)ge[i], tree, group.str()); break; case 0: - sprintf(str, "Physical Point %d%s/", num, name.c_str()); - n2 = n->add(str); + group << "Physical Point " << num << name << "/"; + n = tree->add(group.str().c_str()); + n->close(); for(unsigned int i = 0; i < ge.size(); i++) - _add_vertex((GVertex*)ge[i], n2); + _add_vertex((GVertex*)ge[i], tree, group.str()); break; default: break; @@ -551,34 +560,46 @@ static void _rebuild_tree_browser(bool force) FlGui::instance()->visibility->tree->show(); FlGui::instance()->visibility->tree->clear(); - char str[128]; for(unsigned int i = 0; i < GModel::list.size(); i++){ GModel *m = GModel::list[i]; - std::string s(" <<"); - s += m->getName() + ">>"; - if(m == GModel::current()) s += " (Active)"; - sprintf(str, "Model [%d] %s/", i, s.c_str()); - Flu_Tree_Browser::Node *n = FlGui::instance()->visibility->tree->add(str); - if(m->getVisibility()) n->select(true); - Flu_Tree_Browser::Node *e = n->add("Elementary entities/"); - e->select(true); + std::ostringstream model; + model << "Model [" << i << "] <<" << m->getName() << ">>"; + if(m == GModel::current()) model << " (Active)"; + model << "/"; + + Fl_Tree_Item *n; + n = FlGui::instance()->visibility->tree->add(model.str().c_str()); + if(m->getVisibility()) n->select(1); + n->close(); + + std::string elementary = model.str() + "Elementary entities/"; + n = FlGui::instance()->visibility->tree->add(elementary.c_str()); + n->close(); + for(GModel::riter it = m->firstRegion(); it != m->lastRegion(); it++) - _add_region(*it, e); + _add_region(*it, FlGui::instance()->visibility->tree, elementary); for(GModel::fiter it = m->firstFace(); it != m->lastFace(); it++) - _add_face(*it, e); + _add_face(*it, FlGui::instance()->visibility->tree, elementary); for(GModel::eiter it = m->firstEdge(); it != m->lastEdge(); it++) - _add_edge(*it, e); + _add_edge(*it, FlGui::instance()->visibility->tree, elementary); for(GModel::viter it = m->firstVertex(); it != m->lastVertex(); it++) - _add_vertex(*it, e); - Flu_Tree_Browser::Node *g = n->add("Physical groups/"); - g->select(true); + _add_vertex(*it, FlGui::instance()->visibility->tree, elementary); + + std::string physical = model.str() + "Physical groups/"; + n = FlGui::instance()->visibility->tree->add(physical.c_str()); + n->close(); + std::map<int, std::vector<GEntity*> > groups[4]; m->getPhysicalGroups(groups); for(int i = 3; i >= 0; i--) for(std::map<int, std::vector<GEntity*> >::iterator it = groups[i].begin(); it != groups[i].end(); it++) - _add_physical_group(i, it->first, it->second, g); + _add_physical_group(i, it->first, it->second, + FlGui::instance()->visibility->tree, physical); } + + FlGui::instance()->visibility->tree->root_label("Gmsh"); + FlGui::instance()->visibility->tree->redraw(); } static void build_tree_cb(Fl_Widget *w, void *data) @@ -586,17 +607,17 @@ static void build_tree_cb(Fl_Widget *w, void *data) _rebuild_tree_browser(true); } -static void _recur_select(Flu_Tree_Browser::Node *n) +static void _recur_select(Fl_Tree_Item *n) { - n->select(true); + n->select(1); for(int i = 0; i < n->children(); i++) _recur_select(n->child(i)); } -static void _recur_set_visible(Flu_Tree_Browser::Node *n) +static void _recur_set_visible(Fl_Tree_Item *n) { - if(n->user_data() && n->selected()){ - GEntity *ge = (GEntity*)n->user_data(); + if(n->userdata() && n->is_selected()){ + GEntity *ge = (GEntity*)n->userdata(); bool recursive = FlGui::instance()->visibility->butt[0]->value() ? true : false; ge->setVisibility(1, recursive); // force this: if we ask to see an entity, let's assume that we @@ -607,11 +628,11 @@ static void _recur_set_visible(Flu_Tree_Browser::Node *n) _recur_set_visible(n->child(i)); } -static void _recur_update_selected(Flu_Tree_Browser::Node *n) +static void _recur_update_selected(Fl_Tree_Item *n) { - if(n->user_data()){ - GEntity *ge = (GEntity*)n->user_data(); - n->select(ge->getVisibility() ? true : false); + if(n->userdata()){ + GEntity *ge = (GEntity*)n->userdata(); + n->select(ge->getVisibility() ? 1 : 0); } for(int i = 0; i < n->children(); i++) _recur_update_selected(n->child(i)); @@ -621,22 +642,23 @@ static void visibility_tree_apply_cb(Fl_Widget *w, void *data) { CTX::instance()->mesh.changed |= (ENT_LINE | ENT_SURFACE | ENT_VOLUME); bool recursive = FlGui::instance()->visibility->butt[0]->value() ? true : false; - Flu_Tree_Browser::Node *root = FlGui::instance()->visibility->tree->first(); + + Fl_Tree_Item *root = FlGui::instance()->visibility->tree->root(); for(int i = 0; i < root->children(); i++){ GModel *m = GModel::list[i]; - Flu_Tree_Browser::Node *n = root->child(i); + Fl_Tree_Item *n = root->child(i); // treat special levels separately if(recursive){ - if(n->selected()){ // if model is selected + if(root->is_selected() || n->is_selected()){ // if root or model is selected _recur_select(n); } else{ for(int j = 0; j < n->children(); j++){ - if(n->child(j)->selected()) // if elementary/physical is selected + if(n->child(j)->is_selected()) // if elementary/physical is selected _recur_select(n->child(j)); else if(j == 1){ for(int k = 0; k < n->child(j)->children(); k++){ - if(n->child(j)->child(k)->selected()) // if physical ent is selected + if(n->child(j)->child(k)->is_selected()) // if physical ent is selected _recur_select(n->child(j)->child(k)); } } @@ -653,26 +675,26 @@ static void visibility_tree_apply_cb(Fl_Widget *w, void *data) // update tree selection _recur_update_selected(n); } + FlGui::instance()->visibility->tree->redraw(); Draw(); } -class treeBrowser : public Flu_Tree_Browser{ +class treeBrowser : public Fl_Tree{ int handle(int event) { switch(event){ case FL_SHORTCUT: case FL_KEYBOARD: - if(Fl::test_shortcut(FL_Enter) || - Fl::test_shortcut(FL_KP_Enter)){ + if(Fl::test_shortcut(FL_Enter) || Fl::test_shortcut(FL_KP_Enter)){ visibility_tree_apply_cb(NULL, NULL); return 1; } } - return Flu_Tree_Browser::handle(event); + return Fl_Tree::handle(event); } public: treeBrowser(int x, int y, int w , int h, const char* c = 0) - : Flu_Tree_Browser(x, y, w, h, c){} + : Fl_Tree(x, y, w, h, c){} }; #endif @@ -688,7 +710,7 @@ void visibility_cb(Fl_Widget *w, void *data) FlGui::instance()->visibility->show(false); _rebuild_list_browser(); -#if defined(HAVE_TREE_BROWSER) +#if defined(HAVE_FL_TREE) _rebuild_tree_browser(false); #endif FlGui::instance()->visibility->updatePerWindow(true); @@ -1112,6 +1134,7 @@ visibilityWindow::visibilityWindow(int deltaFontSize) browser = new listBrowser (2 * WB, 2 * WB + 2 * BH, brw, height - 6 * WB - 4 * BH); browser->type(FL_MULTI_BROWSER); + browser->textsize(FL_NORMAL_SIZE - 1); browser->column_widths(cols); gg->end(); @@ -1141,19 +1164,15 @@ visibilityWindow::visibilityWindow(int deltaFontSize) g->end(); Fl_Group::current()->resizable(g); } -#if defined(HAVE_TREE_BROWSER) +#if defined(HAVE_FL_TREE) { Fl_Group *g = new Fl_Group (WB, WB + BH, width - 2 * WB, height - 3 * WB - 2 * BH, "Tree browser"); - tree = new treeBrowser - (2 * WB, 2 * WB + BH, brw, height - 6 * WB - 3 * BH); - tree->show_root(false); - tree->box(FL_DOWN_BOX); - tree->insertion_mode(FLU_INSERT_BACK); - tree->branch_icons(0, 0); - tree->branch_text(FL_BLACK, FL_HELVETICA_BOLD, FL_NORMAL_SIZE - 1); - tree->leaf_text(FL_BLACK, FL_HELVETICA, FL_NORMAL_SIZE - 1); + tree = new treeBrowser(2 * WB, 2 * WB + BH, brw, height - 6 * WB - 3 * BH); + tree->labelsize(FL_NORMAL_SIZE - 1); + tree->selectmode(FL_TREE_SELECT_MULTI); + tree->connectorstyle(FL_TREE_CONNECTOR_SOLID); tree->hide(); tree_create = new Fl_Button diff --git a/Fltk/visibilityWindow.h b/Fltk/visibilityWindow.h index b18b64b2e5a97084963a9405e95bcdeed3b8d279..58737536bbb5eb6ab251bb383439921314b8c7e4 100644 --- a/Fltk/visibilityWindow.h +++ b/Fltk/visibilityWindow.h @@ -15,8 +15,8 @@ #include <FL/Fl_Input.H> #include "GmshConfig.h" -#if defined(HAVE_TREE_BROWSER) -#include "Flu_Tree_Browser.h" +#if defined(HAVE_FL_TREE) +#include "FL/Fl_Tree.H" #endif class visibilityWindow{ @@ -25,8 +25,8 @@ class visibilityWindow{ Fl_Choice *browser_type; Fl_Browser *browser; Fl_Multi_Browser *per_window; -#if defined(HAVE_TREE_BROWSER) - Flu_Tree_Browser *tree; +#if defined(HAVE_FL_TREE) + Fl_Tree *tree; Fl_Button *tree_create; #endif Fl_Check_Button *butt[2]; diff --git a/Geo/GModelIO_MED.cpp b/Geo/GModelIO_MED.cpp index 1ce28e473da7e9110beda2530e6e4539e04501a4..3c389208c145dd1cc5d25cf1b5101d8d8934e0d2 100644 --- a/Geo/GModelIO_MED.cpp +++ b/Geo/GModelIO_MED.cpp @@ -463,7 +463,7 @@ int GModel::writeMED(const std::string &name, bool saveAll, double scalingFactor // write the elements { - med_geometrie_element typ; + med_geometrie_element typ = MED_NONE; { // points std::vector<med_int> conn, fam; for(viter it = firstVertex(); it != lastVertex(); it++) diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp index db9c76422d25328848dc5d68560ea565db1db2b4..64b17b9f73f5008cceccb46f3aaabb476a585b19 100644 --- a/Geo/Geo.cpp +++ b/Geo/Geo.cpp @@ -6,7 +6,6 @@ #include <string.h> #include "GmshMessage.h" #include "Numeric.h" -#include "MallocUtils.h" #include "Geo.h" #include "GModel.h" #include "GeoInterpolation.h" @@ -139,7 +138,7 @@ static void Free_Vertex(void *a, void *b) PhysicalGroup *Create_PhysicalGroup(int Num, int typ, List_T *intlist, List_T *bndlist[4]) { - PhysicalGroup *p = (PhysicalGroup *)Malloc(sizeof(PhysicalGroup)); + PhysicalGroup *p = new PhysicalGroup; p->Entities = List_Create(List_Nbr(intlist), 1, sizeof(int)); p->Num = Num; GModel::current()->getGEOInternals()->MaxPhysicalNum = @@ -170,14 +169,14 @@ static void Free_PhysicalGroup(void *a, void *b) PhysicalGroup *p = *(PhysicalGroup **)a; if(p) { List_Delete(p->Entities); - Free(p); + delete p; p = NULL; } } EdgeLoop *Create_EdgeLoop(int Num, List_T *intlist) { - EdgeLoop *l = (EdgeLoop *)Malloc(sizeof(EdgeLoop)); + EdgeLoop *l = new EdgeLoop; l->Curves = List_Create(List_Nbr(intlist), 1, sizeof(int)); l->Num = Num; GModel::current()->getGEOInternals()->MaxLineLoopNum = @@ -195,14 +194,14 @@ static void Free_EdgeLoop(void *a, void *b) EdgeLoop *l = *(EdgeLoop **)a; if(l) { List_Delete(l->Curves); - Free(l); + delete l; l = NULL; } } SurfaceLoop *Create_SurfaceLoop(int Num, List_T *intlist) { - SurfaceLoop *l = (SurfaceLoop *)Malloc(sizeof(SurfaceLoop)); + SurfaceLoop *l = new SurfaceLoop; l->Surfaces = List_Create(List_Nbr(intlist), 1, sizeof(int)); l->Num = Num; GModel::current()->getGEOInternals()->MaxSurfaceLoopNum = @@ -220,7 +219,7 @@ static void Free_SurfaceLoop(void *a, void *b) SurfaceLoop *l = *(SurfaceLoop **)a; if(l) { List_Delete(l->Surfaces); - Free(l); + delete l; l = NULL; } } @@ -468,7 +467,7 @@ Curve *Create_Curve(int Num, int Typ, int Order, List_T *Liste, {-3, 3.0, 0, 0.0}, {1, 0, 0, 0.0} }; - Curve *pC = (Curve *)Malloc(sizeof(Curve)); + Curve *pC = new Curve; pC->Color.type = 0; pC->Visible = 1; pC->Extrude = NULL; @@ -506,7 +505,7 @@ Curve *Create_Curve(int Num, int Typ, int Order, List_T *Liste, pC->uend = u2; if(Knots) { - pC->k = (float *)Malloc(List_Nbr(Knots) * sizeof(float)); + pC->k = new float[List_Nbr(Knots)]; double kmin = .0, kmax = 1.; List_Read(Knots, 0, &kmin); List_Read(Knots, List_Nbr(Knots) - 1, &kmax); @@ -572,16 +571,16 @@ static void Free_Curve(void *a, void *b) { Curve *pC = *(Curve **)a; if(pC) { - Free(pC->k); + delete [] pC->k; List_Delete(pC->Control_Points); - Free(pC); + delete pC; pC = NULL; } } Surface *Create_Surface(int Num, int Typ) { - Surface *pS = (Surface *)Malloc(sizeof(Surface)); + Surface *pS = new Surface; pS->Color.type = 0; pS->Visible = 1; pS->Num = Num; @@ -613,14 +612,14 @@ static void Free_Surface(void *a, void *b) List_Delete(pS->Generatrices); List_Delete(pS->EmbeddedCurves); List_Delete(pS->EmbeddedPoints); - Free(pS); + delete pS; pS = NULL; } } Volume *Create_Volume(int Num, int Typ) { - Volume *pV = (Volume *)Malloc(sizeof(Volume)); + Volume *pV = new Volume; pV->Color.type = 0; pV->Visible = 1; pV->Num = Num; @@ -644,7 +643,7 @@ static void Free_Volume(void *a, void *b) List_Delete(pV->Surfaces); List_Delete(pV->SurfacesOrientations); List_Delete(pV->SurfacesByTag); - Free(pV); + delete pV; pV = NULL; } } @@ -875,11 +874,6 @@ static void CopyCurve(Curve *c, Curve *cc, bool copyMeshingMethod) cc->uend = c->uend; cc->Control_Points = List_Create(List_Nbr(c->Control_Points), 1, sizeof(Vertex *)); List_Copy(c->Control_Points, cc->Control_Points); - if(c->Typ == MSH_SEGM_PARAMETRIC){ - strcpy(cc->functu, c->functu); - strcpy(cc->functv, c->functv); - strcpy(cc->functw, c->functw); - } End_Curve(cc); Tree_Insert(GModel::current()->getGEOInternals()->Curves, &cc); } @@ -987,7 +981,6 @@ void CopyShape(int Type, int Num, int *New) case MSH_SEGM_ELLI: case MSH_SEGM_ELLI_INV: case MSH_SEGM_NURBS: - case MSH_SEGM_PARAMETRIC: if(!(c = FindCurve(Num))) { Msg::Error("Unknown curve %d", Num); return; @@ -1114,7 +1107,6 @@ void DeleteShape(int Type, int Num) case MSH_SEGM_ELLI: case MSH_SEGM_ELLI_INV: case MSH_SEGM_NURBS: - case MSH_SEGM_PARAMETRIC: DeleteCurve(Num); DeleteCurve(-Num); break; @@ -1179,7 +1171,6 @@ void ColorShape(int Type, int Num, unsigned int Color) case MSH_SEGM_ELLI: case MSH_SEGM_ELLI_INV: case MSH_SEGM_NURBS: - case MSH_SEGM_PARAMETRIC: case MSH_SEGM_DISCRETE: ColorCurve(Num, Color); break; @@ -1221,7 +1212,6 @@ void VisibilityShape(int Type, int Num, int Mode) case MSH_SEGM_ELLI: case MSH_SEGM_ELLI_INV: case MSH_SEGM_NURBS: - case MSH_SEGM_PARAMETRIC: case MSH_SEGM_DISCRETE: if((c = FindCurve(Num))) c->Visible = Mode; @@ -1297,8 +1287,7 @@ Curve *CreateReversedCurve(Curve *c) } if(c->Typ == MSH_SEGM_NURBS && c->k) { - newc->k = (float *)malloc((c->degre + List_Nbr(c->Control_Points) + 1) * - sizeof(float)); + newc->k = new float[c->degre + List_Nbr(c->Control_Points) + 1]; for(i = 0; i < c->degre + List_Nbr(c->Control_Points) + 1; i++) newc->k[c->degre + List_Nbr(c->Control_Points) - i] = c->k[i]; } @@ -1684,7 +1673,6 @@ static void ApplicationOnShapes(double matrix[4][4], List_T *shapes) case MSH_SEGM_ELLI: case MSH_SEGM_ELLI_INV: case MSH_SEGM_NURBS: - case MSH_SEGM_PARAMETRIC: c = FindCurve(O.Num); if(c) ApplyTransformationToCurve(matrix, c); @@ -1803,7 +1791,6 @@ void BoundaryShapes(List_T *shapes, List_T *shapesBoundary) case MSH_SEGM_BSPLN: case MSH_SEGM_NURBS: case MSH_SEGM_BEZIER: - case MSH_SEGM_PARAMETRIC: case MSH_SEGM_BND_LAYER: { Curve *c = FindCurve(O.Num); @@ -2461,7 +2448,6 @@ void ExtrudeShapes(int type, List_T *list_in, case MSH_SEGM_ELLI: case MSH_SEGM_ELLI_INV: case MSH_SEGM_NURBS: - case MSH_SEGM_PARAMETRIC: { Surface *ps = 0; Shape top; diff --git a/Geo/Geo.h b/Geo/Geo.h index c2500db20cec42c5458fec73ce6b5bb238cd5bb1..241da2cd6a4397c89e949aea10d481a3ecc0ef05 100644 --- a/Geo/Geo.h +++ b/Geo/Geo.h @@ -6,7 +6,6 @@ #ifndef _GEO_H_ #define _GEO_H_ -#include <map> #include <math.h> #include "GmshDefines.h" #include "gmshSurface.h" @@ -30,7 +29,6 @@ #define MSH_SEGM_BSPLN 207 #define MSH_SEGM_NURBS 208 #define MSH_SEGM_BEZIER 209 -#define MSH_SEGM_PARAMETRIC 210 #define MSH_SEGM_BND_LAYER 211 #define MSH_SEGM_DISCRETE 212 #define MSH_SEGM_FROM_GMODEL 213 @@ -99,14 +97,16 @@ class DrawingColor{ unsigned int geom, mesh; }; -typedef struct{ +class CircParam{ + public: double t1, t2, f1, f2, incl; Vertex *v[4]; double invmat[3][3]; double n[3]; -}CircParam; +}; -typedef struct{ +class Curve{ + public: int Num; int Typ; char Visible; @@ -123,17 +123,18 @@ typedef struct{ float *k; int degre; CircParam Circle; - char functu[256], functv[256], functw[256]; DrawingColor Color; gmshSurface *geometry; -}Curve; +}; -typedef struct{ +class EdgeLoop{ + public: int Num; List_T *Curves; -}EdgeLoop; +}; -typedef struct{ +class Surface{ + public: int Num; int Typ; char Visible; @@ -155,14 +156,16 @@ typedef struct{ // should be the only one in gmsh, so parameter "Type" should // disappear from the class Surface. gmshSurface *geometry; -}Surface; +}; -typedef struct{ +class SurfaceLoop{ + public: int Num; List_T *Surfaces; -}SurfaceLoop; +}; -typedef struct { +class Volume { + public: int Num; int Typ; char Visible; @@ -173,15 +176,16 @@ typedef struct { List_T *SurfacesOrientations; List_T *SurfacesByTag; DrawingColor Color; -}Volume; +}; -typedef struct{ +class PhysicalGroup{ + public: int Num; int Typ; char Visible; List_T *Entities; List_T *Boundaries[4]; -}PhysicalGroup; +}; class GEO_Internals{ private: @@ -203,10 +207,11 @@ class GEO_Internals{ void reset_physicals(); }; -typedef struct { +class Shape{ + public: int Type; int Num; -} Shape; +}; int compareVertex(const void *a, const void *b); diff --git a/Geo/GeoInterpolation.cpp b/Geo/GeoInterpolation.cpp index 077f7b5ebeed61776baf175c84595c0ee2326493..bc5c520d3d62fb08dec9cbf96a1364162a511f72 100644 --- a/Geo/GeoInterpolation.cpp +++ b/Geo/GeoInterpolation.cpp @@ -266,14 +266,6 @@ Vertex InterpolateCurve(Curve *c, double u, int derivee) } break; - case MSH_SEGM_PARAMETRIC: - V.Pos.X = evaluate_scalarfunction("t", u, c->functu); - V.Pos.Y = evaluate_scalarfunction("t", u, c->functv); - V.Pos.Z = evaluate_scalarfunction("t", u, c->functw); - V.w = (1. - u) * c->beg->w + u * c->end->w; - V.lc = (1. - u) * c->beg->lc + u * c->end->lc; - break; - case MSH_SEGM_CIRC: case MSH_SEGM_CIRC_INV: case MSH_SEGM_ELLI: @@ -375,7 +367,6 @@ Vertex InterpolateCurve(Curve *c, double u, int derivee) } V.u = u; return V; - } // Interpolation transfinie sur un quadrangle : diff --git a/Geo/GeoStringInterface.cpp b/Geo/GeoStringInterface.cpp index 45444f71f0c1869cf49e527334de35778f1b0731..c84a82695e6a8b96c6488a878d0531f4697c5c42 100644 --- a/Geo/GeoStringInterface.cpp +++ b/Geo/GeoStringInterface.cpp @@ -19,36 +19,6 @@ #include "Parser.h" #endif -double evaluate_scalarfunction(std::string var, double val, std::string funct) -{ -#if defined(HAVE_NO_PARSER) - Msg::Error("Scalar function evaluation not available without Gmsh parser"); - return 0.; -#else - std::string fileName = CTX::instance()->homeDir + CTX::instance()->tmpFileName; - FILE *gmsh_yyin_old = gmsh_yyin; - if(!(gmsh_yyin = fopen(fileName.c_str(), "w"))) { - Msg::Error("Unable to open temporary file '%s'", fileName.c_str()); - gmsh_yyin = gmsh_yyin_old; - return 0.; - } - // pose "variable = function" and evaluate function - fprintf(gmsh_yyin, "%s = %.16g ;\n", var.c_str(), val); - fprintf(gmsh_yyin, "ValeurTemporaire__ = %s ;\n", funct.c_str()); - fclose(gmsh_yyin); - gmsh_yyin = fopen(fileName.c_str(), "r"); - while(!feof(gmsh_yyin)) { - gmsh_yyparse(); - } - fclose(gmsh_yyin); - gmsh_yyin = gmsh_yyin_old; - // retreive value - if(gmsh_yysymbols.count("ValeurTemporaire__")) - return gmsh_yysymbols["ValeurTemporaire__"][0]; - return 0.; -#endif -} - void add_infile(std::string text, std::string fileName, bool deleted_something) { #if defined(HAVE_NO_PARSER) diff --git a/Geo/GeoStringInterface.h b/Geo/GeoStringInterface.h index 69cda3c0fb9ed4ea0f2e001b6eeb8ff1f5636d8b..8ea3e784895903df5d84a794ed2944640aedf96d 100644 --- a/Geo/GeoStringInterface.h +++ b/Geo/GeoStringInterface.h @@ -10,8 +10,6 @@ #include <vector> #include "ListUtils.h" -double evaluate_scalarfunction(std::string var, double val, std::string funct); - void coherence(std::string fileName); void delet(List_T *list, std::string fileName, std::string what); void add_infile(std::string text, std::string fileName, bool deleted_something=false); diff --git a/Geo/gmshEdge.cpp b/Geo/gmshEdge.cpp index e6bd953fa4c3dfdc5d14631bffc3b6dd5d8ed1f3..caea16507e445b3e0d3bc092f854150778f8e632 100644 --- a/Geo/gmshEdge.cpp +++ b/Geo/gmshEdge.cpp @@ -49,7 +49,6 @@ GEntity::GeomType gmshEdge::geomType() const { switch (c->Typ){ case MSH_SEGM_LINE : return Line; - case MSH_SEGM_PARAMETRIC : return ParametricCurve; case MSH_SEGM_CIRC : case MSH_SEGM_CIRC_INV : return Circle; case MSH_SEGM_ELLI: diff --git a/Geo/gmshSurface.cpp b/Geo/gmshSurface.cpp index cebbb00452ae6a1465921327106c64da797cb960..34faf614e2f77e8c555311faff22693341915865 100644 --- a/Geo/gmshSurface.cpp +++ b/Geo/gmshSurface.cpp @@ -6,10 +6,7 @@ #include "GmshConfig.h" #include "GmshMessage.h" #include "gmshSurface.h" - -#if defined(HAVE_MATH_EVAL) -#include "matheval.h" -#endif +#include "mathEvaluator.h" std::map<int,gmshSurface*> gmshSurface::allGmshSurfaces; @@ -108,39 +105,33 @@ gmshSurface *gmshParametricSurface::NewParametricSurface(int iSurf, char *valX, gmshParametricSurface::gmshParametricSurface(char *valX, char *valY, char *valZ) { -#if !defined(HAVE_MATH_EVAL) - Msg::Error("MathEval is not compiled in this version of Gmsh"); -#else - evalX = evaluator_create(valX); - evalY = evaluator_create(valY); - evalZ = evaluator_create(valZ); -#endif + std::vector<std::string> expressions(3), variables(2); + expressions[0] = valX; + expressions[1] = valY; + expressions[2] = valZ; + variables[0] = "u"; + variables[1] = "v"; + _f = new mathEvaluator(expressions, variables); + if(expressions.empty()){ + delete _f; + _f = 0; + } } gmshParametricSurface::~gmshParametricSurface() { -#if !defined(HAVE_MATH_EVAL) - Msg::Error("MathEval is not compiled in this version of Gmsh"); -#else - evaluator_destroy(evalX); - evaluator_destroy(evalY); - evaluator_destroy(evalZ); -#endif + if(_f) delete _f; } SPoint3 gmshParametricSurface::point(double par1, double par2) const { -#if !defined(HAVE_MATH_EVAL) - Msg::Error("MathEval is not compiled in this version of Gmsh"); - return SPoint3(0.,0.,0.); -#else - char *names[2] = {(char*)"u", (char*)"v"}; - double values [2] = {par1, par2}; - const double x = evaluator_evaluate(evalX, 2, names, values); - const double y = evaluator_evaluate(evalY, 2, names, values); - const double z = evaluator_evaluate(evalZ, 2, names, values); - return SPoint3(x, y, z); -#endif + if(_f){ + std::vector<double> values(2), res(3); + values[0] = par1; + values[1] = par2; + if(_f->eval(values, res)) return SPoint3(res[0], res[1], res[2]); + } + return SPoint3(0., 0., 0.); } Range<double> gmshParametricSurface::parBounds(int i) const diff --git a/Geo/gmshSurface.h b/Geo/gmshSurface.h index b0a8a9eb08871836d869834b5633071d0bb5bede..d7d20c95488138decab098aaaefea509a0ea117d 100644 --- a/Geo/gmshSurface.h +++ b/Geo/gmshSurface.h @@ -18,9 +18,9 @@ class gmshSurface { -protected: + protected: static std::map<int, gmshSurface*> allGmshSurfaces; -public: + public: //there are points define in this surface parameterization bool vertex_defined_on_surface; virtual ~gmshSurface(){} @@ -59,9 +59,10 @@ public: class gmshSphere : public gmshSurface { + private: double xc, yc, zc, r; gmshSphere(double _x, double _y, double _z, double _r) : xc(_x), yc(_y), zc(_z), r(_r){} -public: + public: static gmshSurface *NewSphere(int _iSphere, double _x, double _y, double _z, double _r); virtual Range<double> parBounds(int i) const { @@ -85,10 +86,11 @@ public: #include "stdio.h" class gmshPolarSphere : public gmshSurface { + private: double r; SPoint3 o; gmshPolarSphere(double x, double y, double z, double _r); -public: + public: static gmshSurface *NewPolarSphere(int _iSphere, double _x, double _y, double _z, double _r); virtual Range<double> parBounds(int i) const { @@ -113,12 +115,15 @@ public: } }; +class mathEvaluator; + class gmshParametricSurface : public gmshSurface { - void *evalX, *evalY, *evalZ; + private: + mathEvaluator *_f; gmshParametricSurface(char*, char*, char*); ~gmshParametricSurface(); -public: + public: static gmshSurface *NewParametricSurface(int iSurf, char*, char*, char*); virtual Range<double> parBounds(int i) const; virtual gmshSurface::gmshSurfaceType geomType() const diff --git a/Graphics/Draw.h b/Graphics/Draw.h index e9ceb0efaebe8a23a1a95df7b94119767f38479a..3089d981bc0cee9f35b7fb3b16bc4c71512b2aa0 100644 --- a/Graphics/Draw.h +++ b/Graphics/Draw.h @@ -10,7 +10,6 @@ // for each widget toolkit: FLTK, Qt, etc.) void Draw(); -void DrawPlugin(void (*draw)(void *context)); void DrawCurrentOpenglWindow(bool make_current); int GetFontIndex(const char *fontname); int GetFontEnum(int index); diff --git a/Graphics/drawPost.cpp b/Graphics/drawPost.cpp index 516b46befb0819d6bfab96f426e8c8d9ce888d80..2f842c67b6362d1d29cb096be49472937ef7a54c 100644 --- a/Graphics/drawPost.cpp +++ b/Graphics/drawPost.cpp @@ -14,14 +14,12 @@ #include "PView.h" #include "PViewOptions.h" #include "PViewData.h" +#include "Plugin.h" #include "VertexArray.h" #include "SmoothData.h" #include "Context.h" #include "gl2ps.h" - -#if defined(HAVE_MATH_EVAL) -#include "matheval.h" -#endif +#include "mathEvaluator.h" // we only really draw first order elements (high order ones should // always be subdivided in adaptiveView beforehand) @@ -157,27 +155,15 @@ static void applyGeneralRaise(PView *p, int numNodes, int numComp, double vals[NMAX][9], double xyz[NMAX][3]) { PViewOptions *opt = p->getOptions(); + if(!opt->genRaiseEvaluator) return; + std::vector<double> values(12, 0.), res(3); for(int k = 0; k < numNodes; k++) { - double d[9] = {0., 0., 0., 0., 0., 0., 0., 0., 0.}; - for(int l = 0; l < numComp; l++) d[l] = vals[k][l]; -#if defined(HAVE_MATH_EVAL) - char *names[] = { "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8" , - "x", "y", "z" }; - double values[] = { d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], d[8], - xyz[k][0], xyz[k][1], xyz[k][2] }; - for(int i = 0; i < 3; i++) { - if(opt->genRaiseFunction[i]) - xyz[k][i] += opt->genRaiseFactor * evaluator_evaluate - (opt->genRaiseFunction[i], sizeof(names) / sizeof(names[0]), names, values); - } -#else - for(int i = 0; i < 3; i++){ - int comp = (int)(long int)opt->genRaiseFunction[i]; - if(comp >= 0) - xyz[k][i] += opt->genRaiseFactor * d[comp]; - } -#endif + for(int i = 0; i < 3; i++) values[i] = xyz[k][i]; + for(int i = 0; i < std::min(numComp, 9); i++) values[3 + i] = vals[k][i]; + if(opt->genRaiseEvaluator->eval(values, res)) + for(int i = 0; i < 3; i++) + xyz[k][i] += opt->genRaiseFactor * res[i]; } } @@ -1537,8 +1523,7 @@ class drawPViewBoundingBox { void drawContext::drawPost() { // draw any plugin-specific stuff - if(CTX::instance()->post.pluginDrawFunction) - (*CTX::instance()->post.pluginDrawFunction)(this); + if(GMSH_Plugin::draw) (*GMSH_Plugin::draw)(this); if(PView::list.empty()) return; diff --git a/Mesh/Field.cpp b/Mesh/Field.cpp index 36d08b232ac7f5f1639160fbc8d33a3314809955..8846c01aea3512d40cae4ad6e33a24f8fb7b71b3 100644 --- a/Mesh/Field.cpp +++ b/Mesh/Field.cpp @@ -14,20 +14,13 @@ #include <string.h> #include <sstream> #include "GmshConfig.h" - -#if defined(HAVE_MATH_EVAL) -#include "matheval.h" -#endif -#if defined(HAVE_ANN) -#include "ANN/ANN.h" -#endif - #include "Context.h" #include "Field.h" #include "GeoInterpolation.h" #include "GModel.h" #include "GmshMessage.h" #include "Numeric.h" +#include "mathEvaluator.h" #if !defined(HAVE_NO_POST) #include "OctreePost.h" @@ -35,6 +28,10 @@ #include "MVertex.h" #endif +#if defined(HAVE_ANN) +#include "ANN/ANN.h" +#endif + class FieldOptionDouble : public FieldOption { public: @@ -914,96 +911,67 @@ class MeanField : public Field } }; -#if defined(HAVE_MATH_EVAL) class MathEvalExpression { - bool error_status; - std::list<Field*> *list; - int nvalues; - char **names; - double *values; - void *eval; - int *evaluators_id; - std::string function; - char *c_str_function; + private: + mathEvaluator *_f; + std::set<int> _fields; public: - double evaluate(double x, double y, double z) - { - if(error_status) - return MAX_LC; - for(int i = 0; i < nvalues; i++){ - switch (evaluators_id[i]) { - case -1: - values[i] = x; - break; - case -2: - values[i] = y; - break; - case -3: - values[i] = z; - break; - default: - { - Field *f = GModel::current()->getFields()->get(evaluators_id[i]); - values[i] = f ? (*f) (x, y, z) : MAX_LC; + MathEvalExpression() : _f(0) {} + ~MathEvalExpression(){ if(_f) delete _f; } + bool set_function(const std::string &f) + { + // get id numbers of fields appearing in the function + _fields.clear(); + unsigned int i = 0; + while(i < f.size()){ + unsigned int j = 0; + if(f[i] == 'F'){ + std::string id(""); + while(i + 1 + j < f.size() && f[i + 1 + j] >= '0' && f[i + 1 + j] <= '9'){ + id += f[i + 1 + j]; + j++; } + _fields.insert(atoi(id.c_str())); } + i += j + 1; } - return evaluator_evaluate(eval, nvalues, names, values); - } - MathEvalExpression() - { - eval = 0; - values = 0; - c_str_function = 0; - evaluators_id = 0; - } - bool set_function(const std::string & f) - { - free_members(); - error_status = false; - c_str_function = new char[f.size() + 1]; - strcpy(c_str_function, f.c_str()); - eval = evaluator_create(c_str_function); - if(!eval) { - error_status = true; - return false; + std::vector<std::string> expressions(1), variables(3 + _fields.size()); + expressions[0] = f; + variables[0] = "x"; + variables[1] = "y"; + variables[2] = "z"; + i = 3; + for(std::set<int>::iterator it = _fields.begin(); it != _fields.end(); it++){ + std::ostringstream sstream; + sstream << "F" << *it; + variables[i++] = sstream.str(); } - evaluator_get_variables(eval, &names, &nvalues); - values = new double[nvalues]; - evaluators_id = new int[nvalues]; - for(int i = 0; i < nvalues; i++) { - int id; - if(!strcmp("x", names[i])) - evaluators_id[i] = -1; - else if(!strcmp("y", names[i])) - evaluators_id[i] = -2; - else if(!strcmp("z", names[i])) - evaluators_id[i] = -3; - else if(sscanf(names[i], "F%i", &id) == 1) - evaluators_id[i] = id; - else { - Msg::Error("Unknown matheval argument \"%s\"\n", names[i]); - error_status = true; - return false; - } + if(_f) delete _f; + _f = new mathEvaluator(expressions, variables); + if(expressions.empty()) { + delete _f; + _f = 0; + return false; } return true; } - void free_members() - { - if(c_str_function) - delete [] c_str_function; - if(eval) - evaluator_destroy(eval); - if(values) - delete [] values; - if(evaluators_id) - delete evaluators_id; - } - ~MathEvalExpression() + double evaluate(double x, double y, double z) { - free_members(); + if(!_f) return MAX_LC; + std::vector<double> values(3 + _fields.size()), res(1); + values[0] = x; + values[1] = y; + values[2] = z; + int i = 3; + for(std::set<int>::iterator it = _fields.begin(); it != _fields.end(); it++){ + Field *field = GModel::current()->getFields()->get(*it); + values[i++] = field ? (*field)(x, y, z) : MAX_LC; + } + if(_f->eval(values, res)) + return res[0]; + else + return MAX_LC; } }; @@ -1086,7 +1054,6 @@ class ParametricField : public Field return "Param"; } }; -#endif #if !defined(HAVE_NO_POST) class PostViewField : public Field @@ -1411,10 +1378,8 @@ FieldManager::FieldManager() map_type_name["Laplacian"] = new FieldFactoryT<LaplacianField>(); map_type_name["Mean"] = new FieldFactoryT<MeanField>(); map_type_name["Curvature"] = new FieldFactoryT<CurvatureField>(); -#if defined(HAVE_MATH_EVAL) map_type_name["Param"] = new FieldFactoryT<ParametricField>(); map_type_name["MathEval"] = new FieldFactoryT<MathEvalField>(); -#endif #if defined(HAVE_ANN) map_type_name["Attractor"] = new FieldFactoryT<AttractorField>(); #endif diff --git a/Mesh/meshGFaceBDS.cpp b/Mesh/meshGFaceBDS.cpp index 8f198ca7df543c0f5abc08c26bc10f93218e4e6b..9b20e3595613cfceae88ff7dfd1ab28389694713 100644 --- a/Mesh/meshGFaceBDS.cpp +++ b/Mesh/meshGFaceBDS.cpp @@ -118,7 +118,7 @@ inline double computeEdgeMiddleCoord_new(BDS_Point *p1, const double dz1 = p1->Z - GP[i-1].z(); double LPLUS = sqrt(dx1 * dx1 + dy1 * dy1 + dz1 * dz1); if (LPLUS > L*.5){ - double XIMINUS, XIPLUS,LPLUS,LMINUS; + double XIMINUS, LPLUS, LMINUS; if (i==1){ XIMINUS=0; } diff --git a/Numeric/CMakeLists.txt b/Numeric/CMakeLists.txt index e60e6970bbda21786f798a1ec007ffea23961b69..cc58bac166867bd809b02d6edcb7126ea345dee6 100644 --- a/Numeric/CMakeLists.txt +++ b/Numeric/CMakeLists.txt @@ -21,6 +21,7 @@ set(SRC GaussQuadratureHex.cpp GaussLegendreSimplex.cpp GmshPredicates.cpp + mathEvaluator.cpp ) append_gmsh_src(Numeric "${SRC}") diff --git a/Numeric/Numeric.cpp b/Numeric/Numeric.cpp index 28e263a372a779d09a67c54d4f5a3bcc990a6443..8285b1df9850b8a5159157b122cb7aa9980040fe 100644 --- a/Numeric/Numeric.cpp +++ b/Numeric/Numeric.cpp @@ -594,7 +594,7 @@ void gmshLineSearch(double (*func)(gmshVector<double> &, void *), void* data, double stpmax, int &check) { int i; - double alam, alam2 = 1., alamin, f2 = 0., fold2 = 0., rhs1, rhs2, temp, tmplam; + double alam, alam2 = 1., alamin, f2 = 0., fold2 = 0., rhs1, rhs2, temp, tmplam = 0.; const double ALF = 1.0e-4; const double TOLX = 1.0e-9; diff --git a/Numeric/gmshLinearSystemCSR.cpp b/Numeric/gmshLinearSystemCSR.cpp index 410ca4324724eec37462343819e923514d435ea1..c9631706c5f4b4672a9361bf9420e2150170c1ad 100644 --- a/Numeric/gmshLinearSystemCSR.cpp +++ b/Numeric/gmshLinearSystemCSR.cpp @@ -1,3 +1,8 @@ +// Gmsh - Copyright (C) 1997-2009 C. Geuzaine, J.-F. Remacle +// +// See the LICENSE.txt file for license information. Please report all +// bugs and problems to <gmsh@geuz.org>. + #include "GmshConfig.h" #include "GmshMessage.h" #include "gmshLinearSystemCSR.h" @@ -68,8 +73,6 @@ void CSRList_Delete(CSRList_T *liste) } } - - void CSRList_Add(CSRList_T *liste, void *data) { liste->n++; @@ -85,7 +88,7 @@ int CSRList_Nbr(CSRList_T *liste) } template<> -void gmshLinearSystemCSR<double> :: allocate(int _nbRows) +void gmshLinearSystemCSR<double>::allocate(int _nbRows) { if(a_) { CSRList_Delete(a_); @@ -97,7 +100,7 @@ void gmshLinearSystemCSR<double> :: allocate(int _nbRows) delete something; } - if (_nbRows == 0){ + if(_nbRows == 0){ a_ = 0; ai_ = 0; ptr_ = 0; @@ -124,12 +127,14 @@ void gmshLinearSystemCSR<double> :: allocate(int _nbRows) const int NSTACK = 50; const unsigned int M_sort2 = 7; -static void free_ivector(int *v, long nl, long nh){ +static void free_ivector(int *v, long nl, long nh) +{ // free an int vector allocated with ivector() free((char*)(v+nl-1)); } -static int * ivector(long nl, long nh) { +static int *ivector(long nl, long nh) +{ // allocate an int vector with subscript range v[nl..nh] int *v; v=(int *)malloc((size_t) ((nh-nl+2)*sizeof(int))); @@ -137,16 +142,18 @@ static int * ivector(long nl, long nh) { return v-nl+1; } -static int cmpij(INDEX_TYPE ai,INDEX_TYPE aj,INDEX_TYPE bi,INDEX_TYPE bj){ +static int cmpij(INDEX_TYPE ai,INDEX_TYPE aj,INDEX_TYPE bi,INDEX_TYPE bj) +{ if(ai<bi)return -1; if(ai>bi)return 1; if(aj<bj)return -1; if(aj>bj)return 1; return 0; } -template <class scalar> -void _sort2_xkws (unsigned long n, double arr[], INDEX_TYPE ai[] , INDEX_TYPE aj [] ) { +template <class scalar> +void _sort2_xkws(unsigned long n, double arr[], INDEX_TYPE ai[], INDEX_TYPE aj[]) +{ unsigned long i,ir=n,j,k,l=1; int *istack,jstack=0; INDEX_TYPE tempi; @@ -237,47 +244,47 @@ void _sort2_xkws (unsigned long n, double arr[], INDEX_TYPE ai[] , INDEX_TYPE aj } template <class scalar> -void sortColumns (int NbLines, - int nnz, - INDEX_TYPE *ptr, - INDEX_TYPE *jptr, - INDEX_TYPE *ai, - scalar *a) { - // replace pointers by lines +void sortColumns(int NbLines, + int nnz, + INDEX_TYPE *ptr, + INDEX_TYPE *jptr, + INDEX_TYPE *ai, + scalar *a) +{ + // replace pointers by lines int *count = new int [NbLines]; - for(int i=0;i<NbLines;i++){ - count[i] = 0; - INDEX_TYPE _position = jptr[i]; - while(1){ - count[i]++; - INDEX_TYPE _position_temp = _position; - _position = ptr[_position]; - ptr[_position_temp] = i; - if (_position == 0) break; - } - } - _sort2_xkws<double>(nnz,a,ptr,ai); - jptr[0] = 0; - for(int i=1;i<=NbLines;i++){ - jptr[i] = jptr[i-1] + count[i-1]; + for(int i=0;i<NbLines;i++){ + count[i] = 0; + INDEX_TYPE _position = jptr[i]; + while(1){ + count[i]++; + INDEX_TYPE _position_temp = _position; + _position = ptr[_position]; + ptr[_position_temp] = i; + if (_position == 0) break; } - - for(int i=0;i<NbLines;i++){ - for (int j= jptr[i] ; j<jptr[i+1]-1 ; j++){ - ptr[j] = j+1; - } - ptr[jptr[i+1]] = 0; - } - - - delete[] count; + } + _sort2_xkws<double>(nnz,a,ptr,ai); + jptr[0] = 0; + for(int i=1;i<=NbLines;i++){ + jptr[i] = jptr[i-1] + count[i-1]; + } + + for(int i=0;i<NbLines;i++){ + for (int j= jptr[i] ; j<jptr[i+1]-1 ; j++){ + ptr[j] = j+1; + } + ptr[jptr[i+1]] = 0; + } + + delete[] count; } #if defined(HAVE_GMM) #include "gmm.h" template<> -int gmshLinearSystemCSRGmm<double> :: systemSolve() +int gmshLinearSystemCSRGmm<double>::systemSolve() { if (!sorted) sortColumns(_b->size(), @@ -288,14 +295,13 @@ int gmshLinearSystemCSRGmm<double> :: systemSolve() (double*) a_->array); sorted = true; - gmm::csr_matrix_ref<double*,INDEX_TYPE *,INDEX_TYPE *, 0> ref((double*) a_->array, - (INDEX_TYPE *) ai_->array, - (INDEX_TYPE *) jptr_->array, - _b->size(), _b->size()); + gmm::csr_matrix_ref<double*,INDEX_TYPE *,INDEX_TYPE *, 0> + ref((double*)a_->array, (INDEX_TYPE *) ai_->array, + (INDEX_TYPE *)jptr_->array, _b->size(), _b->size()); gmm::csr_matrix<double,0> M; M.init_with(ref); - gmm::ildltt_precond<gmm::csr_matrix<double,0> > P(M, 10, 1.e-10); + gmm::ildltt_precond<gmm::csr_matrix<double, 0> > P(M, 10, 1.e-10); gmm::iteration iter(_prec); iter.set_noisy(_noisy); if(_gmres) gmm::gmres(M, *_x, *_b, P, 100, iter); @@ -307,7 +313,7 @@ int gmshLinearSystemCSRGmm<double> :: systemSolve() #if defined(HAVE_GMM) #include "gmm.h" template<> -int gmshLinearSystemCSRGmm<double> :: checkSystem() +int gmshLinearSystemCSRGmm<double>::checkSystem() { if(!sorted) sortColumns(_b->size(), @@ -330,7 +336,7 @@ int gmshLinearSystemCSRGmm<double> :: checkSystem() #if defined(HAVE_TAUCS) #include "taucs.h" template<> -int gmshLinearSystemCSRTaucs<double> :: systemSolve() +int gmshLinearSystemCSRTaucs<double>::systemSolve() { if(!sorted) sortColumns(_b->size(), diff --git a/Numeric/gmshLinearSystemCSR.h b/Numeric/gmshLinearSystemCSR.h index 9933fb3fec09c2b1f58efe1188bb531f68c7299e..3bd449c8e530d8a4134dd10e17b561530ede63db 100644 --- a/Numeric/gmshLinearSystemCSR.h +++ b/Numeric/gmshLinearSystemCSR.h @@ -3,17 +3,14 @@ // See the LICENSE.txt file for license information. Please report all // bugs and problems to <gmsh@geuz.org>. -#ifndef _GMSH_LINEAR_SYSTEM_TAUCS_H_ -#define _GMSH_LINEAR_SYSTEM_TAUCS_H_ - -// Interface to TAUCS +#ifndef _GMSH_LINEAR_SYSTEM_CSR_H_ +#define _GMSH_LINEAR_SYSTEM_CSR_H_ +#include <vector> #include "GmshConfig.h" #include "GmshMessage.h" #include "gmshLinearSystem.h" -#include <vector> - typedef int INDEX_TYPE ; typedef struct { @@ -176,5 +173,4 @@ class gmshLinearSystemCSRTaucs : public gmshLinearSystemCSR<scalar> { #endif }; - #endif diff --git a/Numeric/mathEvaluator.cpp b/Numeric/mathEvaluator.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e00ad3db8c0b597f6d56a2f2bf2bf9ecce79a9a4 --- /dev/null +++ b/Numeric/mathEvaluator.cpp @@ -0,0 +1,69 @@ +// Gmsh - Copyright (C) 1997-2009 C. Geuzaine, J.-F. Remacle +// +// See the LICENSE.txt file for license information. Please report all +// bugs and problems to <gmsh@geuz.org>. + +#include "mathEvaluator.h" + +#if defined(HAVE_MATHEX) + +mathEvaluator::mathEvaluator(std::vector<std::string> &expressions, + std::vector<std::string> &variables) +{ + _expressions.resize(expressions.size()); + _variables.resize(variables.size(), 0.); + bool error = false; + for(unsigned int i = 0; i < expressions.size(); i++){ + _expressions[i] = new smlib::mathex(); + for(unsigned int j = 0; j < variables.size(); j++) + _expressions[i]->addvar(variables[j], &_variables[j]); + try { + _expressions[i]->expression(expressions[i]); + _expressions[i]->parse(); + } + catch(smlib::mathex::error e) { + Msg::Error(e.what()); + std::string pos(_expressions[i]->stopposition(), ' '); + pos.push_back('^'); + Msg::Error(expressions[i].c_str()); + Msg::Error(pos.c_str()); + error = true; + } + } + if(error) expressions.clear(); +} + +mathEvaluator::~mathEvaluator() +{ + for(unsigned int i = 0; i < _expressions.size(); i++) + delete(_expressions[i]); +} + +bool mathEvaluator::eval(std::vector<double> &values, std::vector<double> &res) +{ + if(values.size() != _variables.size()){ + Msg::Error("Given %d values for %d variables", values.size(), _variables.size()); + return false; + } + + if(res.size() != _expressions.size()){ + Msg::Error("Given %d results for %d expressions", res.size(), _expressions.size()); + return false; + } + + for(unsigned int i = 0; i < values.size(); i++) + _variables[i] = values[i]; + + for(unsigned int i = 0; i < _expressions.size(); i++){ + try { + res[i] = _expressions[i]->eval(); + } + catch(smlib::mathex::error e) { + Msg::Error(e.what()); + return false; + } + } + return true; +} + +#endif diff --git a/Numeric/mathEvaluator.h b/Numeric/mathEvaluator.h new file mode 100644 index 0000000000000000000000000000000000000000..b0816de6cc7ac4cf2762d7f0d89d230dc848aeb6 --- /dev/null +++ b/Numeric/mathEvaluator.h @@ -0,0 +1,54 @@ +// Gmsh - Copyright (C) 1997-2009 C. Geuzaine, J.-F. Remacle +// +// See the LICENSE.txt file for license information. Please report all +// bugs and problems to <gmsh@geuz.org>. + +#ifndef _MATH_EVALUATOR_H_ +#define _MATH_EVALUATOR_H_ + +#include <vector> +#include <string> +#include "GmshConfig.h" +#include "GmshMessage.h" + +#if defined(HAVE_MATHEX) + +#include "mathex.h" + +class mathEvaluator{ + private: + std::vector<smlib::mathex*> _expressions; + std::vector<double> _variables; + public: + // initialize one or more expressions depending on zero or more + // variables. If an error occurs the vector of expressions is + // cleared. + mathEvaluator(std::vector<std::string> &expressions, + std::vector<std::string> &variables); + ~mathEvaluator(); + // evaluate the expression(s) using the given values and fill the + // result vector. Returns true if the evaluation succeeded. + bool eval(std::vector<double> &values, std::vector<double> &res); +}; + +#else + +class mathEvaluator{ + public: + mathEvaluator(std::vector<std::string> &expressions, + std::vector<std::string> &variables) + { + Msg::Error("Gmsh must be compiled with MathEx support to evaluate math " + "expressions"); + expressions.clear(); + } + ~mathEvaluator(){} + bool eval(std::vector<double> &values, std::vector<double> &res) + { + return false; + } +}; + +#endif + +#endif diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index 69d0a5ded390de803b56c09d1eabc1fd1a29f06a..78d3b264391fce0101558a4a0c6b7be65c0476b7 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -654,16 +654,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 6392 +#define YYLAST 6350 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 143 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 78 /* YYNRULES -- Number of rules. */ -#define YYNRULES 367 +#define YYNRULES 366 /* YYNRULES -- Number of states. */ -#define YYNSTATES 1273 +#define YYNSTATES 1257 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -730,33 +730,33 @@ static const yytype_uint16 yyprhs[] = 289, 299, 306, 316, 322, 331, 340, 352, 359, 369, 375, 383, 393, 403, 415, 425, 435, 437, 439, 440, 446, 447, 450, 458, 459, 469, 476, 484, 492, 501, - 510, 528, 536, 544, 556, 565, 566, 576, 585, 595, - 599, 604, 615, 623, 631, 640, 641, 651, 660, 673, - 682, 691, 700, 708, 709, 719, 725, 737, 743, 753, - 758, 768, 778, 780, 782, 783, 786, 793, 800, 807, - 814, 819, 826, 833, 837, 842, 848, 852, 856, 861, - 866, 870, 878, 886, 890, 898, 902, 905, 908, 911, - 927, 930, 933, 940, 949, 958, 969, 971, 974, 976, - 980, 985, 987, 993, 1005, 1019, 1020, 1028, 1029, 1043, - 1044, 1060, 1061, 1068, 1077, 1086, 1095, 1108, 1121, 1134, - 1149, 1164, 1179, 1180, 1193, 1194, 1207, 1208, 1221, 1222, - 1239, 1240, 1257, 1258, 1275, 1276, 1295, 1296, 1315, 1316, - 1335, 1337, 1340, 1346, 1354, 1364, 1367, 1377, 1378, 1382, - 1383, 1385, 1386, 1389, 1390, 1393, 1401, 1408, 1417, 1423, - 1429, 1436, 1447, 1458, 1469, 1480, 1483, 1487, 1489, 1493, - 1496, 1499, 1502, 1506, 1510, 1514, 1518, 1522, 1526, 1530, - 1534, 1538, 1542, 1546, 1550, 1554, 1558, 1564, 1569, 1574, - 1579, 1584, 1589, 1594, 1599, 1604, 1609, 1614, 1621, 1626, - 1631, 1636, 1641, 1646, 1651, 1658, 1665, 1672, 1677, 1682, - 1687, 1692, 1697, 1702, 1707, 1712, 1717, 1722, 1727, 1734, - 1739, 1744, 1749, 1754, 1759, 1764, 1771, 1778, 1785, 1790, - 1792, 1794, 1796, 1798, 1800, 1802, 1804, 1806, 1812, 1817, - 1822, 1825, 1831, 1835, 1842, 1847, 1855, 1862, 1864, 1867, - 1870, 1874, 1878, 1890, 1900, 1908, 1916, 1918, 1922, 1924, - 1926, 1929, 1933, 1938, 1944, 1946, 1948, 1951, 1955, 1959, - 1965, 1970, 1972, 1974, 1978, 1985, 1987, 1989, 1993, 1997, - 2007, 2015, 2017, 2023, 2027, 2034, 2036, 2040, 2042, 2044, - 2048, 2055, 2057, 2059, 2066, 2071, 2076, 2081 + 510, 518, 526, 538, 547, 548, 558, 567, 577, 581, + 586, 597, 605, 613, 622, 623, 633, 642, 655, 664, + 673, 682, 690, 691, 701, 707, 719, 725, 735, 740, + 750, 760, 762, 764, 765, 768, 775, 782, 789, 796, + 801, 808, 815, 819, 824, 830, 834, 838, 843, 848, + 852, 860, 868, 872, 880, 884, 887, 890, 893, 909, + 912, 915, 922, 931, 940, 951, 953, 956, 958, 962, + 967, 969, 975, 987, 1001, 1002, 1010, 1011, 1025, 1026, + 1042, 1043, 1050, 1059, 1068, 1077, 1090, 1103, 1116, 1131, + 1146, 1161, 1162, 1175, 1176, 1189, 1190, 1203, 1204, 1221, + 1222, 1239, 1240, 1257, 1258, 1277, 1278, 1297, 1298, 1317, + 1319, 1322, 1328, 1336, 1346, 1349, 1359, 1360, 1364, 1365, + 1367, 1368, 1371, 1372, 1375, 1383, 1390, 1399, 1405, 1411, + 1418, 1429, 1440, 1451, 1462, 1465, 1469, 1471, 1475, 1478, + 1481, 1484, 1488, 1492, 1496, 1500, 1504, 1508, 1512, 1516, + 1520, 1524, 1528, 1532, 1536, 1540, 1546, 1551, 1556, 1561, + 1566, 1571, 1576, 1581, 1586, 1591, 1596, 1603, 1608, 1613, + 1618, 1623, 1628, 1633, 1640, 1647, 1654, 1659, 1664, 1669, + 1674, 1679, 1684, 1689, 1694, 1699, 1704, 1709, 1716, 1721, + 1726, 1731, 1736, 1741, 1746, 1753, 1760, 1767, 1772, 1774, + 1776, 1778, 1780, 1782, 1784, 1786, 1788, 1794, 1799, 1804, + 1807, 1813, 1817, 1824, 1829, 1837, 1844, 1846, 1849, 1852, + 1856, 1860, 1872, 1882, 1890, 1898, 1900, 1904, 1906, 1908, + 1911, 1915, 1920, 1926, 1928, 1930, 1933, 1937, 1941, 1947, + 1952, 1954, 1956, 1960, 1967, 1969, 1971, 1975, 1979, 1989, + 1997, 1999, 2005, 2009, 2016, 2018, 2022, 2024, 2026, 2030, + 2037, 2039, 2041, 2048, 2053, 2058, 2063 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -813,164 +813,162 @@ static const yytype_int16 yyrhs[] = 7, 212, 6, -1, 52, 133, 207, 134, 7, 212, 6, -1, 46, 133, 207, 134, 7, 212, 170, 6, -1, 47, 133, 207, 134, 7, 212, 170, 6, -1, - 56, 133, 207, 134, 7, 140, 207, 139, 207, 139, - 5, 139, 5, 139, 5, 141, 6, -1, 87, 133, - 207, 134, 7, 212, 6, -1, 88, 133, 207, 134, - 7, 212, 6, -1, 89, 133, 207, 134, 7, 212, - 91, 212, 90, 207, 6, -1, 48, 71, 133, 207, - 134, 7, 212, 6, -1, -1, 62, 48, 173, 133, - 168, 134, 7, 212, 6, -1, 58, 51, 133, 207, - 134, 7, 212, 6, -1, 59, 51, 133, 207, 134, - 7, 212, 169, 6, -1, 12, 13, 6, -1, 13, - 51, 207, 6, -1, 56, 51, 133, 207, 134, 7, - 5, 5, 5, 6, -1, 49, 133, 207, 134, 7, - 212, 6, -1, 50, 133, 207, 134, 7, 212, 6, - -1, 51, 71, 133, 207, 134, 7, 212, 6, -1, - -1, 62, 51, 174, 133, 168, 134, 7, 212, 6, - -1, 63, 53, 133, 207, 134, 7, 212, 6, -1, - 63, 51, 133, 207, 134, 7, 212, 4, 140, 211, - 141, 6, -1, 63, 51, 133, 207, 134, 7, 212, - 6, -1, 63, 48, 133, 207, 134, 7, 212, 6, - -1, 61, 53, 133, 207, 134, 7, 212, 6, -1, - 53, 133, 207, 134, 7, 212, 6, -1, -1, 62, - 53, 175, 133, 168, 134, 7, 212, 6, -1, 67, - 209, 140, 177, 141, -1, 66, 140, 209, 139, 209, - 139, 207, 141, 140, 177, 141, -1, 68, 209, 140, - 177, 141, -1, 69, 140, 209, 139, 207, 141, 140, - 177, 141, -1, 4, 140, 177, 141, -1, 77, 48, - 140, 215, 141, 51, 140, 207, 141, -1, 74, 48, - 133, 207, 134, 140, 215, 141, 6, -1, 178, -1, - 176, -1, -1, 178, 171, -1, 178, 45, 140, 215, - 141, 6, -1, 178, 48, 140, 215, 141, 6, -1, - 178, 51, 140, 215, 141, 6, -1, 178, 53, 140, - 215, 141, 6, -1, 75, 140, 178, 141, -1, 75, - 100, 135, 207, 136, 6, -1, 75, 4, 135, 207, - 136, 6, -1, 75, 4, 6, -1, 75, 4, 4, - 6, -1, 92, 216, 140, 178, 141, -1, 104, 5, - 6, -1, 105, 5, 6, -1, 104, 140, 178, 141, - -1, 105, 140, 178, 141, -1, 4, 220, 6, -1, - 4, 4, 135, 207, 136, 219, 6, -1, 4, 4, - 4, 135, 207, 136, 6, -1, 4, 207, 6, -1, - 65, 133, 4, 134, 137, 4, 6, -1, 86, 4, - 6, -1, 99, 6, -1, 43, 6, -1, 40, 6, - -1, 40, 140, 207, 139, 207, 139, 207, 139, 207, - 139, 207, 139, 207, 141, 6, -1, 41, 6, -1, - 44, 6, -1, 94, 133, 207, 8, 207, 134, -1, - 94, 133, 207, 8, 207, 8, 207, 134, -1, 94, - 4, 95, 140, 207, 8, 207, 141, -1, 94, 4, - 95, 140, 207, 8, 207, 8, 207, 141, -1, 96, - -1, 103, 4, -1, 101, -1, 102, 4, 6, -1, - 97, 133, 207, 134, -1, 98, -1, 70, 209, 140, - 178, 141, -1, 70, 140, 209, 139, 209, 139, 207, - 141, 140, 178, 141, -1, 70, 140, 209, 139, 209, - 139, 209, 139, 207, 141, 140, 178, 141, -1, -1, - 70, 209, 140, 178, 185, 198, 141, -1, -1, 70, - 140, 209, 139, 209, 139, 207, 141, 140, 178, 186, - 198, 141, -1, -1, 70, 140, 209, 139, 209, 139, - 209, 139, 207, 141, 140, 178, 187, 198, 141, -1, - -1, 70, 140, 178, 188, 198, 141, -1, 70, 45, - 140, 207, 139, 209, 141, 6, -1, 70, 48, 140, - 207, 139, 209, 141, 6, -1, 70, 51, 140, 207, - 139, 209, 141, 6, -1, 70, 45, 140, 207, 139, - 209, 139, 209, 139, 207, 141, 6, -1, 70, 48, - 140, 207, 139, 209, 139, 209, 139, 207, 141, 6, - -1, 70, 51, 140, 207, 139, 209, 139, 209, 139, - 207, 141, 6, -1, 70, 45, 140, 207, 139, 209, - 139, 209, 139, 209, 139, 207, 141, 6, -1, 70, - 48, 140, 207, 139, 209, 139, 209, 139, 209, 139, - 207, 141, 6, -1, 70, 51, 140, 207, 139, 209, - 139, 209, 139, 209, 139, 207, 141, 6, -1, -1, - 70, 45, 140, 207, 139, 209, 141, 189, 140, 198, - 141, 6, -1, -1, 70, 48, 140, 207, 139, 209, - 141, 190, 140, 198, 141, 6, -1, -1, 70, 51, - 140, 207, 139, 209, 141, 191, 140, 198, 141, 6, - -1, -1, 70, 45, 140, 207, 139, 209, 139, 209, - 139, 207, 141, 192, 140, 198, 141, 6, -1, -1, + 87, 133, 207, 134, 7, 212, 6, -1, 88, 133, + 207, 134, 7, 212, 6, -1, 89, 133, 207, 134, + 7, 212, 91, 212, 90, 207, 6, -1, 48, 71, + 133, 207, 134, 7, 212, 6, -1, -1, 62, 48, + 173, 133, 168, 134, 7, 212, 6, -1, 58, 51, + 133, 207, 134, 7, 212, 6, -1, 59, 51, 133, + 207, 134, 7, 212, 169, 6, -1, 12, 13, 6, + -1, 13, 51, 207, 6, -1, 56, 51, 133, 207, + 134, 7, 5, 5, 5, 6, -1, 49, 133, 207, + 134, 7, 212, 6, -1, 50, 133, 207, 134, 7, + 212, 6, -1, 51, 71, 133, 207, 134, 7, 212, + 6, -1, -1, 62, 51, 174, 133, 168, 134, 7, + 212, 6, -1, 63, 53, 133, 207, 134, 7, 212, + 6, -1, 63, 51, 133, 207, 134, 7, 212, 4, + 140, 211, 141, 6, -1, 63, 51, 133, 207, 134, + 7, 212, 6, -1, 63, 48, 133, 207, 134, 7, + 212, 6, -1, 61, 53, 133, 207, 134, 7, 212, + 6, -1, 53, 133, 207, 134, 7, 212, 6, -1, + -1, 62, 53, 175, 133, 168, 134, 7, 212, 6, + -1, 67, 209, 140, 177, 141, -1, 66, 140, 209, + 139, 209, 139, 207, 141, 140, 177, 141, -1, 68, + 209, 140, 177, 141, -1, 69, 140, 209, 139, 207, + 141, 140, 177, 141, -1, 4, 140, 177, 141, -1, + 77, 48, 140, 215, 141, 51, 140, 207, 141, -1, + 74, 48, 133, 207, 134, 140, 215, 141, 6, -1, + 178, -1, 176, -1, -1, 178, 171, -1, 178, 45, + 140, 215, 141, 6, -1, 178, 48, 140, 215, 141, + 6, -1, 178, 51, 140, 215, 141, 6, -1, 178, + 53, 140, 215, 141, 6, -1, 75, 140, 178, 141, + -1, 75, 100, 135, 207, 136, 6, -1, 75, 4, + 135, 207, 136, 6, -1, 75, 4, 6, -1, 75, + 4, 4, 6, -1, 92, 216, 140, 178, 141, -1, + 104, 5, 6, -1, 105, 5, 6, -1, 104, 140, + 178, 141, -1, 105, 140, 178, 141, -1, 4, 220, + 6, -1, 4, 4, 135, 207, 136, 219, 6, -1, + 4, 4, 4, 135, 207, 136, 6, -1, 4, 207, + 6, -1, 65, 133, 4, 134, 137, 4, 6, -1, + 86, 4, 6, -1, 99, 6, -1, 43, 6, -1, + 40, 6, -1, 40, 140, 207, 139, 207, 139, 207, + 139, 207, 139, 207, 139, 207, 141, 6, -1, 41, + 6, -1, 44, 6, -1, 94, 133, 207, 8, 207, + 134, -1, 94, 133, 207, 8, 207, 8, 207, 134, + -1, 94, 4, 95, 140, 207, 8, 207, 141, -1, + 94, 4, 95, 140, 207, 8, 207, 8, 207, 141, + -1, 96, -1, 103, 4, -1, 101, -1, 102, 4, + 6, -1, 97, 133, 207, 134, -1, 98, -1, 70, + 209, 140, 178, 141, -1, 70, 140, 209, 139, 209, + 139, 207, 141, 140, 178, 141, -1, 70, 140, 209, + 139, 209, 139, 209, 139, 207, 141, 140, 178, 141, + -1, -1, 70, 209, 140, 178, 185, 198, 141, -1, + -1, 70, 140, 209, 139, 209, 139, 207, 141, 140, + 178, 186, 198, 141, -1, -1, 70, 140, 209, 139, + 209, 139, 209, 139, 207, 141, 140, 178, 187, 198, + 141, -1, -1, 70, 140, 178, 188, 198, 141, -1, + 70, 45, 140, 207, 139, 209, 141, 6, -1, 70, + 48, 140, 207, 139, 209, 141, 6, -1, 70, 51, + 140, 207, 139, 209, 141, 6, -1, 70, 45, 140, + 207, 139, 209, 139, 209, 139, 207, 141, 6, -1, 70, 48, 140, 207, 139, 209, 139, 209, 139, 207, - 141, 193, 140, 198, 141, 6, -1, -1, 70, 51, - 140, 207, 139, 209, 139, 209, 139, 207, 141, 194, - 140, 198, 141, 6, -1, -1, 70, 45, 140, 207, - 139, 209, 139, 209, 139, 209, 139, 207, 141, 195, + 141, 6, -1, 70, 51, 140, 207, 139, 209, 139, + 209, 139, 207, 141, 6, -1, 70, 45, 140, 207, + 139, 209, 139, 209, 139, 209, 139, 207, 141, 6, + -1, 70, 48, 140, 207, 139, 209, 139, 209, 139, + 209, 139, 207, 141, 6, -1, 70, 51, 140, 207, + 139, 209, 139, 209, 139, 209, 139, 207, 141, 6, + -1, -1, 70, 45, 140, 207, 139, 209, 141, 189, 140, 198, 141, 6, -1, -1, 70, 48, 140, 207, - 139, 209, 139, 209, 139, 209, 139, 207, 141, 196, - 140, 198, 141, 6, -1, -1, 70, 51, 140, 207, - 139, 209, 139, 209, 139, 209, 139, 207, 141, 197, - 140, 198, 141, 6, -1, 199, -1, 198, 199, -1, - 78, 140, 207, 141, 6, -1, 78, 140, 212, 139, - 212, 141, 6, -1, 78, 140, 212, 139, 212, 139, - 212, 141, 6, -1, 72, 6, -1, 79, 133, 207, - 134, 7, 212, 64, 207, 6, -1, -1, 64, 4, - 207, -1, -1, 4, -1, -1, 7, 212, -1, -1, - 7, 207, -1, 60, 48, 213, 7, 207, 200, 6, - -1, 60, 51, 213, 202, 201, 6, -1, 57, 51, - 140, 207, 141, 7, 212, 6, -1, 60, 53, 213, - 202, 6, -1, 72, 51, 213, 203, 6, -1, 73, - 51, 212, 7, 207, 6, -1, 45, 140, 215, 141, - 95, 51, 140, 207, 141, 6, -1, 48, 140, 215, - 141, 95, 51, 140, 207, 141, 6, -1, 48, 140, - 215, 141, 95, 53, 140, 207, 141, 6, -1, 51, - 140, 215, 141, 95, 53, 140, 207, 141, 6, -1, - 76, 6, -1, 76, 4, 6, -1, 208, -1, 133, - 207, 134, -1, 124, 207, -1, 123, 207, -1, 128, - 207, -1, 207, 124, 207, -1, 207, 123, 207, -1, - 207, 125, 207, -1, 207, 126, 207, -1, 207, 127, - 207, -1, 207, 132, 207, -1, 207, 119, 207, -1, - 207, 120, 207, -1, 207, 122, 207, -1, 207, 121, - 207, -1, 207, 118, 207, -1, 207, 117, 207, -1, - 207, 116, 207, -1, 207, 115, 207, -1, 207, 114, - 207, 8, 207, -1, 14, 133, 207, 134, -1, 15, - 133, 207, 134, -1, 16, 133, 207, 134, -1, 17, - 133, 207, 134, -1, 18, 133, 207, 134, -1, 19, - 133, 207, 134, -1, 20, 133, 207, 134, -1, 21, - 133, 207, 134, -1, 22, 133, 207, 134, -1, 24, - 133, 207, 134, -1, 25, 133, 207, 139, 207, 134, - -1, 26, 133, 207, 134, -1, 27, 133, 207, 134, - -1, 28, 133, 207, 134, -1, 29, 133, 207, 134, - -1, 30, 133, 207, 134, -1, 31, 133, 207, 134, - -1, 32, 133, 207, 139, 207, 134, -1, 33, 133, - 207, 139, 207, 134, -1, 34, 133, 207, 139, 207, - 134, -1, 23, 133, 207, 134, -1, 14, 135, 207, - 136, -1, 15, 135, 207, 136, -1, 16, 135, 207, - 136, -1, 17, 135, 207, 136, -1, 18, 135, 207, - 136, -1, 19, 135, 207, 136, -1, 20, 135, 207, - 136, -1, 21, 135, 207, 136, -1, 22, 135, 207, - 136, -1, 24, 135, 207, 136, -1, 25, 135, 207, - 139, 207, 136, -1, 26, 135, 207, 136, -1, 27, - 135, 207, 136, -1, 28, 135, 207, 136, -1, 29, - 135, 207, 136, -1, 30, 135, 207, 136, -1, 31, - 135, 207, 136, -1, 32, 135, 207, 139, 207, 136, - -1, 33, 135, 207, 139, 207, 136, -1, 34, 135, - 207, 139, 207, 136, -1, 23, 135, 207, 136, -1, - 3, -1, 9, -1, 10, -1, 11, -1, 107, -1, - 108, -1, 109, -1, 4, -1, 4, 142, 140, 207, - 141, -1, 4, 135, 207, 136, -1, 138, 4, 135, - 136, -1, 4, 166, -1, 4, 135, 207, 136, 166, - -1, 4, 137, 4, -1, 4, 135, 207, 136, 137, - 4, -1, 4, 137, 4, 166, -1, 4, 135, 207, - 136, 137, 4, 166, -1, 106, 133, 5, 139, 207, - 134, -1, 210, -1, 124, 209, -1, 123, 209, -1, - 209, 124, 209, -1, 209, 123, 209, -1, 140, 207, - 139, 207, 139, 207, 139, 207, 139, 207, 141, -1, - 140, 207, 139, 207, 139, 207, 139, 207, 141, -1, - 140, 207, 139, 207, 139, 207, 141, -1, 133, 207, - 139, 207, 139, 207, 134, -1, 212, -1, 211, 139, - 212, -1, 207, -1, 214, -1, 140, 141, -1, 140, - 215, 141, -1, 124, 140, 215, 141, -1, 207, 125, - 140, 215, 141, -1, 212, -1, 5, -1, 124, 214, - -1, 207, 125, 214, -1, 207, 8, 207, -1, 207, - 8, 207, 8, 207, -1, 45, 140, 207, 141, -1, - 176, -1, 184, -1, 4, 135, 136, -1, 4, 135, - 140, 215, 141, 136, -1, 207, -1, 214, -1, 215, - 139, 207, -1, 215, 139, 214, -1, 140, 207, 139, - 207, 139, 207, 139, 207, 141, -1, 140, 207, 139, - 207, 139, 207, 141, -1, 4, -1, 4, 137, 92, - 137, 4, -1, 140, 218, 141, -1, 4, 135, 207, - 136, 137, 93, -1, 216, -1, 218, 139, 216, -1, - 220, -1, 4, -1, 4, 137, 4, -1, 4, 135, - 207, 136, 137, 4, -1, 5, -1, 42, -1, 37, - 133, 219, 139, 219, 134, -1, 38, 133, 219, 134, - -1, 39, 133, 219, 134, -1, 36, 133, 219, 134, - -1, 36, 133, 219, 139, 215, 134, -1 + 139, 209, 141, 190, 140, 198, 141, 6, -1, -1, + 70, 51, 140, 207, 139, 209, 141, 191, 140, 198, + 141, 6, -1, -1, 70, 45, 140, 207, 139, 209, + 139, 209, 139, 207, 141, 192, 140, 198, 141, 6, + -1, -1, 70, 48, 140, 207, 139, 209, 139, 209, + 139, 207, 141, 193, 140, 198, 141, 6, -1, -1, + 70, 51, 140, 207, 139, 209, 139, 209, 139, 207, + 141, 194, 140, 198, 141, 6, -1, -1, 70, 45, + 140, 207, 139, 209, 139, 209, 139, 209, 139, 207, + 141, 195, 140, 198, 141, 6, -1, -1, 70, 48, + 140, 207, 139, 209, 139, 209, 139, 209, 139, 207, + 141, 196, 140, 198, 141, 6, -1, -1, 70, 51, + 140, 207, 139, 209, 139, 209, 139, 209, 139, 207, + 141, 197, 140, 198, 141, 6, -1, 199, -1, 198, + 199, -1, 78, 140, 207, 141, 6, -1, 78, 140, + 212, 139, 212, 141, 6, -1, 78, 140, 212, 139, + 212, 139, 212, 141, 6, -1, 72, 6, -1, 79, + 133, 207, 134, 7, 212, 64, 207, 6, -1, -1, + 64, 4, 207, -1, -1, 4, -1, -1, 7, 212, + -1, -1, 7, 207, -1, 60, 48, 213, 7, 207, + 200, 6, -1, 60, 51, 213, 202, 201, 6, -1, + 57, 51, 140, 207, 141, 7, 212, 6, -1, 60, + 53, 213, 202, 6, -1, 72, 51, 213, 203, 6, + -1, 73, 51, 212, 7, 207, 6, -1, 45, 140, + 215, 141, 95, 51, 140, 207, 141, 6, -1, 48, + 140, 215, 141, 95, 51, 140, 207, 141, 6, -1, + 48, 140, 215, 141, 95, 53, 140, 207, 141, 6, + -1, 51, 140, 215, 141, 95, 53, 140, 207, 141, + 6, -1, 76, 6, -1, 76, 4, 6, -1, 208, + -1, 133, 207, 134, -1, 124, 207, -1, 123, 207, + -1, 128, 207, -1, 207, 124, 207, -1, 207, 123, + 207, -1, 207, 125, 207, -1, 207, 126, 207, -1, + 207, 127, 207, -1, 207, 132, 207, -1, 207, 119, + 207, -1, 207, 120, 207, -1, 207, 122, 207, -1, + 207, 121, 207, -1, 207, 118, 207, -1, 207, 117, + 207, -1, 207, 116, 207, -1, 207, 115, 207, -1, + 207, 114, 207, 8, 207, -1, 14, 133, 207, 134, + -1, 15, 133, 207, 134, -1, 16, 133, 207, 134, + -1, 17, 133, 207, 134, -1, 18, 133, 207, 134, + -1, 19, 133, 207, 134, -1, 20, 133, 207, 134, + -1, 21, 133, 207, 134, -1, 22, 133, 207, 134, + -1, 24, 133, 207, 134, -1, 25, 133, 207, 139, + 207, 134, -1, 26, 133, 207, 134, -1, 27, 133, + 207, 134, -1, 28, 133, 207, 134, -1, 29, 133, + 207, 134, -1, 30, 133, 207, 134, -1, 31, 133, + 207, 134, -1, 32, 133, 207, 139, 207, 134, -1, + 33, 133, 207, 139, 207, 134, -1, 34, 133, 207, + 139, 207, 134, -1, 23, 133, 207, 134, -1, 14, + 135, 207, 136, -1, 15, 135, 207, 136, -1, 16, + 135, 207, 136, -1, 17, 135, 207, 136, -1, 18, + 135, 207, 136, -1, 19, 135, 207, 136, -1, 20, + 135, 207, 136, -1, 21, 135, 207, 136, -1, 22, + 135, 207, 136, -1, 24, 135, 207, 136, -1, 25, + 135, 207, 139, 207, 136, -1, 26, 135, 207, 136, + -1, 27, 135, 207, 136, -1, 28, 135, 207, 136, + -1, 29, 135, 207, 136, -1, 30, 135, 207, 136, + -1, 31, 135, 207, 136, -1, 32, 135, 207, 139, + 207, 136, -1, 33, 135, 207, 139, 207, 136, -1, + 34, 135, 207, 139, 207, 136, -1, 23, 135, 207, + 136, -1, 3, -1, 9, -1, 10, -1, 11, -1, + 107, -1, 108, -1, 109, -1, 4, -1, 4, 142, + 140, 207, 141, -1, 4, 135, 207, 136, -1, 138, + 4, 135, 136, -1, 4, 166, -1, 4, 135, 207, + 136, 166, -1, 4, 137, 4, -1, 4, 135, 207, + 136, 137, 4, -1, 4, 137, 4, 166, -1, 4, + 135, 207, 136, 137, 4, 166, -1, 106, 133, 5, + 139, 207, 134, -1, 210, -1, 124, 209, -1, 123, + 209, -1, 209, 124, 209, -1, 209, 123, 209, -1, + 140, 207, 139, 207, 139, 207, 139, 207, 139, 207, + 141, -1, 140, 207, 139, 207, 139, 207, 139, 207, + 141, -1, 140, 207, 139, 207, 139, 207, 141, -1, + 133, 207, 139, 207, 139, 207, 134, -1, 212, -1, + 211, 139, 212, -1, 207, -1, 214, -1, 140, 141, + -1, 140, 215, 141, -1, 124, 140, 215, 141, -1, + 207, 125, 140, 215, 141, -1, 212, -1, 5, -1, + 124, 214, -1, 207, 125, 214, -1, 207, 8, 207, + -1, 207, 8, 207, 8, 207, -1, 45, 140, 207, + 141, -1, 176, -1, 184, -1, 4, 135, 136, -1, + 4, 135, 140, 215, 141, 136, -1, 207, -1, 214, + -1, 215, 139, 207, -1, 215, 139, 214, -1, 140, + 207, 139, 207, 139, 207, 139, 207, 141, -1, 140, + 207, 139, 207, 139, 207, 141, -1, 4, -1, 4, + 137, 92, 137, 4, -1, 140, 218, 141, -1, 4, + 135, 207, 136, 137, 93, -1, 216, -1, 218, 139, + 216, -1, 220, -1, 4, -1, 4, 137, 4, -1, + 4, 135, 207, 136, 137, 4, -1, 5, -1, 42, + -1, 37, 133, 219, 139, 219, 134, -1, 38, 133, + 219, 134, -1, 39, 133, 219, 134, -1, 36, 133, + 219, 134, -1, 36, 133, 219, 139, 215, 134, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -986,33 +984,33 @@ static const yytype_uint16 yyrline[] = 713, 722, 740, 758, 767, 779, 784, 792, 812, 835, 842, 848, 868, 889, 915, 927, 944, 948, 959, 962, 975, 978, 988, 1012, 1011, 1031, 1053, 1071, 1089, 1119, - 1149, 1169, 1187, 1205, 1231, 1249, 1248, 1271, 1289, 1328, - 1334, 1340, 1347, 1372, 1397, 1414, 1413, 1433, 1450, 1478, - 1495, 1515, 1533, 1551, 1550, 1575, 1580, 1585, 1590, 1595, - 1615, 1621, 1632, 1633, 1638, 1641, 1645, 1668, 1691, 1714, - 1742, 1751, 1755, 1770, 1797, 1814, 1828, 1834, 1840, 1849, - 1863, 1911, 1929, 1944, 1963, 1975, 1999, 2003, 2010, 2016, - 2021, 2027, 2036, 2053, 2070, 2089, 2108, 2136, 2144, 2150, - 2157, 2161, 2170, 2178, 2186, 2195, 2194, 2207, 2206, 2219, - 2218, 2231, 2230, 2243, 2250, 2257, 2264, 2271, 2278, 2285, - 2292, 2299, 2307, 2306, 2318, 2317, 2329, 2328, 2340, 2339, - 2351, 2350, 2362, 2361, 2373, 2372, 2384, 2383, 2395, 2394, - 2409, 2412, 2418, 2427, 2447, 2470, 2474, 2498, 2501, 2517, - 2520, 2533, 2536, 2542, 2545, 2552, 2608, 2678, 2683, 2750, - 2793, 2819, 2842, 2865, 2868, 2877, 2881, 2897, 2898, 2899, - 2900, 2901, 2902, 2903, 2904, 2905, 2912, 2913, 2914, 2915, - 2916, 2917, 2918, 2919, 2920, 2921, 2922, 2923, 2924, 2925, - 2926, 2927, 2928, 2929, 2930, 2931, 2932, 2933, 2934, 2935, - 2936, 2937, 2938, 2939, 2940, 2941, 2942, 2943, 2945, 2946, - 2947, 2948, 2949, 2950, 2951, 2952, 2953, 2954, 2955, 2956, - 2957, 2958, 2959, 2960, 2961, 2962, 2963, 2964, 2965, 2974, - 2975, 2976, 2977, 2978, 2979, 2980, 2984, 2997, 3009, 3024, - 3034, 3044, 3062, 3067, 3072, 3082, 3092, 3100, 3104, 3108, - 3112, 3116, 3123, 3127, 3131, 3135, 3142, 3147, 3154, 3159, - 3163, 3168, 3172, 3180, 3191, 3195, 3207, 3215, 3223, 3230, - 3241, 3261, 3271, 3281, 3291, 3311, 3316, 3320, 3324, 3336, - 3340, 3352, 3359, 3369, 3373, 3388, 3393, 3400, 3404, 3417, - 3425, 3436, 3440, 3448, 3456, 3470, 3484, 3488 + 1149, 1167, 1185, 1211, 1229, 1228, 1251, 1269, 1308, 1314, + 1320, 1327, 1352, 1377, 1394, 1393, 1413, 1430, 1458, 1475, + 1495, 1513, 1531, 1530, 1555, 1560, 1565, 1570, 1575, 1595, + 1601, 1612, 1613, 1618, 1621, 1625, 1648, 1671, 1694, 1722, + 1731, 1735, 1750, 1777, 1794, 1808, 1814, 1820, 1829, 1843, + 1891, 1909, 1924, 1943, 1955, 1979, 1983, 1990, 1996, 2001, + 2007, 2016, 2033, 2050, 2069, 2088, 2116, 2124, 2130, 2137, + 2141, 2150, 2158, 2166, 2175, 2174, 2187, 2186, 2199, 2198, + 2211, 2210, 2223, 2230, 2237, 2244, 2251, 2258, 2265, 2272, + 2279, 2287, 2286, 2298, 2297, 2309, 2308, 2320, 2319, 2331, + 2330, 2342, 2341, 2353, 2352, 2364, 2363, 2375, 2374, 2389, + 2392, 2398, 2407, 2427, 2450, 2454, 2478, 2481, 2497, 2500, + 2513, 2516, 2522, 2525, 2532, 2588, 2658, 2663, 2730, 2773, + 2799, 2822, 2845, 2848, 2857, 2861, 2877, 2878, 2879, 2880, + 2881, 2882, 2883, 2884, 2885, 2892, 2893, 2894, 2895, 2896, + 2897, 2898, 2899, 2900, 2901, 2902, 2903, 2904, 2905, 2906, + 2907, 2908, 2909, 2910, 2911, 2912, 2913, 2914, 2915, 2916, + 2917, 2918, 2919, 2920, 2921, 2922, 2923, 2925, 2926, 2927, + 2928, 2929, 2930, 2931, 2932, 2933, 2934, 2935, 2936, 2937, + 2938, 2939, 2940, 2941, 2942, 2943, 2944, 2945, 2954, 2955, + 2956, 2957, 2958, 2959, 2960, 2964, 2977, 2989, 3004, 3014, + 3024, 3042, 3047, 3052, 3062, 3072, 3080, 3084, 3088, 3092, + 3096, 3103, 3107, 3111, 3115, 3122, 3127, 3134, 3139, 3143, + 3148, 3152, 3160, 3171, 3175, 3187, 3195, 3203, 3210, 3221, + 3241, 3251, 3261, 3271, 3291, 3296, 3300, 3304, 3316, 3320, + 3332, 3339, 3349, 3353, 3368, 3373, 3380, 3384, 3397, 3405, + 3416, 3420, 3428, 3436, 3450, 3464, 3468 }; #endif @@ -1098,33 +1096,33 @@ static const yytype_uint8 yyr1[] = 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 168, 168, 169, 169, 170, 170, 171, 172, 171, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 171, 173, 171, 171, 171, 171, - 171, 171, 171, 171, 171, 174, 171, 171, 171, 171, - 171, 171, 171, 175, 171, 176, 176, 176, 176, 176, - 176, 176, 177, 177, 178, 178, 178, 178, 178, 178, - 179, 179, 179, 179, 179, 180, 181, 181, 181, 181, + 171, 171, 171, 171, 173, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 174, 171, 171, 171, 171, 171, + 171, 171, 175, 171, 176, 176, 176, 176, 176, 176, + 176, 177, 177, 178, 178, 178, 178, 178, 178, 179, + 179, 179, 179, 179, 180, 181, 181, 181, 181, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, - 182, 182, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 184, 184, 184, 185, 184, 186, 184, 187, - 184, 188, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 189, 184, 190, 184, 191, 184, 192, 184, - 193, 184, 194, 184, 195, 184, 196, 184, 197, 184, - 198, 198, 199, 199, 199, 199, 199, 200, 200, 201, - 201, 202, 202, 203, 203, 204, 204, 204, 204, 204, - 204, 205, 205, 205, 205, 206, 206, 207, 207, 207, + 182, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 184, 184, 184, 185, 184, 186, 184, 187, 184, + 188, 184, 184, 184, 184, 184, 184, 184, 184, 184, + 184, 189, 184, 190, 184, 191, 184, 192, 184, 193, + 184, 194, 184, 195, 184, 196, 184, 197, 184, 198, + 198, 199, 199, 199, 199, 199, 200, 200, 201, 201, + 202, 202, 203, 203, 204, 204, 204, 204, 204, 204, + 205, 205, 205, 205, 206, 206, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 208, + 207, 207, 207, 207, 207, 207, 207, 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 209, 209, 209, - 209, 209, 210, 210, 210, 210, 211, 211, 212, 212, - 212, 212, 212, 212, 213, 213, 214, 214, 214, 214, - 214, 214, 214, 214, 214, 215, 215, 215, 215, 216, - 216, 216, 216, 217, 217, 218, 218, 219, 219, 219, - 219, 220, 220, 220, 220, 220, 220, 220 + 208, 208, 208, 208, 208, 208, 209, 209, 209, 209, + 209, 210, 210, 210, 210, 211, 211, 212, 212, 212, + 212, 212, 212, 213, 213, 214, 214, 214, 214, 214, + 214, 214, 214, 214, 215, 215, 215, 215, 216, 216, + 216, 216, 217, 217, 218, 218, 219, 219, 219, 219, + 220, 220, 220, 220, 220, 220, 220 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1140,33 +1138,33 @@ static const yytype_uint8 yyr2[] = 9, 6, 9, 5, 8, 8, 11, 6, 9, 5, 7, 9, 9, 11, 9, 9, 1, 1, 0, 5, 0, 2, 7, 0, 9, 6, 7, 7, 8, 8, - 17, 7, 7, 11, 8, 0, 9, 8, 9, 3, - 4, 10, 7, 7, 8, 0, 9, 8, 12, 8, - 8, 8, 7, 0, 9, 5, 11, 5, 9, 4, - 9, 9, 1, 1, 0, 2, 6, 6, 6, 6, - 4, 6, 6, 3, 4, 5, 3, 3, 4, 4, - 3, 7, 7, 3, 7, 3, 2, 2, 2, 15, - 2, 2, 6, 8, 8, 10, 1, 2, 1, 3, - 4, 1, 5, 11, 13, 0, 7, 0, 13, 0, - 15, 0, 6, 8, 8, 8, 12, 12, 12, 14, - 14, 14, 0, 12, 0, 12, 0, 12, 0, 16, - 0, 16, 0, 16, 0, 18, 0, 18, 0, 18, - 1, 2, 5, 7, 9, 2, 9, 0, 3, 0, - 1, 0, 2, 0, 2, 7, 6, 8, 5, 5, - 6, 10, 10, 10, 10, 2, 3, 1, 3, 2, - 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 5, 4, 4, 4, + 7, 7, 11, 8, 0, 9, 8, 9, 3, 4, + 10, 7, 7, 8, 0, 9, 8, 12, 8, 8, + 8, 7, 0, 9, 5, 11, 5, 9, 4, 9, + 9, 1, 1, 0, 2, 6, 6, 6, 6, 4, + 6, 6, 3, 4, 5, 3, 3, 4, 4, 3, + 7, 7, 3, 7, 3, 2, 2, 2, 15, 2, + 2, 6, 8, 8, 10, 1, 2, 1, 3, 4, + 1, 5, 11, 13, 0, 7, 0, 13, 0, 15, + 0, 6, 8, 8, 8, 12, 12, 12, 14, 14, + 14, 0, 12, 0, 12, 0, 12, 0, 16, 0, + 16, 0, 16, 0, 18, 0, 18, 0, 18, 1, + 2, 5, 7, 9, 2, 9, 0, 3, 0, 1, + 0, 2, 0, 2, 7, 6, 8, 5, 5, 6, + 10, 10, 10, 10, 2, 3, 1, 3, 2, 2, + 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 5, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, + 4, 4, 4, 6, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, - 4, 4, 4, 4, 6, 6, 6, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, - 4, 4, 4, 4, 4, 6, 6, 6, 4, 1, - 1, 1, 1, 1, 1, 1, 1, 5, 4, 4, - 2, 5, 3, 6, 4, 7, 6, 1, 2, 2, - 3, 3, 11, 9, 7, 7, 1, 3, 1, 1, - 2, 3, 4, 5, 1, 1, 2, 3, 3, 5, - 4, 1, 1, 3, 6, 1, 1, 3, 3, 9, - 7, 1, 5, 3, 6, 1, 3, 1, 1, 3, - 6, 1, 1, 6, 4, 4, 4, 6 + 4, 4, 4, 4, 6, 6, 6, 4, 1, 1, + 1, 1, 1, 1, 1, 1, 5, 4, 4, 2, + 5, 3, 6, 4, 7, 6, 1, 2, 2, 3, + 3, 11, 9, 7, 7, 1, 3, 1, 1, 2, + 3, 4, 5, 1, 1, 2, 3, 3, 5, 4, + 1, 1, 3, 6, 1, 1, 3, 3, 9, 7, + 1, 5, 3, 6, 1, 3, 1, 1, 3, 6, + 1, 1, 6, 4, 4, 4, 6 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -1179,290 +1177,286 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 166, 0, 171, 0, 0, 168, 0, 0, + 0, 0, 165, 0, 170, 0, 0, 167, 0, 0, 0, 0, 5, 7, 6, 8, 9, 10, 11, 12, - 13, 19, 18, 14, 15, 16, 17, 299, 306, 361, - 54, 300, 301, 302, 0, 0, 0, 0, 0, 0, + 13, 19, 18, 14, 15, 16, 17, 298, 305, 360, + 54, 299, 300, 301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 362, - 0, 0, 303, 304, 305, 58, 57, 56, 55, 0, - 0, 0, 60, 59, 0, 0, 0, 0, 134, 0, - 0, 0, 237, 0, 0, 0, 0, 158, 0, 160, - 157, 161, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, + 0, 0, 302, 303, 304, 58, 57, 56, 55, 0, + 0, 0, 60, 59, 0, 0, 0, 0, 133, 0, + 0, 0, 236, 0, 0, 0, 0, 157, 0, 159, + 156, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 93, 105, 115, 123, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, - 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, - 0, 0, 134, 0, 235, 0, 0, 0, 0, 0, - 0, 0, 351, 0, 0, 0, 0, 0, 156, 0, - 0, 167, 0, 134, 0, 134, 0, 0, 0, 0, - 310, 29, 361, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 93, 104, 114, 122, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 316, 0, + 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, + 0, 133, 0, 234, 0, 0, 0, 0, 0, 0, + 0, 350, 0, 0, 0, 0, 0, 155, 0, 0, + 166, 0, 133, 0, 133, 0, 0, 0, 0, 309, + 29, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 306, 240, 239, 241, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 133, 0, 132, 0, 66, - 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 150, 109, 0, 0, - 0, 0, 306, 0, 0, 341, 342, 345, 346, 0, + 0, 305, 239, 238, 240, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 132, 0, 131, 0, 66, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 328, 0, 329, 0, 0, 0, 0, - 0, 335, 334, 0, 221, 221, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, - 0, 0, 134, 134, 0, 0, 0, 0, 0, 0, - 0, 181, 0, 134, 223, 0, 0, 0, 143, 0, - 0, 0, 236, 0, 0, 0, 155, 0, 0, 0, - 0, 0, 134, 0, 0, 0, 0, 169, 146, 0, - 147, 0, 0, 0, 312, 0, 0, 68, 0, 0, + 0, 0, 0, 0, 0, 149, 108, 0, 0, 0, + 0, 305, 0, 0, 340, 341, 344, 345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 327, 0, 328, 0, 0, 0, 0, 334, + 333, 0, 220, 220, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 318, 317, 0, 0, 0, 0, + 133, 133, 0, 0, 0, 0, 0, 0, 0, 180, + 0, 133, 222, 0, 0, 0, 142, 0, 0, 0, + 235, 0, 0, 0, 154, 0, 0, 0, 0, 0, + 133, 0, 0, 0, 0, 168, 145, 0, 146, 0, + 0, 0, 311, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 358, 0, 357, 0, 0, 0, 0, 0, 0, 238, - 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, - 129, 0, 0, 0, 0, 135, 61, 0, 255, 254, - 253, 252, 248, 249, 251, 250, 243, 242, 244, 245, - 246, 247, 110, 0, 0, 0, 0, 0, 0, 239, - 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 219, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 357, 0, + 356, 0, 0, 0, 0, 0, 0, 237, 0, 0, + 0, 0, 54, 0, 0, 0, 0, 0, 128, 0, + 0, 0, 0, 134, 61, 0, 254, 253, 252, 251, + 247, 248, 250, 249, 242, 241, 243, 244, 245, 246, + 109, 0, 0, 0, 0, 0, 0, 238, 335, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 329, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 218, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, + 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 174, 0, 0, 0, 0, 143, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 321, 320, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 175, 0, 0, 0, 0, 144, 0, - 0, 140, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 170, 0, 148, 149, 0, 308, 314, - 0, 39, 0, 0, 0, 52, 0, 30, 31, 32, - 33, 34, 257, 278, 258, 279, 259, 280, 260, 281, - 261, 282, 262, 283, 263, 284, 264, 285, 265, 286, - 277, 298, 266, 287, 0, 0, 268, 289, 269, 290, - 270, 291, 271, 292, 272, 293, 273, 294, 0, 0, - 0, 0, 0, 0, 0, 0, 366, 0, 0, 364, - 365, 79, 0, 0, 0, 0, 0, 54, 0, 0, - 0, 0, 0, 73, 0, 0, 0, 0, 309, 0, - 0, 0, 0, 0, 22, 20, 0, 0, 0, 0, - 343, 0, 0, 338, 244, 337, 347, 348, 0, 0, + 169, 0, 147, 148, 0, 307, 313, 0, 39, 0, + 0, 0, 52, 0, 30, 31, 32, 33, 34, 256, + 277, 257, 278, 258, 279, 259, 280, 260, 281, 261, + 282, 262, 283, 263, 284, 264, 285, 276, 297, 265, + 286, 0, 0, 267, 288, 268, 289, 269, 290, 270, + 291, 271, 292, 272, 293, 0, 0, 0, 0, 0, + 0, 0, 0, 365, 0, 0, 363, 364, 79, 0, + 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, + 73, 0, 0, 0, 0, 308, 0, 0, 0, 0, + 0, 22, 20, 0, 0, 0, 0, 342, 0, 0, + 337, 243, 336, 346, 347, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, + 0, 0, 0, 0, 0, 216, 221, 219, 0, 227, + 0, 0, 86, 87, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 124, 126, 0, 0, 0, 0, + 0, 0, 0, 0, 209, 0, 171, 0, 223, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 331, 0, 0, 0, 0, 0, 0, 0, 217, - 222, 220, 0, 228, 0, 0, 86, 87, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 125, 127, - 0, 0, 0, 0, 0, 0, 0, 0, 210, 0, - 172, 0, 224, 229, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, - 0, 0, 0, 311, 0, 307, 0, 0, 0, 0, - 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 359, 0, 0, 0, 308, 64, 65, 0, 0, - 0, 0, 0, 67, 69, 71, 0, 0, 355, 0, - 77, 0, 0, 0, 0, 256, 21, 0, 0, 0, - 0, 0, 340, 0, 0, 90, 90, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 332, 0, 95, - 0, 0, 0, 0, 0, 0, 0, 226, 0, 0, + 0, 0, 144, 0, 0, 0, 0, 0, 0, 310, + 0, 306, 0, 0, 0, 0, 0, 26, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 358, 0, 0, + 0, 307, 64, 65, 0, 0, 0, 0, 0, 67, + 69, 71, 0, 0, 354, 0, 77, 0, 0, 0, + 0, 255, 21, 0, 0, 0, 0, 0, 339, 0, + 0, 90, 90, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 331, 0, 95, 0, 0, 0, 0, + 0, 0, 225, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 214, + 0, 0, 181, 210, 0, 0, 229, 0, 141, 140, + 0, 27, 28, 0, 0, 0, 351, 0, 0, 0, + 161, 0, 0, 151, 312, 150, 0, 0, 0, 0, + 325, 0, 266, 287, 273, 294, 274, 295, 275, 296, + 0, 366, 362, 315, 0, 54, 0, 0, 0, 0, + 62, 0, 0, 0, 352, 0, 0, 0, 0, 23, + 24, 0, 0, 92, 0, 338, 0, 0, 0, 0, + 0, 96, 0, 0, 111, 112, 0, 0, 97, 121, + 332, 0, 0, 0, 88, 0, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, + 133, 0, 191, 0, 193, 0, 195, 327, 0, 0, + 0, 0, 175, 0, 0, 100, 101, 0, 0, 0, + 0, 80, 0, 314, 0, 35, 0, 0, 0, 0, + 0, 37, 0, 0, 0, 0, 74, 0, 0, 75, + 0, 355, 135, 136, 137, 138, 0, 0, 343, 0, + 91, 98, 99, 103, 0, 0, 113, 0, 0, 226, + 106, 0, 0, 217, 120, 0, 0, 0, 0, 119, + 0, 118, 116, 0, 0, 0, 324, 0, 323, 0, + 0, 182, 0, 0, 183, 0, 0, 184, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 349, 0, + 163, 162, 0, 0, 0, 40, 0, 0, 0, 326, + 0, 0, 0, 359, 63, 70, 72, 0, 78, 0, + 25, 0, 0, 0, 0, 0, 0, 0, 107, 94, + 105, 115, 123, 0, 84, 85, 133, 0, 127, 0, + 0, 0, 0, 0, 0, 211, 0, 0, 133, 0, + 130, 129, 0, 0, 0, 0, 81, 82, 0, 36, + 0, 0, 0, 38, 53, 0, 353, 0, 230, 231, + 232, 233, 110, 0, 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 215, 0, 0, 182, 211, 0, - 0, 230, 0, 142, 141, 0, 27, 28, 0, 0, - 0, 352, 0, 0, 0, 162, 0, 0, 152, 313, - 151, 0, 0, 0, 0, 326, 0, 267, 288, 274, - 295, 275, 296, 276, 297, 0, 367, 363, 316, 0, - 54, 0, 0, 0, 0, 62, 0, 0, 0, 353, - 0, 0, 0, 0, 23, 24, 0, 0, 92, 0, - 339, 0, 0, 0, 0, 0, 96, 0, 0, 112, - 113, 0, 0, 97, 122, 333, 0, 0, 0, 0, - 88, 0, 225, 0, 0, 0, 0, 0, 0, 0, - 0, 154, 0, 0, 0, 0, 134, 0, 192, 0, - 194, 0, 196, 328, 0, 0, 0, 0, 176, 0, - 0, 101, 102, 0, 0, 0, 0, 80, 0, 315, - 0, 35, 0, 0, 0, 0, 0, 37, 0, 0, - 0, 0, 74, 0, 0, 75, 0, 356, 136, 137, - 138, 139, 0, 0, 344, 0, 91, 98, 99, 104, - 0, 0, 114, 0, 0, 0, 227, 107, 0, 0, - 218, 121, 0, 0, 0, 0, 120, 0, 119, 117, - 0, 0, 0, 325, 0, 324, 0, 0, 183, 0, - 0, 184, 0, 0, 185, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 350, 0, 164, 163, 0, - 0, 0, 40, 0, 0, 0, 327, 0, 0, 0, - 360, 63, 70, 72, 0, 78, 0, 25, 0, 0, - 0, 0, 0, 0, 0, 0, 108, 94, 106, 116, - 124, 0, 84, 85, 134, 0, 128, 0, 0, 0, - 0, 0, 0, 212, 0, 0, 134, 0, 131, 130, - 0, 0, 0, 0, 81, 82, 0, 36, 0, 0, - 0, 38, 53, 0, 354, 0, 231, 232, 233, 234, - 111, 0, 0, 0, 0, 0, 323, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, - 0, 0, 349, 165, 0, 0, 0, 0, 0, 76, - 0, 0, 0, 0, 126, 0, 198, 0, 0, 200, - 0, 0, 202, 0, 0, 0, 213, 0, 173, 0, - 134, 103, 83, 0, 44, 0, 50, 0, 0, 0, - 89, 118, 322, 186, 0, 0, 193, 187, 0, 0, - 195, 188, 0, 0, 197, 0, 0, 0, 179, 0, - 0, 0, 0, 0, 0, 0, 204, 0, 206, 0, - 208, 214, 216, 178, 174, 0, 41, 0, 48, 0, - 0, 0, 0, 189, 0, 0, 190, 0, 0, 191, - 0, 0, 0, 42, 0, 0, 159, 0, 0, 0, - 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, - 199, 0, 201, 0, 203, 0, 43, 45, 0, 46, - 0, 100, 0, 0, 0, 0, 0, 51, 205, 207, - 209, 47, 49 + 176, 0, 0, 348, 164, 0, 0, 0, 0, 0, + 76, 0, 0, 0, 125, 0, 197, 0, 0, 199, + 0, 0, 201, 0, 0, 0, 212, 0, 172, 0, + 133, 102, 83, 0, 44, 0, 50, 0, 0, 89, + 117, 321, 185, 0, 0, 192, 186, 0, 0, 194, + 187, 0, 0, 196, 0, 0, 0, 178, 0, 0, + 0, 0, 0, 0, 203, 0, 205, 0, 207, 213, + 215, 177, 173, 0, 41, 0, 48, 0, 0, 0, + 188, 0, 0, 189, 0, 0, 190, 0, 0, 0, + 42, 0, 0, 158, 0, 0, 0, 0, 0, 0, + 179, 0, 0, 0, 0, 198, 0, 200, 0, 202, + 0, 43, 45, 0, 46, 0, 0, 0, 0, 0, + 0, 51, 204, 206, 208, 47, 49 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 2, 3, 62, 666, 63, 64, 406, 970, 976, - 587, 756, 1106, 1232, 588, 1200, 1258, 589, 1234, 590, - 591, 760, 129, 220, 65, 705, 1009, 913, 475, 347, - 348, 349, 350, 315, 286, 287, 68, 69, 70, 71, - 72, 316, 731, 1169, 1215, 551, 1029, 1032, 1035, 1184, - 1188, 1192, 1224, 1227, 1230, 727, 728, 826, 702, 528, - 555, 74, 75, 76, 333, 132, 356, 179, 874, 875, - 343, 335, 319, 204, 657, 789, 451, 452 + -1, 2, 3, 62, 663, 63, 64, 404, 964, 970, + 584, 752, 1098, 1219, 585, 1189, 1243, 586, 1221, 587, + 588, 756, 129, 219, 65, 701, 1002, 908, 473, 345, + 346, 347, 348, 314, 285, 286, 68, 69, 70, 71, + 72, 315, 727, 1159, 1203, 548, 1022, 1025, 1028, 1173, + 1177, 1181, 1211, 1214, 1217, 723, 724, 821, 698, 525, + 552, 74, 75, 76, 332, 132, 354, 178, 869, 870, + 341, 334, 318, 203, 654, 785, 449, 450 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -1050 +#define YYPACT_NINF -1044 static const yytype_int16 yypact[] = { - 2878, 33, 42, 2956, -1050, -1050, 1357, 69, 2, -70, - 15, 88, 102, 106, -89, -7, 27, -41, 66, 80, - -47, 83, 142, 61, -22, 251, 255, 285, 74, 298, - 164, 450, 247, 241, 52, 52, 274, -23, 360, 377, - 389, 5, 174, 399, 418, 454, 476, 350, 361, 378, - 10, 34, -1050, 408, -1050, 526, 398, -1050, 541, 556, - 0, 18, -1050, -1050, -1050, -1050, -1050, -1050, -1050, -1050, - -1050, -1050, -1050, -1050, -1050, -1050, -1050, -1050, 22, 409, - 542, -1050, -1050, -1050, 49, 130, 138, 223, 344, 374, - 423, 457, 461, 466, 477, 478, 481, 505, 512, 513, - 528, 535, 540, 545, 548, 419, 444, 449, 469, -1050, - 608, 486, -1050, -1050, -1050, -1050, -1050, -1050, -1050, 2301, - 2301, 2301, -1050, -1050, 2301, 1870, 14, 616, 12, 2301, - 623, 615, -1050, 624, 628, 2301, 630, -1050, 2301, -1050, - -1050, -1050, 2301, 2232, 2301, 2301, 508, 2301, 2232, 2301, - 2301, 516, 2232, 2301, 2301, 1537, 525, 2301, 522, 534, - 544, 1405, 1405, 1405, 551, -1050, -1050, -1050, -1050, 554, - 570, 575, 670, 52, 52, 52, 2301, 2301, -36, -1050, - 65, 52, 553, 585, 588, 2100, 204, 1405, 1537, 610, - 37, 622, -1050, 743, -1050, 635, 652, 656, 772, 2301, - 2301, 2301, 642, 2301, 646, 700, 2301, 2301, -1050, 2301, - 797, -1050, 824, -1050, 832, -1050, 709, 2301, 841, 766, - -1050, -1050, -1050, 857, 2301, 2301, 2301, 2301, 2301, 2301, - 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, - 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, - 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, - 2301, 2301, 2301, 2301, 2301, 2301, 480, 480, 480, 480, - 2301, 885, 529, 775, 775, 775, 5189, 8, 2232, 4453, - 207, 773, 912, 786, 782, -1050, 783, 3022, 777, -1050, - -1050, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, - 2301, 2301, 2301, 2301, 2301, 2301, -1050, -1050, 1187, -75, - 3699, 5210, 502, 787, 2232, -1050, -1050, 905, -1050, 549, - 5231, 5252, 2301, 5273, 550, 5294, 5315, 2301, 559, 5336, - 5357, 1669, 1218, 1059, 919, -1050, 2301, 5378, 2301, 2301, - 2301, -1050, -1050, 921, 922, 922, 2301, 798, 799, 800, - 801, 2301, 2301, 2301, 803, -48, -1050, -1050, 3725, 3751, - 52, 52, 12, 12, 229, 2301, 2301, 2301, 2100, 2100, - 2301, 3022, 302, -1050, 931, 932, 2301, 934, -1050, 2301, - 2301, 1575, -1050, 2232, 2301, 2301, -1050, 5399, 5420, 5441, - 849, 3777, -1050, 802, 2681, 5462, 4476, -1050, -1050, 1707, - -1050, 1971, 2301, 4499, 184, 2301, 13, -1050, 5483, 4522, - 5504, 4545, 5525, 4568, 5546, 4591, 5567, 4614, 5588, 4637, - 5609, 4660, 5630, 4683, 5651, 4706, 5672, 4729, 5693, 4752, - 3803, 3829, 5714, 4775, 5735, 4798, 5756, 4821, 5777, 4844, - 5798, 4867, 5819, 4890, 3855, 3881, 3907, 3933, 3959, 3985, - 168, -49, -1050, 804, 810, 816, 2043, 812, 2301, -1050, - 1537, 1537, 560, 170, 542, 2301, 946, 949, 16, 819, - -1050, -67, -31, -37, -56, -1050, -1050, 2706, 757, 594, - 728, 728, 330, 330, 330, 330, 268, 268, 775, 775, - 775, 775, -1050, 46, 2232, 2301, 951, 2065, 2301, 775, - -1050, 2301, 2232, 2232, 861, 952, 953, 5840, 956, 869, - 958, 961, 5861, 874, 964, 966, 2232, -1050, 563, 1801, - 2301, 5882, 968, 2779, 5903, 5924, 2301, 1537, 972, 971, - 5945, 2358, 2358, 2358, 2358, 5966, 5987, 6008, 842, 52, - 2301, 2301, -1050, -1050, 839, 840, 2301, 4011, 4037, 4063, - 3673, 297, 52, 2093, 2301, 977, 2301, 6029, -1050, 4913, - 4936, -1050, 583, 4959, 4982, 978, 979, 983, 847, 2301, - 2400, 2301, 2301, -1050, 28, -1050, -1050, 5005, 32, -1050, - 3057, -1050, 859, 860, 854, -1050, 989, -1050, -1050, -1050, - -1050, -1050, -1050, -1050, -1050, -1050, -1050, -1050, -1050, -1050, - -1050, -1050, -1050, -1050, -1050, -1050, -1050, -1050, -1050, -1050, - -1050, -1050, -1050, -1050, 2301, 2301, -1050, -1050, -1050, -1050, - -1050, -1050, -1050, -1050, -1050, -1050, -1050, -1050, 2301, 2301, - 2301, 2301, 2301, 2301, 2301, 992, -1050, 2232, 480, -1050, - -1050, -1050, 2301, 5028, 991, 994, 862, -1050, 41, 2301, - 995, 996, 2464, -1050, 997, 868, 10, 999, -1050, 2232, - 2232, 2232, 2232, 2301, -1050, 886, 480, -4, 4089, 52, - -1050, 2232, 3085, 2729, 775, -1050, 905, -1050, 959, 1537, - 1537, 1000, 1537, 697, 1537, 1537, 1004, 960, 1537, 1537, - 614, -1050, 2232, 2487, 1005, 875, 1007, 1009, 1010, 2165, - -1050, -1050, 1027, -1050, 1028, 902, 6260, -1050, 907, 908, - 910, 1032, 1038, 1039, 1044, 309, 4115, 4141, -1050, -1050, - 3113, 52, 52, 52, 1043, 911, 917, -17, -1050, 312, - -1050, 297, 6260, -1050, 2507, 913, 1048, 1049, 1006, 1050, - 1052, 1537, 1537, 1537, 1055, 4167, -1050, 2749, 702, 1058, - 1060, 1062, 1067, -1050, 1066, -1050, 940, 2301, 2301, 1537, - 935, -1050, 6050, 5051, 6071, 5074, 6092, 5097, 6113, 5120, - 5143, -1050, 68, 942, 6134, 467, -1050, -1050, 199, 277, - 937, 1070, 2540, -1050, -1050, -1050, 10, 2301, -1050, 633, - -1050, 643, 651, 655, 659, 6260, -1050, 1072, 48, 2301, - 50, 660, -1050, 2301, 939, 1022, 1022, 1537, 1076, 948, - 950, 1080, 1083, 1537, 955, 1085, 1086, -1050, 665, -1050, - 1088, 2301, 1537, 1537, 1537, 1092, 1091, -1050, 1537, 1093, - 1094, 1097, 1098, 1537, 1537, 1537, 317, 2301, 2301, 2301, - 967, -74, 262, 282, -1050, 1537, 2301, -1050, -1050, 2100, - 188, -1050, 2232, -1050, -1050, 973, -1050, -1050, 1100, 1102, - 1008, -1050, 2301, 2301, 2301, -1050, 1105, 1108, -1050, 184, - -1050, 2301, 4193, 4219, 668, -1050, 2301, -1050, -1050, -1050, - -1050, -1050, -1050, -1050, -1050, 980, -1050, -1050, -1050, 1537, - 542, 2301, 1112, 1116, 16, -1050, 1115, 5166, 10, -1050, - 1119, 1120, 1121, 1122, -1050, -1050, 480, 4245, -1050, 962, - 6260, 2301, 52, 1123, 1124, 1125, -1050, 2301, 2301, -1050, - -1050, 1126, 2301, -1050, -1050, -1050, 1128, 4271, 1129, 1130, - 1042, 2301, -1050, 1134, 1537, 1537, 1537, 1537, 1135, 750, - 1136, -1050, 2358, 3141, 6155, 2973, 12, 52, 1137, 52, - 1138, 52, 1139, 349, 1011, 6176, 3169, 363, -1050, 669, - 2301, -1050, -1050, 1537, 3001, 644, 6197, -1050, 1933, -1050, - 140, 6260, 2301, 2301, 1537, 1012, 672, 6260, 1142, 1141, - 1143, 2560, -1050, 1127, 1147, -1050, 1018, -1050, -1050, -1050, - -1050, -1050, 1150, 2301, -1050, 3197, 248, -1050, -1050, -1050, - 3225, 3253, -1050, 3281, 1153, 2301, -1050, -1050, 1099, 1154, - 6260, -1050, 1156, 1157, 1158, 1159, -1050, 1019, -1050, -1050, - 2586, 1160, 1030, -1050, 2301, -1050, 1026, 376, -1050, 1031, - 400, -1050, 1047, 407, -1050, 1056, 1162, 1537, 1182, 1057, - 2301, 1184, 3309, 1109, 2301, -1050, 2301, -1050, -1050, 2232, - 2609, 1186, -1050, 2301, 4297, 4323, -1050, 1537, 2301, 1189, - -1050, -1050, -1050, -1050, 10, -1050, 1107, -1050, 4349, 1192, - 1195, 1196, 1200, 1201, 4375, 1068, -1050, -1050, -1050, -1050, - -1050, 1537, -1050, -1050, 12, 3029, -1050, 2100, 297, 2100, - 297, 2100, 297, -1050, 673, 1537, -1050, 3337, -1050, -1050, - 2301, 3365, 3393, 696, -1050, -1050, 1071, 6260, 2301, 2301, - 720, 6260, -1050, 1204, -1050, 2301, -1050, -1050, -1050, -1050, - -1050, 1207, 2301, 723, 1077, 2301, -1050, 3421, 414, 190, - 3449, 431, 198, 3477, 464, 263, 1537, 1211, 1149, 2456, - 1079, 2629, -1050, -1050, 1214, 2301, 6218, 4401, 21, -1050, - 4427, 1084, 3505, 1219, -1050, 3533, 1224, 2301, 1225, 1247, - 2301, 1248, 1249, 2301, 1250, 1117, -1050, 2301, -1050, 297, - -1050, -1050, -1050, 727, -1050, 2301, -1050, 1537, 2301, 1252, - -1050, -1050, -1050, -1050, 1131, 3561, -1050, -1050, 1132, 3589, - -1050, -1050, 1133, 3617, -1050, 1253, 2662, 271, 2511, 1254, - 1140, 6239, 730, 3645, 1144, 297, 1255, 297, 1256, 297, - 1258, -1050, -1050, -1050, -1050, 297, -1050, 480, -1050, 1151, - 1259, 1261, 276, -1050, 1180, 319, -1050, 1181, 337, -1050, - 1183, 341, 747, -1050, 1188, 1537, -1050, 1148, 1262, 297, - 1263, 297, 1268, 297, -1050, 480, 1269, 480, 776, 1270, - -1050, 352, -1050, 367, -1050, 371, -1050, -1050, 779, -1050, - 1271, -1050, 1272, 1273, 1275, 480, 1276, -1050, -1050, -1050, - -1050, -1050, -1050 + 2881, 11, 37, 2959, -1044, -1044, 1360, 0, 1, -69, + 25, 68, 93, 103, 27, 62, 70, -42, 78, 82, + -10, 143, 170, 104, 66, 214, 271, 334, 17, 313, + 132, 36, 208, 252, 65, 65, 282, 216, 375, 392, + 370, 21, 84, 377, 444, 445, 456, 320, 346, 350, + 14, 35, -1044, 355, -1044, 457, 361, -1044, 495, 498, + 16, 23, -1044, -1044, -1044, -1044, -1044, -1044, -1044, -1044, + -1044, -1044, -1044, -1044, -1044, -1044, -1044, -1044, 20, 390, + 541, -1044, -1044, -1044, 220, 260, 288, 311, 333, 383, + 432, 449, 481, 494, 499, 513, 523, 531, 549, 568, + 571, 572, 575, 597, 604, 382, 387, 406, 409, -1044, + 503, 420, -1044, -1044, -1044, -1044, -1044, -1044, -1044, 2304, + 2304, 2304, -1044, -1044, 2304, 1873, 19, 553, 342, 2304, + 501, 691, -1044, 555, 558, 2304, 570, -1044, 2304, -1044, + -1044, -1044, 2304, 2235, 2304, 2304, 443, 2304, 2235, 2304, + 2304, 453, 2235, 2304, 2304, 1540, 471, 505, 493, 506, + 1408, 1408, 1408, 516, -1044, -1044, -1044, -1044, 530, 552, + 563, 585, 65, 65, 65, 2304, 2304, -64, -1044, 181, + 65, 569, 586, 591, 2103, 210, 1408, 1540, 592, 29, + 560, -1044, 730, -1044, 605, 611, 617, 757, 2304, 2304, + 2304, 630, 2304, 631, 692, 2304, 2304, -1044, 2304, 769, + -1044, 785, -1044, 797, -1044, 685, 2304, 820, 689, -1044, + -1044, -1044, 819, 2304, 2304, 2304, 2304, 2304, 2304, 2304, + 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, + 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, + 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, + 2304, 2304, 2304, 2304, 2304, 467, 467, 467, 467, 2304, + 827, 500, 704, 704, 704, 5168, 7, 2235, 4432, 206, + 696, 842, 723, 710, -1044, 722, 3025, 1128, -1044, -1044, + 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, + 2304, 2304, 2304, 2304, 2304, -1044, -1044, 1160, -84, 3730, + 5189, 598, 731, 2235, -1044, -1044, 2663, -1044, 380, 5210, + 5231, 2304, 5252, 602, 5273, 5294, 2304, 603, 5315, 5336, + 1672, 1196, 2683, 871, -1044, 2304, 2304, 2304, 2304, -1044, + -1044, 876, 878, 878, 2304, 753, 754, 755, 756, 2304, + 2304, 2304, 758, 189, -1044, -1044, 3756, 3782, 65, 65, + 342, 342, 203, 2304, 2304, 2304, 2103, 2103, 2304, 3025, + 281, -1044, 884, 886, 2304, 888, -1044, 2304, 2304, 1578, + -1044, 2235, 2304, 2304, -1044, 5357, 5378, 5399, 803, 3808, + -1044, 759, 2709, 5420, 4455, -1044, -1044, 1710, -1044, 1974, + 2304, 4478, 41, 2304, 12, -1044, 5441, 4501, 5462, 4524, + 5483, 4547, 5504, 4570, 5525, 4593, 5546, 4616, 5567, 4639, + 5588, 4662, 5609, 4685, 5630, 4708, 5651, 4731, 3834, 3860, + 5672, 4754, 5693, 4777, 5714, 4800, 5735, 4823, 5756, 4846, + 5777, 4869, 3886, 3912, 3938, 3964, 3990, 4016, 627, -33, + -1044, 762, 763, 764, 1225, 765, 2304, -1044, 1540, 1540, + 635, 169, 541, 2304, 890, 898, 18, 767, -1044, 57, + 51, 33, 168, -1044, -1044, 2732, 554, 595, 634, 634, + 486, 486, 486, 486, 562, 562, 704, 704, 704, 704, + -1044, 6, 2235, 2304, 901, 2068, 2304, 704, -1044, 2304, + 2235, 2235, 810, 902, 903, 5798, 905, 818, 907, 908, + 5819, 821, 914, 917, 2235, -1044, 640, 1804, 2304, 5840, + 3060, 5861, 5882, 2304, 1540, 921, 922, 5903, 2361, 2361, + 2361, 2361, 5924, 5945, 5966, 792, 65, 2304, 2304, -1044, + -1044, 790, 791, 2304, 4042, 4068, 4094, 3704, 190, 65, + 2096, 2304, 927, 2304, 5987, -1044, 4892, 4915, -1044, 641, + 4938, 4961, 928, 929, 930, 801, 2304, 2403, 2304, 2304, + -1044, 8, -1044, -1044, 4984, 44, -1044, 3088, -1044, 809, + 811, 794, -1044, 939, -1044, -1044, -1044, -1044, -1044, -1044, + -1044, -1044, -1044, -1044, -1044, -1044, -1044, -1044, -1044, -1044, + -1044, -1044, -1044, -1044, -1044, -1044, -1044, -1044, -1044, -1044, + -1044, 2304, 2304, -1044, -1044, -1044, -1044, -1044, -1044, -1044, + -1044, -1044, -1044, -1044, -1044, 2304, 2304, 2304, 2304, 2304, + 2304, 2304, 942, -1044, 2235, 467, -1044, -1044, -1044, 2304, + 5007, 941, 943, 814, -1044, 42, 2304, 945, 946, 2046, + -1044, 947, 822, 14, 949, -1044, 2235, 2235, 2235, 2235, + 2304, -1044, 833, 467, 75, 4120, 65, -1044, 2235, 3116, + 2752, 704, -1044, 2663, -1044, 911, 1540, 1540, 951, 1540, + 732, 1540, 1540, 952, 910, 1540, 1540, 645, -1044, 2235, + 2467, 958, 962, 963, 964, 2168, -1044, -1044, 966, -1044, + 967, 848, 6218, -1044, 849, 851, 856, 984, 985, 986, + 990, 331, 4146, 4172, -1044, -1044, 3144, 65, 65, 65, + 989, 857, 863, -38, -1044, 338, -1044, 190, 6218, -1044, + 2490, 859, 994, 995, 953, 996, 997, 1540, 1540, 1540, + 1001, 4198, -1044, 2783, 1070, 1002, 1003, 1004, 1005, -1044, + 1006, -1044, 875, 2304, 2304, 1540, 873, -1044, 6008, 5030, + 6029, 5053, 6050, 5076, 6071, 5099, 5122, -1044, 175, 880, + 6092, 217, -1044, -1044, 268, 276, 879, 1008, 2510, -1044, + -1044, -1044, 14, 2304, -1044, 649, -1044, 653, 656, 657, + 660, 6218, -1044, 1011, 13, 2304, 4, 680, -1044, 2304, + 881, 960, 960, 1540, 1014, 882, 883, 1018, 1019, 1540, + 889, 1020, 1022, -1044, 698, -1044, 1025, 1540, 1540, 1540, + 1028, 1029, -1044, 1540, 1027, 1030, 1031, 1032, 1540, 1540, + 1540, 367, 2304, 2304, 2304, 906, -66, -31, 228, -1044, + 1540, 2304, -1044, -1044, 2103, -36, -1044, 2235, -1044, -1044, + 909, -1044, -1044, 1035, 1036, 956, -1044, 2304, 2304, 2304, + -1044, 1037, 1044, -1044, 41, -1044, 2304, 4224, 4250, 701, + -1044, 2304, -1044, -1044, -1044, -1044, -1044, -1044, -1044, -1044, + 915, -1044, -1044, -1044, 1540, 541, 2304, 1047, 1050, 18, + -1044, 1049, 5145, 14, -1044, 1051, 1055, 1056, 1057, -1044, + -1044, 467, 4276, -1044, 920, 6218, 2304, 65, 1059, 1060, + 1061, -1044, 2304, 2304, -1044, -1044, 1062, 2304, -1044, -1044, + -1044, 1067, 1068, 1074, 987, 2304, -1044, 1077, 1540, 1540, + 1540, 1540, 1078, 839, 1079, -1044, 2361, 3172, 6113, 2976, + 342, 65, 1081, 65, 1082, 65, 1083, 315, 954, 6134, + 3200, 374, -1044, 707, 2304, -1044, -1044, 1540, 3004, 476, + 6155, -1044, 1936, -1044, 278, 6218, 2304, 2304, 1540, 950, + 715, 6218, 1087, 1086, 1090, 2543, -1044, 1091, 1093, -1044, + 965, -1044, -1044, -1044, -1044, -1044, 1094, 2304, -1044, 3228, + 290, -1044, -1044, -1044, 3256, 3284, -1044, 3312, 1092, -1044, + -1044, 1054, 1098, 6218, -1044, 1099, 1100, 1102, 1103, -1044, + 972, -1044, -1044, 2563, 1108, 976, -1044, 2304, -1044, 977, + 405, -1044, 979, 417, -1044, 980, 427, -1044, 981, 1111, + 1540, 1115, 983, 2304, 1118, 3340, 1038, 2304, -1044, 2304, + -1044, -1044, 2235, 2589, 1120, -1044, 2304, 4302, 4328, -1044, + 1540, 2304, 1121, -1044, -1044, -1044, -1044, 14, -1044, 1039, + -1044, 4354, 1123, 1125, 1127, 1129, 1130, 998, -1044, -1044, + -1044, -1044, -1044, 1540, -1044, -1044, 342, 3032, -1044, 2103, + 190, 2103, 190, 2103, 190, -1044, 716, 1540, -1044, 3368, + -1044, -1044, 2304, 3396, 3424, 720, -1044, -1044, 999, 6218, + 2304, 2304, 725, 6218, -1044, 1131, -1044, 2304, -1044, -1044, + -1044, -1044, -1044, 2304, 728, 1007, 2304, -1044, 3452, 435, + -34, 3480, 446, -25, 3508, 448, -16, 1540, 1134, 1085, + 2459, 1010, 2612, -1044, -1044, 1136, 2304, 6176, 4380, 26, + -1044, 4406, 3536, 1137, -1044, 3564, 1139, 2304, 1140, 1146, + 2304, 1147, 1148, 2304, 1149, 1015, -1044, 2304, -1044, 190, + -1044, -1044, -1044, 729, -1044, 2304, -1044, 1540, 2304, -1044, + -1044, -1044, -1044, 1017, 3592, -1044, -1044, 1021, 3620, -1044, + -1044, 1023, 3648, -1044, 1152, 2632, -1, 2514, 1154, 1024, + 6197, 733, 3676, 190, 1159, 190, 1161, 190, 1162, -1044, + -1044, -1044, -1044, 190, -1044, 467, -1044, 1033, 1168, 129, + -1044, 1040, 194, -1044, 1041, 373, -1044, 1042, 386, 734, + -1044, 1043, 1540, -1044, 1169, 190, 1170, 190, 1172, 190, + -1044, 467, 1173, 467, 738, -1044, 397, -1044, 402, -1044, + 413, -1044, -1044, 743, -1044, 1195, 1197, 1202, 1226, 467, + 1227, -1044, -1044, -1044, -1044, -1044, -1044 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -1050, -1050, -1050, -1050, 426, -1050, -1050, -1050, -1050, 122, - -1050, -1050, -1050, -1050, -1050, -1050, -1050, -1050, -1050, -1050, - -1050, -1050, -273, -2, -1050, 73, -1050, 484, 1290, -1050, - -1050, -1050, -1050, 3, -361, -182, -1050, -1050, -1050, -1050, - -1050, 1291, -1050, -1050, -1050, -1050, -1050, -1050, -1050, -1050, - -1050, -1050, -1050, -1050, -1050, -648, -546, -1050, -1050, 954, - -1050, -1050, -1050, -1050, -6, -1050, 23, -1050, -1049, 381, - -115, 286, 35, -637, 402, -1050, -256, 40 + -1044, -1044, -1044, -1044, 440, -1044, -1044, -1044, -1044, 99, + -1044, -1044, -1044, -1044, -1044, -1044, -1044, -1044, -1044, -1044, + -1044, -1044, -274, -2, -1044, -147, -1044, 434, 1234, -1044, + -1044, -1044, -1044, 3, -352, -112, -1044, -1044, -1044, -1044, + -1044, 1235, -1044, -1044, -1044, -1044, -1044, -1044, -1044, -1044, + -1044, -1044, -1044, -1044, -1044, -425, -571, -1044, -1044, 896, + -1044, -1044, -1044, -1044, -6, -1044, 32, -1044, -1043, 241, + -135, 330, 34, -633, 351, -1044, -265, 5 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1472,1114 +1466,1101 @@ static const yytype_int16 yypgoto[] = #define YYTABLE_NINF -5 static const yytype_int16 yytable[] = { - 131, 544, 545, 371, 130, 212, 67, 465, 1110, 190, - 381, 453, 454, 455, 202, 460, 284, 581, 280, 788, - 655, 137, 182, 214, 151, 183, 216, 1176, 184, 156, - 146, 399, 1123, 401, 151, 749, 450, 222, 205, 4, - 146, 377, 5, 378, 142, 779, 133, 344, 345, 360, - 361, 143, 664, 135, 905, 724, 908, 178, 180, 493, - 186, 725, 726, 136, 494, 947, 142, 948, 105, 106, - 107, 108, 374, 659, 109, 360, 361, 154, 33, 34, - 35, 36, 134, 850, 662, 636, 40, 360, 361, 43, - 637, 539, 147, 152, 139, 582, 583, 584, 585, 148, - 174, 175, 147, 661, 362, 191, 281, 282, 140, 660, - 176, 157, 141, 273, 274, 275, 155, 185, 276, 279, - 223, 461, 161, 288, 847, 162, 144, 163, 1202, 308, - 798, 285, 310, 780, 781, 503, 311, 317, 320, 321, - 213, 323, 317, 325, 326, 192, 317, 329, 330, 896, - 203, 337, 122, 123, 586, 138, 656, 217, 215, 218, - 145, 1177, 122, 123, 219, 750, 665, 206, 665, 752, - 358, 359, 379, 360, 361, 174, 175, 647, 193, 359, - 194, 848, 224, 324, 225, 176, 1248, 328, 360, 361, - 649, 553, 177, 387, 388, 389, 355, 391, 357, 149, - 394, 395, 886, 396, 364, 363, 647, 503, 372, 165, - 570, 403, 166, 150, 464, 167, 153, 168, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 724, 987, 724, 226, 456, 227, 725, 726, 725, 726, - 724, 228, 317, 229, 1052, 154, 725, 726, 466, 1053, - 115, 116, 117, 118, 890, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - 122, 123, 158, 634, 848, 635, 159, 648, 499, 115, - 116, 117, 118, 462, 122, 123, 507, 115, 116, 117, - 118, 512, 754, 941, 942, 499, 317, 360, 361, 958, - 521, 1158, 523, 524, 525, 724, 160, 122, 123, 1161, - 530, 725, 726, 724, 373, 535, 536, 537, 724, 725, - 726, 164, 360, 361, 725, 726, 230, 501, 231, 547, - 548, 549, 273, 274, 550, 285, 285, 518, 546, 724, - 557, 360, 361, 559, 560, 725, 726, 317, 563, 564, - 172, 173, 773, 542, 543, 360, 361, 115, 116, 117, - 118, 724, 357, 302, 303, 304, 577, 725, 726, 580, - 305, 949, 579, 950, 1164, 360, 361, 122, 123, 724, - 797, 187, 1213, 724, 181, 725, 726, 1238, 562, 725, - 726, 951, 196, 952, 724, 360, 361, 1113, 188, 318, - 725, 726, 360, 361, 318, 360, 361, 189, 318, 724, - 1129, 552, 1132, 724, 1135, 725, 726, 195, 837, 725, - 726, 849, 643, 300, 301, 302, 303, 304, 197, 652, - 1240, 650, 305, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 519, 303, 304, 232, 1242, 233, - 198, 305, 1244, 199, 450, 222, 360, 361, 317, 668, - 1036, 643, 672, 1262, 200, 673, 674, 676, 169, 360, - 361, 170, 1040, 171, 651, 889, 891, 234, 1263, 235, - 317, 201, 1264, 674, 693, 1087, 105, 106, 107, 108, - 699, 1197, 109, 360, 361, 706, 706, 706, 706, 667, - 360, 361, 208, 209, 716, 717, 334, 360, 361, 1089, - 720, 207, 342, 342, 342, 210, 1091, 222, 732, 221, - 734, 690, 266, 1157, 360, 361, 236, 1222, 237, 1225, - 211, 1228, 715, 745, 318, 747, 748, 1231, 342, 375, - 1160, 707, 707, 707, 707, 729, 753, 267, 105, 106, - 107, 108, 268, 848, 109, 1026, 848, 360, 361, 848, - 238, 1251, 239, 1253, 240, 1255, 241, 122, 123, 242, - 500, 243, 269, 1163, 752, 708, 709, 710, 762, 763, - 244, 246, 245, 247, 248, 270, 249, 500, 318, 271, - 283, 290, 764, 765, 766, 767, 768, 769, 770, 289, - 306, 317, 122, 123, 307, 309, 774, 497, 250, 218, - 251, 322, 128, 782, 219, 252, 254, 253, 255, 327, - 992, 848, 1046, 317, 317, 317, 317, 795, 336, 122, - 123, 256, 338, 257, 458, 317, 218, 339, 258, 318, - 259, 219, 772, 260, 354, 261, 848, 340, 262, 848, - 263, 264, 848, 265, 346, 848, 317, 351, 503, 503, - 504, 509, 800, 365, 791, 792, 793, 794, 503, 503, - 513, 646, 503, 352, 691, 848, 801, 848, 353, 848, - 864, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 503, 1124, 738, 366, 305, 818, 367, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 376, 841, 842, 843, 305, 809, 382, - 810, 872, 873, 503, 1017, 817, 1018, 380, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 898, 753, 899, 383, 305, 892, 386, 390, - 318, 897, 503, 476, 900, 1047, 392, 384, 675, 677, - 503, 385, 901, 907, 503, 393, 902, 910, 503, 503, - 903, 909, 318, 397, 503, 675, 925, 974, 503, 975, - 1041, 1058, 1136, 1059, 1137, 927, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 398, 943, 944, 945, 305, 503, 865, 1144, 400, 953, - 955, 644, 645, 956, 402, 404, 317, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 964, 965, 966, 974, - 305, 1148, 974, 407, 1153, 971, 1058, 969, 1199, 974, - 977, 1219, 957, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 981, 1245, 959, 1246, 305, - 457, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 995, 405, 305, 700, 305, - 467, 1000, 1001, 501, 1139, 974, 1003, 1260, 1265, 468, - 1266, 469, 128, 318, 470, 1010, 520, 498, 526, 527, - 980, 531, 532, 533, 534, 996, 1020, 538, 554, 556, - 558, 568, 571, 638, 639, 318, 318, 318, 318, 285, - 640, 642, 653, 654, 1042, 658, 678, 318, 669, 679, - 680, 1233, 1050, 682, 683, 684, 1054, 1055, 685, 687, - 1027, 688, 1030, 689, 1033, 695, 701, 703, 318, 714, - 718, 719, 1021, 733, 744, 741, 742, 1068, 1198, 1256, - 743, 1259, 757, 758, 759, 761, 771, 776, 778, 1074, - 777, 783, 784, 787, 786, 790, 796, 807, 1051, 1271, - 804, 813, 820, 814, 822, 821, 823, 824, 1085, 291, + 131, 451, 452, 453, 130, 463, 67, 1102, 541, 542, + 903, 133, 661, 134, 458, 745, 578, 4, 201, 900, + 784, 211, 652, 279, 215, 189, 342, 343, 213, 146, + 1114, 137, 1166, 375, 720, 376, 720, 5, 720, 204, + 721, 722, 721, 722, 721, 722, 775, 720, 448, 221, + 491, 372, 135, 721, 722, 492, 720, 358, 359, 358, + 359, 151, 721, 722, 136, 160, 177, 179, 161, 185, + 162, 720, 369, 941, 139, 942, 360, 721, 722, 379, + 105, 106, 107, 108, 168, 222, 109, 169, 192, 170, + 193, 147, 358, 359, 579, 580, 581, 582, 148, 140, + 397, 633, 399, 842, 151, 952, 634, 1148, 943, 141, + 944, 280, 281, 272, 273, 274, 1151, 156, 275, 278, + 459, 190, 146, 287, 1191, 1154, 662, 358, 359, 307, + 152, 284, 309, 662, 776, 777, 310, 316, 319, 320, + 1201, 322, 316, 324, 325, 746, 316, 328, 329, 891, + 122, 123, 843, 583, 202, 216, 212, 217, 653, 155, + 142, 191, 218, 214, 377, 138, 1167, 143, 205, 356, + 357, 122, 123, 658, 122, 123, 644, 164, 357, 1234, + 165, 748, 323, 166, 147, 167, 327, 646, 173, 174, + 142, 657, 385, 386, 387, 144, 389, 656, 175, 392, + 393, 720, 394, 145, 353, 176, 355, 721, 722, 794, + 401, 149, 362, 462, 501, 150, 370, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 550, + 981, 181, 720, 454, 182, 157, 720, 183, 721, 722, + 1224, 316, 721, 722, 843, 644, 153, 464, 567, 115, + 116, 117, 118, 885, 475, 476, 477, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 122, + 123, 154, 845, 154, 358, 359, 645, 497, 659, 881, + 750, 460, 358, 359, 501, 505, 115, 116, 117, 118, + 510, 361, 158, 499, 497, 316, 358, 359, 536, 519, + 520, 521, 522, 358, 359, 1226, 122, 123, 527, 173, + 174, 171, 543, 532, 533, 534, 283, 122, 123, 175, + 371, 358, 359, 223, 748, 224, 184, 544, 545, 546, + 272, 273, 547, 284, 284, 516, 163, 945, 554, 946, + 769, 556, 557, 935, 936, 316, 560, 561, 115, 116, + 117, 118, 704, 705, 706, 159, 115, 116, 117, 118, + 539, 540, 172, 225, 574, 226, 333, 577, 793, 355, + 576, 340, 340, 340, 358, 359, 122, 123, 33, 34, + 35, 36, 1045, 358, 359, 559, 40, 1046, 188, 43, + 549, 227, 180, 228, 1105, 194, 186, 340, 373, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 517, 302, 303, 187, 229, 720, 230, 304, 195, 196, + 640, 721, 722, 198, 358, 359, 1029, 649, 720, 647, + 197, 358, 359, 207, 721, 722, 231, 648, 232, 720, + 832, 448, 221, 317, 720, 721, 722, 844, 317, 199, + 721, 722, 317, 200, 1039, 720, 316, 665, 206, 640, + 669, 721, 722, 670, 671, 673, 208, 358, 359, 209, + 884, 886, 210, 105, 106, 107, 108, 288, 316, 109, + 269, 671, 690, 1033, 1228, 265, 233, 695, 234, 501, + 266, 502, 702, 702, 702, 702, 664, 1230, 358, 359, + 220, 712, 713, 703, 703, 703, 703, 716, 1246, 267, + 358, 359, 268, 1247, 1079, 728, 221, 730, 687, 843, + 358, 359, 843, 270, 1248, 843, 1081, 282, 358, 359, + 741, 305, 743, 744, 306, 235, 1083, 236, 711, 358, + 359, 358, 359, 749, 1147, 308, 321, 105, 106, 107, + 108, 725, 237, 109, 238, 1150, 326, 1153, 1019, 352, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 335, 758, 759, 317, 304, 299, + 300, 301, 302, 303, 239, 843, 240, 1040, 304, 760, + 761, 762, 763, 764, 765, 766, 337, 241, 316, 242, + 122, 123, 243, 770, 244, 456, 986, 217, 843, 338, + 778, 843, 218, 498, 843, 336, 245, 843, 246, 344, + 316, 316, 316, 316, 791, 1120, 247, 1123, 248, 1126, + 498, 317, 316, 349, 249, 843, 250, 843, 768, 843, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 502, 303, 304, 827, 1097, 828, 829, 305, 1101, 833, - 1102, 830, 831, 317, 832, 834, 835, 1107, 836, 844, - 846, 845, 1111, 852, 853, 854, 856, 855, 857, 861, - 805, 806, 866, 808, 867, 811, 812, 501, 868, 815, - 816, 869, 870, 871, 893, 876, 887, 894, 904, 911, - 912, 1127, 916, 1130, 1103, 1133, 919, 285, 917, 920, - 918, 923, 924, 926, 1141, 922, 931, 932, 994, 963, - 934, 935, 1146, 1147, 936, 937, 961, 946, 962, 1150, - 1128, 967, 1131, 960, 1134, 968, 1152, 978, 982, 1155, - 983, 985, 858, 859, 860, 988, 989, 990, 991, 997, - 998, 999, 1002, 1004, 1064, 1006, 1007, 1008, 318, 977, - 1011, 1016, 1019, 1028, 1031, 1034, 1060, 1061, 1075, 1062, - 1037, 1185, 1057, 1065, 1189, 1066, 1067, 1193, 1073, 1081, - 1076, 1196, 1077, 1078, 1079, 1080, 1083, 1086, 1093, 1201, - 1084, 1088, 1203, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 519, 303, 304, 1090, 915, 1095, - 1098, 305, 1105, 492, 921, 1112, 1092, 1096, 1116, 1100, - 1114, 1117, 1118, 928, 929, 930, 1119, 1120, 1122, 933, - 1149, 1145, 1151, 1167, 938, 939, 940, 1166, 1154, 1170, - 1172, 77, 312, 1179, 906, 1181, 954, 81, 82, 83, - 1183, 1186, 84, 85, 86, 87, 88, 89, 90, 91, + 302, 303, 251, 316, 252, 350, 304, 301, 302, 303, + 787, 788, 789, 790, 304, 378, 351, 289, 796, 641, + 642, 253, 797, 254, 255, 257, 256, 258, 259, 363, + 260, 317, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 814, 1115, 374, 364, 304, 122, 123, + 261, 365, 262, 495, 1186, 217, 380, 263, 128, 264, + 218, 501, 501, 507, 511, 381, 382, 867, 868, 836, + 837, 838, 383, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 631, 384, 632, 696, 304, 388, 1209, 749, + 1212, 390, 1215, 887, 501, 395, 643, 892, 1218, 501, + 501, 688, 734, 805, 501, 806, 813, 391, 893, 902, + 894, 396, 501, 905, 895, 501, 501, 896, 897, 501, + 1236, 898, 1238, 398, 1240, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 501, + 400, 904, 317, 304, 402, 405, 937, 938, 939, 403, + 672, 674, 455, 465, 947, 949, 304, 501, 950, 920, + 968, 316, 969, 1010, 317, 1011, 501, 672, 1034, 466, + 128, 958, 959, 960, 1051, 1127, 1052, 1128, 467, 501, + 965, 1135, 963, 468, 968, 971, 1139, 968, 1051, 1143, + 1188, 496, 968, 1231, 1207, 1232, 951, 968, 518, 1245, + 975, 953, 1249, 523, 1250, 524, 528, 529, 530, 531, + 974, 551, 535, 553, 555, 565, 650, 636, 637, 568, + 989, 635, 651, 655, 639, 675, 994, 995, 666, 676, + 677, 997, 679, 680, 681, 682, 684, 801, 802, 1003, + 804, 685, 807, 808, 686, 697, 811, 812, 699, 710, + 1013, 714, 715, 729, 755, 737, 738, 739, 740, 990, + 1220, 1014, 753, 284, 754, 757, 767, 772, 1035, 773, + 774, 779, 780, 792, 782, 786, 1043, 783, 803, 809, + 1047, 1048, 800, 810, 317, 816, 1241, 1044, 1244, 817, + 818, 819, 822, 1020, 823, 1023, 1130, 1026, 853, 854, + 855, 1061, 824, 825, 1255, 826, 317, 317, 317, 317, + 827, 828, 829, 830, 831, 839, 841, 840, 317, 847, + 848, 849, 851, 852, 850, 856, 861, 862, 866, 864, + 863, 1077, 865, 871, 882, 889, 888, 899, 907, 317, + 911, 906, 912, 913, 914, 915, 918, 1089, 919, 917, + 921, 1093, 925, 1094, 928, 926, 316, 929, 930, 931, + 1099, 955, 956, 961, 910, 1103, 940, 957, 1187, 954, + 916, 962, 972, 976, 977, 979, 988, 982, 922, 923, + 924, 983, 984, 985, 927, 991, 992, 993, 996, 932, + 933, 934, 998, 1118, 999, 1121, 1095, 1124, 859, 284, + 1000, 948, 1001, 1004, 1009, 1012, 1132, 1021, 1024, 1027, + 1050, 1053, 1054, 1030, 1137, 1138, 1055, 1066, 1057, 1058, + 1060, 1141, 1059, 1067, 1068, 1069, 1070, 1142, 1071, 1072, + 1145, 1119, 1073, 1122, 1075, 1125, 1076, 1085, 1078, 1080, + 1082, 1084, 1087, 1088, 1090, 973, 1097, 1104, 1092, 1108, + 971, 1109, 1106, 1110, 474, 1111, 1112, 1140, 1113, 1136, + 1156, 1174, 1162, 1170, 1178, 1172, 1175, 1182, 1144, 1157, + 1160, 1185, 1176, 1179, 1180, 1183, 1184, 1193, 1199, 1190, + 1204, 1195, 1192, 1197, 1205, 1210, 490, 1213, 1216, 1005, + 1006, 1007, 1008, 1222, 1223, 1235, 1237, 317, 1239, 1242, + 1225, 1227, 1229, 1233, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 1036, 77, + 311, 1251, 304, 1252, 860, 81, 82, 83, 1253, 1049, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 638, 1254, 1256, 901, 1163, 909, 66, 73, 526, + 978, 312, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 33, 34, 35, 36, 37, 0, 0, 0, + 40, 1086, 0, 43, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 111, 112, 113, 114, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, + 313, 0, 0, 0, 121, 0, 0, 0, 1129, 124, + 0, 0, 0, 0, 127, 0, 0, 515, 0, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 0, 0, 0, 0, 304, 0, 0, + 0, 0, 0, 77, 78, 79, 0, 80, 1155, 81, + 82, 83, 317, 0, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 0, 105, 106, 107, 108, + 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, + 0, 77, 311, 339, 0, 0, 0, 81, 82, 83, + 0, 0, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 1187, 1190, 1191, 1194, 1204, 1195, 1211, - 1216, 1223, 1226, 313, 1229, 1236, 1237, 1173, 1250, 1252, - 979, 1205, 1207, 1209, 1254, 1257, 1261, 1267, 1268, 1269, - 1217, 1270, 1272, 1221, 33, 34, 35, 36, 37, 1249, - 914, 1235, 40, 66, 73, 43, 984, 0, 0, 529, - 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 1012, 1013, 1014, 1015, 305, - 1239, 1241, 0, 1243, 111, 112, 113, 114, 1247, 0, - 0, 0, 0, 0, 0, 318, 0, 0, 0, 0, - 0, 119, 314, 0, 1043, 0, 121, 0, 0, 0, - 0, 124, 0, 0, 0, 1056, 127, 0, 0, 517, - 77, 78, 79, 0, 80, 0, 81, 82, 83, 0, - 0, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 0, 105, 106, 107, 108, 0, 0, 109, - 0, 0, 0, 0, 0, 0, 0, 0, 77, 312, - 341, 0, 0, 0, 81, 82, 83, 0, 1094, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 313, 0, 0, 0, 0, 0, 0, 110, 0, 0, - 0, 0, 0, 111, 112, 113, 114, 115, 116, 117, - 118, 33, 34, 35, 36, 37, 1138, 0, 0, 40, - 119, 120, 43, 0, 0, 121, 0, 122, 123, 0, - 124, 0, 125, 0, 126, 127, 0, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 111, 112, 113, 114, 0, 0, 1165, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 331, - 0, 0, 0, 121, 0, 0, 0, 0, 124, 0, - 77, 312, 0, 127, 0, 332, 81, 82, 83, 0, - 0, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 313, 0, 0, 0, 0, 7, 8, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 33, 34, 35, 36, 37, 0, 0, - 0, 40, 0, 0, 43, 0, 0, 0, 0, 0, - 471, 15, 16, 472, 18, 19, 473, 21, 474, 23, - 0, 24, 0, 26, 27, 0, 29, 30, 31, 0, - 0, 0, 0, 111, 112, 113, 114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 119, 331, 47, 48, 49, 121, 0, 0, 0, 0, - 124, 0, 77, 312, 0, 127, 0, 332, 81, 82, - 83, 0, 0, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 313, 0, 561, 0, 0, 7, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 33, 34, 35, 36, 37, - 0, 0, 0, 40, 0, 0, 43, 0, 0, 0, - 0, 0, 471, 15, 16, 472, 18, 19, 473, 21, - 474, 23, 0, 24, 0, 26, 27, 0, 29, 30, - 31, 0, 0, 0, 0, 111, 112, 113, 114, 0, + 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, + 110, 0, 0, 0, 0, 0, 111, 112, 113, 114, + 115, 116, 117, 118, 33, 34, 35, 36, 37, 0, + 0, 0, 40, 119, 120, 43, 0, 0, 121, 0, + 122, 123, 0, 124, 0, 125, 0, 126, 127, 0, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 111, 112, 113, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 119, 314, 47, 48, 49, 121, 0, 0, - 0, 0, 124, 0, 77, 312, 0, 127, 0, 516, - 81, 82, 83, 0, 0, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 313, 0, 575, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 33, 34, 35, - 36, 37, 0, 77, 272, 40, 0, 0, 43, 81, + 0, 119, 330, 0, 0, 0, 121, 0, 0, 0, + 0, 124, 0, 77, 311, 0, 127, 0, 331, 81, 82, 83, 0, 0, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 0, 0, 111, 112, 113, - 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 314, 0, 0, 0, 121, - 0, 0, 0, 0, 124, 0, 77, 272, 222, 127, - 0, 692, 81, 82, 83, 0, 0, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 0, 105, - 106, 107, 108, 0, 0, 109, 111, 112, 113, 114, - 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 120, 0, 0, 0, 121, 0, - 0, 0, 0, 124, 0, 0, 277, 0, 127, 0, - 278, 0, 0, 0, 0, 0, 471, 15, 16, 472, - 18, 19, 473, 21, 474, 23, 0, 24, 0, 26, - 27, 0, 29, 30, 31, 0, 0, 0, 0, 111, - 112, 113, 114, 0, 0, 0, 0, 0, 0, 641, - 0, 0, 0, 0, 0, 0, 119, 120, 47, 48, - 49, 121, 0, 0, 0, 0, 124, 0, 77, 272, - 0, 127, 0, 1049, 81, 82, 83, 0, 0, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 0, 0, 0, 77, 272, 7, 8, 0, 0, 81, - 82, 83, 576, 0, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 0, 0, 0, 471, 15, - 16, 472, 18, 19, 473, 21, 474, 23, 0, 24, - 0, 26, 27, 0, 29, 30, 31, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 111, 112, 113, 114, 305, 0, 0, 0, 0, - 47, 48, 49, 0, 0, 0, 0, 0, 119, 120, - 0, 0, 0, 121, 0, 0, 0, 0, 124, 0, - 0, 670, 0, 127, 0, 671, 111, 112, 113, 114, + 100, 101, 102, 103, 104, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, + 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 33, 34, 35, 36, + 37, 0, 0, 0, 40, 0, 0, 43, 0, 0, + 0, 0, 0, 469, 15, 16, 470, 18, 19, 471, + 21, 472, 23, 0, 24, 0, 26, 27, 0, 29, + 30, 31, 0, 0, 0, 0, 111, 112, 113, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 368, 369, 0, 0, 0, 121, 825, - 0, 0, 0, 370, 730, 77, 312, 0, 127, 0, - 177, 81, 82, 83, 0, 0, 84, 85, 86, 87, + 0, 0, 0, 119, 330, 47, 48, 49, 121, 0, + 0, 0, 0, 124, 0, 77, 311, 0, 127, 0, + 331, 81, 82, 83, 0, 0, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 313, 0, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 33, 34, - 35, 36, 37, 0, 77, 272, 40, 0, 0, 43, - 81, 82, 83, 0, 0, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 0, 0, 111, 112, + 0, 0, 0, 0, 0, 0, 0, 312, 0, 558, + 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, + 35, 36, 37, 0, 0, 0, 40, 0, 0, 43, + 0, 0, 0, 0, 0, 469, 15, 16, 470, 18, + 19, 471, 21, 472, 23, 0, 24, 0, 26, 27, + 0, 29, 30, 31, 0, 0, 0, 0, 111, 112, 113, 114, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 314, 0, 0, 0, - 121, 77, 272, 222, 0, 124, 0, 81, 82, 83, - 127, 0, 84, 85, 86, 87, 88, 89, 90, 91, + 0, 0, 0, 0, 0, 119, 313, 47, 48, 49, + 121, 0, 0, 0, 0, 124, 0, 77, 311, 0, + 127, 0, 514, 81, 82, 83, 0, 0, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, + 0, 572, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 33, 34, 35, 36, 37, 0, 77, 271, 40, 0, + 0, 43, 81, 82, 83, 0, 0, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 0, 0, + 111, 112, 113, 114, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 119, 313, 0, + 0, 0, 121, 0, 0, 0, 0, 124, 0, 77, + 271, 221, 127, 0, 689, 81, 82, 83, 0, 0, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 0, 105, 106, 107, 108, 0, 0, 109, 111, + 112, 113, 114, 0, 0, 0, 7, 8, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 120, 0, 0, + 0, 121, 0, 0, 0, 0, 124, 0, 0, 276, + 0, 127, 0, 277, 0, 0, 0, 0, 0, 469, + 15, 16, 470, 18, 19, 471, 21, 472, 23, 0, + 24, 0, 26, 27, 0, 29, 30, 31, 0, 0, + 0, 0, 111, 112, 113, 114, 0, 0, 0, 0, + 0, 0, 781, 0, 0, 0, 0, 0, 0, 119, + 120, 47, 48, 49, 121, 0, 0, 0, 0, 124, + 0, 77, 271, 0, 127, 0, 1042, 81, 82, 83, + 0, 0, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 0, 105, 106, 107, 108, 0, 0, - 109, 0, 0, 0, 0, 0, 0, 111, 112, 113, - 114, 0, 7, 8, 0, 0, 0, 0, 0, 0, + 102, 103, 104, 0, 0, 0, 77, 271, 7, 8, + 0, 0, 81, 82, 83, 573, 0, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 0, 0, + 0, 469, 15, 16, 470, 18, 19, 471, 21, 472, + 23, 0, 24, 0, 26, 27, 0, 29, 30, 31, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 111, 112, 113, 114, 304, 0, + 0, 0, 0, 47, 48, 49, 0, 0, 0, 0, + 0, 119, 120, 0, 0, 0, 121, 0, 0, 0, + 0, 124, 0, 0, 667, 0, 127, 0, 668, 111, + 112, 113, 114, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 366, 367, 0, 0, + 0, 121, 820, 0, 0, 0, 368, 726, 77, 311, + 0, 127, 0, 176, 81, 82, 83, 0, 0, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 312, 0, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 33, 34, 35, 36, 37, 0, 77, 271, 40, + 0, 0, 43, 81, 82, 83, 0, 0, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 0, + 0, 111, 112, 113, 114, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 313, + 0, 0, 0, 121, 77, 271, 221, 0, 124, 0, + 81, 82, 83, 127, 0, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 0, 105, 106, 107, + 108, 0, 0, 109, 0, 0, 0, 0, 0, 0, + 111, 112, 113, 114, 0, 7, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 119, 120, 0, + 0, 0, 121, 0, 0, 0, 0, 124, 0, 0, + 0, 0, 127, 0, 0, 0, 0, 0, 469, 15, + 16, 470, 18, 19, 471, 21, 472, 23, 0, 24, + 0, 26, 27, 0, 29, 30, 31, 111, 112, 113, + 114, 7, 8, 815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 0, 0, 0, 121, - 0, 0, 0, 0, 124, 0, 0, 0, 0, 127, - 0, 0, 0, 0, 0, 471, 15, 16, 472, 18, - 19, 473, 21, 474, 23, 0, 24, 0, 26, 27, - 0, 29, 30, 31, 111, 112, 113, 114, 7, 8, - 785, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 119, 120, 0, 0, 0, 121, 47, 48, 49, - 0, 124, 0, 819, 0, 0, 127, 0, 0, 0, - 0, 471, 15, 16, 472, 18, 19, 473, 21, 474, - 23, 0, 24, 851, 26, 27, 0, 29, 30, 31, - 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, + 47, 48, 49, 0, 124, 0, 846, 0, 0, 127, + 0, 0, 0, 0, 469, 15, 16, 470, 18, 19, + 471, 21, 472, 23, 0, 24, 890, 26, 27, 0, + 29, 30, 31, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 746, 0, 47, 48, 49, 895, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 471, 15, 16, 472, - 18, 19, 473, 21, 474, 23, 1063, 24, 0, 26, - 27, 0, 29, 30, 31, 0, 0, 0, 291, 292, + 0, 0, 0, 0, 742, 0, 47, 48, 49, 1056, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 469, + 15, 16, 470, 18, 19, 471, 21, 472, 23, 1074, + 24, 0, 26, 27, 0, 29, 30, 31, 0, 0, + 0, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 1096, 0, 0, 0, 304, + 1158, 47, 48, 49, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 1161, 0, + 0, 0, 304, 0, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 1200, 0, + 0, 0, 304, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1202, 0, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 1082, 0, 0, 0, 305, 1168, 47, 48, - 49, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 1104, 0, 0, 0, 305, - 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 1171, 0, 0, 0, 305, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1214, 0, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 1212, 0, - 0, 0, 305, 0, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 0, 572, - 0, 0, 305, 0, 0, 0, 0, 0, 0, 0, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 663, 0, 0, 0, 305, 0, - 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 803, 0, 0, - 0, 305, 0, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 863, 0, 0, - 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 0, 0, 0, 0, 305, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 0, 0, 0, 0, 305, 0, - 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, -4, 1, - 0, 305, -4, 0, 0, 0, 0, 0, 0, 0, - -4, -4, 0, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, -4, 0, 0, 0, 0, -4, -4, - 696, -4, -4, -4, -4, -4, -4, -4, -4, -4, - -4, -4, -4, 0, -4, -4, -4, -4, -4, -4, - -4, -4, 0, -4, -4, -4, -4, -4, -4, 0, - -4, -4, -4, -4, -4, -4, 0, 0, -4, -4, - 6, 0, 0, 0, -4, -4, -4, -4, 7, 8, - -4, 0, -4, 0, -4, -4, -4, -4, -4, -4, - -4, -4, -4, -4, 0, 0, 0, 0, 0, 0, - 0, 9, 0, 0, 0, 0, 10, 11, 0, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 0, 24, 25, 26, 27, 28, 29, 30, 31, - 0, 32, 33, 34, 35, 36, 37, 0, 38, 39, - 40, 41, 42, 43, 7, 8, 44, 45, 0, 0, - 0, 0, 46, 47, 48, 49, 0, 0, 50, 0, - 51, 0, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 0, 0, 0, 0, 0, 471, 15, 16, - 472, 18, 19, 473, 21, 474, 23, 0, 24, 0, - 26, 27, 0, 29, 30, 31, 0, 291, 292, 293, + 303, 499, 0, 0, 0, 304, 0, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 499, 0, 0, 0, 304, 0, 0, 0, 0, + 0, 0, 0, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 569, 0, 0, + 0, 304, 0, 0, 0, 0, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 660, 0, 0, 0, 304, 0, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 0, 0, 47, - 48, 49, 1024, 0, 1025, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, - 1044, 0, 1045, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 0, 0, 0, 0, 0, 1125, 0, - 1126, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 0, 0, 0, 0, 0, 0, 0, 755, 291, + 799, 0, 0, 0, 304, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 500, 302, + 303, 858, 0, 0, 0, 304, 0, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 517, 302, + 303, 0, 0, 0, 0, 304, 0, 0, 0, 0, + 0, 0, 0, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, + 0, 304, 0, 0, 0, 0, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 0, 0, 0, 0, 304, 0, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 0, -4, 1, 0, 304, -4, 0, 0, 0, 0, + 0, 0, 0, -4, -4, 0, 0, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 0, 0, 0, 0, 304, -4, 0, 0, 0, + 0, -4, -4, 0, -4, -4, -4, -4, -4, -4, + -4, -4, -4, -4, -4, -4, 0, -4, -4, -4, + -4, -4, -4, -4, -4, 0, -4, -4, -4, -4, + -4, -4, 0, -4, -4, -4, -4, -4, -4, 0, + 0, -4, -4, 6, 0, 0, 0, -4, -4, -4, + -4, 7, 8, -4, 0, -4, 0, -4, -4, -4, + -4, -4, -4, -4, -4, -4, -4, 0, 0, 0, + 0, 0, 0, 0, 9, 0, 0, 0, 0, 10, + 11, 0, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 0, 24, 25, 26, 27, 28, + 29, 30, 31, 0, 32, 33, 34, 35, 36, 37, + 0, 38, 39, 40, 41, 42, 43, 7, 8, 44, + 45, 0, 0, 0, 0, 46, 47, 48, 49, 0, + 0, 50, 0, 51, 0, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 0, 0, 0, 0, 0, + 469, 15, 16, 470, 18, 19, 471, 21, 472, 23, + 0, 24, 0, 26, 27, 0, 29, 30, 31, 0, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 0, 0, 47, 48, 49, 1017, 0, 1018, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 0, - 0, 0, 0, 0, 0, 0, 802, 291, 292, 293, + 302, 303, 0, 0, 0, 0, 304, 0, 0, 0, + 0, 0, 0, 1037, 0, 1038, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 0, 0, 0, - 0, 0, 0, 0, 840, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, - 0, 0, 1022, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, - 1039, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 0, 0, 0, 0, 0, 0, 0, 1069, 291, + 0, 0, 0, 0, 304, 0, 0, 0, 0, 0, + 0, 1116, 0, 1117, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 0, 0, 0, 0, 0, 0, + 0, 692, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 0, 0, 0, 0, 0, 0, 0, 751, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 0, 0, 0, 0, 0, 0, 0, 798, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 0, - 0, 0, 0, 0, 0, 0, 1070, 291, 292, 293, + 302, 303, 0, 0, 0, 0, 304, 0, 0, 0, + 0, 0, 0, 0, 0, 835, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 0, 0, 0, - 0, 0, 0, 0, 1071, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, - 0, 0, 1072, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, - 1099, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 0, 0, 0, 0, 0, 0, 0, 1140, 291, + 0, 0, 0, 0, 304, 0, 0, 0, 0, 0, + 0, 0, 0, 1015, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 0, 0, 0, 0, 0, 0, + 0, 1032, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 0, 0, 0, 0, 0, 0, 0, 1062, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 0, 0, 0, 0, 0, 0, 0, 1063, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 0, - 0, 0, 0, 0, 0, 0, 1142, 291, 292, 293, + 302, 303, 0, 0, 0, 0, 304, 0, 0, 0, + 0, 0, 0, 0, 0, 1064, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 0, 0, 0, - 0, 0, 0, 0, 1143, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, - 0, 0, 1156, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, - 1159, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 0, 0, 0, 0, 0, 0, 0, 1162, 291, + 0, 0, 0, 0, 304, 0, 0, 0, 0, 0, + 0, 0, 0, 1065, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 0, 0, 0, 0, 0, 0, + 0, 1091, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 0, 0, 0, 0, 0, 0, 0, 1131, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 0, 0, 0, 0, 0, 0, 0, 1133, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 0, - 0, 0, 0, 0, 0, 0, 1180, 291, 292, 293, + 302, 303, 0, 0, 0, 0, 304, 0, 0, 0, + 0, 0, 0, 0, 0, 1134, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 0, 0, 0, - 0, 0, 0, 0, 1182, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, - 0, 0, 1206, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, - 1208, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 0, 0, 0, 0, 0, 0, 0, 1210, 291, + 0, 0, 0, 0, 304, 0, 0, 0, 0, 0, + 0, 0, 0, 1146, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 0, 0, 0, 0, 0, 0, + 0, 1149, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 0, 0, 0, 0, 0, 0, 0, 1152, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 0, 0, 0, 0, 0, 0, 0, 1169, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 0, - 0, 0, 0, 0, 0, 0, 1220, 291, 292, 293, + 302, 303, 0, 0, 0, 0, 304, 0, 0, 0, + 0, 0, 0, 0, 0, 1171, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 459, 0, 0, - 0, 0, 540, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 0, 0, 0, 0, 0, 495, 291, + 0, 0, 0, 0, 304, 0, 0, 0, 0, 0, + 0, 0, 0, 1194, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 0, 0, 0, 0, 0, 0, + 0, 1196, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 0, 0, 0, 0, 0, 0, 0, 1198, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 0, 0, 0, 0, 0, 0, 0, 1208, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 0, - 0, 0, 0, 0, 540, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, - 541, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 0, 0, 0, 0, 0, 569, 291, 292, 293, + 302, 303, 0, 0, 0, 0, 304, 0, 457, 0, + 0, 0, 0, 537, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 0, 0, 0, 0, 0, 493, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 0, 0, 0, 0, 0, 537, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 0, 0, 0, - 0, 0, 614, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 0, 0, 0, 0, 0, 615, 291, + 0, 0, 0, 0, 304, 0, 0, 0, 0, 0, + 0, 538, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 0, 0, 0, 0, 0, 566, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 0, - 0, 0, 0, 0, 628, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, - 629, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 0, 0, 0, 0, 0, 630, 291, 292, 293, + 302, 303, 0, 0, 0, 0, 304, 0, 0, 0, + 0, 0, 0, 611, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 0, 0, 0, 0, 0, 612, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 0, 0, 0, 0, 0, 625, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 0, 0, 0, - 0, 0, 631, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 0, 0, 0, 0, 0, 632, 291, + 0, 0, 0, 0, 304, 0, 0, 0, 0, 0, + 0, 626, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 0, 0, 0, 0, 0, 627, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 0, - 0, 0, 0, 0, 633, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, - 721, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 0, 0, 0, 0, 0, 722, 291, 292, 293, + 302, 303, 0, 0, 0, 0, 304, 0, 0, 0, + 0, 0, 0, 628, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 0, 0, 0, 0, 0, 629, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 0, 0, 0, 0, 0, 630, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 0, 0, 0, - 0, 0, 723, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 0, 0, 0, 0, 0, 799, 291, + 0, 0, 0, 0, 304, 0, 0, 0, 0, 0, + 0, 717, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 0, 0, 0, 0, 0, 718, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 0, - 0, 0, 0, 0, 838, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, - 839, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 0, 0, 0, 0, 0, 862, 291, 292, 293, + 302, 303, 0, 0, 0, 0, 304, 0, 0, 0, + 0, 0, 0, 719, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 0, 0, 0, 0, 0, 795, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 0, 0, 0, 0, 0, 833, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 0, 0, 0, - 0, 0, 972, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 0, 0, 0, 0, 0, 973, 291, + 0, 0, 0, 0, 304, 0, 0, 0, 0, 0, + 0, 834, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 0, 0, 0, 0, 0, 857, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 0, - 0, 0, 0, 0, 993, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, - 1005, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 0, 0, 0, 0, 0, 1108, 291, 292, 293, + 302, 303, 0, 0, 0, 0, 304, 0, 0, 0, + 0, 0, 0, 966, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 0, 0, 0, 0, 0, 967, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 0, 0, 0, 0, 0, 987, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 0, 0, 0, - 0, 0, 1109, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 0, 0, 0, 0, 0, 1115, 291, + 0, 0, 0, 0, 304, 0, 0, 0, 0, 0, + 0, 1100, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 0, 0, 0, 0, 0, 1101, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 0, - 0, 0, 0, 0, 1121, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, - 1175, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 0, 0, 0, 0, 0, 1178, 291, 292, 293, + 302, 303, 0, 0, 0, 0, 304, 0, 0, 0, + 0, 0, 0, 1107, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 0, 0, 0, 0, 0, 1165, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 0, 0, 0, 0, 0, 1168, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 0, 0, 463, + 0, 0, 0, 0, 304, 0, 0, 0, 461, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 0, 0, 0, 0, 305, 0, - 0, 0, 574, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 0, 0, 578, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 0, 0, 0, 0, 305, 0, 0, 0, 593, 291, + 301, 302, 303, 0, 0, 0, 0, 304, 0, 0, + 0, 571, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 0, 0, 575, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 0, + 0, 0, 0, 304, 0, 0, 0, 590, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 0, - 0, 595, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 0, 0, 0, 0, - 305, 0, 0, 0, 597, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 0, 0, 599, 291, 292, + 302, 303, 0, 0, 0, 0, 304, 0, 0, 0, + 592, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 0, 0, 0, 0, 304, + 0, 0, 0, 594, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 0, 0, 596, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 0, 0, 0, 0, 305, 0, 0, 0, - 601, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 0, 0, 603, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 0, 0, - 0, 0, 305, 0, 0, 0, 605, 291, 292, 293, + 303, 0, 0, 0, 0, 304, 0, 0, 0, 598, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 0, 0, 600, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, + 0, 304, 0, 0, 0, 602, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 0, 0, 607, + 0, 0, 0, 0, 304, 0, 0, 0, 604, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 0, 0, 0, 0, 305, 0, - 0, 0, 609, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 0, 0, 611, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 0, 0, 0, 0, 305, 0, 0, 0, 613, 291, + 301, 302, 303, 0, 0, 0, 0, 304, 0, 0, + 0, 606, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 0, 0, 608, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 0, + 0, 0, 0, 304, 0, 0, 0, 610, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 0, - 0, 617, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 0, 0, 0, 0, - 305, 0, 0, 0, 619, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 0, 0, 621, 291, 292, + 302, 303, 0, 0, 0, 0, 304, 0, 0, 0, + 614, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 0, 0, 0, 0, 304, + 0, 0, 0, 616, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 0, 0, 618, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 0, 0, 0, 0, 305, 0, 0, 0, - 623, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 0, 0, 625, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 0, 0, - 0, 0, 305, 0, 0, 0, 627, 291, 292, 293, + 303, 0, 0, 0, 0, 304, 0, 0, 0, 620, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 0, 0, 622, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, + 0, 304, 0, 0, 0, 624, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 0, 0, 736, + 0, 0, 0, 0, 304, 0, 0, 0, 732, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 0, 0, 0, 0, 305, 0, - 0, 0, 737, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 0, 0, 739, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 0, 0, 0, 0, 305, 0, 0, 0, 740, 291, + 301, 302, 303, 0, 0, 0, 0, 304, 0, 0, + 0, 733, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 0, 0, 735, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 0, + 0, 0, 0, 304, 0, 0, 0, 736, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 0, - 0, 751, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 0, 0, 0, 0, - 305, 0, 0, 0, 775, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 0, 0, 878, 291, 292, + 302, 303, 0, 0, 0, 0, 304, 0, 0, 0, + 747, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 0, 0, 0, 0, 304, + 0, 0, 0, 771, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 0, 0, 873, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 0, 0, 0, 0, 305, 0, 0, 0, - 880, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 0, 0, 882, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 0, 0, - 0, 0, 305, 0, 0, 0, 884, 291, 292, 293, + 303, 0, 0, 0, 0, 304, 0, 0, 0, 875, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 0, 0, 877, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, + 0, 304, 0, 0, 0, 879, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 0, 0, 885, + 0, 0, 0, 0, 304, 0, 0, 0, 880, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 0, 0, 0, 0, 305, 0, - 0, 0, 986, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 459, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 0, 0, - 0, 0, 305, 0, 496, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 505, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 0, 0, 0, 0, 305, 0, 506, 291, 292, 293, + 301, 302, 303, 0, 0, 0, 0, 304, 0, 0, + 0, 980, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 457, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, + 0, 304, 0, 494, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 503, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 0, + 0, 0, 0, 304, 0, 504, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 508, 291, 292, + 0, 0, 0, 0, 304, 0, 506, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 0, 0, 0, 0, 305, 0, 510, 291, + 303, 0, 0, 0, 0, 304, 0, 508, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 511, + 302, 303, 0, 0, 0, 0, 304, 0, 509, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 0, 0, 0, 0, 305, 0, - 514, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 515, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 0, 0, 0, 0, - 305, 0, 522, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 565, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 0, 0, - 0, 0, 305, 0, 566, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 567, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 0, 0, 0, 0, 305, 0, 573, 291, 292, 293, + 301, 302, 303, 0, 0, 0, 0, 304, 0, 512, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 513, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 0, 0, 0, 0, 304, + 0, 562, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 563, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, + 0, 304, 0, 564, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 570, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 0, + 0, 0, 0, 304, 0, 589, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 592, 291, 292, + 0, 0, 0, 0, 304, 0, 591, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 0, 0, 0, 0, 305, 0, 594, 291, + 303, 0, 0, 0, 0, 304, 0, 593, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 596, + 302, 303, 0, 0, 0, 0, 304, 0, 595, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 0, 0, 0, 0, 305, 0, - 598, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 600, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 0, 0, 0, 0, - 305, 0, 602, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 604, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 0, 0, - 0, 0, 305, 0, 606, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 608, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 0, 0, 0, 0, 305, 0, 610, 291, 292, 293, + 301, 302, 303, 0, 0, 0, 0, 304, 0, 597, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 599, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 0, 0, 0, 0, 304, + 0, 601, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 603, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, + 0, 304, 0, 605, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 607, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 0, + 0, 0, 0, 304, 0, 609, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 612, 291, 292, + 0, 0, 0, 0, 304, 0, 613, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 0, 0, 0, 0, 305, 0, 616, 291, + 303, 0, 0, 0, 0, 304, 0, 615, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 618, + 302, 303, 0, 0, 0, 0, 304, 0, 617, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 0, 0, 0, 0, 305, 0, - 620, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 622, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 0, 0, 0, 0, - 305, 0, 624, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 626, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 0, 0, - 0, 0, 305, 0, 681, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 686, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 0, 0, 0, 0, 305, 0, 694, 291, 292, 293, + 301, 302, 303, 0, 0, 0, 0, 304, 0, 619, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 621, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 0, 0, 0, 0, 304, + 0, 623, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 678, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, + 0, 304, 0, 683, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 691, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 0, + 0, 0, 0, 304, 0, 693, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 697, 291, 292, + 0, 0, 0, 0, 304, 0, 694, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 0, 0, 0, 0, 305, 0, 698, 291, + 303, 0, 0, 0, 0, 304, 0, 700, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 704, + 302, 303, 0, 0, 0, 0, 304, 0, 707, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 0, 0, 0, 0, 305, 0, - 711, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 712, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 0, 0, 0, 0, - 305, 0, 713, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 735, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 0, 0, - 0, 0, 305, 0, 877, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 0, 0, 0, 305, 0, 879, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 0, 0, 0, 0, 305, 0, 881, 291, 292, 293, + 301, 302, 303, 0, 0, 0, 0, 304, 0, 708, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 709, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 0, 0, 0, 0, 304, + 0, 731, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304, 0, 872, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, + 0, 304, 0, 874, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 304, 0, 876, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 0, + 0, 0, 0, 304, 0, 878, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 0, 0, 0, 0, 305, 0, 883, 291, 292, + 0, 0, 0, 0, 304, 0, 883, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 0, 0, 0, 0, 305, 0, 888, 291, + 303, 0, 0, 0, 0, 304, 0, 1016, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 0, 0, 0, 0, 305, 0, 1023, + 302, 303, 0, 0, 0, 0, 304, 0, 1031, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 0, 0, 0, 0, 305, 0, - 1038, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 0, 0, 0, 0, 305, - 0, 1048, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 0, 0, 0, 0, - 305, 0, 1174, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 0, 0, 0, - 0, 305, 0, 1218, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 0, 0, - 0, 0, 305 + 301, 302, 303, 0, 0, 0, 0, 304, 0, 1041, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 304, 0, + 1164, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 0, 0, 0, 0, 304, + 0, 1206, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 304 }; static const yytype_int16 yycheck[] = { - 6, 362, 363, 185, 6, 5, 3, 280, 1057, 4, - 192, 267, 268, 269, 4, 7, 4, 4, 4, 656, - 4, 6, 45, 5, 71, 48, 4, 6, 51, 51, - 71, 213, 1081, 215, 71, 7, 4, 5, 4, 6, - 71, 4, 0, 6, 133, 4, 6, 162, 163, 123, - 124, 140, 6, 51, 6, 72, 6, 34, 35, 134, - 37, 78, 79, 133, 139, 139, 133, 141, 36, 37, - 38, 39, 187, 140, 42, 123, 124, 133, 66, 67, - 68, 69, 13, 731, 140, 134, 74, 123, 124, 77, - 139, 139, 133, 140, 6, 82, 83, 84, 85, 140, - 123, 124, 133, 140, 140, 100, 92, 93, 6, 140, - 133, 133, 6, 119, 120, 121, 55, 140, 124, 125, - 80, 113, 48, 129, 141, 51, 133, 53, 1177, 135, - 134, 128, 138, 92, 93, 139, 142, 143, 144, 145, - 140, 147, 148, 149, 150, 140, 152, 153, 154, 786, - 140, 157, 130, 131, 141, 140, 140, 135, 140, 137, - 133, 140, 130, 131, 142, 137, 120, 133, 120, 137, - 176, 177, 135, 123, 124, 123, 124, 7, 4, 185, - 6, 727, 133, 148, 135, 133, 1235, 152, 123, 124, - 463, 373, 140, 199, 200, 201, 173, 203, 175, 133, - 206, 207, 134, 209, 181, 140, 7, 139, 185, 45, - 392, 217, 48, 133, 7, 51, 133, 53, 224, 225, + 6, 266, 267, 268, 6, 279, 3, 1050, 360, 361, + 6, 6, 6, 13, 7, 7, 4, 6, 4, 6, + 653, 5, 4, 4, 4, 4, 161, 162, 5, 71, + 1073, 6, 6, 4, 72, 6, 72, 0, 72, 4, + 78, 79, 78, 79, 78, 79, 4, 72, 4, 5, + 134, 186, 51, 78, 79, 139, 72, 123, 124, 123, + 124, 71, 78, 79, 133, 48, 34, 35, 51, 37, + 53, 72, 184, 139, 6, 141, 140, 78, 79, 191, + 36, 37, 38, 39, 48, 80, 42, 51, 4, 53, + 6, 133, 123, 124, 82, 83, 84, 85, 140, 6, + 212, 134, 214, 141, 71, 141, 139, 141, 139, 6, + 141, 92, 93, 119, 120, 121, 141, 51, 124, 125, + 113, 100, 71, 129, 1167, 141, 120, 123, 124, 135, + 140, 128, 138, 120, 92, 93, 142, 143, 144, 145, + 141, 147, 148, 149, 150, 137, 152, 153, 154, 782, + 130, 131, 723, 141, 140, 135, 140, 137, 140, 55, + 133, 140, 142, 140, 135, 140, 140, 140, 133, 175, + 176, 130, 131, 140, 130, 131, 7, 45, 184, 1222, + 48, 137, 148, 51, 133, 53, 152, 461, 123, 124, + 133, 140, 198, 199, 200, 133, 202, 140, 133, 205, + 206, 72, 208, 133, 172, 140, 174, 78, 79, 134, + 216, 133, 180, 7, 139, 133, 184, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 72, 898, 72, 133, 270, 135, 78, 79, 78, 79, - 72, 133, 278, 135, 134, 133, 78, 79, 280, 139, - 110, 111, 112, 113, 7, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 130, 131, 51, 135, 850, 137, 51, 137, 314, 110, - 111, 112, 113, 278, 130, 131, 322, 110, 111, 112, - 113, 327, 578, 6, 7, 331, 332, 123, 124, 141, - 336, 141, 338, 339, 340, 72, 51, 130, 131, 141, - 346, 78, 79, 72, 140, 351, 352, 353, 72, 78, - 79, 53, 123, 124, 78, 79, 133, 8, 135, 365, - 366, 367, 368, 369, 370, 362, 363, 332, 139, 72, - 376, 123, 124, 379, 380, 78, 79, 383, 384, 385, - 133, 140, 638, 360, 361, 123, 124, 110, 111, 112, - 113, 72, 369, 125, 126, 127, 402, 78, 79, 405, - 132, 139, 404, 141, 141, 123, 124, 130, 131, 72, - 666, 51, 141, 72, 140, 78, 79, 141, 383, 78, - 79, 139, 4, 141, 72, 123, 124, 1064, 51, 143, - 78, 79, 123, 124, 148, 123, 124, 48, 152, 72, - 1088, 139, 1090, 72, 1092, 78, 79, 48, 139, 78, - 79, 139, 458, 123, 124, 125, 126, 127, 4, 465, - 141, 463, 132, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 133, 141, 135, - 4, 132, 141, 133, 4, 5, 123, 124, 494, 495, - 141, 497, 498, 141, 133, 501, 502, 503, 48, 123, - 124, 51, 139, 53, 464, 778, 779, 133, 141, 135, - 516, 133, 141, 519, 520, 139, 36, 37, 38, 39, - 526, 1169, 42, 123, 124, 531, 532, 533, 534, 494, - 123, 124, 6, 135, 540, 541, 155, 123, 124, 139, - 546, 133, 161, 162, 163, 4, 139, 5, 554, 140, - 556, 516, 133, 139, 123, 124, 133, 1205, 135, 1207, - 4, 1209, 539, 569, 278, 571, 572, 1215, 187, 188, - 139, 531, 532, 533, 534, 552, 578, 133, 36, 37, - 38, 39, 133, 1129, 42, 946, 1132, 123, 124, 1135, - 133, 1239, 135, 1241, 133, 1243, 135, 130, 131, 133, - 314, 135, 133, 139, 137, 532, 533, 534, 614, 615, - 133, 133, 135, 135, 133, 7, 135, 331, 332, 133, - 4, 6, 628, 629, 630, 631, 632, 633, 634, 6, - 6, 637, 130, 131, 6, 5, 642, 135, 133, 137, - 135, 133, 140, 649, 142, 133, 133, 135, 135, 133, - 906, 1197, 8, 659, 660, 661, 662, 663, 133, 130, - 131, 133, 140, 135, 135, 671, 137, 133, 133, 383, - 135, 142, 637, 133, 4, 135, 1222, 133, 133, 1225, - 135, 133, 1228, 135, 133, 1231, 692, 133, 139, 139, - 141, 141, 669, 140, 659, 660, 661, 662, 139, 139, - 141, 141, 139, 133, 141, 1251, 671, 1253, 133, 1255, - 8, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 139, 1084, 141, 140, 132, 692, 140, 114, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 371, + 893, 45, 72, 269, 48, 51, 72, 51, 78, 79, + 141, 277, 78, 79, 845, 7, 133, 279, 390, 110, + 111, 112, 113, 7, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 130, + 131, 133, 727, 133, 123, 124, 137, 313, 140, 134, + 575, 277, 123, 124, 139, 321, 110, 111, 112, 113, + 326, 140, 51, 8, 330, 331, 123, 124, 139, 335, + 336, 337, 338, 123, 124, 141, 130, 131, 344, 123, + 124, 133, 139, 349, 350, 351, 4, 130, 131, 133, + 140, 123, 124, 133, 137, 135, 140, 363, 364, 365, + 366, 367, 368, 360, 361, 331, 53, 139, 374, 141, + 635, 377, 378, 6, 7, 381, 382, 383, 110, 111, + 112, 113, 529, 530, 531, 51, 110, 111, 112, 113, + 358, 359, 140, 133, 400, 135, 155, 403, 663, 367, + 402, 160, 161, 162, 123, 124, 130, 131, 66, 67, + 68, 69, 134, 123, 124, 381, 74, 139, 48, 77, + 139, 133, 140, 135, 1057, 48, 51, 186, 187, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 133, 721, 722, 723, 132, 51, 6, - 53, 757, 758, 139, 4, 141, 6, 135, 114, 115, + 125, 126, 127, 51, 133, 72, 135, 132, 4, 4, + 456, 78, 79, 133, 123, 124, 141, 463, 72, 461, + 4, 123, 124, 6, 78, 79, 133, 462, 135, 72, + 139, 4, 5, 143, 72, 78, 79, 139, 148, 133, + 78, 79, 152, 133, 8, 72, 492, 493, 133, 495, + 496, 78, 79, 499, 500, 501, 135, 123, 124, 4, + 774, 775, 4, 36, 37, 38, 39, 6, 514, 42, + 7, 517, 518, 139, 141, 133, 133, 523, 135, 139, + 133, 141, 528, 529, 530, 531, 492, 141, 123, 124, + 140, 537, 538, 528, 529, 530, 531, 543, 141, 133, + 123, 124, 133, 141, 139, 551, 5, 553, 514, 1120, + 123, 124, 1123, 133, 141, 1126, 139, 4, 123, 124, + 566, 6, 568, 569, 6, 133, 139, 135, 536, 123, + 124, 123, 124, 575, 139, 5, 133, 36, 37, 38, + 39, 549, 133, 42, 135, 139, 133, 139, 940, 4, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 133, 611, 612, 277, 132, 123, + 124, 125, 126, 127, 133, 1186, 135, 141, 132, 625, + 626, 627, 628, 629, 630, 631, 133, 133, 634, 135, + 130, 131, 133, 639, 135, 135, 901, 137, 1209, 133, + 646, 1212, 142, 313, 1215, 140, 133, 1218, 135, 133, + 656, 657, 658, 659, 660, 1080, 133, 1082, 135, 1084, + 330, 331, 668, 133, 133, 1236, 135, 1238, 634, 1240, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 139, 775, 141, 140, 132, 779, 6, 137, - 494, 787, 139, 6, 141, 141, 140, 135, 502, 503, - 139, 135, 141, 799, 139, 95, 141, 803, 139, 139, - 141, 141, 516, 6, 139, 519, 141, 139, 139, 141, - 141, 139, 139, 141, 141, 821, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 6, 837, 838, 839, 132, 139, 134, 141, 6, 845, - 846, 460, 461, 849, 135, 4, 852, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 862, 863, 864, 139, - 132, 141, 139, 6, 141, 871, 139, 869, 141, 139, - 876, 141, 849, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 891, 139, 852, 141, 132, - 5, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 911, 140, 132, 527, 132, - 137, 917, 918, 8, 1096, 139, 922, 141, 139, 7, - 141, 135, 140, 637, 141, 931, 7, 140, 7, 7, - 890, 133, 133, 133, 133, 912, 942, 134, 7, 7, - 6, 92, 140, 139, 134, 659, 660, 661, 662, 946, - 134, 139, 6, 4, 960, 136, 95, 671, 7, 7, - 7, 1217, 968, 7, 95, 7, 972, 973, 7, 95, - 947, 7, 949, 7, 951, 7, 4, 6, 692, 137, - 141, 141, 942, 6, 137, 7, 7, 993, 1170, 1245, - 7, 1247, 133, 133, 140, 6, 4, 6, 136, 1005, - 6, 6, 6, 135, 7, 6, 120, 7, 968, 1265, - 51, 7, 7, 53, 7, 140, 7, 7, 1024, 114, + 126, 127, 133, 689, 135, 133, 132, 125, 126, 127, + 656, 657, 658, 659, 132, 135, 133, 6, 666, 458, + 459, 133, 668, 135, 133, 133, 135, 135, 133, 140, + 135, 381, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 689, 1076, 133, 140, 132, 130, 131, + 133, 140, 135, 135, 1159, 137, 6, 133, 140, 135, + 142, 139, 139, 141, 141, 140, 135, 753, 754, 717, + 718, 719, 135, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 135, 6, 137, 524, 132, 137, 1193, 771, + 1195, 140, 1197, 775, 139, 6, 141, 783, 1203, 139, + 139, 141, 141, 51, 139, 53, 141, 95, 139, 795, + 141, 6, 139, 799, 141, 139, 139, 141, 141, 139, + 1225, 141, 1227, 6, 1229, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 139, + 135, 141, 492, 132, 4, 6, 832, 833, 834, 140, + 500, 501, 5, 137, 840, 841, 132, 139, 844, 141, + 139, 847, 141, 4, 514, 6, 139, 517, 141, 7, + 140, 857, 858, 859, 139, 139, 141, 141, 135, 139, + 866, 141, 864, 141, 139, 871, 141, 139, 139, 141, + 141, 140, 139, 139, 141, 141, 844, 139, 7, 141, + 886, 847, 139, 7, 141, 7, 133, 133, 133, 133, + 885, 7, 134, 7, 6, 92, 6, 134, 134, 140, + 906, 139, 4, 136, 139, 95, 912, 913, 7, 7, + 7, 917, 7, 95, 7, 7, 95, 676, 677, 925, + 679, 7, 681, 682, 7, 4, 685, 686, 6, 137, + 936, 141, 141, 6, 140, 7, 7, 7, 137, 907, + 1205, 936, 133, 940, 133, 6, 4, 6, 954, 6, + 136, 6, 6, 120, 7, 6, 962, 135, 7, 7, + 966, 967, 51, 53, 634, 7, 1231, 962, 1233, 7, + 7, 7, 6, 941, 7, 943, 1088, 945, 737, 738, + 739, 987, 134, 134, 1249, 134, 656, 657, 658, 659, + 134, 7, 7, 7, 4, 6, 133, 140, 668, 140, + 6, 6, 6, 6, 51, 4, 4, 4, 133, 4, + 6, 1017, 6, 140, 134, 7, 137, 6, 58, 689, + 6, 140, 140, 140, 6, 6, 6, 1033, 6, 140, + 5, 1037, 4, 1039, 7, 6, 1042, 7, 7, 7, + 1046, 6, 6, 6, 803, 1051, 140, 91, 1160, 140, + 809, 7, 137, 6, 4, 6, 136, 6, 817, 818, + 819, 6, 6, 6, 823, 6, 6, 6, 6, 828, + 829, 830, 5, 1079, 6, 1081, 1042, 1083, 8, 1076, + 6, 840, 95, 6, 6, 6, 1092, 6, 6, 6, + 140, 4, 6, 139, 1100, 1101, 6, 5, 7, 6, + 6, 1107, 137, 49, 6, 6, 6, 1113, 6, 6, + 1116, 1079, 140, 1081, 6, 1083, 140, 6, 141, 140, + 140, 140, 7, 140, 6, 884, 6, 6, 90, 6, + 1136, 6, 93, 6, 6, 6, 6, 6, 140, 140, + 6, 1147, 6, 6, 1150, 6, 6, 1153, 141, 64, + 140, 1157, 6, 6, 6, 6, 141, 140, 6, 1165, + 6, 140, 1168, 140, 140, 6, 6, 6, 6, 928, + 929, 930, 931, 140, 6, 6, 6, 847, 6, 6, + 140, 140, 140, 140, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 957, 3, + 4, 6, 132, 6, 134, 9, 10, 11, 6, 968, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 6, 6, 6, 794, 1136, 802, 3, 3, 343, + 889, 45, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, + 132, -1, 66, 67, 68, 69, 70, -1, -1, -1, + 74, 1030, -1, 77, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, + -1, -1, 132, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, + 124, -1, -1, -1, 128, -1, -1, -1, 1087, 133, + -1, -1, -1, -1, 138, -1, -1, 141, -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 6, 1040, 7, 134, 132, 1044, 7, - 1046, 134, 134, 1049, 134, 7, 7, 1053, 4, 6, - 133, 140, 1058, 140, 6, 6, 6, 51, 6, 4, - 679, 680, 4, 682, 4, 684, 685, 8, 6, 688, - 689, 4, 6, 133, 137, 140, 134, 7, 6, 140, - 58, 1087, 6, 1089, 1049, 1091, 6, 1084, 140, 6, - 140, 6, 6, 5, 1100, 140, 4, 6, 136, 91, - 7, 7, 1108, 1109, 7, 7, 6, 140, 6, 1115, - 1087, 6, 1089, 140, 1091, 7, 1122, 137, 6, 1125, - 4, 6, 741, 742, 743, 6, 6, 6, 6, 6, - 6, 6, 6, 5, 7, 6, 6, 95, 852, 1145, - 6, 6, 6, 6, 6, 6, 4, 6, 49, 6, - 139, 1157, 140, 6, 1160, 137, 6, 1163, 5, 140, - 6, 1167, 6, 6, 6, 6, 6, 141, 6, 1175, - 140, 140, 1178, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 140, 807, 7, - 6, 132, 6, 6, 813, 6, 140, 140, 6, 90, - 93, 6, 6, 822, 823, 824, 6, 6, 140, 828, - 6, 140, 5, 64, 833, 834, 835, 6, 141, 140, - 6, 3, 4, 139, 798, 6, 845, 9, 10, 11, - 6, 6, 14, 15, 16, 17, 18, 19, 20, 21, + 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, + -1, -1, -1, 3, 4, 5, -1, 7, 1127, 9, + 10, 11, 1042, -1, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, + -1, -1, 42, -1, -1, -1, -1, -1, -1, -1, + -1, 3, 4, 5, -1, -1, -1, 9, 10, 11, + -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 6, 6, 6, 6, 5, 141, 6, - 6, 6, 6, 45, 6, 6, 5, 1145, 6, 6, - 889, 140, 140, 140, 6, 6, 6, 6, 6, 6, - 140, 6, 6, 139, 66, 67, 68, 69, 70, 141, - 806, 140, 74, 3, 3, 77, 894, -1, -1, 345, - -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 934, 935, 936, 937, 132, - 140, 140, -1, 140, 106, 107, 108, 109, 140, -1, - -1, -1, -1, -1, -1, 1049, -1, -1, -1, -1, - -1, 123, 124, -1, 963, -1, 128, -1, -1, -1, - -1, 133, -1, -1, -1, 974, 138, -1, -1, 141, - 3, 4, 5, -1, 7, -1, 9, 10, 11, -1, - -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, -1, 36, 37, 38, 39, -1, -1, 42, - -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, - 5, -1, -1, -1, 9, 10, 11, -1, 1037, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, + 100, -1, -1, -1, -1, -1, 106, 107, 108, 109, + 110, 111, 112, 113, 66, 67, 68, 69, 70, -1, + -1, -1, 74, 123, 124, 77, -1, -1, 128, -1, + 130, 131, -1, 133, -1, 135, -1, 137, 138, -1, + 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 45, -1, -1, -1, -1, -1, -1, 100, -1, -1, - -1, -1, -1, 106, 107, 108, 109, 110, 111, 112, - 113, 66, 67, 68, 69, 70, 1095, -1, -1, 74, - 123, 124, 77, -1, -1, 128, -1, 130, 131, -1, - 133, -1, 135, -1, 137, 138, -1, 140, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 106, 107, 108, 109, -1, -1, 1136, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 123, 124, - -1, -1, -1, 128, -1, -1, -1, -1, 133, -1, - 3, 4, -1, 138, -1, 140, 9, 10, 11, -1, - -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 45, -1, -1, -1, -1, 12, 13, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 66, 67, 68, 69, 70, -1, -1, - -1, 74, -1, -1, 77, -1, -1, -1, -1, -1, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - -1, 56, -1, 58, 59, -1, 61, 62, 63, -1, - -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 123, 124, 87, 88, 89, 128, -1, -1, -1, -1, - 133, -1, 3, 4, -1, 138, -1, 140, 9, 10, - 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 45, -1, 141, -1, -1, 12, - 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 66, 67, 68, 69, 70, - -1, -1, -1, 74, -1, -1, 77, -1, -1, -1, - -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, -1, 56, -1, 58, 59, -1, 61, 62, - 63, -1, -1, -1, -1, 106, 107, 108, 109, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 123, 124, 87, 88, 89, 128, -1, -1, - -1, -1, 133, -1, 3, 4, -1, 138, -1, 140, - 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 45, -1, 141, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 66, 67, 68, - 69, 70, -1, 3, 4, 74, -1, -1, 77, 9, + -1, 123, 124, -1, -1, -1, 128, -1, -1, -1, + -1, 133, -1, 3, 4, -1, 138, -1, 140, 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, -1, -1, 106, 107, 108, - 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 123, 124, -1, -1, -1, 128, - -1, -1, -1, -1, 133, -1, 3, 4, 5, 138, - -1, 140, 9, 10, 11, -1, -1, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, -1, 36, - 37, 38, 39, -1, -1, 42, 106, 107, 108, 109, - -1, -1, -1, 12, 13, -1, -1, -1, -1, -1, - -1, -1, -1, 123, 124, -1, -1, -1, 128, -1, - -1, -1, -1, 133, -1, -1, 136, -1, 138, -1, - 140, -1, -1, -1, -1, -1, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, -1, 56, -1, 58, - 59, -1, 61, 62, 63, -1, -1, -1, -1, 106, - 107, 108, 109, -1, -1, -1, -1, -1, -1, 6, - -1, -1, -1, -1, -1, -1, 123, 124, 87, 88, - 89, 128, -1, -1, -1, -1, 133, -1, 3, 4, - -1, 138, -1, 140, 9, 10, 11, -1, -1, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - -1, -1, -1, 3, 4, 12, 13, -1, -1, 9, - 10, 11, 141, -1, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, -1, -1, -1, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, -1, 56, - -1, 58, 59, -1, 61, 62, 63, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 106, 107, 108, 109, 132, -1, -1, -1, -1, - 87, 88, 89, -1, -1, -1, -1, -1, 123, 124, - -1, -1, -1, 128, -1, -1, -1, -1, 133, -1, - -1, 136, -1, 138, -1, 140, 106, 107, 108, 109, + 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 45, -1, -1, -1, -1, + 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 66, 67, 68, 69, + 70, -1, -1, -1, 74, -1, -1, 77, -1, -1, + -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, -1, 56, -1, 58, 59, -1, 61, + 62, 63, -1, -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 123, 124, -1, -1, -1, 128, 64, - -1, -1, -1, 133, 141, 3, 4, -1, 138, -1, + -1, -1, -1, 123, 124, 87, 88, 89, 128, -1, + -1, -1, -1, 133, -1, 3, 4, -1, 138, -1, 140, 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 45, -1, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, -1, -1, -1, -1, 132, 66, 67, - 68, 69, 70, -1, 3, 4, 74, -1, -1, 77, - 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, -1, -1, 106, 107, - 108, 109, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, - 128, 3, 4, 5, -1, 133, -1, 9, 10, 11, - 138, -1, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, -1, 36, 37, 38, 39, -1, -1, - 42, -1, -1, -1, -1, -1, -1, 106, 107, 108, - 109, -1, 12, 13, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 123, 124, -1, -1, -1, 128, - -1, -1, -1, -1, 133, -1, -1, -1, -1, 138, + -1, -1, -1, -1, -1, -1, -1, 45, -1, 141, + -1, -1, 12, 13, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 66, 67, + 68, 69, 70, -1, -1, -1, 74, -1, -1, 77, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, -1, 56, -1, 58, 59, - -1, 61, 62, 63, 106, 107, 108, 109, 12, 13, - 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 123, 124, -1, -1, -1, 128, 87, 88, 89, - -1, 133, -1, 6, -1, -1, 138, -1, -1, -1, + -1, 61, 62, 63, -1, -1, -1, -1, 106, 107, + 108, 109, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 123, 124, 87, 88, 89, + 128, -1, -1, -1, -1, 133, -1, 3, 4, -1, + 138, -1, 140, 9, 10, 11, -1, -1, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, + -1, 141, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 66, 67, 68, 69, 70, -1, 3, 4, 74, -1, + -1, 77, 9, 10, 11, -1, -1, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, -1, -1, + 106, 107, 108, 109, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 123, 124, -1, + -1, -1, 128, -1, -1, -1, -1, 133, -1, 3, + 4, 5, 138, -1, 140, 9, 10, 11, -1, -1, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, -1, 36, 37, 38, 39, -1, -1, 42, 106, + 107, 108, 109, -1, -1, -1, 12, 13, -1, -1, + -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, + -1, 128, -1, -1, -1, -1, 133, -1, -1, 136, + -1, 138, -1, 140, -1, -1, -1, -1, -1, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, -1, + 56, -1, 58, 59, -1, 61, 62, 63, -1, -1, + -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, + -1, -1, 6, -1, -1, -1, -1, -1, -1, 123, + 124, 87, 88, 89, 128, -1, -1, -1, -1, 133, + -1, 3, 4, -1, 138, -1, 140, 9, 10, 11, + -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, -1, -1, -1, 3, 4, 12, 13, + -1, -1, 9, 10, 11, 141, -1, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, -1, 56, 6, 58, 59, -1, 61, 62, 63, - -1, -1, -1, 12, 13, -1, -1, -1, -1, -1, + 54, -1, 56, -1, 58, 59, -1, 61, 62, 63, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 106, 107, 108, 109, 132, -1, + -1, -1, -1, 87, 88, 89, -1, -1, -1, -1, + -1, 123, 124, -1, -1, -1, 128, -1, -1, -1, + -1, 133, -1, -1, 136, -1, 138, -1, 140, 106, + 107, 108, 109, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, + -1, 128, 64, -1, -1, -1, 133, 141, 3, 4, + -1, 138, -1, 140, 9, 10, 11, -1, -1, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 141, -1, 87, 88, 89, 6, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 6, 56, -1, 58, - 59, -1, 61, 62, 63, -1, -1, -1, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 6, -1, -1, -1, 132, 141, 87, 88, - 89, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 6, -1, -1, -1, 132, + 45, -1, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, + 132, 66, 67, 68, 69, 70, -1, 3, 4, 74, + -1, -1, 77, 9, 10, 11, -1, -1, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, + -1, 106, 107, 108, 109, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 123, 124, + -1, -1, -1, 128, 3, 4, 5, -1, 133, -1, + 9, 10, 11, 138, -1, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, -1, 36, 37, 38, + 39, -1, -1, 42, -1, -1, -1, -1, -1, -1, + 106, 107, 108, 109, -1, 12, 13, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 123, 124, -1, + -1, -1, 128, -1, -1, -1, -1, 133, -1, -1, + -1, -1, 138, -1, -1, -1, -1, -1, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, -1, 56, + -1, 58, 59, -1, 61, 62, 63, 106, 107, 108, + 109, 12, 13, 6, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 123, 124, -1, -1, -1, 128, + 87, 88, 89, -1, 133, -1, 6, -1, -1, 138, + -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, -1, 56, 6, 58, 59, -1, + 61, 62, 63, -1, -1, -1, 12, 13, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 141, -1, 87, 88, 89, 6, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 6, + 56, -1, 58, 59, -1, 61, 62, 63, -1, -1, -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 6, -1, -1, -1, 132, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 141, -1, 114, 115, 116, 117, 118, 119, + 141, 87, 88, 89, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 6, -1, -1, -1, 132, -1, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, -1, 8, + 120, 121, 122, 123, 124, 125, 126, 127, 6, -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, -1, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 8, -1, -1, -1, 132, -1, + -1, -1, -1, -1, -1, 141, -1, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 8, -1, -1, -1, 132, -1, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 8, -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 8, -1, -1, - -1, 132, -1, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 8, -1, -1, - -1, 132, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 114, 115, 116, 117, + -1, 132, -1, -1, -1, -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - -1, -1, -1, -1, 132, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, - -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, - -1, -1, -1, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, - -1, 132, -1, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, -1, 0, 1, - -1, 132, 4, -1, -1, -1, -1, -1, -1, -1, - 12, 13, -1, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, - -1, 132, -1, 35, -1, -1, -1, -1, 40, 41, - 141, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, -1, 56, 57, 58, 59, 60, 61, - 62, 63, -1, 65, 66, 67, 68, 69, 70, -1, - 72, 73, 74, 75, 76, 77, -1, -1, 80, 81, - 4, -1, -1, -1, 86, 87, 88, 89, 12, 13, - 92, -1, 94, -1, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, -1, -1, -1, -1, -1, -1, - -1, 35, -1, -1, -1, -1, 40, 41, -1, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, -1, 56, 57, 58, 59, 60, 61, 62, 63, - -1, 65, 66, 67, 68, 69, 70, -1, 72, 73, - 74, 75, 76, 77, 12, 13, 80, 81, -1, -1, - -1, -1, 86, 87, 88, 89, -1, -1, 92, -1, - 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, -1, -1, -1, -1, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, -1, 56, -1, - 58, 59, -1, 61, 62, 63, -1, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, -1, -1, -1, -1, 132, -1, -1, -1, 87, - 88, 89, 139, -1, 141, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, - -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, - 139, -1, 141, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, - -1, 132, -1, -1, -1, -1, -1, -1, 139, -1, - 141, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -1, -1, -1, -1, 132, - -1, -1, -1, -1, -1, -1, -1, -1, 141, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, - -1, -1, -1, -1, -1, -1, 141, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, -1, -1, -1, -1, 132, -1, -1, -1, -1, - -1, -1, -1, -1, 141, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, - -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, - -1, -1, 141, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, - -1, 132, -1, -1, -1, -1, -1, -1, -1, -1, - 141, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -1, -1, -1, -1, 132, - -1, -1, -1, -1, -1, -1, -1, -1, 141, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, - -1, -1, -1, -1, -1, -1, 141, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, -1, -1, -1, -1, 132, -1, -1, -1, -1, - -1, -1, -1, -1, 141, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, - -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, - -1, -1, 141, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, - -1, 132, -1, -1, -1, -1, -1, -1, -1, -1, - 141, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -1, -1, -1, -1, 132, - -1, -1, -1, -1, -1, -1, -1, -1, 141, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, - -1, -1, -1, -1, -1, -1, 141, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, -1, -1, -1, -1, 132, -1, -1, -1, -1, - -1, -1, -1, -1, 141, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, - -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, - -1, -1, 141, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, - -1, 132, -1, -1, -1, -1, -1, -1, -1, -1, - 141, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -1, -1, -1, -1, 132, - -1, -1, -1, -1, -1, -1, -1, -1, 141, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, - -1, -1, -1, -1, -1, -1, 141, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, -1, -1, -1, -1, 132, -1, -1, -1, -1, - -1, -1, -1, -1, 141, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, - -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, - -1, -1, 141, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, - -1, 132, -1, -1, -1, -1, -1, -1, -1, -1, - 141, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -1, -1, -1, -1, 132, - -1, -1, -1, -1, -1, -1, -1, -1, 141, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, - -1, -1, -1, -1, -1, -1, 141, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, -1, -1, -1, -1, 132, -1, 134, -1, -1, - -1, -1, 139, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, - -1, 132, -1, -1, -1, -1, -1, -1, 139, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, - -1, -1, -1, -1, 139, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, - -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, - 139, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -1, -1, -1, -1, 132, - -1, -1, -1, -1, -1, -1, 139, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, -1, -1, -1, -1, 132, -1, -1, -1, -1, - -1, -1, 139, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, - -1, 132, -1, -1, -1, -1, -1, -1, 139, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, - -1, -1, -1, -1, 139, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, - -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, - 139, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -1, -1, -1, -1, 132, - -1, -1, -1, -1, -1, -1, 139, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, -1, -1, -1, -1, 132, -1, -1, -1, -1, - -1, -1, 139, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, - -1, 132, -1, -1, -1, -1, -1, -1, 139, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, - -1, -1, -1, -1, 139, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, - -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, - 139, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -1, -1, -1, -1, 132, - -1, -1, -1, -1, -1, -1, 139, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, -1, -1, -1, -1, 132, -1, -1, -1, -1, - -1, -1, 139, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, - -1, 132, -1, -1, -1, -1, -1, -1, 139, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, - -1, -1, -1, -1, 139, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, - -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, - 139, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -1, -1, -1, -1, 132, - -1, -1, -1, -1, -1, -1, 139, 114, 115, 116, + 8, -1, -1, -1, 132, -1, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 8, -1, -1, -1, 132, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, -1, -1, -1, -1, 132, -1, -1, -1, -1, - -1, -1, 139, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, - -1, 132, -1, -1, -1, -1, -1, -1, 139, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, - -1, -1, -1, -1, 139, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, - -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, - 139, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -1, -1, -1, -1, 132, - -1, -1, -1, -1, -1, -1, 139, 114, 115, 116, + 127, 8, -1, -1, -1, 132, -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, -1, -1, - -1, -1, 139, 114, 115, 116, 117, 118, 119, 120, + -1, -1, -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, - -1, 132, -1, -1, -1, -1, -1, -1, 139, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, - -1, -1, -1, -1, 139, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, - -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, - 139, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, -1, -1, -1, -1, 132, - -1, -1, -1, -1, -1, -1, 139, 114, 115, 116, + -1, 132, -1, -1, -1, -1, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + -1, -1, -1, -1, 132, -1, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + -1, 0, 1, -1, 132, 4, -1, -1, -1, -1, + -1, -1, -1, 12, 13, -1, -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, -1, -1, -1, -1, 132, -1, -1, -1, 136, + 127, -1, -1, -1, -1, 132, 35, -1, -1, -1, + -1, 40, 41, -1, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, + 59, 60, 61, 62, 63, -1, 65, 66, 67, 68, + 69, 70, -1, 72, 73, 74, 75, 76, 77, -1, + -1, 80, 81, 4, -1, -1, -1, 86, 87, 88, + 89, 12, 13, 92, -1, 94, -1, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, -1, -1, -1, + -1, -1, -1, -1, 35, -1, -1, -1, -1, 40, + 41, -1, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, -1, 56, 57, 58, 59, 60, + 61, 62, 63, -1, 65, 66, 67, 68, 69, 70, + -1, 72, 73, 74, 75, 76, 77, 12, 13, 80, + 81, -1, -1, -1, -1, 86, 87, 88, 89, -1, + -1, 92, -1, 94, -1, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, -1, -1, -1, -1, -1, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + -1, 56, -1, 58, 59, -1, 61, 62, 63, -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, - -1, -1, 136, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, - -1, 132, -1, -1, -1, 136, 114, 115, 116, 117, + -1, -1, 87, 88, 89, 139, -1, 141, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, -1, -1, -1, -1, 132, -1, -1, -1, + -1, -1, -1, 139, -1, 141, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + -1, -1, -1, -1, 132, -1, -1, -1, -1, -1, + -1, 139, -1, 141, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, + -1, -1, 132, -1, -1, -1, -1, -1, -1, -1, + -1, 141, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, + 132, -1, -1, -1, -1, -1, -1, -1, -1, 141, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, + -1, -1, -1, -1, -1, -1, -1, 141, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, -1, -1, -1, -1, 132, -1, -1, -1, + -1, -1, -1, -1, -1, 141, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + -1, -1, -1, -1, 132, -1, -1, -1, -1, -1, + -1, -1, -1, 141, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, + -1, -1, 132, -1, -1, -1, -1, -1, -1, -1, + -1, 141, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, + 132, -1, -1, -1, -1, -1, -1, -1, -1, 141, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, + -1, -1, -1, -1, -1, -1, -1, 141, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, -1, -1, -1, -1, 132, -1, -1, -1, + -1, -1, -1, -1, -1, 141, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + -1, -1, -1, -1, 132, -1, -1, -1, -1, -1, + -1, -1, -1, 141, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, + -1, -1, 132, -1, -1, -1, -1, -1, -1, -1, + -1, 141, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, + 132, -1, -1, -1, -1, -1, -1, -1, -1, 141, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, + -1, -1, -1, -1, -1, -1, -1, 141, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, -1, -1, -1, -1, 132, -1, -1, -1, + -1, -1, -1, -1, -1, 141, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + -1, -1, -1, -1, 132, -1, -1, -1, -1, -1, + -1, -1, -1, 141, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, + -1, -1, 132, -1, -1, -1, -1, -1, -1, -1, + -1, 141, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, + 132, -1, -1, -1, -1, -1, -1, -1, -1, 141, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, + -1, -1, -1, -1, -1, -1, -1, 141, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, -1, -1, -1, -1, 132, -1, -1, -1, + -1, -1, -1, -1, -1, 141, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + -1, -1, -1, -1, 132, -1, -1, -1, -1, -1, + -1, -1, -1, 141, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, + -1, -1, 132, -1, -1, -1, -1, -1, -1, -1, + -1, 141, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, + 132, -1, -1, -1, -1, -1, -1, -1, -1, 141, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, + -1, -1, -1, -1, -1, -1, -1, 141, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, -1, -1, -1, -1, 132, -1, 134, -1, + -1, -1, -1, 139, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, + -1, -1, 132, -1, -1, -1, -1, -1, -1, 139, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, + -1, -1, -1, -1, -1, 139, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + -1, -1, -1, -1, 132, -1, -1, -1, -1, -1, + -1, 139, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, + 132, -1, -1, -1, -1, -1, -1, 139, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, -1, -1, -1, -1, 132, -1, -1, -1, + -1, -1, -1, 139, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, + -1, -1, 132, -1, -1, -1, -1, -1, -1, 139, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, + -1, -1, -1, -1, -1, 139, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + -1, -1, -1, -1, 132, -1, -1, -1, -1, -1, + -1, 139, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, + 132, -1, -1, -1, -1, -1, -1, 139, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, -1, -1, -1, -1, 132, -1, -1, -1, + -1, -1, -1, 139, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, + -1, -1, 132, -1, -1, -1, -1, -1, -1, 139, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, + -1, -1, -1, -1, -1, 139, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + -1, -1, -1, -1, 132, -1, -1, -1, -1, -1, + -1, 139, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, + 132, -1, -1, -1, -1, -1, -1, 139, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, -1, -1, -1, -1, 132, -1, -1, -1, + -1, -1, -1, 139, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, + -1, -1, 132, -1, -1, -1, -1, -1, -1, 139, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, + -1, -1, -1, -1, -1, 139, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + -1, -1, -1, -1, 132, -1, -1, -1, -1, -1, + -1, 139, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, + 132, -1, -1, -1, -1, -1, -1, 139, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, -1, -1, -1, -1, 132, -1, -1, -1, + -1, -1, -1, 139, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, + -1, -1, 132, -1, -1, -1, -1, -1, -1, 139, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, + -1, -1, -1, -1, -1, 139, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + -1, -1, -1, -1, 132, -1, -1, -1, -1, -1, + -1, 139, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, + 132, -1, -1, -1, -1, -1, -1, 139, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, -1, -1, -1, -1, 132, -1, -1, -1, + -1, -1, -1, 139, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, + -1, -1, 132, -1, -1, -1, -1, -1, -1, 139, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, + -1, -1, -1, -1, -1, 139, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, -1, 136, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, @@ -2647,6 +2628,15 @@ static const yytype_int16 yycheck[] = 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, -1, 136, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, + -1, 132, -1, -1, -1, 136, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + -1, -1, -1, -1, 132, -1, -1, -1, 136, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, -1, -1, -1, -1, 132, -1, -1, + -1, 136, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, + 132, -1, 134, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, 134, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, @@ -2751,11 +2741,7 @@ static const yytype_int16 yycheck[] = 123, 124, 125, 126, 127, -1, -1, -1, -1, 132, -1, 134, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, - 132, -1, 134, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, -1, -1, -1, - -1, 132, -1, 134, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, -1, -1, - -1, -1, 132 + 132 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -2777,119 +2763,117 @@ static const yytype_uint8 yystos[] = 124, 128, 130, 131, 133, 135, 137, 138, 140, 165, 166, 207, 208, 220, 13, 51, 133, 6, 140, 6, 6, 6, 133, 140, 133, 133, 71, 133, 140, 133, - 133, 71, 140, 133, 133, 55, 51, 133, 51, 51, - 51, 48, 51, 53, 53, 45, 48, 51, 53, 48, - 51, 53, 133, 140, 123, 124, 133, 140, 209, 210, - 209, 140, 45, 48, 51, 140, 209, 51, 51, 48, - 4, 100, 140, 4, 6, 48, 4, 4, 4, 133, - 133, 133, 4, 140, 216, 4, 133, 133, 6, 135, - 4, 4, 5, 140, 5, 140, 4, 135, 137, 142, - 166, 140, 5, 220, 133, 135, 133, 135, 133, 135, - 133, 135, 133, 135, 133, 135, 133, 135, 133, 135, - 133, 135, 133, 135, 133, 135, 133, 135, 133, 135, - 133, 135, 133, 135, 133, 135, 133, 135, 133, 135, - 133, 135, 133, 135, 133, 135, 133, 133, 133, 133, - 7, 133, 4, 207, 207, 207, 207, 136, 140, 207, - 4, 92, 93, 4, 4, 176, 177, 178, 207, 6, - 6, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 132, 6, 6, 207, 5, - 207, 207, 4, 45, 124, 176, 184, 207, 214, 215, - 207, 207, 133, 207, 215, 207, 207, 133, 215, 207, - 207, 124, 140, 207, 212, 214, 133, 207, 140, 133, - 133, 5, 212, 213, 213, 213, 133, 172, 173, 174, - 175, 133, 133, 133, 4, 209, 209, 209, 207, 207, - 123, 124, 140, 140, 209, 140, 140, 140, 123, 124, - 133, 178, 209, 140, 213, 212, 133, 4, 6, 135, - 135, 178, 6, 140, 135, 135, 6, 207, 207, 207, - 137, 207, 140, 95, 207, 207, 207, 6, 6, 178, - 6, 178, 135, 207, 4, 140, 150, 6, 207, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 133, 71, 140, 133, 133, 55, 51, 51, 51, 51, + 48, 51, 53, 53, 45, 48, 51, 53, 48, 51, + 53, 133, 140, 123, 124, 133, 140, 209, 210, 209, + 140, 45, 48, 51, 140, 209, 51, 51, 48, 4, + 100, 140, 4, 6, 48, 4, 4, 4, 133, 133, + 133, 4, 140, 216, 4, 133, 133, 6, 135, 4, + 4, 5, 140, 5, 140, 4, 135, 137, 142, 166, + 140, 5, 220, 133, 135, 133, 135, 133, 135, 133, + 135, 133, 135, 133, 135, 133, 135, 133, 135, 133, + 135, 133, 135, 133, 135, 133, 135, 133, 135, 133, + 135, 133, 135, 133, 135, 133, 135, 133, 135, 133, + 135, 133, 135, 133, 135, 133, 133, 133, 133, 7, + 133, 4, 207, 207, 207, 207, 136, 140, 207, 4, + 92, 93, 4, 4, 176, 177, 178, 207, 6, 6, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 132, 6, 6, 207, 5, 207, + 207, 4, 45, 124, 176, 184, 207, 214, 215, 207, + 207, 133, 207, 215, 207, 207, 133, 215, 207, 207, + 124, 140, 207, 212, 214, 133, 140, 133, 133, 5, + 212, 213, 213, 213, 133, 172, 173, 174, 175, 133, + 133, 133, 4, 209, 209, 209, 207, 207, 123, 124, + 140, 140, 209, 140, 140, 140, 123, 124, 133, 178, + 209, 140, 213, 212, 133, 4, 6, 135, 135, 178, + 6, 140, 135, 135, 6, 207, 207, 207, 137, 207, + 140, 95, 207, 207, 207, 6, 6, 178, 6, 178, + 135, 207, 4, 140, 150, 6, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 4, 219, 220, 219, 219, 219, 207, 5, 135, 134, - 7, 113, 215, 136, 7, 165, 166, 137, 7, 135, - 141, 45, 48, 51, 53, 171, 6, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 4, 219, + 220, 219, 219, 219, 207, 5, 135, 134, 7, 113, + 215, 136, 7, 165, 166, 137, 7, 135, 141, 45, + 48, 51, 53, 171, 6, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 6, 134, 139, 139, 134, 135, 140, 207, - 214, 8, 125, 139, 141, 134, 134, 207, 134, 141, - 134, 134, 207, 141, 134, 134, 140, 141, 215, 125, - 7, 207, 134, 207, 207, 207, 7, 7, 202, 202, - 207, 133, 133, 133, 133, 207, 207, 207, 134, 139, - 139, 139, 209, 209, 177, 177, 139, 207, 207, 207, - 207, 188, 139, 178, 7, 203, 7, 207, 6, 207, - 207, 141, 215, 207, 207, 134, 134, 134, 92, 139, - 178, 140, 8, 134, 136, 141, 141, 207, 136, 166, - 207, 4, 82, 83, 84, 85, 141, 153, 157, 160, - 162, 163, 134, 136, 134, 136, 134, 136, 134, 136, - 134, 136, 134, 136, 134, 136, 134, 136, 134, 136, - 134, 136, 134, 136, 139, 139, 134, 136, 134, 136, - 134, 136, 134, 136, 134, 136, 134, 136, 139, 139, - 139, 139, 139, 139, 135, 137, 134, 139, 139, 134, - 134, 6, 139, 207, 212, 212, 141, 7, 137, 165, - 166, 220, 207, 6, 4, 4, 140, 217, 136, 140, - 140, 140, 140, 8, 6, 120, 147, 215, 207, 7, - 136, 140, 207, 207, 207, 214, 207, 214, 95, 7, - 7, 134, 7, 95, 7, 7, 134, 95, 7, 7, - 215, 141, 140, 207, 134, 7, 141, 134, 134, 207, - 212, 4, 201, 6, 134, 168, 207, 220, 168, 168, - 168, 134, 134, 134, 137, 209, 207, 207, 141, 141, - 207, 139, 139, 139, 72, 78, 79, 198, 199, 209, - 141, 185, 207, 6, 207, 134, 136, 136, 141, 136, - 136, 7, 7, 7, 137, 207, 141, 207, 207, 7, - 137, 136, 137, 166, 219, 141, 154, 133, 133, 140, - 164, 6, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 4, 215, 219, 207, 136, 6, 6, 136, 4, - 92, 93, 207, 6, 6, 6, 7, 135, 216, 218, - 6, 215, 215, 215, 215, 207, 120, 219, 134, 139, - 209, 215, 141, 8, 51, 212, 212, 7, 212, 51, - 53, 212, 212, 7, 53, 212, 212, 141, 215, 6, - 7, 140, 7, 7, 7, 64, 200, 6, 7, 134, - 134, 134, 134, 7, 7, 7, 4, 139, 139, 139, - 141, 209, 209, 209, 6, 140, 133, 141, 199, 139, - 198, 6, 140, 6, 6, 51, 6, 6, 212, 212, - 212, 4, 139, 8, 8, 134, 4, 4, 6, 4, - 6, 133, 207, 207, 211, 212, 140, 134, 136, 134, - 136, 134, 136, 134, 136, 136, 134, 134, 134, 165, - 7, 165, 166, 137, 7, 6, 216, 207, 139, 141, - 141, 141, 141, 141, 6, 6, 147, 207, 6, 141, - 207, 140, 58, 170, 170, 212, 6, 140, 140, 6, - 6, 212, 140, 6, 6, 141, 5, 207, 212, 212, - 212, 4, 6, 212, 7, 7, 7, 7, 212, 212, - 212, 6, 7, 207, 207, 207, 140, 139, 141, 139, - 141, 139, 141, 207, 212, 207, 207, 209, 141, 215, - 140, 6, 6, 91, 207, 207, 207, 6, 7, 166, - 151, 207, 139, 139, 139, 141, 152, 207, 137, 212, - 220, 207, 6, 4, 217, 6, 136, 216, 6, 6, - 6, 6, 219, 139, 136, 207, 209, 6, 6, 6, - 207, 207, 6, 207, 5, 139, 6, 6, 95, 169, - 207, 6, 212, 212, 212, 212, 6, 4, 6, 6, - 207, 220, 141, 134, 139, 141, 177, 209, 6, 189, - 209, 6, 190, 209, 6, 191, 141, 139, 134, 141, - 139, 141, 207, 212, 139, 141, 8, 141, 134, 140, - 207, 220, 134, 139, 207, 207, 212, 140, 139, 141, - 4, 6, 6, 6, 7, 6, 137, 6, 207, 141, - 141, 141, 141, 5, 207, 49, 6, 6, 6, 6, - 6, 140, 6, 6, 140, 207, 141, 139, 140, 139, - 140, 139, 140, 6, 212, 7, 140, 207, 6, 141, - 90, 207, 207, 215, 6, 6, 155, 207, 139, 139, - 211, 207, 6, 216, 93, 139, 6, 6, 6, 6, - 6, 139, 140, 211, 177, 139, 141, 207, 209, 198, - 207, 209, 198, 207, 209, 198, 139, 141, 212, 178, - 141, 207, 141, 141, 141, 140, 207, 207, 141, 6, - 207, 5, 207, 141, 141, 207, 141, 139, 141, 141, + 6, 134, 139, 139, 134, 135, 140, 207, 214, 8, + 125, 139, 141, 134, 134, 207, 134, 141, 134, 134, + 207, 141, 134, 134, 140, 141, 215, 125, 7, 207, + 207, 207, 207, 7, 7, 202, 202, 207, 133, 133, + 133, 133, 207, 207, 207, 134, 139, 139, 139, 209, + 209, 177, 177, 139, 207, 207, 207, 207, 188, 139, + 178, 7, 203, 7, 207, 6, 207, 207, 141, 215, + 207, 207, 134, 134, 134, 92, 139, 178, 140, 8, + 134, 136, 141, 141, 207, 136, 166, 207, 4, 82, + 83, 84, 85, 141, 153, 157, 160, 162, 163, 134, + 136, 134, 136, 134, 136, 134, 136, 134, 136, 134, + 136, 134, 136, 134, 136, 134, 136, 134, 136, 134, + 136, 139, 139, 134, 136, 134, 136, 134, 136, 134, + 136, 134, 136, 134, 136, 139, 139, 139, 139, 139, + 139, 135, 137, 134, 139, 139, 134, 134, 6, 139, + 207, 212, 212, 141, 7, 137, 165, 166, 220, 207, + 6, 4, 4, 140, 217, 136, 140, 140, 140, 140, + 8, 6, 120, 147, 215, 207, 7, 136, 140, 207, + 207, 207, 214, 207, 214, 95, 7, 7, 134, 7, + 95, 7, 7, 134, 95, 7, 7, 215, 141, 140, + 207, 134, 141, 134, 134, 207, 212, 4, 201, 6, + 134, 168, 207, 220, 168, 168, 168, 134, 134, 134, + 137, 209, 207, 207, 141, 141, 207, 139, 139, 139, + 72, 78, 79, 198, 199, 209, 141, 185, 207, 6, + 207, 134, 136, 136, 141, 136, 136, 7, 7, 7, + 137, 207, 141, 207, 207, 7, 137, 136, 137, 166, + 219, 141, 154, 133, 133, 140, 164, 6, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 4, 215, 219, + 207, 136, 6, 6, 136, 4, 92, 93, 207, 6, + 6, 6, 7, 135, 216, 218, 6, 215, 215, 215, + 215, 207, 120, 219, 134, 139, 209, 215, 141, 8, + 51, 212, 212, 7, 212, 51, 53, 212, 212, 7, + 53, 212, 212, 141, 215, 6, 7, 7, 7, 7, + 64, 200, 6, 7, 134, 134, 134, 134, 7, 7, + 7, 4, 139, 139, 139, 141, 209, 209, 209, 6, + 140, 133, 141, 199, 139, 198, 6, 140, 6, 6, + 51, 6, 6, 212, 212, 212, 4, 139, 8, 8, + 134, 4, 4, 6, 4, 6, 133, 207, 207, 211, + 212, 140, 134, 136, 134, 136, 134, 136, 134, 136, + 136, 134, 134, 134, 165, 7, 165, 166, 137, 7, + 6, 216, 207, 139, 141, 141, 141, 141, 141, 6, + 6, 147, 207, 6, 141, 207, 140, 58, 170, 170, + 212, 6, 140, 140, 6, 6, 212, 140, 6, 6, + 141, 5, 212, 212, 212, 4, 6, 212, 7, 7, + 7, 7, 212, 212, 212, 6, 7, 207, 207, 207, + 140, 139, 141, 139, 141, 139, 141, 207, 212, 207, + 207, 209, 141, 215, 140, 6, 6, 91, 207, 207, + 207, 6, 7, 166, 151, 207, 139, 139, 139, 141, + 152, 207, 137, 212, 220, 207, 6, 4, 217, 6, + 136, 216, 6, 6, 6, 6, 219, 139, 136, 207, + 209, 6, 6, 6, 207, 207, 6, 207, 5, 6, + 6, 95, 169, 207, 6, 212, 212, 212, 212, 6, + 4, 6, 6, 207, 220, 141, 134, 139, 141, 177, + 209, 6, 189, 209, 6, 190, 209, 6, 191, 141, + 139, 134, 141, 139, 141, 207, 212, 139, 141, 8, + 141, 134, 140, 207, 220, 134, 139, 207, 207, 212, + 140, 139, 141, 4, 6, 6, 6, 7, 6, 137, + 6, 207, 141, 141, 141, 141, 5, 49, 6, 6, + 6, 6, 6, 140, 6, 6, 140, 207, 141, 139, + 140, 139, 140, 139, 140, 6, 212, 7, 140, 207, + 6, 141, 90, 207, 207, 215, 6, 6, 155, 207, + 139, 139, 211, 207, 6, 216, 93, 139, 6, 6, + 6, 6, 6, 140, 211, 177, 139, 141, 207, 209, + 198, 207, 209, 198, 207, 209, 198, 139, 141, 212, + 178, 141, 207, 141, 141, 141, 140, 207, 207, 141, + 6, 207, 207, 141, 141, 207, 141, 139, 141, 141, 139, 141, 141, 139, 141, 212, 6, 64, 141, 186, - 140, 6, 6, 152, 134, 139, 6, 140, 139, 139, - 141, 6, 141, 6, 192, 207, 6, 6, 193, 207, - 6, 6, 194, 207, 6, 141, 207, 198, 178, 141, - 158, 207, 211, 207, 5, 140, 141, 140, 141, 140, - 141, 6, 6, 141, 141, 187, 6, 140, 134, 141, - 141, 139, 198, 6, 195, 198, 6, 196, 198, 6, - 197, 198, 156, 219, 161, 140, 6, 5, 141, 140, - 141, 140, 141, 140, 141, 139, 141, 140, 211, 141, - 6, 198, 6, 198, 6, 198, 219, 6, 159, 219, - 141, 6, 141, 141, 141, 139, 141, 6, 6, 6, - 6, 219, 6 + 140, 6, 6, 152, 134, 139, 6, 140, 139, 141, + 6, 141, 6, 192, 207, 6, 6, 193, 207, 6, + 6, 194, 207, 6, 141, 207, 198, 178, 141, 158, + 207, 211, 207, 140, 141, 140, 141, 140, 141, 6, + 6, 141, 141, 187, 6, 140, 134, 141, 141, 198, + 6, 195, 198, 6, 196, 198, 6, 197, 198, 156, + 219, 161, 140, 6, 141, 140, 141, 140, 141, 140, + 141, 139, 141, 140, 211, 6, 198, 6, 198, 6, + 198, 219, 6, 159, 219, 141, 141, 141, 141, 139, + 141, 6, 6, 6, 6, 219, 6 }; #define yyerrok (yyerrstatus = 0) @@ -4892,29 +4876,7 @@ yyreduce: break; case 100: -#line 1151 "Gmsh.y" - { - int num = (int)(yyvsp[(3) - (17)].d); - if(FindCurve(num)){ - yymsg(0, "Curve %d already exists", num); - } - else{ - Curve *c = Create_Curve(num, MSH_SEGM_PARAMETRIC, 2, NULL, NULL, - -1, -1, (yyvsp[(7) - (17)].d), (yyvsp[(9) - (17)].d)); - strcpy(c->functu, (yyvsp[(11) - (17)].c)); - strcpy(c->functv, (yyvsp[(13) - (17)].c)); - strcpy(c->functw, (yyvsp[(15) - (17)].c)); - Tree_Add(GModel::current()->getGEOInternals()->Curves, &c); - CreateReversedCurve(c); - } - Free((yyvsp[(11) - (17)].c)); Free((yyvsp[(13) - (17)].c)); Free((yyvsp[(15) - (17)].c)); - (yyval.s).Type = MSH_SEGM_PARAMETRIC; - (yyval.s).Num = num; - ;} - break; - - case 101: -#line 1170 "Gmsh.y" +#line 1150 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindCurve(num)){ @@ -4934,8 +4896,8 @@ yyreduce: ;} break; - case 102: -#line 1188 "Gmsh.y" + case 101: +#line 1168 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindCurve(num)){ @@ -4955,8 +4917,8 @@ yyreduce: ;} break; - case 103: -#line 1206 "Gmsh.y" + case 102: +#line 1186 "Gmsh.y" { int num = (int)(yyvsp[(3) - (11)].d); if(List_Nbr((yyvsp[(6) - (11)].l)) + (int)(yyvsp[(10) - (11)].d) + 1 != List_Nbr((yyvsp[(8) - (11)].l))){ @@ -4984,8 +4946,8 @@ yyreduce: ;} break; - case 104: -#line 1232 "Gmsh.y" + case 103: +#line 1212 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindEdgeLoop(num)){ @@ -5004,15 +4966,15 @@ yyreduce: ;} break; - case 105: -#line 1249 "Gmsh.y" + case 104: +#line 1229 "Gmsh.y" { curPhysDim = 1; ;} break; - case 106: -#line 1253 "Gmsh.y" + case 105: +#line 1233 "Gmsh.y" { int num = (int)(yyvsp[(5) - (9)].i); if(FindPhysicalGroup(num, MSH_PHYSICAL_LINE)){ @@ -5030,8 +4992,8 @@ yyreduce: ;} break; - case 107: -#line 1272 "Gmsh.y" + case 106: +#line 1252 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindSurface(num)){ @@ -5051,8 +5013,8 @@ yyreduce: ;} break; - case 108: -#line 1290 "Gmsh.y" + case 107: +#line 1270 "Gmsh.y" { int num = (int)(yyvsp[(4) - (9)].d), type = 0; if(FindSurface(num)){ @@ -5093,8 +5055,8 @@ yyreduce: ;} break; - case 109: -#line 1329 "Gmsh.y" + case 108: +#line 1309 "Gmsh.y" { myGmshSurface = 0; (yyval.s).Type = 0; @@ -5102,8 +5064,8 @@ yyreduce: ;} break; - case 110: -#line 1335 "Gmsh.y" + case 109: +#line 1315 "Gmsh.y" { myGmshSurface = gmshSurface::getSurface((int)(yyvsp[(3) - (4)].d)); (yyval.s).Type = 0; @@ -5111,8 +5073,8 @@ yyreduce: ;} break; - case 111: -#line 1341 "Gmsh.y" + case 110: +#line 1321 "Gmsh.y" { int num = (int)(yyvsp[(4) - (10)].d); myGmshSurface = gmshParametricSurface::NewParametricSurface(num, (yyvsp[(7) - (10)].c), (yyvsp[(8) - (10)].c), (yyvsp[(9) - (10)].c)); @@ -5121,8 +5083,8 @@ yyreduce: ;} break; - case 112: -#line 1348 "Gmsh.y" + case 111: +#line 1328 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if (List_Nbr((yyvsp[(6) - (7)].l)) != 2){ @@ -5149,8 +5111,8 @@ yyreduce: ;} break; - case 113: -#line 1373 "Gmsh.y" + case 112: +#line 1353 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if (List_Nbr((yyvsp[(6) - (7)].l)) != 2){ @@ -5177,8 +5139,8 @@ yyreduce: ;} break; - case 114: -#line 1398 "Gmsh.y" + case 113: +#line 1378 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindSurfaceLoop(num)){ @@ -5196,15 +5158,15 @@ yyreduce: ;} break; - case 115: -#line 1414 "Gmsh.y" + case 114: +#line 1394 "Gmsh.y" { curPhysDim = 2; ;} break; - case 116: -#line 1418 "Gmsh.y" + case 115: +#line 1398 "Gmsh.y" { int num = (int)(yyvsp[(5) - (9)].i); if(FindPhysicalGroup(num, MSH_PHYSICAL_SURFACE)){ @@ -5222,8 +5184,8 @@ yyreduce: ;} break; - case 117: -#line 1434 "Gmsh.y" + case 116: +#line 1414 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindPhysicalGroup(num, MSH_PHYSICAL_VOLUME)){ @@ -5242,8 +5204,8 @@ yyreduce: ;} break; - case 118: -#line 1452 "Gmsh.y" + case 117: +#line 1432 "Gmsh.y" { int num = (int)(yyvsp[(4) - (12)].d); if(FindPhysicalGroup(num, MSH_PHYSICAL_SURFACE)){ @@ -5272,8 +5234,8 @@ yyreduce: ;} break; - case 119: -#line 1479 "Gmsh.y" + case 118: +#line 1459 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindPhysicalGroup(num, MSH_PHYSICAL_SURFACE)){ @@ -5292,8 +5254,8 @@ yyreduce: ;} break; - case 120: -#line 1496 "Gmsh.y" + case 119: +#line 1476 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindPhysicalGroup(num, MSH_PHYSICAL_LINE)){ @@ -5312,8 +5274,8 @@ yyreduce: ;} break; - case 121: -#line 1516 "Gmsh.y" + case 120: +#line 1496 "Gmsh.y" { yymsg(0, "'Complex Volume' command is deprecated: use 'Volume' instead"); int num = (int)(yyvsp[(4) - (8)].d); @@ -5333,8 +5295,8 @@ yyreduce: ;} break; - case 122: -#line 1534 "Gmsh.y" + case 121: +#line 1514 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindVolume(num)){ @@ -5353,15 +5315,15 @@ yyreduce: ;} break; - case 123: -#line 1551 "Gmsh.y" + case 122: +#line 1531 "Gmsh.y" { curPhysDim = 3; ;} break; - case 124: -#line 1555 "Gmsh.y" + case 123: +#line 1535 "Gmsh.y" { int num = (int)(yyvsp[(5) - (9)].i); if(FindPhysicalGroup(num, MSH_PHYSICAL_VOLUME)){ @@ -5379,40 +5341,40 @@ yyreduce: ;} break; - case 125: -#line 1576 "Gmsh.y" + case 124: +#line 1556 "Gmsh.y" { TranslateShapes((yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], (yyvsp[(4) - (5)].l)); (yyval.l) = (yyvsp[(4) - (5)].l); ;} break; - case 126: -#line 1581 "Gmsh.y" + case 125: +#line 1561 "Gmsh.y" { RotateShapes((yyvsp[(3) - (11)].v)[0], (yyvsp[(3) - (11)].v)[1], (yyvsp[(3) - (11)].v)[2], (yyvsp[(5) - (11)].v)[0], (yyvsp[(5) - (11)].v)[1], (yyvsp[(5) - (11)].v)[2], (yyvsp[(7) - (11)].d), (yyvsp[(10) - (11)].l)); (yyval.l) = (yyvsp[(10) - (11)].l); ;} break; - case 127: -#line 1586 "Gmsh.y" + case 126: +#line 1566 "Gmsh.y" { SymmetryShapes((yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], (yyvsp[(2) - (5)].v)[3], (yyvsp[(4) - (5)].l)); (yyval.l) = (yyvsp[(4) - (5)].l); ;} break; - case 128: -#line 1591 "Gmsh.y" + case 127: +#line 1571 "Gmsh.y" { DilatShapes((yyvsp[(3) - (9)].v)[0], (yyvsp[(3) - (9)].v)[1], (yyvsp[(3) - (9)].v)[2], (yyvsp[(5) - (9)].d), (yyvsp[(8) - (9)].l)); (yyval.l) = (yyvsp[(8) - (9)].l); ;} break; - case 129: -#line 1596 "Gmsh.y" + case 128: +#line 1576 "Gmsh.y" { (yyval.l) = List_Create(3, 3, sizeof(Shape)); if(!strcmp((yyvsp[(1) - (4)].c), "Duplicata")){ @@ -5434,8 +5396,8 @@ yyreduce: ;} break; - case 130: -#line 1616 "Gmsh.y" + case 129: +#line 1596 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); IntersectCurvesWithSurface((yyvsp[(4) - (9)].l), (int)(yyvsp[(8) - (9)].d), (yyval.l)); @@ -5443,8 +5405,8 @@ yyreduce: ;} break; - case 131: -#line 1622 "Gmsh.y" + case 130: +#line 1602 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape*)); List_T *tmp = ListOfDouble2ListOfInt((yyvsp[(7) - (9)].l)); @@ -5454,32 +5416,32 @@ yyreduce: ;} break; - case 132: -#line 1632 "Gmsh.y" + case 131: +#line 1612 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; - case 133: -#line 1633 "Gmsh.y" + case 132: +#line 1613 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; - case 134: -#line 1638 "Gmsh.y" + case 133: +#line 1618 "Gmsh.y" { (yyval.l) = List_Create(3, 3, sizeof(Shape)); ;} break; - case 135: -#line 1642 "Gmsh.y" + case 134: +#line 1622 "Gmsh.y" { List_Add((yyval.l), &(yyvsp[(2) - (2)].s)); ;} break; - case 136: -#line 1646 "Gmsh.y" + case 135: +#line 1626 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -5504,8 +5466,8 @@ yyreduce: ;} break; - case 137: -#line 1669 "Gmsh.y" + case 136: +#line 1649 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -5530,8 +5492,8 @@ yyreduce: ;} break; - case 138: -#line 1692 "Gmsh.y" + case 137: +#line 1672 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -5556,8 +5518,8 @@ yyreduce: ;} break; - case 139: -#line 1715 "Gmsh.y" + case 138: +#line 1695 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -5582,8 +5544,8 @@ yyreduce: ;} break; - case 140: -#line 1743 "Gmsh.y" + case 139: +#line 1723 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ Shape TheShape; @@ -5594,15 +5556,15 @@ yyreduce: ;} break; - case 141: -#line 1752 "Gmsh.y" + case 140: +#line 1732 "Gmsh.y" { GModel::current()->getFields()->deleteField((int)(yyvsp[(4) - (6)].d)); ;} break; - case 142: -#line 1756 "Gmsh.y" + case 141: +#line 1736 "Gmsh.y" { #if !defined(HAVE_NO_POST) if(!strcmp((yyvsp[(2) - (6)].c), "View")){ @@ -5619,8 +5581,8 @@ yyreduce: ;} break; - case 143: -#line 1771 "Gmsh.y" + case 142: +#line 1751 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Meshes") || !strcmp((yyvsp[(2) - (3)].c), "All")){ for(unsigned int i = 0; i < GModel::list.size(); i++){ @@ -5649,8 +5611,8 @@ yyreduce: ;} break; - case 144: -#line 1798 "Gmsh.y" + case 143: +#line 1778 "Gmsh.y" { #if !defined(HAVE_NO_POST) if(!strcmp((yyvsp[(2) - (4)].c), "Empty") && !strcmp((yyvsp[(3) - (4)].c), "Views")){ @@ -5664,8 +5626,8 @@ yyreduce: ;} break; - case 145: -#line 1815 "Gmsh.y" + case 144: +#line 1795 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ Shape TheShape; @@ -5676,8 +5638,8 @@ yyreduce: ;} break; - case 146: -#line 1829 "Gmsh.y" + case 145: +#line 1809 "Gmsh.y" { for(int i = 0; i < 4; i++) VisibilityShape((yyvsp[(2) - (3)].c), i, 1); @@ -5685,8 +5647,8 @@ yyreduce: ;} break; - case 147: -#line 1835 "Gmsh.y" + case 146: +#line 1815 "Gmsh.y" { for(int i = 0; i < 4; i++) VisibilityShape((yyvsp[(2) - (3)].c), i, 0); @@ -5694,8 +5656,8 @@ yyreduce: ;} break; - case 148: -#line 1841 "Gmsh.y" + case 147: +#line 1821 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ Shape TheShape; @@ -5706,8 +5668,8 @@ yyreduce: ;} break; - case 149: -#line 1850 "Gmsh.y" + case 148: +#line 1830 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ Shape TheShape; @@ -5718,8 +5680,8 @@ yyreduce: ;} break; - case 150: -#line 1864 "Gmsh.y" + case 149: +#line 1844 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (3)].c), "Include")){ char tmpstring[1024]; @@ -5769,8 +5731,8 @@ yyreduce: ;} break; - case 151: -#line 1912 "Gmsh.y" + case 150: +#line 1892 "Gmsh.y" { #if !defined(HAVE_NO_POST) if(!strcmp((yyvsp[(1) - (7)].c), "Save") && !strcmp((yyvsp[(2) - (7)].c), "View")){ @@ -5790,8 +5752,8 @@ yyreduce: ;} break; - case 152: -#line 1930 "Gmsh.y" + case 151: +#line 1910 "Gmsh.y" { #if !defined(HAVE_NO_POST) if(!strcmp((yyvsp[(1) - (7)].c), "Background") && !strcmp((yyvsp[(2) - (7)].c), "Mesh") && !strcmp((yyvsp[(3) - (7)].c), "View")){ @@ -5808,8 +5770,8 @@ yyreduce: ;} break; - case 153: -#line 1945 "Gmsh.y" + case 152: +#line 1925 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (3)].c), "Sleep")){ SleepInSeconds((yyvsp[(2) - (3)].d)); @@ -5830,8 +5792,8 @@ yyreduce: ;} break; - case 154: -#line 1964 "Gmsh.y" + case 153: +#line 1944 "Gmsh.y" { #if !defined(HAVE_NO_POST) try { @@ -5845,8 +5807,8 @@ yyreduce: ;} break; - case 155: -#line 1976 "Gmsh.y" + case 154: +#line 1956 "Gmsh.y" { #if !defined(HAVE_NO_POST) if(!strcmp((yyvsp[(2) - (3)].c), "ElementsFromAllViews")) @@ -5872,15 +5834,15 @@ yyreduce: ;} break; - case 156: -#line 2000 "Gmsh.y" + case 155: +#line 1980 "Gmsh.y" { exit(0); ;} break; - case 157: -#line 2004 "Gmsh.y" + case 156: +#line 1984 "Gmsh.y" { // FIXME: this is a hack to force a transfer from the old DB to // the new DB. This will become unnecessary if/when we fill the @@ -5889,8 +5851,8 @@ yyreduce: ;} break; - case 158: -#line 2011 "Gmsh.y" + case 157: +#line 1991 "Gmsh.y" { CTX::instance()->forcedBBox = 0; GModel::current()->importGEOInternals(); @@ -5898,16 +5860,16 @@ yyreduce: ;} break; - case 159: -#line 2017 "Gmsh.y" + case 158: +#line 1997 "Gmsh.y" { CTX::instance()->forcedBBox = 1; SetBoundingBox((yyvsp[(3) - (15)].d), (yyvsp[(5) - (15)].d), (yyvsp[(7) - (15)].d), (yyvsp[(9) - (15)].d), (yyvsp[(11) - (15)].d), (yyvsp[(13) - (15)].d)); ;} break; - case 160: -#line 2022 "Gmsh.y" + case 159: +#line 2002 "Gmsh.y" { #if defined(HAVE_FLTK) Draw(); @@ -5915,15 +5877,15 @@ yyreduce: ;} break; - case 161: -#line 2028 "Gmsh.y" + case 160: +#line 2008 "Gmsh.y" { GModel::current()->createTopologyFromMesh(); ;} break; - case 162: -#line 2037 "Gmsh.y" + case 161: +#line 2017 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (6)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (6)].d); @@ -5942,8 +5904,8 @@ yyreduce: ;} break; - case 163: -#line 2054 "Gmsh.y" + case 162: +#line 2034 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (8)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (8)].d); @@ -5962,8 +5924,8 @@ yyreduce: ;} break; - case 164: -#line 2071 "Gmsh.y" + case 163: +#line 2051 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (8)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (8)].d); @@ -5984,8 +5946,8 @@ yyreduce: ;} break; - case 165: -#line 2090 "Gmsh.y" + case 164: +#line 2070 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (10)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (10)].d); @@ -6006,8 +5968,8 @@ yyreduce: ;} break; - case 166: -#line 2109 "Gmsh.y" + case 165: +#line 2089 "Gmsh.y" { if(ImbricatedLoop <= 0){ yymsg(0, "Invalid For/EndFor loop"); @@ -6037,8 +5999,8 @@ yyreduce: ;} break; - case 167: -#line 2137 "Gmsh.y" + case 166: +#line 2117 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction ((yyvsp[(2) - (2)].c), gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -6048,8 +6010,8 @@ yyreduce: ;} break; - case 168: -#line 2145 "Gmsh.y" + case 167: +#line 2125 "Gmsh.y" { if(!FunctionManager::Instance()->leaveFunction (&gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -6057,8 +6019,8 @@ yyreduce: ;} break; - case 169: -#line 2151 "Gmsh.y" + case 168: +#line 2131 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction ((yyvsp[(2) - (3)].c), &gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -6067,21 +6029,21 @@ yyreduce: ;} break; - case 170: -#line 2158 "Gmsh.y" + case 169: +#line 2138 "Gmsh.y" { if(!(yyvsp[(3) - (4)].d)) skip_until("If", "EndIf"); ;} break; - case 171: -#line 2162 "Gmsh.y" + case 170: +#line 2142 "Gmsh.y" { ;} break; - case 172: -#line 2171 "Gmsh.y" + case 171: +#line 2151 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE, (yyvsp[(4) - (5)].l), @@ -6091,8 +6053,8 @@ yyreduce: ;} break; - case 173: -#line 2179 "Gmsh.y" + case 172: +#line 2159 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(ROTATE, (yyvsp[(10) - (11)].l), @@ -6102,8 +6064,8 @@ yyreduce: ;} break; - case 174: -#line 2187 "Gmsh.y" + case 173: +#line 2167 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE_ROTATE, (yyvsp[(12) - (13)].l), @@ -6113,15 +6075,15 @@ yyreduce: ;} break; - case 175: -#line 2195 "Gmsh.y" + case 174: +#line 2175 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 176: -#line 2199 "Gmsh.y" + case 175: +#line 2179 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE, (yyvsp[(4) - (7)].l), @@ -6131,15 +6093,15 @@ yyreduce: ;} break; - case 177: -#line 2207 "Gmsh.y" + case 176: +#line 2187 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 178: -#line 2211 "Gmsh.y" + case 177: +#line 2191 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(ROTATE, (yyvsp[(10) - (13)].l), @@ -6149,15 +6111,15 @@ yyreduce: ;} break; - case 179: -#line 2219 "Gmsh.y" + case 178: +#line 2199 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 180: -#line 2223 "Gmsh.y" + case 179: +#line 2203 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE_ROTATE, (yyvsp[(12) - (15)].l), @@ -6167,15 +6129,15 @@ yyreduce: ;} break; - case 181: -#line 2231 "Gmsh.y" + case 180: +#line 2211 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 182: -#line 2235 "Gmsh.y" + case 181: +#line 2215 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(BOUNDARY_LAYER, (yyvsp[(3) - (6)].l), 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., @@ -6184,8 +6146,8 @@ yyreduce: ;} break; - case 183: -#line 2244 "Gmsh.y" + case 182: +#line 2224 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (8)].d), @@ -6194,8 +6156,8 @@ yyreduce: ;} break; - case 184: -#line 2251 "Gmsh.y" + case 183: +#line 2231 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (8)].d), @@ -6204,8 +6166,8 @@ yyreduce: ;} break; - case 185: -#line 2258 "Gmsh.y" + case 184: +#line 2238 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (8)].d), @@ -6214,8 +6176,8 @@ yyreduce: ;} break; - case 186: -#line 2265 "Gmsh.y" + case 185: +#line 2245 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), @@ -6224,8 +6186,8 @@ yyreduce: ;} break; - case 187: -#line 2272 "Gmsh.y" + case 186: +#line 2252 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d), @@ -6234,8 +6196,8 @@ yyreduce: ;} break; - case 188: -#line 2279 "Gmsh.y" + case 187: +#line 2259 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d), @@ -6244,8 +6206,8 @@ yyreduce: ;} break; - case 189: -#line 2286 "Gmsh.y" + case 188: +#line 2266 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (14)].d), @@ -6254,8 +6216,8 @@ yyreduce: ;} break; - case 190: -#line 2293 "Gmsh.y" + case 189: +#line 2273 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (14)].d), @@ -6264,8 +6226,8 @@ yyreduce: ;} break; - case 191: -#line 2300 "Gmsh.y" + case 190: +#line 2280 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (14)].d), @@ -6274,15 +6236,15 @@ yyreduce: ;} break; - case 192: -#line 2307 "Gmsh.y" + case 191: +#line 2287 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 193: -#line 2311 "Gmsh.y" + case 192: +#line 2291 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), @@ -6291,15 +6253,15 @@ yyreduce: ;} break; - case 194: -#line 2318 "Gmsh.y" + case 193: +#line 2298 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 195: -#line 2322 "Gmsh.y" + case 194: +#line 2302 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d), @@ -6308,15 +6270,15 @@ yyreduce: ;} break; - case 196: -#line 2329 "Gmsh.y" + case 195: +#line 2309 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 197: -#line 2333 "Gmsh.y" + case 196: +#line 2313 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d), @@ -6325,15 +6287,15 @@ yyreduce: ;} break; - case 198: -#line 2340 "Gmsh.y" + case 197: +#line 2320 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 199: -#line 2344 "Gmsh.y" + case 198: +#line 2324 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (16)].d), @@ -6342,15 +6304,15 @@ yyreduce: ;} break; - case 200: -#line 2351 "Gmsh.y" + case 199: +#line 2331 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 201: -#line 2355 "Gmsh.y" + case 200: +#line 2335 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (16)].d), @@ -6359,15 +6321,15 @@ yyreduce: ;} break; - case 202: -#line 2362 "Gmsh.y" + case 201: +#line 2342 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 203: -#line 2366 "Gmsh.y" + case 202: +#line 2346 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (16)].d), @@ -6376,15 +6338,15 @@ yyreduce: ;} break; - case 204: -#line 2373 "Gmsh.y" + case 203: +#line 2353 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 205: -#line 2377 "Gmsh.y" + case 204: +#line 2357 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (18)].d), @@ -6393,15 +6355,15 @@ yyreduce: ;} break; - case 206: -#line 2384 "Gmsh.y" + case 205: +#line 2364 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 207: -#line 2388 "Gmsh.y" + case 206: +#line 2368 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (18)].d), @@ -6410,15 +6372,15 @@ yyreduce: ;} break; - case 208: -#line 2395 "Gmsh.y" + case 207: +#line 2375 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 209: -#line 2399 "Gmsh.y" + case 208: +#line 2379 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (18)].d), @@ -6427,20 +6389,20 @@ yyreduce: ;} break; - case 210: -#line 2410 "Gmsh.y" + case 209: +#line 2390 "Gmsh.y" { ;} break; - case 211: -#line 2413 "Gmsh.y" + case 210: +#line 2393 "Gmsh.y" { ;} break; - case 212: -#line 2419 "Gmsh.y" + case 211: +#line 2399 "Gmsh.y" { extr.mesh.ExtrudeMesh = true; extr.mesh.NbLayer = 1; @@ -6451,8 +6413,8 @@ yyreduce: ;} break; - case 213: -#line 2428 "Gmsh.y" + case 212: +#line 2408 "Gmsh.y" { extr.mesh.ExtrudeMesh = true; extr.mesh.NbLayer = List_Nbr((yyvsp[(3) - (7)].l)); @@ -6474,8 +6436,8 @@ yyreduce: ;} break; - case 214: -#line 2448 "Gmsh.y" + case 213: +#line 2428 "Gmsh.y" { yymsg(0, "Explicit region numbers in layers are deprecated"); extr.mesh.ExtrudeMesh = true; @@ -6500,15 +6462,15 @@ yyreduce: ;} break; - case 215: -#line 2471 "Gmsh.y" + case 214: +#line 2451 "Gmsh.y" { extr.mesh.Recombine = true; ;} break; - case 216: -#line 2475 "Gmsh.y" + case 215: +#line 2455 "Gmsh.y" { int num = (int)(yyvsp[(3) - (9)].d); if(FindSurface(num)){ @@ -6529,15 +6491,15 @@ yyreduce: ;} break; - case 217: -#line 2498 "Gmsh.y" + case 216: +#line 2478 "Gmsh.y" { (yyval.v)[0] = (yyval.v)[1] = 1.; ;} break; - case 218: -#line 2502 "Gmsh.y" + case 217: +#line 2482 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Progression") || !strcmp((yyvsp[(2) - (3)].c), "Power")) (yyval.v)[0] = 1.; @@ -6552,15 +6514,15 @@ yyreduce: ;} break; - case 219: -#line 2517 "Gmsh.y" + case 218: +#line 2497 "Gmsh.y" { (yyval.i) = -1; // left ;} break; - case 220: -#line 2521 "Gmsh.y" + case 219: +#line 2501 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "Right")) (yyval.i) = 1; @@ -6572,36 +6534,36 @@ yyreduce: ;} break; - case 221: -#line 2533 "Gmsh.y" + case 220: +#line 2513 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(double)); ;} break; - case 222: -#line 2537 "Gmsh.y" + case 221: +#line 2517 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); ;} break; - case 223: -#line 2542 "Gmsh.y" + case 222: +#line 2522 "Gmsh.y" { (yyval.i) = 45; ;} break; - case 224: -#line 2546 "Gmsh.y" + case 223: +#line 2526 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(2) - (2)].d); ;} break; - case 225: -#line 2553 "Gmsh.y" + case 224: +#line 2533 "Gmsh.y" { int type = (int)(yyvsp[(6) - (7)].v)[0]; double coef = fabs((yyvsp[(6) - (7)].v)[1]); @@ -6659,8 +6621,8 @@ yyreduce: ;} break; - case 226: -#line 2609 "Gmsh.y" + case 225: +#line 2589 "Gmsh.y" { int k = List_Nbr((yyvsp[(4) - (6)].l)); if(k != 0 && k != 3 && k != 4){ @@ -6732,16 +6694,16 @@ yyreduce: ;} break; - case 227: -#line 2679 "Gmsh.y" + case 226: +#line 2659 "Gmsh.y" { yymsg(1, "Elliptic Surface is deprecated: use Transfinite instead (with smoothing)"); List_Delete((yyvsp[(7) - (8)].l)); ;} break; - case 228: -#line 2684 "Gmsh.y" + case 227: +#line 2664 "Gmsh.y" { int k = List_Nbr((yyvsp[(4) - (5)].l)); if(k != 0 && k != 6 && k != 8){ @@ -6810,8 +6772,8 @@ yyreduce: ;} break; - case 229: -#line 2751 "Gmsh.y" + case 228: +#line 2731 "Gmsh.y" { if(!(yyvsp[(3) - (5)].l)){ List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Surfaces); @@ -6856,8 +6818,8 @@ yyreduce: ;} break; - case 230: -#line 2794 "Gmsh.y" + case 229: +#line 2774 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ double d; @@ -6879,8 +6841,8 @@ yyreduce: ;} break; - case 231: -#line 2820 "Gmsh.y" + case 230: +#line 2800 "Gmsh.y" { Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d)); if(s){ @@ -6905,8 +6867,8 @@ yyreduce: ;} break; - case 232: -#line 2843 "Gmsh.y" + case 231: +#line 2823 "Gmsh.y" { Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d)); if(s){ @@ -6931,27 +6893,27 @@ yyreduce: ;} break; - case 233: -#line 2866 "Gmsh.y" + case 232: +#line 2846 "Gmsh.y" { ;} break; - case 234: -#line 2869 "Gmsh.y" + case 233: +#line 2849 "Gmsh.y" { ;} break; - case 235: -#line 2878 "Gmsh.y" + case 234: +#line 2858 "Gmsh.y" { ReplaceAllDuplicates(); ;} break; - case 236: -#line 2882 "Gmsh.y" + case 235: +#line 2862 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Geometry")) ReplaceAllDuplicates(); @@ -6963,48 +6925,48 @@ yyreduce: ;} break; - case 237: -#line 2897 "Gmsh.y" + case 236: +#line 2877 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; - case 238: -#line 2898 "Gmsh.y" + case 237: +#line 2878 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (3)].d); ;} break; - case 239: -#line 2899 "Gmsh.y" + case 238: +#line 2879 "Gmsh.y" { (yyval.d) = -(yyvsp[(2) - (2)].d); ;} break; - case 240: -#line 2900 "Gmsh.y" + case 239: +#line 2880 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (2)].d); ;} break; - case 241: -#line 2901 "Gmsh.y" + case 240: +#line 2881 "Gmsh.y" { (yyval.d) = !(yyvsp[(2) - (2)].d); ;} break; - case 242: -#line 2902 "Gmsh.y" + case 241: +#line 2882 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d); ;} break; - case 243: -#line 2903 "Gmsh.y" + case 242: +#line 2883 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d); ;} break; - case 244: -#line 2904 "Gmsh.y" + case 243: +#line 2884 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d); ;} break; - case 245: -#line 2906 "Gmsh.y" + case 244: +#line 2886 "Gmsh.y" { if(!(yyvsp[(3) - (3)].d)) yymsg(0, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); @@ -7013,308 +6975,308 @@ yyreduce: ;} break; - case 246: -#line 2912 "Gmsh.y" + case 245: +#line 2892 "Gmsh.y" { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d); ;} break; - case 247: -#line 2913 "Gmsh.y" + case 246: +#line 2893 "Gmsh.y" { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); ;} break; - case 248: -#line 2914 "Gmsh.y" + case 247: +#line 2894 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d); ;} break; - case 249: -#line 2915 "Gmsh.y" + case 248: +#line 2895 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d); ;} break; - case 250: -#line 2916 "Gmsh.y" + case 249: +#line 2896 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d); ;} break; - case 251: -#line 2917 "Gmsh.y" + case 250: +#line 2897 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d); ;} break; - case 252: -#line 2918 "Gmsh.y" + case 251: +#line 2898 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d); ;} break; - case 253: -#line 2919 "Gmsh.y" + case 252: +#line 2899 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d); ;} break; - case 254: -#line 2920 "Gmsh.y" + case 253: +#line 2900 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d); ;} break; - case 255: -#line 2921 "Gmsh.y" + case 254: +#line 2901 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d); ;} break; - case 256: -#line 2922 "Gmsh.y" + case 255: +#line 2902 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); ;} break; - case 257: -#line 2923 "Gmsh.y" + case 256: +#line 2903 "Gmsh.y" { (yyval.d) = exp((yyvsp[(3) - (4)].d)); ;} break; - case 258: -#line 2924 "Gmsh.y" + case 257: +#line 2904 "Gmsh.y" { (yyval.d) = log((yyvsp[(3) - (4)].d)); ;} break; - case 259: -#line 2925 "Gmsh.y" + case 258: +#line 2905 "Gmsh.y" { (yyval.d) = log10((yyvsp[(3) - (4)].d)); ;} break; - case 260: -#line 2926 "Gmsh.y" + case 259: +#line 2906 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); ;} break; - case 261: -#line 2927 "Gmsh.y" + case 260: +#line 2907 "Gmsh.y" { (yyval.d) = sin((yyvsp[(3) - (4)].d)); ;} break; - case 262: -#line 2928 "Gmsh.y" + case 261: +#line 2908 "Gmsh.y" { (yyval.d) = asin((yyvsp[(3) - (4)].d)); ;} break; - case 263: -#line 2929 "Gmsh.y" + case 262: +#line 2909 "Gmsh.y" { (yyval.d) = cos((yyvsp[(3) - (4)].d)); ;} break; - case 264: -#line 2930 "Gmsh.y" + case 263: +#line 2910 "Gmsh.y" { (yyval.d) = acos((yyvsp[(3) - (4)].d)); ;} break; - case 265: -#line 2931 "Gmsh.y" + case 264: +#line 2911 "Gmsh.y" { (yyval.d) = tan((yyvsp[(3) - (4)].d)); ;} break; - case 266: -#line 2932 "Gmsh.y" + case 265: +#line 2912 "Gmsh.y" { (yyval.d) = atan((yyvsp[(3) - (4)].d)); ;} break; - case 267: -#line 2933 "Gmsh.y" + case 266: +#line 2913 "Gmsh.y" { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;} break; - case 268: -#line 2934 "Gmsh.y" + case 267: +#line 2914 "Gmsh.y" { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); ;} break; - case 269: -#line 2935 "Gmsh.y" + case 268: +#line 2915 "Gmsh.y" { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); ;} break; - case 270: -#line 2936 "Gmsh.y" + case 269: +#line 2916 "Gmsh.y" { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); ;} break; - case 271: -#line 2937 "Gmsh.y" + case 270: +#line 2917 "Gmsh.y" { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); ;} break; - case 272: -#line 2938 "Gmsh.y" + case 271: +#line 2918 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d)); ;} break; - case 273: -#line 2939 "Gmsh.y" + case 272: +#line 2919 "Gmsh.y" { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); ;} break; - case 274: -#line 2940 "Gmsh.y" + case 273: +#line 2920 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; - case 275: -#line 2941 "Gmsh.y" + case 274: +#line 2921 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; - case 276: -#line 2942 "Gmsh.y" + case 275: +#line 2922 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;} break; - case 277: -#line 2943 "Gmsh.y" + case 276: +#line 2923 "Gmsh.y" { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;} break; - case 278: -#line 2945 "Gmsh.y" + case 277: +#line 2925 "Gmsh.y" { (yyval.d) = exp((yyvsp[(3) - (4)].d)); ;} break; - case 279: -#line 2946 "Gmsh.y" + case 278: +#line 2926 "Gmsh.y" { (yyval.d) = log((yyvsp[(3) - (4)].d)); ;} break; - case 280: -#line 2947 "Gmsh.y" + case 279: +#line 2927 "Gmsh.y" { (yyval.d) = log10((yyvsp[(3) - (4)].d)); ;} break; - case 281: -#line 2948 "Gmsh.y" + case 280: +#line 2928 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); ;} break; - case 282: -#line 2949 "Gmsh.y" + case 281: +#line 2929 "Gmsh.y" { (yyval.d) = sin((yyvsp[(3) - (4)].d)); ;} break; - case 283: -#line 2950 "Gmsh.y" + case 282: +#line 2930 "Gmsh.y" { (yyval.d) = asin((yyvsp[(3) - (4)].d)); ;} break; - case 284: -#line 2951 "Gmsh.y" + case 283: +#line 2931 "Gmsh.y" { (yyval.d) = cos((yyvsp[(3) - (4)].d)); ;} break; - case 285: -#line 2952 "Gmsh.y" + case 284: +#line 2932 "Gmsh.y" { (yyval.d) = acos((yyvsp[(3) - (4)].d)); ;} break; - case 286: -#line 2953 "Gmsh.y" + case 285: +#line 2933 "Gmsh.y" { (yyval.d) = tan((yyvsp[(3) - (4)].d)); ;} break; - case 287: -#line 2954 "Gmsh.y" + case 286: +#line 2934 "Gmsh.y" { (yyval.d) = atan((yyvsp[(3) - (4)].d)); ;} break; - case 288: -#line 2955 "Gmsh.y" + case 287: +#line 2935 "Gmsh.y" { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;} break; - case 289: -#line 2956 "Gmsh.y" + case 288: +#line 2936 "Gmsh.y" { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); ;} break; - case 290: -#line 2957 "Gmsh.y" + case 289: +#line 2937 "Gmsh.y" { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); ;} break; - case 291: -#line 2958 "Gmsh.y" + case 290: +#line 2938 "Gmsh.y" { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); ;} break; - case 292: -#line 2959 "Gmsh.y" + case 291: +#line 2939 "Gmsh.y" { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); ;} break; - case 293: -#line 2960 "Gmsh.y" + case 292: +#line 2940 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d)); ;} break; - case 294: -#line 2961 "Gmsh.y" + case 293: +#line 2941 "Gmsh.y" { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); ;} break; - case 295: -#line 2962 "Gmsh.y" + case 294: +#line 2942 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; - case 296: -#line 2963 "Gmsh.y" + case 295: +#line 2943 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; - case 297: -#line 2964 "Gmsh.y" + case 296: +#line 2944 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;} break; - case 298: -#line 2965 "Gmsh.y" + case 297: +#line 2945 "Gmsh.y" { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;} break; - case 299: -#line 2974 "Gmsh.y" + case 298: +#line 2954 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; - case 300: -#line 2975 "Gmsh.y" + case 299: +#line 2955 "Gmsh.y" { (yyval.d) = 3.141592653589793; ;} break; - case 301: -#line 2976 "Gmsh.y" + case 300: +#line 2956 "Gmsh.y" { (yyval.d) = Msg::GetCommRank(); ;} break; - case 302: -#line 2977 "Gmsh.y" + case 301: +#line 2957 "Gmsh.y" { (yyval.d) = Msg::GetCommSize(); ;} break; - case 303: -#line 2978 "Gmsh.y" + case 302: +#line 2958 "Gmsh.y" { (yyval.d) = GetGmshMajorVersion(); ;} break; - case 304: -#line 2979 "Gmsh.y" + case 303: +#line 2959 "Gmsh.y" { (yyval.d) = GetGmshMinorVersion(); ;} break; - case 305: -#line 2980 "Gmsh.y" + case 304: +#line 2960 "Gmsh.y" { (yyval.d) = GetGmshPatchVersion(); ;} break; - case 306: -#line 2985 "Gmsh.y" + case 305: +#line 2965 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (1)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (1)].c)); @@ -7326,8 +7288,8 @@ yyreduce: ;} break; - case 307: -#line 2998 "Gmsh.y" + case 306: +#line 2978 "Gmsh.y" { char tmpstring[1024]; sprintf(tmpstring, "%s_%d", (yyvsp[(1) - (5)].c), (int)(yyvsp[(4) - (5)].d)) ; @@ -7341,8 +7303,8 @@ yyreduce: ;} break; - case 308: -#line 3010 "Gmsh.y" + case 307: +#line 2990 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -7359,8 +7321,8 @@ yyreduce: ;} break; - case 309: -#line 3025 "Gmsh.y" + case 308: +#line 3005 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(2) - (4)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(2) - (4)].c)); @@ -7372,8 +7334,8 @@ yyreduce: ;} break; - case 310: -#line 3035 "Gmsh.y" + case 309: +#line 3015 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (2)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (2)].c)); @@ -7385,8 +7347,8 @@ yyreduce: ;} break; - case 311: -#line 3045 "Gmsh.y" + case 310: +#line 3025 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -7403,24 +7365,24 @@ yyreduce: ;} break; - case 312: -#line 3063 "Gmsh.y" + case 311: +#line 3043 "Gmsh.y" { NumberOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), (yyval.d)); Free((yyvsp[(1) - (3)].c)); Free((yyvsp[(3) - (3)].c)); ;} break; - case 313: -#line 3068 "Gmsh.y" + case 312: +#line 3048 "Gmsh.y" { NumberOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), (yyval.d)); Free((yyvsp[(1) - (6)].c)); Free((yyvsp[(6) - (6)].c)); ;} break; - case 314: -#line 3073 "Gmsh.y" + case 313: +#line 3053 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (4)].c), 0, (yyvsp[(3) - (4)].c), d)){ @@ -7432,8 +7394,8 @@ yyreduce: ;} break; - case 315: -#line 3083 "Gmsh.y" + case 314: +#line 3063 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c), d)){ @@ -7445,124 +7407,124 @@ yyreduce: ;} break; - case 316: -#line 3093 "Gmsh.y" + case 315: +#line 3073 "Gmsh.y" { (yyval.d) = Msg::GetValue((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d)); Free((yyvsp[(3) - (6)].c)); ;} break; - case 317: -#line 3101 "Gmsh.y" + case 316: +#line 3081 "Gmsh.y" { memcpy((yyval.v), (yyvsp[(1) - (1)].v), 5*sizeof(double)); ;} break; - case 318: -#line 3105 "Gmsh.y" + case 317: +#line 3085 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = -(yyvsp[(2) - (2)].v)[i]; ;} break; - case 319: -#line 3109 "Gmsh.y" + case 318: +#line 3089 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i]; ;} break; - case 320: -#line 3113 "Gmsh.y" + case 319: +#line 3093 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] - (yyvsp[(3) - (3)].v)[i]; ;} break; - case 321: -#line 3117 "Gmsh.y" + case 320: +#line 3097 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] + (yyvsp[(3) - (3)].v)[i]; ;} break; - case 322: -#line 3124 "Gmsh.y" + case 321: +#line 3104 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (11)].d); (yyval.v)[1] = (yyvsp[(4) - (11)].d); (yyval.v)[2] = (yyvsp[(6) - (11)].d); (yyval.v)[3] = (yyvsp[(8) - (11)].d); (yyval.v)[4] = (yyvsp[(10) - (11)].d); ;} break; - case 323: -#line 3128 "Gmsh.y" + case 322: +#line 3108 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (9)].d); (yyval.v)[1] = (yyvsp[(4) - (9)].d); (yyval.v)[2] = (yyvsp[(6) - (9)].d); (yyval.v)[3] = (yyvsp[(8) - (9)].d); (yyval.v)[4] = 1.0; ;} break; - case 324: -#line 3132 "Gmsh.y" + case 323: +#line 3112 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; ;} break; - case 325: -#line 3136 "Gmsh.y" + case 324: +#line 3116 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; ;} break; - case 326: -#line 3143 "Gmsh.y" + case 325: +#line 3123 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(List_T*)); List_Add((yyval.l), &((yyvsp[(1) - (1)].l))); ;} break; - case 327: -#line 3148 "Gmsh.y" + case 326: +#line 3128 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].l))); ;} break; - case 328: -#line 3155 "Gmsh.y" + case 327: +#line 3135 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); ;} break; - case 329: -#line 3160 "Gmsh.y" + case 328: +#line 3140 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; - case 330: -#line 3164 "Gmsh.y" + case 329: +#line 3144 "Gmsh.y" { // creates an empty list (yyval.l) = List_Create(2, 1, sizeof(double)); ;} break; - case 331: -#line 3169 "Gmsh.y" + case 330: +#line 3149 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; - case 332: -#line 3173 "Gmsh.y" + case 331: +#line 3153 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -7572,8 +7534,8 @@ yyreduce: ;} break; - case 333: -#line 3181 "Gmsh.y" + case 332: +#line 3161 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (5)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -7583,15 +7545,15 @@ yyreduce: ;} break; - case 334: -#line 3192 "Gmsh.y" + case 333: +#line 3172 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; - case 335: -#line 3196 "Gmsh.y" + case 334: +#line 3176 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "*") || !strcmp((yyvsp[(1) - (1)].c), "all")) (yyval.l) = 0; @@ -7602,8 +7564,8 @@ yyreduce: ;} break; - case 336: -#line 3208 "Gmsh.y" + case 335: +#line 3188 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -7613,8 +7575,8 @@ yyreduce: ;} break; - case 337: -#line 3216 "Gmsh.y" + case 336: +#line 3196 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (3)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -7624,8 +7586,8 @@ yyreduce: ;} break; - case 338: -#line 3224 "Gmsh.y" + case 337: +#line 3204 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); for(double d = (yyvsp[(1) - (3)].d); ((yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d)) ? (d <= (yyvsp[(3) - (3)].d)) : (d >= (yyvsp[(3) - (3)].d)); @@ -7634,8 +7596,8 @@ yyreduce: ;} break; - case 339: -#line 3231 "Gmsh.y" + case 338: +#line 3211 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!(yyvsp[(5) - (5)].d) || ((yyvsp[(1) - (5)].d) < (yyvsp[(3) - (5)].d) && (yyvsp[(5) - (5)].d) < 0) || ((yyvsp[(1) - (5)].d) > (yyvsp[(3) - (5)].d) && (yyvsp[(5) - (5)].d) > 0)){ @@ -7648,8 +7610,8 @@ yyreduce: ;} break; - case 340: -#line 3242 "Gmsh.y" + case 339: +#line 3222 "Gmsh.y" { // Returns the coordinates of a point and fills a list with it. // This allows to ensure e.g. that relative point positions are @@ -7671,8 +7633,8 @@ yyreduce: ;} break; - case 341: -#line 3262 "Gmsh.y" + case 340: +#line 3242 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -7684,8 +7646,8 @@ yyreduce: ;} break; - case 342: -#line 3272 "Gmsh.y" + case 341: +#line 3252 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -7697,8 +7659,8 @@ yyreduce: ;} break; - case 343: -#line 3282 "Gmsh.y" + case 342: +#line 3262 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c))) @@ -7710,8 +7672,8 @@ yyreduce: ;} break; - case 344: -#line 3292 "Gmsh.y" + case 343: +#line 3272 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) @@ -7730,30 +7692,30 @@ yyreduce: ;} break; - case 345: -#line 3312 "Gmsh.y" + case 344: +#line 3292 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); ;} break; - case 346: -#line 3317 "Gmsh.y" + case 345: +#line 3297 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; - case 347: -#line 3321 "Gmsh.y" + case 346: +#line 3301 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].d))); ;} break; - case 348: -#line 3325 "Gmsh.y" + case 347: +#line 3305 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){ double d; @@ -7764,22 +7726,22 @@ yyreduce: ;} break; - case 349: -#line 3337 "Gmsh.y" + case 348: +#line 3317 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (9)].d), (int)(yyvsp[(4) - (9)].d), (int)(yyvsp[(6) - (9)].d), (int)(yyvsp[(8) - (9)].d)); ;} break; - case 350: -#line 3341 "Gmsh.y" + case 349: +#line 3321 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (7)].d), (int)(yyvsp[(4) - (7)].d), (int)(yyvsp[(6) - (7)].d), 255); ;} break; - case 351: -#line 3353 "Gmsh.y" + case 350: +#line 3333 "Gmsh.y" { int flag; (yyval.u) = GetColorForString(ColorString, -1, (yyvsp[(1) - (1)].c), &flag); @@ -7788,8 +7750,8 @@ yyreduce: ;} break; - case 352: -#line 3360 "Gmsh.y" + case 351: +#line 3340 "Gmsh.y" { unsigned int val = 0; ColorOption(GMSH_GET, (yyvsp[(1) - (5)].c), 0, (yyvsp[(5) - (5)].c), val); @@ -7798,15 +7760,15 @@ yyreduce: ;} break; - case 353: -#line 3370 "Gmsh.y" + case 352: +#line 3350 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; - case 354: -#line 3374 "Gmsh.y" + case 353: +#line 3354 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (6)].d)); @@ -7820,30 +7782,30 @@ yyreduce: ;} break; - case 355: -#line 3389 "Gmsh.y" + case 354: +#line 3369 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); List_Add((yyval.l), &((yyvsp[(1) - (1)].u))); ;} break; - case 356: -#line 3394 "Gmsh.y" + case 355: +#line 3374 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].u))); ;} break; - case 357: -#line 3401 "Gmsh.y" + case 356: +#line 3381 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; - case 358: -#line 3405 "Gmsh.y" + case 357: +#line 3385 "Gmsh.y" { if(!gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c))){ yymsg(0, "Unknown string variable '%s'", (yyvsp[(1) - (1)].c)); @@ -7858,8 +7820,8 @@ yyreduce: ;} break; - case 359: -#line 3418 "Gmsh.y" + case 358: +#line 3398 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), out); @@ -7869,8 +7831,8 @@ yyreduce: ;} break; - case 360: -#line 3426 "Gmsh.y" + case 359: +#line 3406 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), out); @@ -7880,15 +7842,15 @@ yyreduce: ;} break; - case 361: -#line 3437 "Gmsh.y" + case 360: +#line 3417 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; - case 362: -#line 3441 "Gmsh.y" + case 361: +#line 3421 "Gmsh.y" { (yyval.c) = (char *)Malloc(32 * sizeof(char)); time_t now; @@ -7898,8 +7860,8 @@ yyreduce: ;} break; - case 363: -#line 3449 "Gmsh.y" + case 362: +#line 3429 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (6)].c)) + strlen((yyvsp[(5) - (6)].c)) + 1) * sizeof(char)); strcpy((yyval.c), (yyvsp[(3) - (6)].c)); @@ -7909,8 +7871,8 @@ yyreduce: ;} break; - case 364: -#line 3457 "Gmsh.y" + case 363: +#line 3437 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -7926,8 +7888,8 @@ yyreduce: ;} break; - case 365: -#line 3471 "Gmsh.y" + case 364: +#line 3451 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -7943,15 +7905,15 @@ yyreduce: ;} break; - case 366: -#line 3485 "Gmsh.y" + case 365: +#line 3465 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; - case 367: -#line 3489 "Gmsh.y" + case 366: +#line 3469 "Gmsh.y" { char tmpstring[1024]; int i = PrintListOfDouble((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].l), tmpstring); @@ -7974,7 +7936,7 @@ yyreduce: /* Line 1267 of yacc.c. */ -#line 7978 "Gmsh.tab.cpp" +#line 7940 "Gmsh.tab.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -8188,7 +8150,7 @@ yyreturn: } -#line 3509 "Gmsh.y" +#line 3489 "Gmsh.y" int PrintListOfDouble(char *format, List_T *list, char *buffer) diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index a84fb61ce91d58316b734234c12cef53ccb1809c..d1e10b98d94b473367e1a4e3a6d8e739cb60b589 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1146,26 +1146,6 @@ Shape : $$.Type = MSH_SEGM_ELLI; $$.Num = num; } - | tParametric '(' FExpr ')' tAFFECT - '{' FExpr ',' FExpr ',' tBIGSTR ',' tBIGSTR ',' tBIGSTR '}' tEND - { - int num = (int)$3; - if(FindCurve(num)){ - yymsg(0, "Curve %d already exists", num); - } - else{ - Curve *c = Create_Curve(num, MSH_SEGM_PARAMETRIC, 2, NULL, NULL, - -1, -1, $7, $9); - strcpy(c->functu, $11); - strcpy(c->functv, $13); - strcpy(c->functw, $15); - Tree_Add(GModel::current()->getGEOInternals()->Curves, &c); - CreateReversedCurve(c); - } - Free($11); Free($13); Free($15); - $$.Type = MSH_SEGM_PARAMETRIC; - $$.Num = num; - } | tBSpline '(' FExpr ')' tAFFECT ListOfDouble tEND { int num = (int)$3; diff --git a/Plugin/Annotate.cpp b/Plugin/Annotate.cpp index b6b21a86f9cd45939a2857c2dddefe99a8ba750e..ec256cd73d884787198dc84a4a82602bc678a1ba 100644 --- a/Plugin/Annotate.cpp +++ b/Plugin/Annotate.cpp @@ -12,7 +12,6 @@ #include <FL/gl.h> #include "drawContext.h" #include "Draw.h" -#include "FlGui.h" #endif StringXNumber AnnotateOptions_Number[] = { @@ -107,9 +106,7 @@ double GMSH_AnnotatePlugin::callback(int num, int action, double value, double * default: break; } *opt = value; -#if defined(HAVE_FLTK) - DrawPlugin(draw); -#endif + GMSH_Plugin::setDrawFunction(draw); return 0.; } @@ -117,9 +114,7 @@ std::string GMSH_AnnotatePlugin::callbackStr(int num, int action, std::string va std::string &opt) { opt = value; -#if defined(HAVE_FLTK) - DrawPlugin(draw); -#endif + GMSH_Plugin::setDrawFunction(draw); return opt; } diff --git a/Plugin/CutGrid.cpp b/Plugin/CutGrid.cpp index f93bf1071c48167c2537292af59705b9c4231beb..d5d1e0ec39aee16b45a878c7249c9a377f2c9a0d 100644 --- a/Plugin/CutGrid.cpp +++ b/Plugin/CutGrid.cpp @@ -82,9 +82,7 @@ double GMSH_CutGridPlugin::callback(int num, int action, double value, double *o default: break; } *opt = value; -#if defined(HAVE_FLTK) - DrawPlugin(draw); -#endif + GMSH_Plugin::setDrawFunction(draw); return 0.; } diff --git a/Plugin/CutParametric.cpp b/Plugin/CutParametric.cpp index df6106e678c3316d2c838387497933325dc9e55a..51c646f64f1c5cf2432dfbbb6e223cca4b8b49f6 100644 --- a/Plugin/CutParametric.cpp +++ b/Plugin/CutParametric.cpp @@ -8,6 +8,7 @@ #include "OctreePost.h" #include "CutParametric.h" #include "Context.h" +#include "mathEvaluator.h" #if defined(HAVE_FLTK) #include <FL/gl.h> @@ -15,10 +16,6 @@ #include "Draw.h" #endif -#if defined(HAVE_MATH_EVAL) -#include "matheval.h" -#endif - StringXNumber CutParametricOptions_Number[] = { {GMSH_FULLRC, "MinU", GMSH_CutParametricPlugin::callbackMinU, 0.}, {GMSH_FULLRC, "MaxU", GMSH_CutParametricPlugin::callbackMaxU, 2 * 3.1416}, @@ -60,45 +57,27 @@ std::vector<double> GMSH_CutParametricPlugin::z; int GMSH_CutParametricPlugin::fillXYZ() { -#if !defined(HAVE_MATH_EVAL) - Msg::Error("MathEval is not compiled in this version of Gmsh"); - return 0; -#else - const char *exprx = CutParametricOptions_String[0].def.c_str(); - const char *expry = CutParametricOptions_String[1].def.c_str(); - const char *exprz = CutParametricOptions_String[2].def.c_str(); - int nbU = (int)CutParametricOptions_Number[2].def; + std::vector<std::string> expressions(3), variables(1); + for(int i = 0; i < 3; i++) + expressions[i] = CutParametricOptions_String[i].def; + variables[0] = "u"; + mathEvaluator f(expressions, variables); + if(expressions.empty()) return 0; + int nbU = (int)CutParametricOptions_Number[2].def; x.resize(nbU); y.resize(nbU); z.resize(nbU); - void *fx = evaluator_create((char*)exprx); - if(!fx){ - Msg::Error("Invalid expression '%s'", exprx); - return 0; - } - void *fy = evaluator_create((char*)expry); - if(!fy){ - evaluator_destroy(fx); - Msg::Error("Invalid expression '%s'", expry); - return 0; - } - void *fz = evaluator_create((char*)exprz); - if(!fz){ - Msg::Error("Invalid expression '%s'", exprz); - evaluator_destroy(fx); - evaluator_destroy(fy); - return 0; - } + std::vector<double> val(1), res(3); for(int i = 0; i < nbU; ++i){ - char *names[] = { "u" }; - double values[] = { getU(i) }; - x[i] = evaluator_evaluate(fx, sizeof(names) / sizeof(names[0]), names, values); - y[i] = evaluator_evaluate(fy, sizeof(names) / sizeof(names[0]), names, values); - z[i] = evaluator_evaluate(fz, sizeof(names) / sizeof(names[0]), names, values); + val[0] = getU(i); + if(f.eval(val, res)){ + x[i] = res[0]; + y[i] = res[1]; + z[i] = res[2]; + } } return 1; -#endif } void GMSH_CutParametricPlugin::draw(void *context) @@ -135,10 +114,8 @@ double GMSH_CutParametricPlugin::callback(int num, int action, double value, dou default: break; } *opt = value; -#if defined(HAVE_FLTK) recompute = 1; - DrawPlugin(draw); -#endif + GMSH_Plugin::setDrawFunction(draw); return 0.; } @@ -146,10 +123,8 @@ std::string GMSH_CutParametricPlugin::callbackStr(int num, int action, std::stri std::string &opt) { opt = value; -#if defined(HAVE_FLTK) recompute = 1; - DrawPlugin(draw); -#endif + GMSH_Plugin::setDrawFunction(draw); return opt; } diff --git a/Plugin/CutPlane.cpp b/Plugin/CutPlane.cpp index 28317c0de08a4e682891809eecf128ae36228c8e..7b64146ae2710b3ecb419ef8a172e083a7029f76 100644 --- a/Plugin/CutPlane.cpp +++ b/Plugin/CutPlane.cpp @@ -64,9 +64,7 @@ double GMSH_CutPlanePlugin::callback(int num, int action, double value, double * default: break; } *opt = value; -#if defined(HAVE_FLTK) - DrawPlugin(draw); -#endif + GMSH_Plugin::setDrawFunction(draw); return 0.; } diff --git a/Plugin/CutSphere.cpp b/Plugin/CutSphere.cpp index bbb38d1cc05b6827149dabfc3e437d62ba525982..a41b1ea95f6400a4f93e6a3d950ee1eafbd86afa 100644 --- a/Plugin/CutSphere.cpp +++ b/Plugin/CutSphere.cpp @@ -58,9 +58,7 @@ double GMSH_CutSpherePlugin::callback(int num, int action, double value, double default: break; } *opt = value; -#if defined(HAVE_FLTK) - DrawPlugin(draw); -#endif + GMSH_Plugin::setDrawFunction(draw); return 0.; } diff --git a/Plugin/Evaluate.cpp b/Plugin/Evaluate.cpp index ad836fdc1cbc0e326d91d220ec5dbc62dbb2a056..e85ed2b24f685ce6b0f7e4629c4f7fd6207d5ea4 100644 --- a/Plugin/Evaluate.cpp +++ b/Plugin/Evaluate.cpp @@ -7,10 +7,7 @@ #include "GmshConfig.h" #include "Evaluate.h" #include "OctreePost.h" - -#if defined(HAVE_MATH_EVAL) -#include "matheval.h" -#endif +#include "mathEvaluator.h" StringXNumber EvaluateOptions_Number[] = { {GMSH_FULLRC, "Component", NULL, -1.}, @@ -108,7 +105,6 @@ PView *GMSH_EvaluatePlugin::execute(PView *view) int externalView = (int)EvaluateOptions_Number[2].def; int externalTimeStep = (int)EvaluateOptions_Number[3].def; int iView = (int)EvaluateOptions_Number[4].def; - const char *expr = EvaluateOptions_String[0].def.c_str(); PView *v1 = getView(iView, view); if(!v1) return view; @@ -142,12 +138,17 @@ PView *GMSH_EvaluatePlugin::execute(PView *view) externalTimeStep = 0; } -#if defined(HAVE_MATH_EVAL) - void *f = evaluator_create((char*)expr); - if(!f){ - Msg::Error("Invalid expression '%s'", expr); - return view; - } + const char *names[] = + {"x", "y", "z", "Time", "TimeStep", + "v", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8", + "w", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8"}; + unsigned int numVariables = sizeof(names) / sizeof(names[0]); + std::vector<std::string> expressions(1), variables(numVariables); + expressions[0] = EvaluateOptions_String[0].def; + for(unsigned int i = 0; i < numVariables; i++) variables[i] = names[i]; + mathEvaluator f(expressions, variables); + if(expressions.empty()) return view; + std::vector<double> values(numVariables), res(1); OctreePost *octree = 0; if((data1->getNumEntities() != data2->getNumEntities()) || @@ -177,14 +178,15 @@ PView *GMSH_EvaluatePlugin::execute(PView *view) for(int ele = 0; ele < data1->getNumElements(step, ent); ele++){ if(data1->skipElement(step, ent, ele)) continue; int numComp = data1->getNumComponents(step, ent, ele); - int numComp2 = data2->getNumComponents(step2, ent, ele); + int numComp2 = octree ? 9 : data2->getNumComponents(step2, ent, ele); for(int nod = 0; nod < data1->getNumNodes(step, ent, ele); nod++){ double x, y, z; int tag = data1->getNode(step, ent, ele, nod, x, y, z); if(tag) continue; // node has already been modified - std::vector<double> v(numComp, 0.), w(numComp2, 0.); + std::vector<double> v(std::max(9, numComp), 0.); for(int comp = 0; comp < numComp; comp++) data1->getValue(step, ent, ele, nod, comp, v[comp]); + std::vector<double> w(std::max(9, numComp2), 0.); if(octree){ if(!octree->searchScalar(x, y, z, &w[0], step2)) if(!octree->searchVector(x, y, z, &w[0], step2)) @@ -196,28 +198,22 @@ PView *GMSH_EvaluatePlugin::execute(PView *view) for(int comp = 0; comp < numComp; comp++){ if(component >= 0 && component != comp) continue; - char *names[] = - {"x", "y", "z", "Time", "TimeStep", - "v", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8", - "w", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8"}; - double values[] = - {x, y, z, time, step, - v[comp], v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7], v[8], - w[comp], w[0], w[1], w[2], w[3], w[4], w[5], w[6], w[7], w[8]}; - double res = evaluator_evaluate - (f, sizeof(names) / sizeof(names[0]), names, values); - data1->setValue(step, ent, ele, nod, comp, res); + values[0] = x; values[1] = y; values[2] = z; + values[3] = time; values[4] = step; + values[5] = v[comp]; + for(int i = 0; i < 9; i++) values[6 + i] = v[i]; + values[15] = w[comp]; + for(int i = 0; i < 9; i++) values[16 + i] = w[i]; + if(f.eval(values, res)) + data1->setValue(step, ent, ele, nod, comp, res[0]); data1->tagNode(step, ent, ele, nod, 1); } } } } } - evaluator_destroy(f); + if(octree) delete octree; -#else - Msg::Error("MathEval is not compiled in this version of Gmsh"); -#endif data1->finalize(); diff --git a/Plugin/Extract.cpp b/Plugin/Extract.cpp index 38a884f868551a572388d6df4e513dab1947fa08..4581f92fe27cbb296a1c8ccd9040c86d7b61cad2 100644 --- a/Plugin/Extract.cpp +++ b/Plugin/Extract.cpp @@ -6,10 +6,7 @@ #include "GmshConfig.h" #include "GmshDefines.h" #include "Extract.h" - -#if defined(HAVE_MATH_EVAL) -#include "matheval.h" -#endif +#include "mathEvaluator.h" StringXNumber ExtractOptions_Number[] = { {GMSH_FULLRC, "TimeStep", NULL, -1.}, @@ -17,11 +14,7 @@ StringXNumber ExtractOptions_Number[] = { }; StringXString ExtractOptions_String[] = { -#if defined(HAVE_MATH_EVAL) {GMSH_FULLRC, "Expression0", NULL, "Sqrt(v0^2+v1^2+v2^2)"}, -#else - {GMSH_FULLRC, "Expression0", NULL, "v0"}, -#endif {GMSH_FULLRC, "Expression1", NULL, ""}, {GMSH_FULLRC, "Expression2", NULL, ""}, {GMSH_FULLRC, "Expression3", NULL, ""}, @@ -137,16 +130,9 @@ PView *GMSH_ExtractPlugin::execute(PView *view) { int timeStep = (int)ExtractOptions_Number[0].def; int iView = (int)ExtractOptions_Number[1].def; - const char *expr[9] = { ExtractOptions_String[0].def.c_str(), - ExtractOptions_String[1].def.c_str(), - ExtractOptions_String[2].def.c_str(), - ExtractOptions_String[3].def.c_str(), - ExtractOptions_String[4].def.c_str(), - ExtractOptions_String[5].def.c_str(), - ExtractOptions_String[6].def.c_str(), - ExtractOptions_String[7].def.c_str(), - ExtractOptions_String[8].def.c_str() }; - + std::vector<std::string> expr(9); + for(int i = 0; i < 9; i++) expr[i] = ExtractOptions_String[i].def; + PView *v1 = getView(iView, view); if(!v1) return view; PViewData *data1 = v1->getData(); @@ -157,53 +143,31 @@ PView *GMSH_ExtractPlugin::execute(PView *view) } int numComp2; - if(strlen(expr[3]) || strlen(expr[4]) || strlen(expr[5]) || - strlen(expr[6]) || strlen(expr[7]) || strlen(expr[8])){ + if(expr[3].size() || expr[4].size() || expr[5].size() || + expr[6].size() || expr[7].size() || expr[8].size()){ numComp2 = 9; for(int i = 0; i < 9; i++) - if(!strlen(expr[i])) expr[i] = "0"; + if(expr[i].empty()) expr[i] = "0"; } - else if(strlen(expr[1]) || strlen(expr[2])){ + else if(expr[1].size() || expr[2].size()){ numComp2 = 3; for(int i = 0; i < 3; i++) - if(!strlen(expr[i])) expr[i] = "0"; + if(expr[i].empty()) expr[i] = "0"; } else{ numComp2 = 1; } - - // if we have MathEval, we can evaluate arbitrary expressions; - // otherwise, we only allow to extract single components -#if defined(HAVE_MATH_EVAL) - void *f[9] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; - for(int i = 0; i < numComp2; i++){ - f[i] = evaluator_create((char*)expr[i]); - if(!f[i]){ - Msg::Error("Invalid expression '%s'", expr[i]); - for(int j = 0; j < i; j++) - if(f[j]) evaluator_destroy(f[j]); - return view; - } - } -#else - int comp2[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - for(int i = 0; i < numComp2; i++){ - if (!strcmp(expr[i], "v0")) comp2[i] = 0; - else if(!strcmp(expr[i], "v1")) comp2[i] = 1; - else if(!strcmp(expr[i], "v2")) comp2[i] = 2; - else if(!strcmp(expr[i], "v3")) comp2[i] = 3; - else if(!strcmp(expr[i], "v4")) comp2[i] = 4; - else if(!strcmp(expr[i], "v5")) comp2[i] = 5; - else if(!strcmp(expr[i], "v6")) comp2[i] = 6; - else if(!strcmp(expr[i], "v7")) comp2[i] = 7; - else if(!strcmp(expr[i], "v8")) comp2[i] = 8; - else{ - Msg::Error("Invalid expression '%s'", expr[i]); - return view; - } - } -#endif - + expr.resize(numComp2); + + const char *names[] = + { "x", "y", "z", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8" }; + unsigned int numVariables = sizeof(names) / sizeof(names[0]); + std::vector<std::string> variables(numVariables); + for(unsigned int i = 0; i < numVariables; i++) variables[i] = names[i]; + mathEvaluator f(expr, variables); + if(expr.empty()) return view; + std::vector<double> values(numVariables), res(numComp2); + PView *v2 = new PView(); PViewDataList *data2 = getDataList(v2); @@ -233,32 +197,19 @@ PView *GMSH_ExtractPlugin::execute(PView *view) int timeEnd = (timeStep < 0) ? -timeStep : timeStep + 1; for(int step = timeBeg; step < timeEnd; step++){ for(int nod = 0; nod < numNodes; nod++){ - std::vector<double> v(numComp); + std::vector<double> v(std::max(9, numComp), 0.); for(int comp = 0; comp < numComp; comp++) data1->getValue(step, ent, ele, nod, comp, v[comp]); - for(int comp = 0; comp < numComp2; comp++){ -#if defined(HAVE_MATH_EVAL) - char *names[] = { "x", "y", "z", "v0", "v1", "v2", - "v3", "v4", "v5", "v6", "v7", "v8" }; - double values[] = { x[nod], y[nod], z[nod], v[0], v[1], v[2], - v[3], v[4], v[5], v[6], v[7], v[8] }; - double res = evaluator_evaluate(f[comp], sizeof(names) / sizeof(names[0]), - names, values); -#else - double res = v[comp2[comp]]; -#endif - out->push_back(res); - } + values[0] = x[nod]; values[1] = y[nod]; values[2] = z[nod]; + for(int i = 0; i < 9; i++) values[3 + i] = v[i]; + if(f.eval(values, res)) + for(int i = 0; i < numComp2; i++) + out->push_back(res[i]); } } } } -#if defined(HAVE_MATH_EVAL) - for(int i = 0; i < numComp2; i++) - evaluator_destroy(f[i]); -#endif - if(timeStep < 0){ for(int i = 0; i < data1->getNumTimeSteps(); i++) data2->Time.push_back(data1->getTime(i)); diff --git a/Plugin/FiniteElement.cpp b/Plugin/FiniteElement.cpp index ff06c77d935fa245440e3272dca381f9811f28b2..0b675655161109671be2fa6306292d2478ddbffc 100644 --- a/Plugin/FiniteElement.cpp +++ b/Plugin/FiniteElement.cpp @@ -12,10 +12,7 @@ #include "gmshLaplace.h" #include "gmshHelmholtz.h" #include "gmshLinearSystemGmm.h" - -#if defined(HAVE_MATH_EVAL) -#include "matheval.h" -#endif +#include "mathEvaluator.h" StringXNumber FiniteElementOptions_Number[] = { {GMSH_FULLRC, "Omega", NULL, 1.}, @@ -74,33 +71,35 @@ template<class scalar> class gmshMathEvalFunction : public gmshFunction<scalar> { private: std::string _str; - void *_f; + mathEvaluator *_f; public: gmshMathEvalFunction(std::string str) : _str(str) { -#if defined(HAVE_MATH_EVAL) - _f = evaluator_create((char*)_str.c_str()); - if(!_f) Msg::Error("Invalid expression '%s'", _str.c_str()); -#endif + std::vector<std::string> expressions(1), variables(3); + expressions[0] = str; + variables[0] = "x"; + variables[1] = "y"; + variables[2] = "z"; + _f = new mathEvaluator(expressions, variables); + if(expressions.empty()){ + delete _f; + _f = 0; + } } virtual ~gmshMathEvalFunction() { -#if defined(HAVE_MATH_EVAL) - if(_f) evaluator_destroy(_f); -#endif + if(_f) delete _f; } virtual scalar operator () (double x, double y, double z) const { -#if defined(HAVE_MATH_EVAL) if(_f){ - char *names[] = {"x", "y", "z"}; - double values[] = {x, y, z}; - return evaluator_evaluate(_f, sizeof(names)/sizeof(names[0]), names, values); + std::vector<double> values(3), res(1); + values[0] = x; + values[1] = y; + values[2] = z; + if(_f->eval(values, res)) return res[0]; } return atof(_str.c_str()); -#else - return atof(_str.c_str()); -#endif } }; diff --git a/Plugin/Plugin.cpp b/Plugin/Plugin.cpp index c7057a26a12589c7e4073bf628b86815f1baa5ea..80dd6a72dc9751c66c86d12227394ce4c0a59624 100644 --- a/Plugin/Plugin.cpp +++ b/Plugin/Plugin.cpp @@ -4,7 +4,30 @@ // bugs and problems to <gmsh@geuz.org>. #include <stdio.h> +#include <string.h> +#include "GmshConfig.h" #include "Plugin.h" +#include "Context.h" +#include "Draw.h" + +void (*GMSH_Plugin::draw)(void*) = 0; + +void GMSH_Plugin::setDrawFunction(void (*fct)(void *context)) +{ +#if defined(HAVE_FLTK) + draw = fct; + int old = CTX::instance()->drawBBox; + CTX::instance()->drawBBox = 1; + if(CTX::instance()->fastRedraw){ + CTX::instance()->post.draw = 0; + CTX::instance()->mesh.draw = 0; + } + Draw(); + CTX::instance()->drawBBox = old; + CTX::instance()->post.draw = 1; + CTX::instance()->mesh.draw = 1; +#endif +} void GMSH_Plugin::catchErrorMessage(char *errorMessage) const { diff --git a/Plugin/Plugin.h b/Plugin/Plugin.h index daef4658d9d90adbd55c516f0db0bf7f24050046..43ed85b0a04b0e8635d8f7c346e20f3b58d533a0 100644 --- a/Plugin/Plugin.h +++ b/Plugin/Plugin.h @@ -64,6 +64,10 @@ class GMSH_Plugin // run the plugin virtual void run() = 0; + + // dynamic pointer to a drawing function + static void setDrawFunction(void (*fct)(void *)); + static void (*draw)(void*); }; // The base class for post-processing plugins. The user can either diff --git a/Plugin/PluginManager.cpp b/Plugin/PluginManager.cpp index 59e04320ad386e35c7b939b0b530037162127c9d..f4e81e4028b26bea72673dce7b302a50947e9263 100644 --- a/Plugin/PluginManager.cpp +++ b/Plugin/PluginManager.cpp @@ -8,6 +8,7 @@ #include "GmshConfig.h" #include "StringUtils.h" #include "Context.h" +#include "Draw.h" #include "Plugin.h" #include "PluginManager.h" #include "CutMap.h" @@ -62,7 +63,7 @@ PluginManager::~PluginManager() { for(std::map<std::string, GMSH_Plugin*>::iterator it = allPlugins.begin(); it != allPlugins.end(); ++it) - delete(*it).second; + delete it->second; } GMSH_Plugin *PluginManager::find(std::string pluginName) @@ -70,7 +71,7 @@ GMSH_Plugin *PluginManager::find(std::string pluginName) std::map<std::string, GMSH_Plugin*>::iterator it = allPlugins.find(pluginName); if(it == allPlugins.end()) return 0; - return (*it).second; + return it->second; } GMSH_SolverPlugin *PluginManager::findSolverPlugin() @@ -78,7 +79,7 @@ GMSH_SolverPlugin *PluginManager::findSolverPlugin() std::map<std::string, GMSH_Plugin*>::iterator it = allPlugins.begin(); std::map<std::string, GMSH_Plugin*>::iterator ite = allPlugins.end(); for (; it != ite; ++it) { - GMSH_Plugin *p = (*it).second; + GMSH_Plugin *p = it->second; if(p->getType() == GMSH_Plugin::GMSH_SOLVER_PLUGIN) { return (GMSH_SolverPlugin*)(p); } @@ -204,12 +205,10 @@ void PluginManager::registerDefaultPlugins() ("Triangulate", GMSH_RegisterTriangulatePlugin())); allPlugins.insert(std::pair<std::string, GMSH_Plugin*> ("GSHHS", GMSH_RegisterGSHHSPlugin())); -#if defined(HAVE_MATH_EVAL) allPlugins.insert(std::pair<std::string, GMSH_Plugin*> ("Evaluate", GMSH_RegisterEvaluatePlugin())); allPlugins.insert(std::pair<std::string, GMSH_Plugin*> ("CutParametric", GMSH_RegisterCutParametricPlugin())); -#endif allPlugins.insert(std::pair<std::string, GMSH_Plugin*> ("FiniteElement", GMSH_RegisterFiniteElementPlugin())); #if defined(HAVE_KBIPACK) @@ -269,3 +268,4 @@ void PluginManager::addPlugin(std::string fileName) Msg::Info("Loaded Plugin '%s' (%s)", p->getName().c_str(), p->getAuthor().c_str()); #endif } + diff --git a/Plugin/Probe.cpp b/Plugin/Probe.cpp index 28baaf2db49ba81d58a392dfb9c07e2ef29a1725..d860e4f19ee5de71313efb412bad8b1f39beb54a 100644 --- a/Plugin/Probe.cpp +++ b/Plugin/Probe.cpp @@ -78,9 +78,7 @@ double GMSH_ProbePlugin::callback(int num, int action, double value, double *opt default: break; } *opt = value; -#if defined(HAVE_FLTK) - DrawPlugin(draw); -#endif + GMSH_Plugin::setDrawFunction(draw); return 0.; } diff --git a/Plugin/StreamLines.cpp b/Plugin/StreamLines.cpp index 93a55f8b5445fcd45336976ebc8727254cf0a19b..3e535a859e783c75912a7e0236fedae30a76e1a2 100644 --- a/Plugin/StreamLines.cpp +++ b/Plugin/StreamLines.cpp @@ -68,9 +68,7 @@ double GMSH_StreamLinesPlugin::callback(int num, int action, double value, doubl default: break; } *opt = value; -#if defined(HAVE_FLTK) - DrawPlugin(draw); -#endif + GMSH_Plugin::setDrawFunction(draw); return 0.; } diff --git a/Plugin/Triangulate.cpp b/Plugin/Triangulate.cpp index 971da9cc5ccfca0f840d45275016ae06eb92047e..6bc1e458fd4c5453054478a304e5dc704e945bb4 100644 --- a/Plugin/Triangulate.cpp +++ b/Plugin/Triangulate.cpp @@ -81,9 +81,6 @@ PView *GMSH_TriangulatePlugin::execute(PView *v) return v1; } - PView *v2 = new PView(); - PViewDataList *data2 = getDataList(v2); - // create list of points with associated data std::vector<MVertex*> points; int numSteps = data1->getNumTimeSteps(); @@ -102,6 +99,13 @@ PView *GMSH_TriangulatePlugin::execute(PView *v) } } + if(points.size() < 3){ + Msg::Error("Need at least 3 points to triangulate"); + for(unsigned int i = 0; i < points.size(); i++) + delete points[i]; + return v1; + } + // project points onto plane discreteFace *s = new discreteFace (GModel::current(), GModel::current()->getNumFaces() + 1); @@ -131,6 +135,8 @@ PView *GMSH_TriangulatePlugin::execute(PView *v) doc.MakeMeshWithPoints(); // create output (using unperturbed data) + PView *v2 = new PView(); + PViewDataList *data2 = getDataList(v2); for(int i = 0; i < doc.numTriangles; i++){ PointData *p[3]; p[0] = (PointData*)doc.points[doc.triangles[i].a].data; diff --git a/Post/PViewOptions.cpp b/Post/PViewOptions.cpp index 5843c79ad6144d2e0c8da3336289969bdbf530fd..5641fef800ac1c0edc12cb971310fdb0c7abb0c9 100644 --- a/Post/PViewOptions.cpp +++ b/Post/PViewOptions.cpp @@ -8,23 +8,19 @@ #include "GmshMessage.h" #include "GmshDefines.h" #include "PViewOptions.h" - -#if defined(HAVE_MATH_EVAL) -#include "matheval.h" -#endif +#include "mathEvaluator.h" PViewOptions PViewOptions::reference; -PViewOptions::PViewOptions() +PViewOptions::PViewOptions() : genRaiseEvaluator(0) { - for(int i = 0; i < 3; i++) genRaiseFunction[i] = 0; ColorTable_InitParam(2, &colorTable); ColorTable_Recompute(&colorTable); } PViewOptions::~PViewOptions() { - destroyGeneralRaise(); + if(genRaiseEvaluator) delete genRaiseEvaluator; } double PViewOptions::getScaleValue(int iso, int numIso, double min, double max) @@ -97,48 +93,23 @@ unsigned int PViewOptions::getColor(int i, int nb) return colorTable.table[index]; } -void PViewOptions::destroyGeneralRaise() -{ - for(int i = 0; i < 3; i++){ -#if defined(HAVE_MATH_EVAL) - if(genRaiseFunction[i]) - evaluator_destroy(genRaiseFunction[i]); - genRaiseFunction[i] = 0; -#else - genRaiseFunction[i] = (void*)-1; -#endif - } -} - void PViewOptions::createGeneralRaise() { - destroyGeneralRaise(); + const char *names[] = + { "x", "y", "z", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8"}; + unsigned int numVariables = sizeof(names) / sizeof(names[0]); + std::vector<std::string> expressions(3), variables(numVariables); + expressions[0] = genRaiseX; + expressions[1] = genRaiseY; + expressions[2] = genRaiseZ; + for(unsigned int i = 0; i < numVariables; i++) variables[i] = names[i]; - const char *expr[3] = {genRaiseX.c_str(), genRaiseY.c_str(), genRaiseZ.c_str()}; -#if defined(HAVE_MATH_EVAL) - for(int i = 0; i < 3; i++) { - if(strlen(expr[i])) { - if(!(genRaiseFunction[i] = evaluator_create((char*)expr[i]))) - Msg::Error("Invalid expression '%s'", expr[i]); - } - } -#else - for(int i = 0; i < 3; i++) { - if(!strcmp(expr[i], "v0")) genRaiseFunction[i] = (void*)0; - else if(!strcmp(expr[i], "v1")) genRaiseFunction[i] = (void*)1; - else if(!strcmp(expr[i], "v2")) genRaiseFunction[i] = (void*)2; - else if(!strcmp(expr[i], "v3")) genRaiseFunction[i] = (void*)3; - else if(!strcmp(expr[i], "v4")) genRaiseFunction[i] = (void*)4; - else if(!strcmp(expr[i], "v5")) genRaiseFunction[i] = (void*)5; - else if(!strcmp(expr[i], "v6")) genRaiseFunction[i] = (void*)6; - else if(!strcmp(expr[i], "v7")) genRaiseFunction[i] = (void*)7; - else if(!strcmp(expr[i], "v8")) genRaiseFunction[i] = (void*)8; - else if(strlen(expr[i])) { - Msg::Error("Invalid expression '%s'", expr[i]); - return; - } + if(genRaiseEvaluator) delete genRaiseEvaluator; + genRaiseEvaluator = new mathEvaluator(expressions, variables); + if(expressions.empty()){ + delete genRaiseEvaluator; + genRaiseEvaluator = 0; } -#endif } bool PViewOptions::skipElement(int type) diff --git a/Post/PViewOptions.h b/Post/PViewOptions.h index 0d31e7e8605b0951f2bb75b45b0af7cab3d18c2f..9c5dc3edcaa8ab7f88b5d65f682791bf67497cec 100644 --- a/Post/PViewOptions.h +++ b/Post/PViewOptions.h @@ -10,6 +10,8 @@ #include "ColorTable.h" #include "SBoundingBox3d.h" +class mathEvaluator; + // The display options of a post-processing view. class PViewOptions { public: @@ -82,7 +84,7 @@ class PViewOptions { int useGenRaise; double genRaiseFactor; std::string genRaiseX, genRaiseY, genRaiseZ; - void *genRaiseFunction[3]; + mathEvaluator *genRaiseEvaluator; int adaptVisualizationGrid, maxRecursionLevel; double targetError; int clip; // status of clip planes (bit array) @@ -110,9 +112,8 @@ class PViewOptions { bool forceLinear=false, int numColors=-1); // get i-th color amongst nb (i in [0, nb - 1]) unsigned int getColor(int i, int nb); - // create/destroy math evaluators for general raise option + // create math evaluator for general raise option void createGeneralRaise(); - void destroyGeneralRaise(); // return true if one should not draw elements with type type bool skipElement(int type); }; diff --git a/Qt/Draw.cpp b/Qt/Draw.cpp index 1b8e3eb869cea2fca84a1a865abfec3cb25b64b1..8dcfdda087eb4f06adf3022c633f0d5dc6252728 100644 --- a/Qt/Draw.cpp +++ b/Qt/Draw.cpp @@ -20,10 +20,6 @@ void DrawCurrentOpenglWindow(bool make_current) { } -void DrawPlugin(void (*draw)(void *context)) -{ -} - int GetFontIndex(const char *fontname) { return 0;