diff --git a/Geo/Cell.cpp b/Geo/Cell.cpp index 165425e4a36b4f401945e3be3468ae9621157159..0b31ca2f58d77eb238763eb6a206dadc1040d941 100644 --- a/Geo/Cell.cpp +++ b/Geo/Cell.cpp @@ -330,9 +330,9 @@ bool CombinedCell::hasVertex(int vertex) const void Cell::printCell() { printf("%d-cell %d: \n" , getDim(), getNum()); - printf("Vertices: "); + printf(" Vertices:"); for(int i = 0; i < this->getNumVertices(); i++){ - printf("%d ", this->getMeshVertex(i)->getNum()); + printf(" %d", this->getMeshVertex(i)->getNum()); } printf(", in subdomain: %d, ", inSubdomain()); printf("combined: %d. \n" , isCombined() ); diff --git a/Geo/CellComplex.cpp b/Geo/CellComplex.cpp index 9359811aa093c0d96de2bfc62cc8021823884db4..a728813f8cf0b9d3ccb5075232e6317e5f266e3b 100644 --- a/Geo/CellComplex.cpp +++ b/Geo/CellComplex.cpp @@ -85,7 +85,9 @@ bool CellComplex::_insertCells(std::vector<MElement*>& elements, bool CellComplex::_removeCells(std::vector<MElement*>& elements, int domain) { - + if(elements.empty()) return true; + Msg::Debug("Removing %d elements and their subcells from the cell complex.", + (int)elements.size()); std::set<Cell*, Less_Cell> removed[4]; for(unsigned int i=0; i < elements.size(); i++){ @@ -121,11 +123,14 @@ bool CellComplex::_removeCells(std::vector<MElement*>& elements, } } } - for (int dim = 3; dim > 0; dim--){ + for (int dim = 3; dim >= 0; dim--){ for(citer cit = removed[dim].begin(); cit != removed[dim].end(); cit++){ delete *cit; } } + Msg::Debug("Removed %d volumes, %d faces, %d edges, and %d vertices from the cell complex.", + (int)removed[3].size(), (int)removed[2].size(), + (int)removed[1].size(), (int)removed[0].size()); return true; } @@ -335,7 +340,7 @@ int CellComplex::coreduction(int dim, bool omit, int CellComplex::reduceComplex(bool docombine, bool omit) { Msg::Debug("Cell Complex reduction:"); - Msg::Debug(" %d volumes, %d faces, %d edges and %d vertices", + Msg::Debug(" %d volumes, %d faces, %d edges, and %d vertices", getSize(3), getSize(2), getSize(1), getSize(0)); if(!getSize(0)) return 0; @@ -366,7 +371,7 @@ int CellComplex::reduceComplex(bool docombine, bool omit) } } - Msg::Debug(" %d volumes, %d faces, %d edges and %d vertices", + Msg::Debug(" %d volumes, %d faces, %d edges, and %d vertices", getSize(3), getSize(2), getSize(1), getSize(0)); if(docombine) combine(3); @@ -375,7 +380,7 @@ int CellComplex::reduceComplex(bool docombine, bool omit) reduction(1, false, empty); if(docombine) combine(1); - Msg::Debug(" %d volumes, %d faces, %d edges and %d vertices", + Msg::Debug(" %d volumes, %d faces, %d edges, and %d vertices", getSize(3), getSize(2), getSize(1), getSize(0)); _reduced = true; @@ -398,7 +403,7 @@ void CellComplex::removeSubdomain() int CellComplex::coreduceComplex(bool docombine, bool omit) { Msg::Debug("Cell Complex coreduction:"); - Msg::Debug(" %d volumes, %d faces, %d edges and %d vertices", + Msg::Debug(" %d volumes, %d faces, %d edges, and %d vertices", getSize(3), getSize(2), getSize(1), getSize(0)); if(!getSize(0)) return 0; @@ -436,7 +441,7 @@ int CellComplex::coreduceComplex(bool docombine, bool omit) } - Msg::Debug(" %d volumes, %d faces, %d edges and %d vertices", + Msg::Debug(" %d volumes, %d faces, %d edges, and %d vertices", getSize(3), getSize(2), getSize(1), getSize(0)); if(docombine) cocombine(0); @@ -446,7 +451,7 @@ int CellComplex::coreduceComplex(bool docombine, bool omit) if(docombine) cocombine(2); coreduction(3, false, empty); coherent(); - Msg::Debug(" %d volumes, %d faces, %d edges and %d vertices", + Msg::Debug(" %d volumes, %d faces, %d edges, and %d vertices", getSize(3), getSize(2), getSize(1), getSize(0)); _reduced = true; @@ -456,7 +461,7 @@ int CellComplex::coreduceComplex(bool docombine, bool omit) int CellComplex::combine(int dim) { Msg::Debug("Cell complex before combining:"); - Msg::Debug(" %d volumes, %d faces, %d edges and %d vertices", + Msg::Debug(" %d volumes, %d faces, %d edges, and %d vertices", getSize(3), getSize(2), getSize(1), getSize(0)); if(dim < 1 || dim > 3) return 0; @@ -482,8 +487,10 @@ int CellComplex::combine(int dim) int or2 = it->second.get(); Cell* c2 = it->first; - if(!(*c1 == *c2) && abs(or1) == abs(or2) - && inSameDomain(s, c1) && inSameDomain(s, c2)) { + if(!(*c1 == *c2) && abs(or1) == abs(or2) && + inSameDomain(s, c1) && inSameDomain(s, c2) && + c1->getImmune() == c2->getImmune() ) { + removeCell(s); c1->getBoundary(bd_c); @@ -505,7 +512,7 @@ int CellComplex::combine(int dim) } Msg::Debug("Cell complex after combining:"); - Msg::Debug(" %d volumes, %d faces, %d edges and %d vertices", + Msg::Debug(" %d volumes, %d faces, %d edges, and %d vertices", getSize(3), getSize(2), getSize(1), getSize(0)); _reduced = true; return count; @@ -515,7 +522,7 @@ int CellComplex::combine(int dim) int CellComplex::cocombine(int dim) { Msg::Debug("Cell complex before cocombining:"); - Msg::Debug(" %d volumes, %d faces, %d edges and %d vertices", + Msg::Debug(" %d volumes, %d faces, %d edges, and %d vertices", getSize(3), getSize(2), getSize(1), getSize(0)); if(dim < 0 || dim > 2) return 0; @@ -567,7 +574,7 @@ int CellComplex::cocombine(int dim) } Msg::Debug("Cell complex after cocombining:"); - Msg::Debug(" %d volumes, %d faces, %d edges and %d vertices", + Msg::Debug(" %d volumes, %d faces, %d edges, and %d vertices", getSize(3), getSize(2), getSize(1), getSize(0)); _reduced = true; return count; @@ -661,7 +668,7 @@ bool CellComplex::restoreComplex() } _newcells.clear(); Msg::Info("Restored Cell Complex:"); - Msg::Info("%d volumes, %d faces, %d edges and %d vertices", + Msg::Info("%d volumes, %d faces, %d edges, and %d vertices", getSize(3), getSize(2), getSize(1), getSize(0)); _reduced = false; return true; diff --git a/Geo/Chain.h b/Geo/Chain.h index eea7a8bc1abc3a8ab28285191e03d3f6ff8365fe..5921b5589641c039446057fd5f308c1f938f1ccf 100644 --- a/Geo/Chain.h +++ b/Geo/Chain.h @@ -235,7 +235,8 @@ public: // elementary chains are turned into mesh elements with // orientation and multiplicity given by elementary chain coefficient // (and create a post-processing view) - void addToModel(GModel* m, bool post=true) const; + // (and request a physical group number) + void addToModel(GModel* m, bool post=true, int physicalNumRequest=-1) const; }; template <class C> @@ -449,7 +450,8 @@ Chain<C>& Chain<C>::operator*=(const C& coeff) } template <class C> -void Chain<C>::addToModel(GModel* m, bool post) const +void Chain<C>::addToModel(GModel* m, bool post, + int physicalNumRequest) const { if(this->isZero()) { Msg::Info("A chain is zero element of C%d, not added to the model", @@ -486,6 +488,10 @@ void Chain<C>::addToModel(GModel* m, bool post) const for(int i = 0; i < 4; i++) max[i] = m->getMaxPhysicalNumber(i); int physicalNum = *std::max_element(max,max+4) + 1; + if(physicalNumRequest > -1 && physicalNumRequest < physicalNum) + Msg::Warning("Requested chain physical group number already taken. Using next available."); + else if(physicalNumRequest > -1 && physicalNumRequest >= physicalNum) + physicalNum = physicalNumRequest; std::map<int, std::vector<MElement*> > entityMap; entityMap[entityNum] = elements; diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp index 74a24c70e9981fcae8f226d119b85f337a03796a..779d4d5cb0f5c5272d69fc5eab4d95a7ecc00153 100644 --- a/Geo/GModel.cpp +++ b/Geo/GModel.cpp @@ -97,7 +97,7 @@ GModel::~GModel() delete _fields; #endif - if(_factory) + if(_factory) delete _factory; } @@ -2934,12 +2934,16 @@ void GModel::createPartitionBoundaries(int createGhostCells, int createAllDims) #endif } -void GModel::addHomologyRequest(const std::string &type, std::vector<int> &domain, - std::vector<int> &subdomain) +void GModel::addHomologyRequest(const std::string &type, + std::vector<int> &domain, + std::vector<int> &subdomain, + std::vector<int> &dim) { - std::pair<std::vector<int>, std::vector<int> > p(domain, subdomain); - _homologyRequests.insert - (std::pair<std::pair<std::vector<int>, std::vector<int> >, std::string>(p, type)); + typedef std::pair<std::vector<int>, std::vector<int> > dpair; + typedef std::pair<std::string, std::vector<int> > tpair; + dpair p(domain, subdomain); + tpair p2(type, dim); + _homologyRequests.insert(std::pair<dpair, tpair>(p, p2)); } void GModel::computeHomology() @@ -2949,36 +2953,56 @@ void GModel::computeHomology() #if defined(HAVE_KBIPACK) // find unique domain/subdomain requests typedef std::pair<std::vector<int>, std::vector<int> > dpair; + typedef std::pair<std::string, std::vector<int> > tpair; std::set<dpair> domains; - for(std::map<dpair, std::string>::iterator it = _homologyRequests.begin(); + for(std::map<dpair, tpair>::iterator it = _homologyRequests.begin(); it != _homologyRequests.end(); it++) domains.insert(it->first); Msg::Info("Number of cell complexes to construct: %d", domains.size()); for(std::set<dpair>::iterator it = domains.begin(); it != domains.end(); it++){ - std::pair<std::multimap<dpair, std::string>::iterator, - std::multimap<dpair, std::string>::iterator> itp = + std::pair<std::multimap<dpair, tpair>::iterator, + std::multimap<dpair, tpair>::iterator> itp = _homologyRequests.equal_range(*it); bool prepareToRestore = (itp.first != --itp.second); itp.second++; + std::vector<int> imdomain; Homology* homology = new Homology(this, itp.first->first.first, - itp.first->first.second, + itp.first->first.second, imdomain, prepareToRestore); - // do not save 0-, and n-chains, where n is the dimension of the model - // (usually not needed for anything, available through the plugin) - for(std::multimap<dpair, std::string>::iterator itt = itp.first; + for(std::multimap<dpair, tpair>::iterator itt = itp.first; itt != itp.second; itt++){ - std::string type = itt->second; + std::string type = itt->second.first; + std::vector<int> dim = itt->second.second; + + std::stringstream ss; + for(unsigned int i = 0; i < dim.size(); i++) { + int d = dim.at(i); + if(d >= 0 && d <= getDim()) { + ss << "H"; + if(type == "Homology") ss << "_"; + if(type == "Cohomology") ss << "^"; + ss << d; + if(i < dim.size()-1 && dim.at(i+1) >=0 && dim.at(i+1) <= getDim()) + ss << ", "; + } + } + std::string dims = ss.str(); + if(type == "Homology") { homology->findHomologyBasis(); - if(this->getDim() != 1) homology->addChainsToModel(1); - if(this->getDim() != 2) homology->addChainsToModel(2); + Msg::Info("Homology space basis chains to save: %s.", dims.c_str()); + for(unsigned int i = 0; i < dim.size(); i++) + if(dim.at(i) >= 0 && dim.at(i) <= getDim()) + homology->addChainsToModel(i); } else if(type == "Cohomology") { homology->findCohomologyBasis(); - if(this->getDim() != 1) homology->addCochainsToModel(1); - if(this->getDim() != 2) homology->addCochainsToModel(2); + Msg::Info("Cohomology space basis cochains to save: %s.", dims.c_str()); + for(unsigned int i = 0; i < dim.size(); i++) + if(dim.at(i) >= 0 && dim.at(i) <= getDim()) + homology->addCochainsToModel(i); } else Msg::Error("Unknown type of homology computation: %s", type.c_str()); diff --git a/Geo/GModel.h b/Geo/GModel.h index 4a3b541498f556a7adcf4efed53eb2d1483b2297..93a527ed2a3bf281f27205833fd500b289007d62 100644 --- a/Geo/GModel.h +++ b/Geo/GModel.h @@ -37,7 +37,8 @@ class GModel { private: friend class OCCFactory; - std::multimap<std::pair<std::vector<int>, std::vector<int> >, std::string> _homologyRequests; + std::multimap<std::pair<std::vector<int>, std::vector<int> >, + std::pair<std::string, std::vector<int> > > _homologyRequests; std::set<GRegion*, GEntityLessThan> _chainRegions; std::set<GFace*, GEntityLessThan> _chainFaces; std::set<GEdge*, GEntityLessThan> _chainEdges; @@ -406,9 +407,9 @@ class GModel // In this first attempt, only the highest dimensional mesh is adapted, which is ok if // we assume that boundaries are already adapted. // This should be fixed. - int adaptMesh(std::vector<int> technique, - std::vector<simpleFunction<double>*> f, - std::vector<std::vector<double> > parameters, + int adaptMesh(std::vector<int> technique, + std::vector<simpleFunction<double>*> f, + std::vector<std::vector<double> > parameters, int niter, bool meshAll=false); // make the mesh a high order mesh at order N @@ -511,7 +512,7 @@ class GModel // request homology computation void addHomologyRequest(const std::string &type, std::vector<int> &domain, - std::vector<int> &subdomain); + std::vector<int> &subdomain, std::vector<int> &dim); void computeHomology(); // "automatic" IO based on Gmsh global functions diff --git a/Geo/Homology.cpp b/Geo/Homology.cpp index e163d8aad3c5d31835b1ea624aad04faf7f502a6..cd618dcbfd17a19ec84cd7c83bc50938e6e89e94 100644 --- a/Geo/Homology.cpp +++ b/Geo/Homology.cpp @@ -14,12 +14,14 @@ #if defined(HAVE_KBIPACK) -Homology::Homology(GModel* model, std::vector<int> physicalDomain, +Homology::Homology(GModel* model, + std::vector<int> physicalDomain, std::vector<int> physicalSubdomain, + std::vector<int> physicalImdomain, bool saveOrig, bool combine, bool omit, bool smoothen) : _model(model), _domain(physicalDomain), _subdomain(physicalSubdomain), - _saveOrig(saveOrig), + _imdomain(physicalImdomain), _saveOrig(saveOrig), _combine(combine), _omit(omit), _smoothen(smoothen), _cellComplex(NULL), _homologyComputed(false), _cohomologyComputed(false) { @@ -35,12 +37,13 @@ Homology::Homology(GModel* model, std::vector<int> physicalDomain, if((*it)->dim() == dim) _domainEntities.push_back(*it); } } - - _getEntities(_domain, _domainEntities); - _getEntities(_subdomain, _subdomainEntities); - _getEntities(_nondomain, _nondomainEntities); - _getEntities(_nonsubdomain, _nonsubdomainEntities); - _getEntities(_imdomain, _immuneEntities); + else { + _getEntities(_domain, _domainEntities); + _getEntities(_subdomain, _subdomainEntities); + _getEntities(_nondomain, _nondomainEntities); + _getEntities(_nonsubdomain, _nonsubdomainEntities); + _getEntities(_imdomain, _immuneEntities); + } } @@ -111,7 +114,7 @@ void Homology::_createCellComplex() } double t2 = Cpu(); Msg::StatusBar(2, true, "Done creating cell complex (%g s)", t2 - t1); - Msg::Info("%d volumes, %d faces, %d edges and %d vertices", + Msg::Info("%d volumes, %d faces, %d edges, and %d vertices", _cellComplex->getSize(3), _cellComplex->getSize(2), _cellComplex->getSize(1), _cellComplex->getSize(0)); } @@ -156,16 +159,16 @@ void Homology::findHomologyBasis() double t2 = Cpu(); Msg::StatusBar(2, true, "Done reducing cell complex (%g s)", t2 - t1); - Msg::Info("%d volumes, %d faces, %d edges and %d vertices", + Msg::Info("%d volumes, %d faces, %d edges, and %d vertices", _cellComplex->getSize(3), _cellComplex->getSize(2), _cellComplex->getSize(1), _cellComplex->getSize(0)); - Msg::StatusBar(2, true, "Computing homology space basis ..."); + Msg::StatusBar(2, true, "Computing homology space bases ..."); t1 = Cpu(); ChainComplex chainComplex = ChainComplex(_cellComplex); chainComplex.computeHomology(); t2 = Cpu(); - Msg::StatusBar(2, true, "Done computing homology space basis (%g s)", t2 - t1); + Msg::StatusBar(2, true, "Done computing homology space bases (%g s)", t2 - t1); std::string domain = _getDomainString(_domain, _subdomain); _deleteChains(); @@ -187,7 +190,7 @@ void Homology::findHomologyBasis() _createChain(chain, name, false); HRank[j] = HRank[j] + 1; if(torsion != 1){ - Msg::Warning("H%d %d has torsion coefficient %d!", + Msg::Warning("H_%d %d has torsion coefficient %d!", j, i, torsion); } } @@ -197,13 +200,13 @@ void Homology::findHomologyBasis() if(_fileName != "") writeBasisMSH(); Msg::Info("Ranks of domain %shomology spaces:", domain.c_str()); - Msg::Info("H0 = %d", HRank[0]); - Msg::Info("H1 = %d", HRank[1]); - Msg::Info("H2 = %d", HRank[2]); - Msg::Info("H3 = %d", HRank[3]); + Msg::Info("H_0 = %d", HRank[0]); + Msg::Info("H_1 = %d", HRank[1]); + Msg::Info("H_2 = %d", HRank[2]); + Msg::Info("H_3 = %d", HRank[3]); if(omitted != 0) Msg::Info("The computation of basis elements in the highest dimension was omitted"); - Msg::StatusBar(2, false, "H0: %d, H1: %d, H2: %d, H3: %d", + Msg::StatusBar(2, false, "H_0: %d, H_1: %d, H_2: %d, H_3: %d", HRank[0], HRank[1], HRank[2], HRank[3]); _homologyComputed = true; } @@ -224,13 +227,13 @@ void Homology::findCohomologyBasis() _cellComplex->getSize(3), _cellComplex->getSize(2), _cellComplex->getSize(1), _cellComplex->getSize(0)); - Msg::StatusBar(2, true, "Computing cohomology space basis ..."); + Msg::StatusBar(2, true, "Computing cohomology space bases ..."); t1 = Cpu(); ChainComplex chainComplex = ChainComplex(_cellComplex); chainComplex.transposeHMatrices(); chainComplex.computeHomology(true); t2 = Cpu(); - Msg::StatusBar(2, true, "Done computing cohomology space basis (%g s)", t2- t1); + Msg::StatusBar(2, true, "Done computing cohomology space bases (%g s)", t2- t1); std::string domain = _getDomainString(_domain, _subdomain); _deleteCochains(); @@ -254,7 +257,7 @@ void Homology::findCohomologyBasis() _createChain(chain, name, true); HRank[j] = HRank[j] + 1; if(torsion != 1){ - Msg::Warning("H%d* %d has torsion coefficient %d!", j, i, torsion); + Msg::Warning("H^%d %d has torsion coefficient %d!", j, i, torsion); } } } @@ -263,39 +266,59 @@ void Homology::findCohomologyBasis() if(_fileName != "") writeBasisMSH(); Msg::Info("Ranks of domain %scohomology spaces:", domain.c_str()); - Msg::Info("H0* = %d", HRank[0]); - Msg::Info("H1* = %d", HRank[1]); - Msg::Info("H2* = %d", HRank[2]); - Msg::Info("H3* = %d", HRank[3]); + Msg::Info("H^0 = %d", HRank[0]); + Msg::Info("H^1 = %d", HRank[1]); + Msg::Info("H^2 = %d", HRank[2]); + Msg::Info("H^3 = %d", HRank[3]); if(omitted != 0) Msg::Info("The computation of basis elements in the highest dimension was omitted"); - Msg::StatusBar(2, false, "H0*: %d, H1*: %d, H2*: %d, H3*: %d", + Msg::StatusBar(2, false, "H^0: %d, H^1: %d, H^2: %d, H^3: %d", HRank[0], HRank[1], HRank[2], HRank[3]); _cohomologyComputed = true; } -void Homology::addChainsToModel(int dim, bool post) +void Homology::addChainsToModel(int dim, bool post, int physicalNumRequest) { + int pgnum = -1; if(!_homologyComputed) Msg::Warning("Homology is not computed"); - if(dim == -1) - for(int j = 0; j < 4; j++) - for(unsigned int i = 0; i < _chains[j].size(); i++) - _chains[j].at(i)->addToModel(this->getModel(), post); - else if (dim > -1 && dim < 4) - for(unsigned int i = 0; i < _chains[dim].size(); i++) - _chains[dim].at(i)->addToModel(this->getModel(), post); + if(dim == -1) { + for(int j = 0; j < 4; j++) { + for(unsigned int i = 0; i < _chains[j].size(); i++) { + if(physicalNumRequest != -1) pgnum = physicalNumRequest + i; + else pgnum = -1; + _chains[j].at(i)->addToModel(this->getModel(), post, pgnum); + } + } + } + else if (dim > -1 && dim < 4) { + for(unsigned int i = 0; i < _chains[dim].size(); i++) { + if(physicalNumRequest != -1) pgnum = physicalNumRequest + i; + else pgnum = -1; + _chains[dim].at(i)->addToModel(this->getModel(), post, pgnum); + } + } } -void Homology::addCochainsToModel(int dim, bool post) +void Homology::addCochainsToModel(int dim, bool post, int physicalNumRequest) { + int pgnum = -1; if(!_cohomologyComputed) Msg::Warning("Cohomology is not computed"); - if(dim == -1) - for(int j = 0; j < 4; j++) - for(unsigned int i = 0; i < _cochains[j].size(); i++) - _cochains[j].at(i)->addToModel(this->getModel(), post); - else if (dim > -1 && dim < 4) - for(unsigned int i = 0; i < _cochains[dim].size(); i++) - _cochains[dim].at(i)->addToModel(this->getModel(), post); + if(dim == -1) { + for(int j = 0; j < 4; j++) { + for(unsigned int i = 0; i < _cochains[j].size(); i++) { + if(physicalNumRequest != -1) pgnum = physicalNumRequest + i; + else pgnum = -1; + _cochains[j].at(i)->addToModel(this->getModel(), post, pgnum); + } + } + } + else if (dim > -1 && dim < 4) { + for(unsigned int i = 0; i < _cochains[dim].size(); i++) { + if(physicalNumRequest != -1) pgnum = physicalNumRequest + i; + else pgnum = -1; + _cochains[dim].at(i)->addToModel(this->getModel(), post, pgnum); + } + } } void Homology::getHomologyBasis(int dim, std::vector<Chain<int> >& hom) diff --git a/Geo/Homology.h b/Geo/Homology.h index a84124a951b49cc9a565d9c8e7b8965c4b61da02..320b913f339ecc5b7f497ab26d5c94ff54414dea 100644 --- a/Geo/Homology.h +++ b/Geo/Homology.h @@ -87,8 +87,10 @@ class Homology public: // Determine domain and relative subdomain of (co)homology computation - Homology(GModel* model, std::vector<int> physicalDomain, + Homology(GModel* model, + std::vector<int> physicalDomain, std::vector<int> physicalSubdomain, + std::vector<int> physicalIm, bool saveOrig=true, bool combine=true, bool omit=true, bool smoothen=true); ~Homology(); @@ -103,8 +105,9 @@ class Homology // add chains to Gmsh model // dim: only add dim-chains if dim != -1 // post: create a post-processing view - void addChainsToModel(int dim=-1, bool post=true); - void addCochainsToModel(int dim=-1, bool post=true); + // physicalNumRequest: number the chains starting from this if available + void addChainsToModel(int dim=-1, bool post=true, int physicalNumRequest=-1); + void addCochainsToModel(int dim=-1, bool post=true, int physicalNumRequest=-1); // get representative chains of a (co)homology space basis void getHomologyBasis(int dim, std::vector<Chain<int> >& hom); diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index eecda51e080c77ffeac8ed156aad0c102e028764..4e1f41e6ff5526efe390137985815c794fa84c11 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -584,16 +584,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 7647 +#define YYLAST 7568 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 159 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 88 /* YYNRULES -- Number of rules. */ -#define YYNRULES 418 +#define YYNRULES 419 /* YYNRULES -- Number of states. */ -#define YYNSTATES 1438 +#define YYNSTATES 1442 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -680,20 +680,20 @@ static const yytype_uint16 yyprhs[] = 1555, 1562, 1563, 1567, 1568, 1570, 1571, 1574, 1575, 1578, 1586, 1593, 1602, 1608, 1612, 1620, 1626, 1633, 1640, 1653, 1664, 1675, 1686, 1697, 1700, 1704, 1711, 1713, 1715, 1718, - 1724, 1732, 1734, 1738, 1741, 1744, 1747, 1751, 1755, 1759, - 1763, 1767, 1771, 1775, 1779, 1783, 1787, 1791, 1795, 1799, - 1803, 1809, 1814, 1819, 1824, 1829, 1834, 1839, 1844, 1849, - 1854, 1859, 1866, 1871, 1876, 1881, 1886, 1891, 1896, 1903, - 1910, 1917, 1922, 1927, 1932, 1937, 1942, 1947, 1952, 1957, - 1962, 1967, 1972, 1979, 1984, 1989, 1994, 1999, 2004, 2009, - 2016, 2023, 2030, 2035, 2037, 2039, 2041, 2043, 2045, 2047, - 2049, 2051, 2057, 2062, 2067, 2070, 2076, 2080, 2087, 2092, - 2100, 2107, 2109, 2112, 2115, 2119, 2123, 2135, 2145, 2153, - 2161, 2163, 2167, 2169, 2171, 2174, 2178, 2183, 2189, 2191, - 2193, 2196, 2200, 2204, 2210, 2215, 2218, 2221, 2224, 2227, - 2229, 2231, 2235, 2240, 2247, 2249, 2251, 2255, 2259, 2269, - 2277, 2279, 2285, 2289, 2296, 2298, 2302, 2304, 2306, 2310, - 2317, 2319, 2321, 2326, 2333, 2340, 2345, 2350, 2355 + 1724, 1732, 1742, 1744, 1748, 1751, 1754, 1757, 1761, 1765, + 1769, 1773, 1777, 1781, 1785, 1789, 1793, 1797, 1801, 1805, + 1809, 1813, 1819, 1824, 1829, 1834, 1839, 1844, 1849, 1854, + 1859, 1864, 1869, 1876, 1881, 1886, 1891, 1896, 1901, 1906, + 1913, 1920, 1927, 1932, 1937, 1942, 1947, 1952, 1957, 1962, + 1967, 1972, 1977, 1982, 1989, 1994, 1999, 2004, 2009, 2014, + 2019, 2026, 2033, 2040, 2045, 2047, 2049, 2051, 2053, 2055, + 2057, 2059, 2061, 2067, 2072, 2077, 2080, 2086, 2090, 2097, + 2102, 2110, 2117, 2119, 2122, 2125, 2129, 2133, 2145, 2155, + 2163, 2171, 2173, 2177, 2179, 2181, 2184, 2188, 2193, 2199, + 2201, 2203, 2206, 2210, 2214, 2220, 2225, 2228, 2231, 2234, + 2237, 2239, 2241, 2245, 2250, 2257, 2259, 2261, 2265, 2269, + 2279, 2287, 2289, 2295, 2299, 2306, 2308, 2312, 2314, 2316, + 2320, 2327, 2329, 2331, 2336, 2343, 2350, 2355, 2360, 2365 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -872,6 +872,7 @@ static const yytype_int16 yyrhs[] = 83, 4, 6, -1, 83, 49, 156, 241, 157, 6, -1, 121, -1, 122, -1, 231, 6, -1, 231, 156, 238, 157, 6, -1, 231, 156, 238, 155, 238, 157, + 6, -1, 231, 156, 238, 155, 238, 155, 238, 157, 6, -1, 234, -1, 149, 233, 150, -1, 140, 233, -1, 139, 233, -1, 144, 233, -1, 233, 140, 233, -1, 233, 139, 233, -1, 233, 141, 233, -1, 233, @@ -968,21 +969,21 @@ static const yytype_uint16 yyrline[] = 3064, 3070, 3079, 3099, 3122, 3126, 3130, 3134, 3138, 3142, 3161, 3174, 3177, 3193, 3196, 3209, 3212, 3218, 3221, 3228, 3284, 3354, 3359, 3426, 3462, 3471, 3514, 3539, 3566, 3610, - 3633, 3656, 3659, 3668, 3672, 3682, 3717, 3718, 3722, 3727, - 3738, 3760, 3761, 3762, 3763, 3764, 3765, 3766, 3767, 3768, - 3775, 3776, 3777, 3778, 3779, 3780, 3781, 3782, 3783, 3784, - 3785, 3786, 3787, 3788, 3789, 3790, 3791, 3792, 3793, 3794, - 3795, 3796, 3797, 3798, 3799, 3800, 3801, 3802, 3803, 3804, - 3805, 3806, 3808, 3809, 3810, 3811, 3812, 3813, 3814, 3815, - 3816, 3817, 3818, 3819, 3820, 3821, 3822, 3823, 3824, 3825, - 3826, 3827, 3828, 3837, 3838, 3839, 3840, 3841, 3842, 3843, - 3847, 3867, 3886, 3904, 3916, 3933, 3954, 3959, 3964, 3974, - 3984, 3992, 3996, 4000, 4004, 4008, 4015, 4019, 4023, 4027, - 4034, 4039, 4046, 4051, 4055, 4060, 4064, 4072, 4083, 4087, - 4099, 4107, 4115, 4122, 4133, 4153, 4157, 4161, 4165, 4169, - 4179, 4189, 4201, 4213, 4234, 4239, 4243, 4247, 4259, 4263, - 4275, 4282, 4292, 4296, 4311, 4316, 4323, 4327, 4340, 4348, - 4359, 4363, 4371, 4379, 4387, 4395, 4409, 4423, 4427 + 3633, 3656, 3659, 3668, 3672, 3682, 3717, 3718, 3722, 3729, + 3742, 3761, 3789, 3790, 3791, 3792, 3793, 3794, 3795, 3796, + 3797, 3804, 3805, 3806, 3807, 3808, 3809, 3810, 3811, 3812, + 3813, 3814, 3815, 3816, 3817, 3818, 3819, 3820, 3821, 3822, + 3823, 3824, 3825, 3826, 3827, 3828, 3829, 3830, 3831, 3832, + 3833, 3834, 3835, 3837, 3838, 3839, 3840, 3841, 3842, 3843, + 3844, 3845, 3846, 3847, 3848, 3849, 3850, 3851, 3852, 3853, + 3854, 3855, 3856, 3857, 3866, 3867, 3868, 3869, 3870, 3871, + 3872, 3876, 3896, 3915, 3933, 3945, 3962, 3983, 3988, 3993, + 4003, 4013, 4021, 4025, 4029, 4033, 4037, 4044, 4048, 4052, + 4056, 4063, 4068, 4075, 4080, 4084, 4089, 4093, 4101, 4112, + 4116, 4128, 4136, 4144, 4151, 4162, 4182, 4186, 4190, 4194, + 4198, 4208, 4218, 4230, 4242, 4263, 4268, 4272, 4276, 4288, + 4292, 4304, 4311, 4321, 4325, 4340, 4345, 4352, 4356, 4369, + 4377, 4388, 4392, 4400, 4408, 4416, 4424, 4438, 4452, 4456 }; #endif @@ -1094,20 +1095,20 @@ static const yytype_uint8 yyr1[] = 222, 223, 223, 224, 224, 225, 225, 226, 226, 227, 227, 227, 227, 227, 227, 227, 227, 228, 228, 229, 229, 229, 229, 230, 230, 230, 231, 231, 232, 232, - 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, + 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, - 233, 233, 233, 234, 234, 234, 234, 234, 234, 234, + 233, 233, 233, 233, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, - 234, 235, 235, 235, 235, 235, 236, 236, 236, 236, - 237, 237, 238, 238, 238, 238, 238, 238, 239, 239, - 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 240, 240, 241, 241, 241, 241, 242, 242, - 242, 242, 243, 243, 244, 244, 245, 245, 245, 245, - 246, 246, 246, 246, 246, 246, 246, 246, 246 + 234, 234, 235, 235, 235, 235, 235, 236, 236, 236, + 236, 237, 237, 238, 238, 238, 238, 238, 238, 239, + 239, 240, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 240, 240, 240, 240, 241, 241, 241, 241, 242, + 242, 242, 242, 243, 243, 244, 244, 245, 245, 245, + 245, 246, 246, 246, 246, 246, 246, 246, 246, 246 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1141,20 +1142,20 @@ static const yytype_uint8 yyr2[] = 6, 0, 3, 0, 1, 0, 2, 0, 2, 7, 6, 8, 5, 3, 7, 5, 6, 6, 12, 10, 10, 10, 10, 2, 3, 6, 1, 1, 2, 5, - 7, 1, 3, 2, 2, 2, 3, 3, 3, 3, + 7, 9, 1, 3, 2, 2, 2, 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, + 3, 5, 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, 2, 2, 2, 2, 1, - 1, 3, 4, 6, 1, 1, 3, 3, 9, 7, - 1, 5, 3, 6, 1, 3, 1, 1, 3, 6, - 1, 1, 4, 6, 6, 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, 2, 2, 2, 2, + 1, 1, 3, 4, 6, 1, 1, 3, 3, 9, + 7, 1, 5, 3, 6, 1, 3, 1, 1, 3, + 6, 1, 1, 4, 6, 6, 4, 4, 4, 6 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. @@ -1171,320 +1172,322 @@ static const yytype_uint16 yydefact[] = 195, 0, 200, 0, 0, 197, 0, 0, 0, 0, 276, 277, 5, 7, 6, 8, 9, 10, 21, 11, 12, 13, 20, 19, 14, 15, 16, 17, 18, 0, - 22, 343, 350, 410, 57, 344, 345, 346, 0, 0, + 22, 344, 351, 411, 57, 345, 346, 347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 411, 0, 0, 0, 0, 347, 348, - 349, 61, 60, 59, 58, 0, 0, 0, 63, 62, - 0, 0, 0, 0, 152, 0, 0, 0, 281, 0, + 0, 0, 0, 412, 0, 0, 0, 0, 348, 349, + 350, 61, 60, 59, 58, 0, 0, 0, 63, 62, + 0, 0, 0, 0, 152, 0, 0, 0, 282, 0, 0, 0, 0, 185, 0, 187, 184, 188, 189, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, 0, 0, 0, 111, 124, 136, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 361, 0, 0, 0, 0, 0, 152, 0, 0, 0, + 362, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 273, - 0, 0, 0, 0, 0, 350, 379, 0, 0, 0, - 0, 0, 0, 0, 389, 390, 372, 378, 0, 373, - 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 351, 380, 0, 0, 0, + 0, 0, 0, 0, 390, 391, 373, 379, 0, 374, + 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 183, 0, 0, 196, 0, 152, 0, 152, 278, 0, - 0, 0, 0, 0, 354, 32, 410, 0, 0, 0, + 0, 0, 0, 0, 355, 32, 411, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 350, 284, - 283, 285, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 351, 285, + 284, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, 150, 0, 69, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 128, 0, 0, 0, 90, 0, 0, - 394, 395, 0, 0, 0, 0, 0, 0, 0, 0, + 395, 396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 363, 362, 0, 0, 0, + 0, 0, 0, 0, 0, 364, 363, 0, 0, 0, 0, 152, 152, 0, 0, 0, 0, 0, 0, 0, 210, 0, 152, 0, 0, 0, 0, 0, 257, 0, 0, 0, 170, 0, 0, 0, 274, 0, 0, 0, - 0, 0, 0, 0, 385, 0, 386, 387, 388, 0, - 283, 380, 374, 0, 0, 0, 263, 182, 0, 0, + 0, 0, 0, 0, 386, 0, 387, 388, 389, 0, + 284, 381, 375, 0, 0, 0, 263, 182, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 198, 173, - 0, 174, 0, 0, 0, 0, 356, 0, 0, 71, + 0, 174, 0, 0, 0, 0, 357, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 407, 0, 406, 0, 0, 0, 0, 0, - 0, 0, 0, 282, 57, 0, 0, 0, 57, 0, + 0, 0, 408, 0, 407, 0, 0, 0, 0, 0, + 0, 0, 0, 283, 57, 0, 0, 0, 57, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 153, - 65, 0, 299, 298, 297, 296, 292, 293, 295, 294, - 287, 286, 288, 289, 290, 291, 129, 0, 0, 0, + 65, 0, 300, 299, 298, 297, 293, 294, 296, 295, + 288, 287, 289, 290, 291, 292, 129, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, - 0, 0, 365, 364, 0, 0, 0, 0, 0, 0, + 0, 0, 366, 365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 0, 0, 167, 0, 0, 0, - 0, 0, 391, 0, 0, 0, 0, 0, 375, 382, - 0, 288, 381, 0, 0, 0, 0, 0, 0, 0, - 0, 199, 0, 175, 176, 0, 0, 0, 352, 358, + 0, 0, 392, 0, 0, 0, 0, 0, 376, 383, + 0, 289, 382, 0, 0, 0, 0, 0, 0, 0, + 0, 199, 0, 175, 176, 0, 0, 0, 353, 359, 0, 42, 0, 0, 0, 55, 0, 33, 34, 35, - 36, 37, 301, 322, 302, 323, 303, 324, 304, 325, - 305, 326, 306, 327, 307, 328, 308, 329, 309, 330, - 321, 342, 310, 331, 0, 0, 312, 333, 313, 334, - 314, 335, 315, 336, 316, 337, 317, 338, 0, 0, - 0, 0, 0, 0, 0, 0, 417, 0, 0, 415, - 416, 82, 0, 412, 0, 0, 0, 0, 0, 0, - 0, 0, 76, 0, 0, 0, 0, 353, 0, 0, + 36, 37, 302, 323, 303, 324, 304, 325, 305, 326, + 306, 327, 307, 328, 308, 329, 309, 330, 310, 331, + 322, 343, 311, 332, 0, 0, 313, 334, 314, 335, + 315, 336, 316, 337, 317, 338, 318, 339, 0, 0, + 0, 0, 0, 0, 0, 0, 418, 0, 0, 416, + 417, 82, 0, 413, 0, 0, 0, 0, 0, 0, + 0, 0, 76, 0, 0, 0, 0, 354, 0, 0, 0, 0, 0, 25, 23, 0, 0, 0, 64, 93, - 0, 396, 397, 0, 0, 0, 0, 0, 0, 0, + 0, 397, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251, 256, 254, 0, 262, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 239, 0, 201, 0, 0, 0, 0, 0, 0, 258, 265, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 352, 392, 384, 376, 0, + 0, 0, 0, 0, 0, 353, 393, 385, 377, 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, - 0, 0, 279, 0, 0, 355, 0, 351, 0, 0, + 0, 0, 279, 0, 0, 356, 0, 352, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 408, 0, 0, 0, 0, 66, 0, - 0, 0, 0, 0, 70, 72, 74, 0, 0, 404, - 0, 80, 0, 0, 0, 0, 300, 24, 0, 0, + 0, 0, 0, 409, 0, 0, 0, 0, 66, 0, + 0, 0, 0, 0, 70, 72, 74, 0, 0, 405, + 0, 80, 0, 0, 0, 0, 301, 24, 0, 0, 0, 0, 0, 0, 108, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 260, 0, 0, 0, 0, 0, 0, 0, 0, 267, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 0, 0, 245, 0, 247, 0, 211, 240, 0, 0, 0, 165, 0, 0, 0, 266, - 0, 169, 168, 275, 0, 0, 30, 31, 0, 383, - 377, 0, 0, 0, 401, 0, 0, 0, 191, 0, - 0, 0, 179, 357, 178, 0, 0, 0, 0, 370, - 0, 311, 332, 318, 339, 319, 340, 320, 341, 0, - 418, 414, 360, 413, 0, 57, 0, 0, 0, 0, - 67, 0, 0, 0, 402, 0, 0, 0, 0, 26, - 27, 0, 0, 0, 94, 110, 0, 0, 0, 0, - 0, 114, 0, 0, 131, 132, 0, 0, 116, 139, - 0, 0, 0, 106, 0, 259, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 181, 0, 0, 0, 0, - 152, 0, 221, 0, 223, 0, 225, 0, 372, 0, - 0, 246, 248, 0, 0, 205, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 264, 393, 119, 120, 0, - 0, 0, 0, 83, 87, 0, 280, 359, 0, 38, - 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, - 77, 0, 0, 78, 0, 405, 154, 155, 156, 157, - 0, 0, 95, 0, 109, 117, 118, 122, 0, 0, - 133, 0, 0, 261, 126, 0, 0, 252, 138, 0, - 0, 0, 0, 123, 0, 134, 140, 0, 0, 0, - 0, 369, 0, 368, 0, 0, 212, 0, 0, 213, - 0, 0, 214, 0, 0, 0, 0, 0, 0, 0, - 164, 0, 0, 163, 0, 0, 0, 158, 0, 0, - 0, 0, 399, 0, 193, 192, 0, 0, 0, 43, - 0, 0, 0, 371, 0, 0, 0, 409, 68, 73, - 75, 0, 81, 0, 28, 0, 99, 0, 0, 0, - 0, 0, 0, 127, 112, 125, 137, 142, 0, 0, - 88, 89, 152, 0, 146, 0, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 152, 0, 0, 0, 0, - 0, 149, 148, 0, 0, 0, 0, 84, 85, 0, - 39, 0, 0, 0, 41, 56, 0, 403, 0, 0, - 269, 270, 271, 272, 130, 0, 0, 0, 0, 0, - 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 250, 0, 0, 0, 206, 0, 0, 159, 0, 0, - 0, 398, 194, 0, 0, 0, 0, 0, 79, 0, - 0, 96, 100, 0, 0, 0, 144, 0, 227, 0, - 0, 229, 0, 0, 231, 0, 0, 0, 242, 0, - 202, 0, 152, 0, 0, 0, 121, 86, 0, 47, - 0, 53, 0, 0, 0, 107, 135, 268, 366, 215, - 0, 0, 222, 216, 0, 0, 224, 217, 0, 0, - 226, 0, 0, 0, 208, 0, 162, 0, 0, 0, - 0, 0, 0, 0, 103, 0, 101, 0, 233, 0, - 235, 0, 237, 243, 249, 207, 203, 0, 0, 0, - 0, 44, 0, 51, 0, 0, 0, 394, 0, 218, - 0, 0, 219, 0, 0, 220, 0, 0, 166, 0, - 160, 0, 45, 0, 0, 186, 0, 102, 0, 0, - 0, 0, 0, 0, 0, 209, 0, 0, 0, 0, - 0, 0, 97, 228, 0, 230, 0, 232, 0, 161, - 46, 48, 0, 49, 0, 0, 0, 0, 0, 0, - 0, 54, 98, 234, 236, 238, 50, 52 + 0, 169, 168, 275, 0, 0, 30, 31, 0, 384, + 378, 0, 0, 0, 402, 0, 0, 0, 191, 0, + 0, 0, 0, 179, 358, 178, 0, 0, 0, 0, + 371, 0, 312, 333, 319, 340, 320, 341, 321, 342, + 0, 419, 415, 361, 414, 0, 57, 0, 0, 0, + 0, 67, 0, 0, 0, 403, 0, 0, 0, 0, + 26, 27, 0, 0, 0, 94, 110, 0, 0, 0, + 0, 0, 114, 0, 0, 131, 132, 0, 0, 116, + 139, 0, 0, 0, 106, 0, 259, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, + 0, 152, 0, 221, 0, 223, 0, 225, 0, 373, + 0, 0, 246, 248, 0, 0, 205, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 264, 394, 119, 120, + 0, 0, 0, 0, 83, 87, 0, 0, 280, 360, + 0, 38, 0, 0, 0, 0, 0, 40, 0, 0, + 0, 0, 77, 0, 0, 78, 0, 406, 154, 155, + 156, 157, 0, 0, 95, 0, 109, 117, 118, 122, + 0, 0, 133, 0, 0, 261, 126, 0, 0, 252, + 138, 0, 0, 0, 0, 123, 0, 134, 140, 0, + 0, 0, 0, 370, 0, 369, 0, 0, 212, 0, + 0, 213, 0, 0, 214, 0, 0, 0, 0, 0, + 0, 0, 164, 0, 0, 163, 0, 0, 0, 158, + 0, 0, 0, 0, 400, 0, 193, 192, 0, 0, + 0, 0, 43, 0, 0, 0, 372, 0, 0, 0, + 410, 68, 73, 75, 0, 81, 0, 28, 0, 99, + 0, 0, 0, 0, 0, 0, 127, 112, 125, 137, + 142, 0, 0, 88, 89, 152, 0, 146, 0, 0, + 0, 0, 0, 0, 0, 241, 0, 0, 152, 0, + 0, 0, 0, 0, 149, 148, 0, 0, 0, 0, + 84, 85, 281, 0, 39, 0, 0, 0, 41, 56, + 0, 404, 0, 0, 269, 270, 271, 272, 130, 0, + 0, 0, 0, 0, 368, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 250, 0, 0, 0, 206, 0, + 0, 159, 0, 0, 0, 399, 194, 0, 0, 0, + 0, 0, 79, 0, 0, 96, 100, 0, 0, 0, + 144, 0, 227, 0, 0, 229, 0, 0, 231, 0, + 0, 0, 242, 0, 202, 0, 152, 0, 0, 0, + 121, 86, 0, 47, 0, 53, 0, 0, 0, 107, + 135, 268, 367, 215, 0, 0, 222, 216, 0, 0, + 224, 217, 0, 0, 226, 0, 0, 0, 208, 0, + 162, 0, 0, 0, 0, 0, 0, 0, 103, 0, + 101, 0, 233, 0, 235, 0, 237, 243, 249, 207, + 203, 0, 0, 0, 0, 44, 0, 51, 0, 0, + 0, 395, 0, 218, 0, 0, 219, 0, 0, 220, + 0, 0, 166, 0, 160, 0, 45, 0, 0, 186, + 0, 102, 0, 0, 0, 0, 0, 0, 0, 209, + 0, 0, 0, 0, 0, 0, 97, 228, 0, 230, + 0, 232, 0, 161, 46, 48, 0, 49, 0, 0, + 0, 0, 0, 0, 0, 54, 98, 234, 236, 238, + 50, 52 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 2, 3, 72, 745, 73, 74, 468, 1088, 1094, - 667, 848, 1239, 1391, 668, 1350, 1422, 669, 1393, 670, - 671, 852, 145, 264, 75, 562, 357, 1196, 1376, 1249, - 1292, 776, 1126, 1018, 539, 383, 384, 385, 386, 234, + -1, 2, 3, 72, 745, 73, 74, 468, 1090, 1096, + 667, 848, 1243, 1395, 668, 1354, 1426, 669, 1397, 670, + 671, 852, 145, 264, 75, 562, 357, 1199, 1380, 1253, + 1296, 776, 1128, 1019, 539, 383, 384, 385, 386, 234, 332, 333, 78, 79, 80, 81, 82, 83, 235, 807, - 1311, 1367, 611, 1147, 1150, 1153, 1330, 1334, 1338, 1380, - 1383, 1386, 803, 804, 912, 773, 585, 620, 85, 86, - 87, 88, 89, 90, 236, 148, 396, 200, 978, 979, + 1315, 1371, 611, 1149, 1152, 1155, 1334, 1338, 1342, 1384, + 1387, 1390, 803, 804, 912, 773, 585, 620, 85, 86, + 87, 88, 89, 90, 236, 148, 396, 200, 979, 980, 238, 239, 443, 246, 736, 880, 513, 514 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -1061 +#define YYPACT_NINF -1070 static const yytype_int16 yypact[] = { - 3992, 43, 3, 4074, -1061, -1061, 1880, 74, -34, -90, - 37, 96, 105, 130, 177, 40, -104, 80, 99, -3, - 115, 160, 19, 201, 213, 128, 150, 183, 363, 329, - 342, 266, 353, 206, 339, 272, 282, 408, 299, -9, - -9, 314, 484, 46, 383, 409, 424, 6, 42, 432, - 433, 483, 488, 2034, 514, 389, 392, 397, 20, 8, - -1061, 398, -1061, 526, 416, -1061, 555, 575, 30, 34, - -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, - -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, 38, - -1061, -1061, 26, 436, 89, -1061, -1061, -1061, -26, -7, - 179, 285, 295, 307, 310, 344, 372, 386, 454, 462, - 478, 501, 502, 515, 518, 533, 549, 550, 553, 442, - 448, 465, 472, -1061, 621, 492, 506, 511, -1061, -1061, - -1061, -1061, -1061, -1061, -1061, 3729, 3729, 3729, -1061, -1061, - 3729, 3146, 12, 628, 853, 2478, 631, 865, -1061, 664, - 679, 3729, 666, -1061, 3729, -1061, -1061, -1061, -1061, -1061, - 3729, 3549, 3729, 3729, 539, 3729, 3549, 3729, 3729, 545, - 3549, 3729, 3729, 2478, 564, 565, -1061, 584, 585, 2034, - 2034, 2034, 597, -1061, -1061, -1061, -1061, 608, 615, 630, - 2478, 3729, 785, 2478, -9, -9, -9, 3729, 3729, -75, - -1061, 95, -9, 646, 647, 650, 3366, 97, 54, 662, - 672, 675, 2034, 2478, 681, 47, 684, -1061, 808, -1061, - 659, 680, 683, 710, 714, 998, -1061, 722, 36, 845, - 879, 881, 2626, 1723, -1061, -1061, 3653, -1061, 890, -1061, - 894, 3729, 3729, 3729, 734, 3729, 751, 783, 3729, 3729, - -1061, 3729, 908, -1061, 912, -1061, 915, -1061, -1061, 2478, - 766, 3729, 931, 780, -1061, -1061, -1061, 935, 3729, 3729, - 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3729, - 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3729, - 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3729, - 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3729, - 476, 476, 476, 476, 3729, 476, 476, 476, -74, 796, - 796, 796, 6365, 73, 3549, 5606, 325, 809, 964, 828, - 831, -1061, 862, 4148, 982, -1061, -1061, 3729, 3729, 3729, - 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3729, - 3729, 3729, -1061, -1061, 1058, -130, 4904, 215, 6386, 3549, - 3770, -1061, 453, 6407, 6428, 3729, 6449, 548, 6470, 6491, - 3729, 561, 6512, 6533, 1016, 3729, 3729, 3729, 3729, 1017, - 1023, 1023, 3729, 878, 885, 889, 898, 3729, 3729, 3729, - 1036, 1418, 900, 1045, -57, -1061, -1061, 4930, 4956, -9, - -9, 853, 853, -18, 3729, 3729, 3729, 3366, 3366, 3729, - 4148, 174, -1061, 3729, 3729, 3729, 3729, 3729, 1051, 1055, - 3729, 1067, -1061, 3729, 3729, 623, -1061, 3549, 3549, 3549, - 3729, 3729, 3300, 1073, -1061, 3729, -1061, -1061, -1061, 3549, - 796, -1061, -1061, 562, 3729, 2774, -1061, -1061, 6554, 6575, - 6596, 977, 4982, -1061, 936, 3789, 6617, 5629, -1061, -1061, - 741, -1061, 1238, 570, 3729, 5652, 173, 3729, 10, -1061, - 6638, 5675, 6659, 5698, 6680, 5721, 6701, 5744, 6722, 5767, - 6743, 5790, 6764, 5813, 6785, 5836, 6806, 5859, 6827, 5882, - 6848, 5905, 5008, 5034, 6869, 5928, 6890, 5951, 6911, 5974, - 6932, 5997, 6953, 6020, 6974, 6043, 5060, 5086, 5112, 5138, - 5164, 5190, 577, -93, -1061, 930, 937, 941, 1239, 940, - 946, 943, 3729, -1061, -1061, 2478, 574, 225, 89, 3729, - 1094, 1098, 22, 956, -1061, 58, 25, 24, 101, -1061, - -1061, 3809, 818, 1207, 1311, 1311, 842, 842, 842, 842, - 459, 459, 796, 796, 796, 796, -1061, 9, 3549, 3729, - 1106, -1061, 1110, 1108, 3549, 3549, 1009, 1111, 1112, 6995, - 1117, 1018, 1119, 1120, 7016, 1022, 1125, 1126, 3729, 7037, - 4179, 7058, 7079, 3729, 2478, 1130, 1129, 7100, 3691, 3691, - 3691, 3691, 7121, 7142, 7163, 2478, 3549, 983, -1061, -9, - 3729, 3729, -1061, -1061, 980, 989, 3729, 5216, 5242, 5268, - 4878, 399, -9, 1373, 7184, 4207, 7205, 7226, 7247, 3729, - 1141, 3729, 7268, -1061, 6066, 6089, -1061, 586, 590, 603, - 6112, 6135, -1061, 3549, 6158, 996, 4235, 606, -1061, 3828, - 3549, 796, -1061, 1145, 1148, 1151, 1007, 3729, 1913, 3729, - 3729, -1061, 35, -1061, -1061, 2478, 1155, 6181, 321, -1061, - 4263, -1061, 1013, 1014, 1010, -1061, 1159, -1061, -1061, -1061, - -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, - -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, - -1061, -1061, -1061, -1061, 3729, 3729, -1061, -1061, -1061, -1061, - -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, 3729, 3729, - 3729, 3729, 3729, 3729, 3729, 1163, -1061, 3549, 476, -1061, - -1061, -1061, 3729, -1061, 476, 1162, 1021, 15, 3729, 1164, - 1166, 1797, -1061, 1168, 1025, 20, 1174, -1061, 3549, 3549, - 3549, 3549, 3729, -1061, 1046, 476, -40, 5294, -1061, 1177, - -9, 3770, -1061, 1131, 2478, 2478, 1178, 2478, 729, 2478, - 2478, 1180, 1153, 2478, 2478, 2285, 1201, 1205, 1209, 1211, - 3883, -1061, -1061, 1208, -1061, 1212, 1070, 7499, -1061, 1071, - 1072, 1075, 1216, 1219, 1221, 1223, 655, 1226, 176, 5320, - 5346, -1061, -1061, 4291, -9, -9, -9, 1228, 1227, 1078, - 1086, 16, 21, -16, -1061, 226, -1061, 399, 1229, 1231, - 1234, 1235, 1236, 7499, -1061, 2304, 1082, 1241, 1242, 1243, - 1189, 3729, 1246, 1248, 663, 164, -1061, -1061, -1061, 3729, - 674, 2478, 2478, 2478, 1251, 5372, -1061, 3847, 635, 1252, - 1254, 1102, -1061, 1255, 1256, -1061, 1257, -1061, 1113, 3729, - 3729, 2478, 1114, -1061, 7289, 6204, 7310, 6227, 7331, 6250, - 7352, 6273, 6296, -1061, 56, 1116, 7373, 1118, -1061, 73, - 402, 1121, 1264, 2443, -1061, -1061, -1061, 20, 3729, -1061, - 694, -1061, 698, 699, 711, 715, 7499, -1061, 1258, 49, - 3729, 3514, 11, 1122, 1210, 1210, 2478, 1266, 1123, 1127, - 1269, 1270, 2478, 1128, 1275, 1279, -1061, 1281, 2478, 2478, - 2478, 1295, 1302, -1061, 2478, 1305, 1307, 1308, 1309, 2478, - 2478, 2478, -1061, 1310, 349, 3729, 3729, 3729, 1169, -79, - -54, -43, 1158, -1061, 2478, 3729, -1061, 1313, -1061, 1314, - -1061, -1061, 3366, 482, 2182, -1061, 1171, 1175, 2922, -1061, - 3549, -1061, -1061, -1061, 1179, 2581, -1061, -1061, 1170, 7499, - -1061, 1324, 1328, 1233, -1061, 3729, 3729, 3729, -1061, 1345, - 382, 1346, -1061, 173, -1061, 3729, 5398, 5424, 725, -1061, - 3729, -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, 1203, - -1061, -1061, -1061, -1061, 2478, 89, 3729, 1348, 1353, 22, - -1061, 1352, 6319, 20, -1061, 1354, 1355, 1356, 1357, -1061, - -1061, 476, 5450, 3729, 7499, -1061, 3729, -9, 1358, 1360, - 1362, -1061, 3729, 3729, -1061, -1061, 1377, 3729, -1061, -1061, - 1379, 1382, 1383, 1283, 3729, -1061, 1385, 2478, 2478, 2478, - 2478, 1387, 877, 1390, 3729, -1061, 3691, 4319, 7394, 4095, - 853, -9, 1391, -9, 1392, -9, 1393, 3729, 85, 1204, - 7415, -1061, -1061, 4347, 243, -1061, 1397, 1561, 1398, 2478, - -9, 1561, 1400, 740, 3729, -1061, -1061, -1061, -1061, 2478, - 4123, 369, 7436, -1061, -1061, 3218, -1061, -1061, 110, 7499, - 3729, 3729, 2478, 1253, 755, 7499, 1403, 1402, 1404, 2600, - -1061, 1405, 1407, -1061, 1262, -1061, -1061, -1061, -1061, -1061, - 1410, 3729, 7499, 4375, 284, -1061, -1061, -1061, 4403, 4431, - -1061, 4459, 1406, -1061, -1061, 1364, 1412, 7499, -1061, 1414, - 1415, 1426, 1428, -1061, 1286, -1061, -1061, 4851, 2739, 1429, - 1287, -1061, 3729, -1061, 1298, 253, -1061, 1288, 277, -1061, - 1300, 280, -1061, 1301, 6342, 1454, 2478, 1455, 1312, 3729, - -1061, 3070, 308, -1061, 756, 343, 385, -1061, 1457, 4487, - 1359, 3729, -1061, 3729, -1061, -1061, 3549, 2877, 1458, -1061, - 3729, 5476, 5502, -1061, 2478, 3729, 1460, -1061, -1061, -1061, - -1061, 20, -1061, 1365, -1061, 5528, -1061, 1461, 1463, 1469, - 1470, 1474, 1325, -1061, -1061, -1061, -1061, -1061, 2478, 3549, - -1061, -1061, 853, 4151, -1061, 3366, 399, 3366, 399, 3366, - 399, 1476, -1061, 792, 2478, -1061, 4515, -9, 1478, 3549, - -9, -1061, -1061, 3729, 4543, 4571, 819, -1061, -1061, 1329, - 7499, 3729, 3729, 820, 7499, -1061, 1480, -1061, 3729, 836, - -1061, -1061, -1061, -1061, -1061, 3729, 855, 860, 1330, 3729, - -1061, 4599, 403, 665, 4627, 405, 747, 4655, 411, 773, - -1061, 2478, 1485, 1422, 2081, 1337, 425, -1061, 861, 435, - 2896, -1061, -1061, 1488, 3729, 7457, 5554, 41, -1061, 5580, - 1491, -1061, -1061, 4683, 1490, 1492, -1061, 4711, 1493, 3729, - 1494, 1495, 3729, 1496, 1498, 3729, 1499, 1340, -1061, 3729, - -1061, 399, -1061, 3549, 1500, 3070, -1061, -1061, 876, -1061, - 3729, -1061, 2478, 3729, 2330, -1061, -1061, -1061, -1061, -1061, - 1351, 4739, -1061, -1061, 1363, 4767, -1061, -1061, 1366, 4795, - -1061, 1502, 3271, 788, 2229, 880, -1061, 438, 884, 1503, - 1367, 7478, 891, 4823, -1061, 1723, -1061, 399, 1504, 399, - 1505, 399, 1506, -1061, -1061, -1061, -1061, 399, 1508, 3549, - 1509, -1061, 476, -1061, 1368, 1510, 904, 3332, 815, -1061, - 1369, 829, -1061, 1370, 852, -1061, 1371, 966, -1061, 911, - -1061, 921, -1061, 1372, 2478, -1061, 3729, -1061, 89, 1512, - 399, 1514, 399, 1515, 399, -1061, 1523, 476, 1526, 476, - 925, 3634, -1061, -1061, 984, -1061, 1020, -1061, 1052, -1061, - -1061, -1061, 929, -1061, 1527, 89, 1528, 1530, 1531, 476, - 1532, -1061, -1061, -1061, -1061, -1061, -1061, -1061 + 3914, 79, 32, 3996, -1070, -1070, 1905, 85, 51, -21, + 30, 131, 148, 193, 204, 91, 102, 99, 105, 6, + 171, 183, 18, 201, 229, 329, 334, 353, 432, 436, + 437, 10, 418, -14, 379, 62, 356, 461, 369, 174, + 174, 391, 341, 87, 495, 506, 522, 11, 54, 523, + 524, 591, 598, 2059, 603, 431, 462, 466, 21, 2, + -1070, 476, -1070, 622, 478, -1070, 628, 633, 0, 28, + -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, + -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, 31, + -1070, -1070, 25, 487, 471, -1070, -1070, -1070, -107, -88, + 218, 248, 320, 336, 368, 372, 375, 397, 420, 467, + 472, 475, 491, 501, 505, 515, 519, 538, 545, 511, + 512, 520, 541, -1070, 637, 549, 556, 564, -1070, -1070, + -1070, -1070, -1070, -1070, -1070, 1421, 1421, 1421, -1070, -1070, + 1421, 1832, 22, 724, 20, 2503, 729, 993, -1070, 745, + 746, 1421, 753, -1070, 1421, -1070, -1070, -1070, -1070, -1070, + 1421, 3539, 1421, 1421, 617, 1421, 3539, 1421, 1421, 625, + 3539, 1421, 1421, 2503, 630, 629, -1070, 656, 692, 2059, + 2059, 2059, 693, -1070, -1070, -1070, -1070, 701, 712, 713, + 2503, 1421, 782, 2503, 174, 174, 174, 1421, 1421, -56, + -1070, 68, 174, 727, 731, 756, 3325, 80, 172, 720, + 786, 792, 2059, 2503, 800, 49, 769, -1070, 874, -1070, + 765, 788, 799, 805, 810, 450, -1070, 811, 29, 946, + 963, 967, 2651, 1750, -1070, -1070, 3614, -1070, 972, -1070, + 976, 1421, 1421, 1421, 820, 1421, 827, 877, 1421, 1421, + -1070, 1421, 979, -1070, 980, -1070, 981, -1070, -1070, 2503, + 837, 1421, 985, 835, -1070, -1070, -1070, 987, 1421, 1421, + 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, + 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, + 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, + 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, + 321, 321, 321, 321, 1421, 321, 321, 321, 488, 846, + 846, 846, 6286, 134, 3539, 5527, 225, 843, 991, 849, + 845, -1070, 850, 4070, 996, -1070, -1070, 1421, 1421, 1421, + 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, + 1421, 1421, -1070, -1070, 1206, -138, 4825, 344, 6307, 3539, + 3633, -1070, 48, 6328, 6349, 1421, 6370, 542, 6391, 6412, + 1421, 546, 6433, 6454, 999, 1421, 1421, 1421, 1421, 1001, + 1003, 1003, 1421, 864, 865, 868, 869, 1421, 1421, 1421, + 1009, 4745, 873, 1013, -31, -1070, -1070, 4851, 4877, 174, + 174, 20, 20, 176, 1421, 1421, 1421, 3325, 3325, 1421, + 4070, 178, -1070, 1421, 1421, 1421, 1421, 1421, 1022, 1023, + 1421, 1028, -1070, 1421, 1421, 757, -1070, 3539, 3539, 3539, + 1421, 1421, 3171, 1032, -1070, 1421, -1070, -1070, -1070, 3539, + 846, -1070, -1070, 547, 1421, 2799, -1070, -1070, 6475, 6496, + 6517, 934, 4903, -1070, 883, 3708, 6538, 5550, -1070, -1070, + 1139, -1070, 1940, 561, 1421, 5573, 67, 1421, 16, -1070, + 6559, 5596, 6580, 5619, 6601, 5642, 6622, 5665, 6643, 5688, + 6664, 5711, 6685, 5734, 6706, 5757, 6727, 5780, 6748, 5803, + 6769, 5826, 4929, 4955, 6790, 5849, 6811, 5872, 6832, 5895, + 6853, 5918, 6874, 5941, 6895, 5964, 4981, 5007, 5033, 5059, + 5085, 5111, 566, 169, -1070, 885, 892, 894, 1245, 891, + 898, 896, 1421, -1070, -1070, 2503, 572, 65, 471, 1421, + 1043, 1048, 23, 901, -1070, 221, 26, 24, 235, -1070, + -1070, 3731, 1415, 1225, 1321, 1321, 582, 582, 582, 582, + 424, 424, 846, 846, 846, 846, -1070, 12, 3539, 1421, + 1049, -1070, 1050, 1051, 3539, 3539, 950, 1052, 1053, 6916, + 1054, 955, 1056, 1057, 6937, 958, 1060, 1062, 1421, 6958, + 4073, 6979, 7000, 1421, 2503, 1067, 1068, 7021, 3681, 3681, + 3681, 3681, 7042, 7063, 7084, 2503, 3539, 922, -1070, 174, + 1421, 1421, -1070, -1070, 920, 921, 1421, 5137, 5163, 5189, + 4799, 136, 174, 2106, 7105, 4101, 7126, 7147, 7168, 1421, + 1075, 1421, 7189, -1070, 5987, 6010, -1070, 576, 577, 586, + 6033, 6056, -1070, 3539, 6079, 930, 4129, 590, -1070, 3750, + 3539, 846, -1070, 1076, 1079, 1080, 935, 1421, 2254, 1421, + 1421, -1070, 4, -1070, -1070, 2503, 1083, 6102, 82, -1070, + 4157, -1070, 951, 952, 939, -1070, 1093, -1070, -1070, -1070, + -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, + -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, + -1070, -1070, -1070, -1070, 1421, 1421, -1070, -1070, -1070, -1070, + -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, 1421, 1421, + 1421, 1421, 1421, 1421, 1421, 1099, -1070, 3539, 321, -1070, + -1070, -1070, 1421, -1070, 321, 1101, 953, 27, 1421, 1102, + 1103, 1273, -1070, 1105, 964, 21, 1108, -1070, 3539, 3539, + 3539, 3539, 1421, -1070, 983, 321, 296, 5215, -1070, 1109, + 174, 3633, -1070, 1065, 2503, 2503, 1110, 2503, 699, 2503, + 2503, 1130, 1081, 2503, 2503, 1388, 1132, 1133, 1136, 1137, + 3805, -1070, -1070, 1140, -1070, 1141, 1000, 7420, -1070, 1004, + 1005, 1007, 1142, 1151, 1153, 1156, 600, 1161, 226, 5241, + 5267, -1070, -1070, 4185, 174, 174, 174, 1162, 1163, 1012, + 1021, 13, 15, -13, -1070, 243, -1070, 136, 1165, 1168, + 1175, 1176, 1177, 7420, -1070, 1598, 1019, 1179, 1181, 1192, + 1145, 1421, 1195, 1198, 616, 209, -1070, -1070, -1070, 1421, + 620, 2503, 2503, 2503, 1204, 5293, -1070, 3769, 760, 1205, + 1209, 623, -1070, 1211, 1215, -1070, 1216, -1070, 1066, 1421, + 1421, 2503, 1069, -1070, 7210, 6125, 7231, 6148, 7252, 6171, + 7273, 6194, 6217, -1070, 309, 1071, 7294, 1073, -1070, 134, + 327, 1074, 1219, 2606, -1070, -1070, -1070, 21, 1421, -1070, + 634, -1070, 635, 642, 646, 647, 7420, -1070, 1222, 17, + 1421, 3391, 58, 1085, 1166, 1166, 2503, 1226, 1086, 1089, + 1229, 1230, 2503, 1090, 1231, 1241, -1070, 1243, 2503, 2503, + 2503, 1227, 1246, -1070, 2503, 1242, 1247, 1248, 1249, 2503, + 2503, 2503, -1070, 1251, 109, 1421, 1421, 1421, 1097, -58, + -10, 98, 1111, -1070, 2503, 1421, -1070, 1253, -1070, 1254, + -1070, -1070, 3325, -11, 2207, -1070, 1107, 1113, 2947, -1070, + 3539, -1070, -1070, -1070, 1115, 2625, -1070, -1070, 1112, 7420, + -1070, 1259, 1260, 1170, -1070, 1421, 1421, 1421, -1070, 1268, + 227, 2503, 1269, -1070, 67, -1070, 1421, 5319, 5345, 661, + -1070, 1421, -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, + 1123, -1070, -1070, -1070, -1070, 2503, 471, 1421, 1271, 1274, + 23, -1070, 1275, 6240, 21, -1070, 1276, 1278, 1279, 1282, + -1070, -1070, 321, 5371, 1421, 7420, -1070, 1421, 174, 1283, + 1284, 1285, -1070, 1421, 1421, -1070, -1070, 1286, 1421, -1070, + -1070, 1288, 1289, 1291, 1187, 1421, -1070, 1292, 2503, 2503, + 2503, 2503, 1293, 826, 1294, 1421, -1070, 3681, 4213, 7315, + 3654, 20, 174, 1296, 174, 1297, 174, 1299, 1421, 401, + 1154, 7336, -1070, -1070, 4241, 255, -1070, 1300, 1563, 1302, + 2503, 174, 1563, 1304, 678, 1421, -1070, -1070, -1070, -1070, + 2503, 4017, 543, 7357, -1070, -1070, 3243, 1155, -1070, -1070, + 311, 7420, 1421, 1421, 2503, 1157, 679, 7420, 1310, 1312, + 1313, 2764, -1070, 1309, 1314, -1070, 1174, -1070, -1070, -1070, + -1070, -1070, 1315, 1421, 7420, 4269, 125, -1070, -1070, -1070, + 4297, 4325, -1070, 4353, 1325, -1070, -1070, 1281, 1329, 7420, + -1070, 1344, 1345, 1346, 1347, -1070, 1199, -1070, -1070, 4772, + 2902, 1350, 1214, -1070, 1421, -1070, 1233, 277, -1070, 1235, + 280, -1070, 1236, 284, -1070, 1239, 6263, 1391, 2503, 1324, + 1261, 1421, -1070, 3095, 305, -1070, 682, 308, 338, -1070, + 1393, 4381, 1316, 1421, -1070, 1421, -1070, -1070, 3539, 2921, + 1413, 1414, -1070, 1421, 5397, 5423, -1070, 2503, 1421, 1416, + -1070, -1070, -1070, -1070, 21, -1070, 1322, -1070, 5449, -1070, + 1420, 1423, 1427, 1428, 1460, 1311, -1070, -1070, -1070, -1070, + -1070, 2503, 3539, -1070, -1070, 20, 4045, -1070, 3325, 136, + 3325, 136, 3325, 136, 1462, -1070, 683, 2503, -1070, 4409, + 174, 1464, 3539, 174, -1070, -1070, 1421, 4437, 4465, 694, + -1070, -1070, -1070, 1317, 7420, 1421, 1421, 698, 7420, -1070, + 1466, -1070, 1421, 715, -1070, -1070, -1070, -1070, -1070, 1421, + 718, 722, 1318, 1421, -1070, 4493, 349, 416, 4521, 361, + 674, 4549, 390, 697, -1070, 2503, 1468, 1406, 2402, 1326, + 413, -1070, 749, 415, 3296, -1070, -1070, 1474, 1421, 7378, + 5475, 34, -1070, 5501, 1477, -1070, -1070, 4577, 1478, 1479, + -1070, 4605, 1480, 1421, 1481, 1485, 1421, 1486, 1487, 1421, + 1488, 1338, -1070, 1421, -1070, 136, -1070, 3539, 1490, 3095, + -1070, -1070, 750, -1070, 1421, -1070, 2503, 1421, 2355, -1070, + -1070, -1070, -1070, -1070, 1341, 4633, -1070, -1070, 1342, 4661, + -1070, -1070, 1343, 4689, -1070, 1494, 3354, 773, 2550, 754, + -1070, 438, 758, 1495, 1348, 7399, 761, 4717, -1070, 1750, + -1070, 136, 1496, 136, 1499, 136, 1500, -1070, -1070, -1070, + -1070, 136, 1502, 3539, 1503, -1070, 321, -1070, 1354, 1506, + 762, 3496, 795, -1070, 1358, 852, -1070, 1359, 867, -1070, + 1360, 880, -1070, 771, -1070, 772, -1070, 1376, 2503, -1070, + 1421, -1070, 471, 1527, 136, 1528, 136, 1529, 136, -1070, + 1531, 321, 1532, 321, 779, 3595, -1070, -1070, 890, -1070, + 941, -1070, 1006, -1070, -1070, -1070, 790, -1070, 1535, 471, + 1536, 1537, 1553, 321, 1556, -1070, -1070, -1070, -1070, -1070, + -1070, -1070 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -1061, -1061, -1061, -1061, 651, -1061, -1061, -1061, -1061, 255, - -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, - -1061, -1061, -315, 7, -1061, -1061, -1061, -1061, -1061, -1061, - -1061, -435, -1061, 648, 1538, -1061, -1061, -1061, -1061, -1, - -396, -199, -1061, -1061, -1061, -1061, -1061, -1061, 1542, -1061, - -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, -1061, - -1061, -1061, -741, -772, -1061, -1061, 1165, -1061, -1061, -1061, - -1061, -1061, -1061, -1061, -2, -1061, 50, -1061, -1060, 569, - -112, 464, 229, -695, 563, -1061, -279, -6 + -1070, -1070, -1070, -1070, 680, -1070, -1070, -1070, -1070, 283, + -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, + -1070, -1070, -310, 1, -1070, -1070, -1070, -1070, -1070, -1070, + -1070, -280, -1070, 673, 1573, -1070, -1070, -1070, -1070, -1, + -393, -203, -1070, -1070, -1070, -1070, -1070, -1070, 1596, -1070, + -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, -1070, + -1070, -1070, -751, -755, -1070, -1070, 1220, -1070, -1070, -1070, + -1070, -1070, -1070, -1070, -2, -1070, 50, -1070, -1069, 569, + -110, 439, 55, -696, 605, -1070, -266, -6 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1493,362 +1496,287 @@ static const yytype_int16 yypgoto[] = #define YYTABLE_NINF -5 static const yytype_int16 yytable[] = { - 149, 164, 77, 5, 147, 604, 605, 410, 525, 1164, - 215, 529, 247, 146, 661, 743, 326, 1015, 425, 870, - 557, 151, 936, 169, 244, 558, 734, 938, 169, 164, - 260, 941, 515, 516, 517, 254, 519, 520, 521, 256, - 879, 434, 839, 153, 258, 160, 218, 1321, 219, 4, - 208, 421, 161, 422, 797, 1010, 460, 716, 462, 152, - 399, 400, 717, 798, 399, 400, 943, 379, 380, 381, - 799, 800, 138, 139, 801, 802, 1051, 522, 1052, 262, - 524, 401, 399, 400, 263, 399, 400, 150, 267, 199, - 201, 220, 207, 444, 266, 209, 399, 400, 599, 210, - 418, 1053, 155, 1054, 662, 663, 664, 665, 937, 211, - 889, 156, 1055, 939, 1056, 565, 327, 328, 216, 871, - 872, 399, 400, 268, 1243, 269, 119, 120, 121, 122, - 195, 196, 123, 319, 320, 321, 157, 606, 322, 325, - 197, 940, 270, 331, 271, 744, 165, 198, 1256, 354, - 399, 400, 356, 166, 779, 780, 781, 248, 358, 360, - 363, 364, 217, 366, 360, 368, 369, 666, 360, 372, - 373, 941, 138, 139, 165, 170, 245, 261, 735, 262, - 740, 739, 1001, 158, 263, 744, 255, 173, 840, 391, - 257, 159, 435, 154, 259, 397, 398, 1322, 423, 131, - 132, 133, 134, 413, 398, 174, 990, 160, 126, 127, - 414, 565, 728, 613, 738, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 445, 349, 350, 162, - 440, 360, 524, 351, 399, 400, 399, 400, 175, 448, - 449, 450, 1155, 452, 394, 395, 455, 456, 163, 457, - 172, 402, 403, 412, 648, 183, 411, 741, 184, 465, - 1179, 185, 1352, 186, 167, 1180, 470, 471, 472, 473, + 149, 1166, 77, 410, 147, 254, 247, 146, 604, 605, + 164, 839, 557, 525, 425, 215, 529, 558, 743, 936, + 661, 938, 169, 1011, 330, 244, 326, 734, 169, 260, + 164, 870, 5, 256, 434, 183, 153, 258, 184, 879, + 1325, 185, 268, 186, 269, 515, 516, 517, 941, 519, + 520, 521, 460, 421, 462, 422, 943, 797, 218, 797, + 219, 270, 179, 271, 1016, 180, 798, 181, 798, 379, + 380, 381, 524, 799, 800, 799, 800, 801, 802, 801, + 802, 399, 400, 399, 400, 4, 512, 266, 267, 199, + 201, 208, 207, 38, 39, 40, 41, 1052, 150, 1053, + 401, 46, 418, 220, 49, 937, 151, 939, 399, 400, + 662, 663, 664, 665, 190, 1046, 1047, 191, 1247, 119, + 120, 121, 122, 216, 599, 123, 327, 328, 152, 399, + 400, 871, 872, 319, 320, 321, 209, 155, 322, 325, + 210, 524, 1260, 331, 940, 1054, 1066, 1055, 744, 354, + 211, 248, 356, 744, 156, 165, 255, 840, 358, 360, + 363, 364, 166, 366, 360, 368, 369, 217, 360, 372, + 373, 138, 139, 666, 170, 165, 261, 245, 262, 735, + 740, 1002, 739, 263, 257, 435, 154, 259, 941, 391, + 1326, 131, 132, 133, 134, 397, 398, 399, 400, 157, + 423, 126, 127, 565, 398, 566, 797, 399, 400, 613, + 158, 138, 139, 138, 139, 798, 362, 728, 727, 399, + 400, 367, 799, 800, 402, 371, 801, 802, 138, 139, + 440, 360, 528, 1085, 1086, 844, 412, 399, 400, 448, + 449, 450, 159, 452, 394, 395, 455, 456, 162, 457, + 648, 160, 403, 1056, 163, 1057, 411, 1356, 161, 465, + 131, 132, 133, 134, 399, 400, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, 1105, 168, - 138, 139, 518, 399, 400, 399, 400, 844, 179, 138, - 139, 180, 360, 181, 190, 512, 266, 191, 272, 612, - 273, 925, 528, 530, 1410, 541, 542, 543, 544, 545, + 504, 505, 506, 507, 508, 509, 510, 511, 1107, 779, + 780, 781, 518, 195, 196, 399, 400, 399, 400, 716, + 167, 413, 360, 197, 717, 512, 266, 530, 414, 1414, + 198, 606, 168, 612, 996, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 171, 131, 132, 133, 134, 1045, 1046, 440, 119, 120, - 121, 122, 172, 569, 123, 399, 400, 560, 574, 176, - 561, 138, 139, 579, 580, 581, 582, 1173, 727, 846, - 587, 942, 399, 400, 177, 592, 593, 594, 1084, 1085, - 362, 187, 399, 400, 188, 367, 189, 178, 1159, 371, - 331, 331, 607, 608, 609, 319, 320, 610, 1215, 995, - 182, 614, 615, 616, 617, 618, 399, 400, 622, 399, + 171, 131, 132, 133, 134, 138, 139, 440, 119, 120, + 121, 122, 844, 569, 123, 399, 400, 272, 574, 273, + 160, 138, 139, 579, 580, 581, 582, 738, 172, 526, + 587, 925, 399, 400, 172, 592, 593, 594, 173, 174, + 203, 741, 846, 204, 399, 400, 205, 274, 942, 275, + 331, 331, 607, 608, 609, 319, 320, 610, 175, 444, + 1161, 614, 615, 616, 617, 618, 399, 400, 622, 399, 400, 624, 625, 399, 400, 360, 360, 360, 630, 631, - 634, 192, 1217, 636, 274, 1219, 275, 360, 212, 865, - 126, 127, 639, 641, 276, 867, 277, 399, 400, 602, - 603, 131, 132, 133, 134, 194, 278, 395, 279, 280, - 193, 281, 657, 1227, 213, 660, 888, 138, 139, 797, - 202, 138, 139, 659, 844, 1263, 214, 1266, 798, 1269, - 512, 266, 399, 400, 221, 799, 800, 223, 222, 801, - 802, 941, 224, 282, 941, 283, 1246, 941, 1229, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 119, 120, 121, 122, 351, 240, 123, - 634, 284, 730, 285, 399, 400, 1174, 731, 131, 132, - 133, 134, 250, 203, 729, 286, 204, 287, 241, 205, - 1230, 242, 399, 400, 399, 400, 243, 249, 138, 139, - 399, 400, 797, 526, 994, 996, 360, 747, 1299, 252, - 1302, 798, 641, 751, 399, 400, 1305, 251, 799, 800, - 1343, 941, 801, 802, 399, 400, 765, 399, 400, 253, - 1313, 770, 778, 778, 778, 778, 777, 777, 777, 777, - 1315, 310, 265, 1369, 360, 126, 127, 311, 789, 790, - 348, 349, 350, 288, 793, 289, 941, 351, 565, 941, - 566, 290, 941, 291, 312, 941, 1378, 813, 1381, 815, - 1384, 313, 237, 195, 196, 361, 1387, 292, 314, 293, - 361, 360, 329, 197, 361, 7, 8, 335, 360, 1065, - 206, 315, 941, 967, 941, 835, 941, 837, 838, 788, - 294, 296, 295, 297, 1144, 316, 627, 628, 629, 1414, - 317, 1416, 805, 1418, 298, 845, 299, 300, 637, 301, - 352, 355, 535, 17, 18, 536, 20, 21, 537, 23, - 538, 25, 302, 26, 303, 353, 29, 30, 365, 32, - 33, 34, 854, 855, 370, 37, 441, 361, 304, 306, - 305, 307, 308, 565, 309, 571, 856, 857, 858, 859, - 860, 861, 862, 375, 334, 360, 565, 565, 575, 638, - 866, 376, 55, 56, 57, 655, 873, 656, 714, 565, - 715, 726, 1110, 377, 378, 797, 360, 360, 360, 360, - 886, 565, 374, 819, 798, 565, 382, 820, 237, 237, - 237, 799, 800, 7, 8, 801, 802, 387, 565, 390, - 821, 565, 393, 828, 388, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 389, - 626, 237, 419, 351, 898, 968, 899, 746, 361, 392, - 535, 17, 18, 536, 20, 21, 537, 23, 538, 25, - 892, 26, 404, 405, 29, 30, 406, 32, 33, 34, - 565, 415, 923, 37, 426, 427, 1258, 797, 565, 955, - 958, 416, 1300, 441, 417, 786, 798, 959, 463, 565, - 420, 960, 845, 799, 800, 424, 428, 801, 802, 429, - 55, 56, 57, 797, 929, 930, 931, 976, 977, 1003, - 436, 1004, 798, 565, 565, 1005, 1006, 330, 797, 799, - 800, 430, 824, 801, 802, 431, 565, 798, 1007, 830, - 565, 336, 1008, 433, 799, 800, 1002, 997, 801, 802, - 1092, 1134, 1093, 1135, 437, 797, 438, 451, 1012, 1014, - 454, 361, 361, 361, 798, 565, 446, 1168, 653, 797, - 447, 799, 800, 361, 1303, 801, 802, 453, 798, 642, - 1185, 1092, 1186, 1228, 458, 799, 800, 464, 459, 801, - 802, 461, 797, 1047, 1048, 1049, 38, 39, 40, 41, - 1306, 798, 1058, 1060, 46, 466, 467, 49, 799, 800, - 1063, 469, 801, 802, 351, 1365, 864, 1271, 360, 1272, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 531, 1080, 1081, 1082, 351, 882, 883, 884, - 885, 532, 1399, 1089, 565, 1092, 1283, 1287, 1095, 533, - 1087, 346, 347, 348, 349, 350, 1401, 144, 540, 1098, - 351, 1290, 1064, 1291, 1099, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 1403, - 1092, 1112, 1294, 351, 1113, 565, 565, 1295, 1314, 534, - 1118, 1119, 361, 578, 583, 1121, 1274, 588, 642, 752, - 584, 1185, 1127, 1349, 589, 565, 797, 1368, 590, 565, - 1139, 1370, 1137, 595, 1138, 798, 1092, 591, 1374, 331, - 597, 598, 799, 800, 797, 1154, 801, 802, 619, 1396, - 361, 1397, 621, 798, 556, 360, 565, 1114, 1406, 360, - 799, 800, 1169, 623, 801, 802, 1407, 635, 1408, 1178, - 1092, 646, 1424, 1177, 1429, 718, 1430, 719, 1181, 1182, - 797, 720, 649, 1392, 725, 722, 723, 361, 724, 798, - 732, 1145, 733, 1148, 361, 1151, 799, 800, 737, 1195, - 801, 802, 748, 1344, 749, 750, 753, 1162, 754, 755, - 1165, 1166, 797, 1405, 757, 758, 759, 760, 1420, 762, - 1423, 798, 763, 764, 772, 774, 787, 791, 799, 800, - 1213, 1426, 801, 802, 138, 139, 792, 814, 826, 432, - 1436, 262, 831, 771, 144, 832, 263, 1226, 833, 440, - 834, 842, 849, 850, 785, 853, 851, 863, 868, 1234, - 874, 1235, 875, 869, 360, 877, 878, 1427, 1240, 1073, - 881, 361, 887, 1244, 891, 896, 893, 902, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 361, 361, 361, 361, 351, 360, 907, 1428, - 903, 331, 908, 1261, 913, 1264, 909, 1267, 910, 914, - 915, 916, 917, 919, 841, 918, 920, 360, 921, 922, - 924, 1280, 932, 933, 934, 935, 944, 945, 950, 1285, - 1286, 946, 947, 948, 954, 721, 1289, 951, 952, 953, - 7, 8, 956, 1293, 957, 964, 969, 1297, 970, 971, - 973, 972, 975, 974, 1009, 1262, 991, 1265, 993, 1268, - 980, 999, 1021, 1017, 998, 1024, 1025, 1276, 1016, 1022, - 1279, 1028, 1095, 1023, 1027, 1029, 1030, 535, 17, 18, - 536, 20, 21, 537, 23, 538, 25, 1331, 26, 1034, - 1335, 29, 30, 1339, 32, 33, 34, 1342, 1035, 1057, - 37, 360, 1037, 360, 1038, 1039, 1040, 1044, 1351, 1061, - 1062, 1353, 1076, 894, 895, 1050, 897, 1069, 900, 901, - 1077, 1070, 904, 905, 1078, 1074, 1079, 55, 56, 57, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 1083, 1086, 1377, 1100, 351, 1096, 1101, 1103, 1156, - 1106, 1107, 1108, 1109, 1115, 1347, 1116, 360, 1117, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 1120, 1122, 7, 8, 351, 1123, 1124, - 1125, 1128, 1412, 1133, 1411, 654, 1136, 1146, 1149, 1152, - 961, 962, 963, 1160, 1163, 1236, 1167, 1187, 1188, 1184, - 1189, 1201, 1191, 1192, 361, 1193, 1194, 1202, 1203, 1432, - 1204, 1205, 535, 17, 18, 536, 20, 21, 537, 23, - 538, 25, 1206, 26, 1207, 1211, 29, 30, 1257, 32, - 33, 34, 1208, 1212, 1216, 37, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 1214, 1218, 1220, 1278, 351, - 1222, 1233, 1224, 1231, 1238, 1020, 1245, 1250, 1225, 1251, - 1247, 1026, 55, 56, 57, 1252, 1253, 1031, 1032, 1033, - 1254, 1255, 1270, 1036, 1277, 1284, 1288, 1296, 1041, 1042, - 1043, 1308, 1309, 1312, 1317, 1324, 1326, 1341, 1327, 1329, - 1332, 1333, 1336, 1059, 1337, 1340, 1346, 1357, 1363, 1371, - 1379, 1382, 1385, 1068, 1388, 1390, 1395, 1072, 1413, 1359, - 1415, 1417, 1361, 1372, 1394, 1400, 1402, 1404, 1409, 1419, - 806, 361, 1421, 1431, 1433, 361, 1434, 1435, 1437, 1318, - 1011, 76, 1345, 1019, 1348, 84, 586, 0, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 1102, 1097, 91, 225, 351, 0, 0, 0, - 95, 96, 97, 0, 596, 98, 99, 100, 101, 102, + 634, 187, 1218, 636, 188, 1220, 189, 360, 176, 1222, + 126, 127, 639, 641, 399, 400, 889, 399, 400, 602, + 603, 565, 865, 131, 132, 133, 134, 395, 867, 991, + 1230, 1182, 657, 1232, 565, 660, 1183, 659, 1267, 276, + 1270, 277, 1273, 138, 139, 182, 266, 399, 400, 888, + 195, 196, 627, 628, 629, 278, 797, 279, 399, 400, + 197, 177, 178, 1233, 637, 798, 560, 206, 1250, 561, + 399, 400, 799, 800, 1303, 192, 801, 802, 119, 120, + 121, 122, 941, 193, 123, 941, 1306, 280, 941, 281, + 634, 282, 730, 283, 284, 194, 285, 731, 729, 399, + 400, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 346, 347, 445, 349, 350, 1309, 286, 202, 287, 351, + 212, 1175, 399, 400, 399, 400, 360, 747, 1157, 995, + 997, 213, 641, 751, 1347, 348, 349, 350, 1317, 288, + 1319, 289, 351, 1304, 214, 221, 765, 399, 400, 222, + 241, 770, 778, 778, 778, 778, 777, 777, 777, 777, + 126, 127, 941, 1373, 360, 223, 138, 139, 789, 790, + 361, 432, 224, 262, 793, 361, 144, 240, 263, 361, + 1382, 242, 1385, 746, 1388, 243, 290, 813, 291, 815, + 1391, 292, 237, 293, 294, 249, 295, 941, 250, 251, + 941, 360, 252, 941, 138, 139, 941, 253, 360, 522, + 296, 262, 297, 265, 314, 835, 263, 837, 838, 788, + 298, 786, 299, 1418, 300, 1420, 301, 1422, 1146, 845, + 310, 311, 805, 941, 302, 941, 303, 941, 304, 312, + 305, 441, 361, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 306, 824, 307, + 313, 351, 854, 855, 308, 830, 309, 565, 315, 571, + 1176, 565, 565, 575, 638, 316, 856, 857, 858, 859, + 860, 861, 862, 317, 334, 360, 655, 714, 656, 715, + 866, 346, 347, 348, 349, 350, 873, 565, 329, 726, + 351, 565, 565, 819, 820, 335, 360, 360, 360, 360, + 886, 565, 374, 821, 797, 565, 1112, 828, 237, 237, + 237, 352, 353, 798, 898, 565, 899, 923, 355, 390, + 799, 800, 393, 361, 801, 802, 365, 797, 967, 7, + 8, 565, 864, 958, 370, 565, 798, 960, 971, 375, + 972, 237, 419, 799, 800, 376, 392, 801, 802, 1004, + 565, 1005, 1006, 882, 883, 884, 885, 565, 441, 1007, + 892, 565, 565, 1008, 1009, 377, 535, 17, 18, 536, + 20, 21, 537, 23, 538, 25, 1094, 26, 1095, 955, + 29, 30, 1262, 32, 33, 34, 845, 959, 463, 37, + 1136, 1307, 1137, 565, 1188, 1170, 1189, 1094, 1275, 1231, + 1276, 378, 382, 797, 929, 930, 931, 977, 978, 565, + 387, 1287, 798, 1094, 1310, 1291, 55, 56, 57, 799, + 800, 388, 389, 801, 802, 797, 361, 361, 361, 415, + 1294, 998, 1295, 1094, 798, 1298, 1003, 565, 361, 1299, + 426, 799, 800, 404, 642, 801, 802, 405, 1013, 1015, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 565, 1188, 1318, 1353, 351, 565, + 968, 1372, 406, 565, 626, 1374, 1094, 1400, 1378, 1401, + 424, 427, 797, 1048, 1049, 1050, 565, 1411, 1410, 1412, + 1369, 798, 1059, 1061, 1094, 416, 1428, 797, 799, 800, + 1064, 417, 801, 802, 428, 1433, 798, 1434, 360, 420, + 797, 436, 1403, 799, 800, 429, 430, 801, 802, 798, + 797, 431, 433, 1081, 1082, 1083, 799, 800, 437, 798, + 801, 802, 438, 451, 1091, 1089, 799, 800, 446, 1097, + 801, 802, 447, 453, 454, 458, 459, 461, 464, 466, + 1100, 467, 1065, 469, 351, 1101, 531, 361, 532, 336, + 533, 144, 540, 642, 752, 1074, 578, 534, 583, 1405, + 584, 797, 1114, 588, 589, 1115, 595, 590, 591, 598, + 798, 1120, 1121, 597, 1407, 1278, 1123, 799, 800, 619, + 621, 801, 802, 1129, 623, 361, 635, 1409, 646, 649, + 718, 1141, 719, 1139, 720, 1140, 722, 1430, 723, 732, + 331, 724, 733, 737, 749, 748, 1156, 753, 750, 754, + 755, 757, 758, 759, 760, 762, 360, 763, 1116, 764, + 360, 772, 361, 1171, 774, 787, 797, 791, 792, 361, + 1180, 814, 826, 831, 1179, 798, 832, 833, 834, 842, + 1184, 1185, 799, 800, 725, 851, 801, 802, 1431, 853, + 849, 850, 1147, 863, 1150, 869, 1153, 868, 874, 875, + 1396, 1198, 877, 1348, 881, 878, 891, 896, 1164, 887, + 893, 1167, 1168, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 902, 903, 907, + 908, 351, 1216, 909, 910, 1424, 913, 1427, 914, 919, + 915, 7, 8, 771, 916, 917, 361, 918, 920, 1229, + 921, 440, 922, 1432, 785, 924, 932, 1440, 934, 933, + 935, 1237, 944, 1238, 945, 950, 360, 361, 361, 361, + 361, 1244, 946, 947, 948, 951, 1248, 952, 535, 17, + 18, 536, 20, 21, 537, 23, 538, 25, 953, 26, + 954, 956, 29, 30, 957, 32, 33, 34, 964, 969, + 360, 37, 556, 970, 331, 976, 1265, 973, 1268, 974, + 1271, 992, 975, 994, 841, 981, 1000, 999, 1010, 1018, + 360, 1035, 1022, 1239, 1284, 1025, 1026, 1029, 55, 56, + 57, 1017, 1023, 1289, 1290, 1024, 1028, 1030, 1031, 1038, + 1293, 721, 1036, 1051, 1039, 1040, 1041, 1297, 1045, 1062, + 1063, 1301, 1058, 1070, 1077, 1078, 1079, 1261, 1266, 1071, + 1269, 1075, 1272, 1080, 1084, 1088, 1098, 1102, 1103, 876, + 1280, 1105, 1108, 1283, 1109, 1110, 1097, 1282, 1111, 1117, + 1118, 1119, 1122, 1124, 1127, 1125, 653, 1126, 1130, 1135, + 1138, 1335, 1148, 1151, 1339, 1154, 1162, 1343, 1165, 1158, + 1169, 1346, 1181, 1187, 1190, 360, 1194, 360, 1191, 1192, + 1195, 1197, 1355, 894, 895, 1357, 897, 1196, 900, 901, + 1204, 1227, 904, 905, 1205, 1206, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 1207, 1208, 1209, 1210, 351, 1211, 1214, 1381, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 1351, + 1215, 360, 1349, 351, 1352, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 361, + 1217, 1219, 1221, 351, 906, 1223, 1416, 1225, 1415, 1234, + 961, 962, 963, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 1228, 1236, 1241, + 1242, 351, 1249, 1436, 91, 318, 1254, 1251, 1393, 1255, + 95, 96, 97, 1256, 1257, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 227, 0, 1389, 0, - 0, 0, 0, 0, 0, 0, 1129, 1130, 1131, 1132, - 228, 0, 0, 229, 0, 0, 230, 0, 231, 0, - 0, 0, 0, 0, 0, 441, 0, 0, 0, 0, - 0, 0, 0, 0, 38, 39, 40, 41, 42, 0, - 361, 0, 46, 0, 0, 49, 0, 0, 1170, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1183, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 361, 0, 0, 0, 0, 0, 125, - 0, 0, 0, 0, 128, 129, 130, 0, 0, 0, - 0, 0, 0, 361, 0, 0, 0, 0, 0, 0, - 407, 1161, 0, 0, 0, 137, 0, 0, 0, 0, - 409, 0, 0, 0, 0, 143, 0, 198, 442, 0, - 0, 0, 0, 0, 0, 1223, 91, 225, 0, 0, - 0, 0, 95, 96, 97, 0, 0, 98, 99, 100, + 113, 114, 115, 116, 117, 118, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 1021, 1258, 1259, 1274, 351, + 1281, 1027, 1292, 1288, 1312, 1300, 1313, 1032, 1033, 1034, + 1321, 1328, 1316, 1037, 1330, 1331, 1333, 1336, 1042, 1043, + 1044, 1337, 1340, 1341, 1344, 1345, 1350, 1361, 1363, 1365, + 1367, 1375, 1383, 1060, 1376, 1386, 1389, 361, 1392, 1394, + 1398, 361, 1399, 1069, 1404, 1406, 1408, 1073, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 1413, 1417, 1419, 1421, 351, 1423, 1425, 125, + 1087, 1435, 1437, 1438, 128, 129, 130, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 1439, + 135, 136, 1441, 351, 1099, 137, 91, 225, 1020, 1012, + 140, 1322, 95, 96, 97, 143, 76, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 227, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 228, 0, 0, 229, 0, 361, 230, 361, + 111, 112, 113, 114, 115, 116, 117, 118, 227, 84, + 0, 586, 441, 0, 949, 1104, 0, 1131, 1132, 1133, + 1134, 0, 228, 0, 0, 229, 0, 361, 230, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1273, 0, 0, 38, 39, 40, 41, - 42, 0, 0, 876, 46, 0, 0, 49, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 361, 0, 0, 0, 0, 0, 0, - 1307, 125, 0, 0, 0, 0, 128, 129, 130, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 135, 359, 0, 0, 0, 137, 0, 0, - 0, 0, 140, 0, 0, 0, 0, 143, 0, 0, - 442, 0, 0, 91, 92, 93, 0, 94, 0, 95, - 96, 97, 0, 1356, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 0, 0, 119, 120, 121, - 122, 0, 0, 123, 0, 7, 8, 337, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 535, 17, 18, 536, 20, 21, 537, 23, - 538, 25, 0, 26, 0, 0, 29, 30, 0, 32, - 33, 34, 0, 0, 0, 37, 0, 0, 0, 0, - 0, 0, 124, 0, 0, 0, 0, 0, 125, 126, - 127, 0, 0, 128, 129, 130, 131, 132, 133, 134, - 0, 0, 55, 56, 57, 0, 0, 0, 0, 135, - 136, 0, 0, 0, 137, 0, 138, 139, 0, 140, - 0, 141, 0, 142, 143, 0, 144, 91, 225, 226, - 0, 0, 0, 95, 96, 97, 0, 0, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 227, - 836, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 229, 0, 0, 230, - 0, 231, 0, 7, 8, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 38, 39, 40, - 41, 42, 0, 0, 0, 46, 0, 0, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 535, 17, 18, 536, 20, 21, 537, 23, 538, 25, - 0, 26, 0, 0, 29, 30, 0, 32, 33, 34, - 0, 0, 125, 37, 0, 0, 0, 128, 129, 130, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 135, 232, 0, 0, 0, 137, 0, - 55, 56, 57, 140, 0, 91, 225, 1066, 143, 0, - 233, 95, 96, 97, 0, 0, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 227, 0, 0, + 0, 0, 0, 0, 0, 0, 38, 39, 40, 41, + 42, 0, 0, 0, 46, 0, 0, 49, 0, 1172, + 0, 361, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1186, 0, 0, 0, 0, 0, 0, + 0, 361, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 125, 0, 0, 0, 0, 128, 129, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 229, 0, 0, 230, 1310, 231, - 0, 7, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 38, 39, 40, 41, 42, - 0, 0, 0, 46, 0, 0, 49, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 535, 17, - 18, 536, 20, 21, 537, 23, 538, 25, 0, 26, - 0, 906, 29, 30, 0, 32, 33, 34, 0, 0, - 125, 37, 0, 0, 0, 128, 129, 130, 0, 0, - 949, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 135, 232, 0, 0, 0, 137, 0, 55, 56, - 57, 140, 0, 91, 225, 1354, 143, 0, 1067, 95, + 0, 0, 407, 1163, 0, 0, 0, 137, 0, 0, + 0, 0, 409, 0, 0, 0, 0, 143, 0, 198, + 442, 0, 0, 0, 0, 0, 0, 1226, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, + 0, 0, 0, 91, 225, 0, 361, 0, 361, 95, 96, 97, 0, 0, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 227, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 0, 0, 229, 0, 0, 230, 1366, 231, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1277, 0, 361, 228, + 0, 0, 229, 0, 0, 230, 0, 231, 0, 0, + 0, 0, 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 39, 40, 41, 42, 0, 0, - 0, 46, 0, 0, 49, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, - 0, 0, 0, 351, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 125, 1000, - 0, 0, 351, 128, 129, 130, 0, 0, 0, 0, + 0, 46, 0, 0, 49, 91, 318, 0, 0, 0, + 0, 95, 96, 97, 1311, 0, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 0, 125, 0, + 0, 0, 0, 128, 129, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, - 232, 0, 0, 0, 137, 0, 0, 0, 0, 140, - 0, 91, 225, 0, 143, 0, 1355, 95, 96, 97, - 0, 0, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 227, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 229, 0, 0, 230, 0, 231, 0, 0, 0, 0, + 359, 0, 0, 0, 137, 0, 0, 1360, 0, 140, + 0, 0, 0, 0, 143, 0, 0, 442, 91, 92, + 93, 0, 94, 0, 95, 96, 97, 0, 0, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 0, 0, 119, 120, 121, 122, 0, 0, 123, 0, + 125, 0, 7, 8, 0, 128, 129, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 38, 39, 40, 41, 42, 0, 0, 0, 46, - 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 1075, 0, 0, - 0, 351, 0, 0, 0, 0, 125, 0, 0, 0, - 0, 128, 129, 130, 0, 0, 1190, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 135, 232, 0, - 0, 0, 137, 0, 0, 0, 0, 140, 0, 91, - 225, 0, 143, 0, 233, 95, 96, 97, 0, 0, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 227, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 229, 0, - 0, 230, 0, 231, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, - 39, 40, 41, 42, 0, 0, 0, 46, 0, 0, - 49, 337, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 125, 1210, 0, 0, 351, 128, - 129, 130, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 135, 359, 0, 0, 0, - 137, 0, 0, 0, 0, 140, 0, 91, 225, 0, - 143, 0, 439, 95, 96, 97, 0, 0, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 227, + 0, 135, 136, 0, 0, 0, 137, 0, 0, 0, + 0, 140, 0, 0, 323, 0, 143, 0, 324, 535, + 17, 18, 536, 20, 21, 537, 23, 538, 25, 0, + 26, 0, 0, 29, 30, 0, 32, 33, 34, 0, + 0, 0, 37, 0, 0, 0, 0, 124, 0, 0, + 0, 0, 0, 125, 126, 127, 0, 0, 128, 129, + 130, 131, 132, 133, 134, 0, 0, 0, 0, 55, + 56, 57, 0, 0, 135, 136, 0, 0, 0, 137, + 0, 138, 139, 0, 140, 0, 141, 0, 142, 143, + 0, 144, 91, 225, 226, 0, 0, 0, 95, 96, + 97, 0, 0, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 227, 0, 0, 654, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 229, 0, 0, 230, 0, 231, 0, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 229, 0, 0, 230, - 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 38, 39, 40, - 41, 42, 0, 0, 0, 46, 0, 0, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 1237, 0, 0, 0, 351, 0, 0, - 0, 0, 125, 0, 0, 0, 0, 128, 129, 130, - 0, 0, 1316, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 135, 359, 0, 0, 0, 137, 0, - 0, 0, 0, 140, 0, 91, 225, 0, 143, 0, - 640, 95, 96, 97, 0, 0, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 227, 0, 0, + 0, 0, 38, 39, 40, 41, 42, 0, 0, 0, + 46, 0, 0, 49, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 535, 17, 18, 536, 20, + 21, 537, 23, 538, 25, 0, 26, 0, 0, 29, + 30, 0, 32, 33, 34, 0, 0, 125, 37, 0, + 0, 0, 128, 129, 130, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 135, 232, + 0, 0, 0, 137, 0, 55, 56, 57, 140, 0, + 91, 225, 1067, 143, 0, 233, 95, 96, 97, 0, + 0, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 227, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 229, + 0, 0, 230, 806, 231, 0, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 229, 0, 0, 230, 0, 231, + 38, 39, 40, 41, 42, 0, 0, 0, 46, 0, + 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 535, 17, 18, 536, 20, 21, 537, + 23, 538, 25, 0, 26, 0, 0, 29, 30, 0, + 32, 33, 34, 0, 0, 125, 37, 0, 0, 0, + 128, 129, 130, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 135, 232, 0, 0, + 0, 137, 0, 55, 56, 57, 140, 0, 91, 225, + 1358, 143, 0, 1068, 95, 96, 97, 0, 0, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 229, 0, 0, + 230, 836, 231, 0, 7, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 39, + 40, 41, 42, 0, 0, 0, 46, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 38, 39, 40, 41, 42, - 0, 0, 0, 46, 0, 0, 49, 337, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 0, 0, 0, 0, 351, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 125, 0, 0, 0, 351, 128, 129, 130, 0, 0, + 0, 535, 17, 18, 536, 20, 21, 537, 23, 538, + 25, 0, 26, 0, 0, 29, 30, 0, 32, 33, + 34, 0, 0, 125, 37, 0, 0, 0, 128, 129, + 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 135, 232, 0, 0, 0, 137, + 0, 55, 56, 57, 140, 0, 91, 225, 0, 143, + 0, 1359, 95, 96, 97, 0, 0, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 135, 232, 0, 0, 0, 137, 0, 0, 0, - 0, 140, 0, 91, 225, 0, 143, 0, 1071, 95, - 96, 97, 0, 0, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 227, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 0, 0, 229, 0, 0, 230, 0, 231, 0, 0, + 0, 0, 228, 0, 0, 229, 0, 0, 230, 1314, + 231, 0, 7, 8, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 38, 39, 40, 41, + 42, 0, 0, 0, 46, 0, 0, 49, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 535, + 17, 18, 536, 20, 21, 537, 23, 538, 25, 0, + 26, 0, 1001, 29, 30, 0, 32, 33, 34, 0, + 0, 125, 37, 0, 0, 0, 128, 129, 130, 0, + 0, 1076, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 135, 232, 0, 0, 0, 137, 0, 55, + 56, 57, 140, 0, 91, 225, 0, 143, 0, 233, + 95, 96, 97, 0, 0, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 38, 39, 40, 41, 42, 0, 91, - 318, 46, 0, 0, 49, 95, 96, 97, 0, 0, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 0, 0, 0, 0, 0, 0, 0, 125, 0, - 0, 0, 0, 128, 129, 130, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 407, - 1161, 0, 0, 0, 137, 0, 0, 0, 0, 409, - 0, 91, 318, 266, 143, 0, 198, 95, 96, 97, - 0, 0, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 0, 0, 119, 120, 121, 122, 0, - 0, 123, 0, 0, 125, 0, 0, 0, 0, 128, - 129, 130, 0, 0, 0, 0, 0, 1364, 0, 0, - 0, 0, 0, 0, 0, 135, 136, 0, 0, 0, - 137, 0, 0, 0, 0, 140, 0, 0, 323, 0, - 143, 0, 324, 91, 318, 0, 0, 0, 0, 95, - 96, 97, 0, 0, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 0, 125, 126, 127, 1398, - 444, 128, 129, 130, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 135, 136, 0, - 0, 0, 137, 0, 0, 0, 0, 140, 0, 91, - 318, 0, 143, 0, 1176, 95, 96, 97, 0, 0, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 337, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 0, 0, 0, 125, 351, - 0, 0, 0, 128, 129, 130, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, - 136, 0, 0, 0, 137, 0, 0, 0, 0, 140, - 0, 0, 632, 0, 143, 0, 633, 0, 0, 0, - 0, 0, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 564, 349, 350, 0, 0, 0, 0, - 351, 0, 0, 0, 125, 0, 0, 0, 0, 128, - 129, 130, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 407, 408, 0, 0, 0, - 137, 0, 0, 0, 0, 409, 0, 91, 318, 0, - 143, 0, 198, 95, 96, 97, 0, 0, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 0, - 0, 0, 91, 225, 0, 0, 0, 0, 95, 96, + 228, 0, 0, 229, 0, 0, 230, 1370, 231, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 38, 39, 40, 41, 42, 0, + 0, 0, 46, 0, 0, 49, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 0, 0, 0, 0, 351, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 125, + 1193, 0, 0, 351, 128, 129, 130, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 135, 359, 0, 0, 0, 137, 0, 0, 0, 0, + 140, 0, 91, 225, 0, 143, 0, 439, 95, 96, 97, 0, 0, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 227, 0, 0, 0, 0, 0, @@ -1856,849 +1784,911 @@ static const yytype_int16 yytable[] = 0, 229, 0, 0, 230, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 39, 40, 41, 42, 0, 0, 0, - 46, 0, 125, 49, 0, 0, 0, 128, 129, 130, - 0, 1425, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 135, 136, 0, 0, 0, 137, 0, - 0, 444, 0, 140, 0, 0, 0, 125, 143, 0, - 1013, 0, 128, 129, 130, 0, 0, 0, 0, 0, + 46, 0, 0, 49, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 1213, 0, + 0, 0, 351, 0, 0, 0, 0, 125, 0, 0, + 0, 0, 128, 129, 130, 0, 0, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 359, - 0, 0, 0, 137, 91, 318, 266, 0, 140, 0, - 95, 96, 97, 143, 0, 98, 99, 100, 101, 102, + 0, 0, 0, 137, 0, 0, 0, 0, 140, 0, + 91, 225, 0, 143, 0, 640, 95, 96, 97, 0, + 0, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 227, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 229, + 0, 0, 230, 0, 231, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 38, 39, 40, 41, 42, 0, 0, 0, 46, 0, + 0, 49, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, + 351, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 125, 0, 0, 0, 351, + 128, 129, 130, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 135, 232, 0, 0, + 0, 137, 0, 0, 0, 0, 140, 0, 91, 225, + 0, 143, 0, 1072, 95, 96, 97, 0, 0, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 229, 0, 0, + 230, 0, 231, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 39, + 40, 41, 42, 0, 91, 318, 46, 0, 0, 49, + 95, 96, 97, 0, 0, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 0, 0, 119, 120, - 121, 122, 91, 318, 123, 0, 0, 0, 95, 96, + 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, + 0, 0, 0, 125, 0, 0, 0, 0, 128, 129, + 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 407, 1163, 0, 0, 0, 137, + 0, 0, 0, 0, 409, 0, 91, 318, 266, 143, + 0, 198, 95, 96, 97, 0, 0, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 0, 0, + 119, 120, 121, 122, 0, 0, 123, 0, 0, 125, + 0, 0, 0, 0, 128, 129, 130, 0, 0, 0, + 0, 0, 1320, 0, 0, 0, 0, 0, 0, 0, + 135, 136, 0, 0, 0, 137, 0, 0, 0, 0, + 140, 0, 0, 632, 0, 143, 0, 633, 91, 318, + 0, 0, 0, 0, 95, 96, 97, 0, 0, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 1368, 125, 126, 127, 0, 0, 128, 129, 130, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 135, 136, 0, 0, 0, 137, 0, 0, + 0, 0, 140, 0, 91, 318, 0, 143, 0, 1178, + 95, 96, 97, 0, 0, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 0, 0, 0, 125, 351, 0, 0, 0, 128, 129, + 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 407, 408, 0, 0, 0, 137, + 0, 0, 0, 0, 409, 0, 0, 0, 0, 143, + 0, 198, 0, 0, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, + 0, 0, 351, 1402, 444, 0, 0, 0, 0, 125, + 0, 0, 0, 0, 128, 129, 130, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 135, 136, 0, 0, 0, 137, 0, 0, 0, 0, + 140, 0, 91, 225, 0, 143, 0, 1014, 95, 96, 97, 0, 0, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 444, 0, + 115, 116, 117, 118, 227, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 229, 0, 0, 230, 0, 231, 0, 0, 0, + 0, 0, 1429, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 38, 39, 40, 41, 42, 0, 0, 0, + 46, 0, 444, 49, 0, 0, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 564, 349, 350, + 0, 444, 0, 0, 351, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, + 0, 0, 128, 129, 130, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 135, 359, + 0, 0, 0, 137, 91, 318, 266, 0, 140, 0, + 95, 96, 97, 143, 0, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 650, 0, 119, 120, + 121, 122, 0, 0, 123, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 742, + 0, 0, 0, 351, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 445, 349, 350, 829, 0, 0, 0, 351, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 445, 349, 350, 650, 0, 0, - 0, 351, 0, 0, 0, 0, 0, 0, 0, 125, - 126, 127, 0, 0, 128, 129, 130, 742, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 135, 136, 0, 0, 0, 137, 829, 0, 0, 0, - 140, 0, 0, 0, 0, 143, 0, 125, 0, 0, - 0, 0, 128, 129, 130, 966, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 135, 136, - 0, 0, 0, 137, 0, 0, 0, 0, 140, 0, - 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 344, 345, 346, 347, 564, 349, 350, 966, 0, 0, + 0, 351, 0, 0, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 0, 125, + 126, 127, 351, 0, 128, 129, 130, 0, 0, 1144, + 0, 1145, 0, 0, 0, 0, 0, 0, 0, 0, + 135, 136, 0, 0, 0, 137, 0, 0, 0, 0, + 140, 0, 0, 0, 0, 143, 0, 0, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, + 0, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 911, 0, 0, 0, 351, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 564, 349, 350, 0, 0, 0, 0, 351, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 0, 0, 0, 0, 351, 0, 337, + 347, 348, 349, 350, 0, 0, 0, 0, 351, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 911, 0, 0, 0, 351, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 0, 0, 0, 0, 351, 337, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 0, -4, 1, 0, 351, -4, 0, 0, 0, - 0, 0, 0, 0, -4, -4, 0, 0, 0, 0, - 0, 0, 0, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 0, -4, 0, - 0, 351, 0, -4, -4, 0, -4, -4, -4, 0, - -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + 348, 349, 350, 0, -4, 1, 0, 351, -4, 0, + 0, 0, 0, 0, 0, 0, -4, -4, 0, 0, + 0, 0, 0, 0, 0, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, + -4, 0, 0, 351, 0, -4, -4, 0, -4, -4, -4, 0, -4, -4, -4, -4, -4, -4, -4, -4, - -4, -4, 0, -4, -4, -4, -4, -4, -4, -4, - -4, -4, -4, -4, -4, -4, -4, -4, 6, 0, - -4, -4, 0, 0, 0, -4, 7, 8, 0, 0, - -4, -4, -4, -4, 0, 0, -4, 0, -4, 0, + -4, -4, -4, 0, -4, -4, -4, -4, -4, -4, + -4, -4, -4, -4, 0, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, - 9, 0, 0, -4, -4, 10, 11, 0, 12, 13, - 14, 0, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 0, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 0, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 7, 8, 51, 52, 0, 0, 0, 53, 0, 0, - 0, 0, 54, 55, 56, 57, 0, 0, 58, 0, - 59, 0, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 0, 0, 0, 70, 71, 535, 17, 18, - 536, 20, 21, 537, 23, 538, 25, 0, 26, 0, - 0, 29, 30, 0, 32, 33, 34, 0, 0, 0, - 37, 0, 0, 0, 0, 337, 338, 339, 340, 341, + 6, 0, -4, -4, 0, 0, 0, -4, 7, 8, + 0, 0, -4, -4, -4, -4, 0, 0, -4, 0, + -4, 0, -4, -4, -4, -4, -4, -4, -4, -4, + -4, -4, 9, 0, 0, -4, -4, 10, 11, 0, + 12, 13, 14, 0, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 0, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 0, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 7, 8, 51, 52, 0, 0, 0, 53, + 0, 0, 0, 0, 54, 55, 56, 57, 0, 0, + 58, 0, 59, 0, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 0, 0, 0, 70, 71, 535, + 17, 18, 536, 20, 21, 537, 23, 538, 25, 0, + 26, 0, 0, 29, 30, 0, 32, 33, 34, 0, + 0, 0, 37, 0, 0, 0, 0, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 0, 0, 0, 0, 351, 0, 0, 0, 55, + 56, 57, 1173, 0, 1174, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, - 0, 0, 0, 351, 0, 0, 0, 55, 56, 57, - 1142, 0, 1143, 337, 338, 339, 340, 341, 342, 343, + 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, + 1263, 0, 1264, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, - 0, 351, 0, 0, 0, 0, 0, 0, 1171, 0, - 1172, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 0, 351, 0, 0, 0, 0, 0, 0, 0, 0, + 767, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, - 0, 0, 0, 0, 0, 0, 1259, 0, 1260, 337, + 0, 0, 0, 0, 0, 0, 0, 0, 809, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, - 0, 0, 0, 0, 0, 0, 767, 337, 338, 339, + 0, 0, 0, 0, 0, 0, 827, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, - 0, 0, 0, 0, 809, 337, 338, 339, 340, 341, + 0, 0, 0, 0, 847, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, - 0, 0, 827, 337, 338, 339, 340, 341, 342, 343, + 0, 0, 928, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, 0, 0, - 847, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 1142, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, - 0, 0, 0, 0, 0, 0, 0, 0, 928, 337, + 0, 0, 0, 0, 0, 0, 0, 0, 1160, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, - 0, 0, 0, 0, 0, 0, 1140, 337, 338, 339, + 0, 0, 0, 0, 0, 0, 1200, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, - 0, 0, 0, 0, 1158, 337, 338, 339, 340, 341, + 0, 0, 0, 0, 1201, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, - 0, 0, 1197, 337, 338, 339, 340, 341, 342, 343, + 0, 0, 1202, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, 0, 0, - 1198, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 1203, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, - 0, 0, 0, 0, 0, 0, 0, 0, 1199, 337, + 0, 0, 0, 0, 0, 0, 0, 0, 1235, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, - 0, 0, 0, 0, 0, 0, 1200, 337, 338, 339, + 0, 0, 0, 0, 0, 0, 1279, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, - 0, 0, 0, 0, 1232, 337, 338, 339, 340, 341, + 0, 0, 0, 0, 1285, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, - 0, 0, 1275, 337, 338, 339, 340, 341, 342, 343, + 0, 0, 1286, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, 0, 0, - 1281, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 1302, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, - 0, 0, 0, 0, 0, 0, 0, 0, 1282, 337, + 0, 0, 0, 0, 0, 0, 0, 0, 1305, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, - 0, 0, 0, 0, 0, 0, 1298, 337, 338, 339, + 0, 0, 0, 0, 0, 0, 1308, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, - 0, 0, 0, 0, 1301, 337, 338, 339, 340, 341, + 0, 0, 0, 0, 1329, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, - 0, 0, 1304, 337, 338, 339, 340, 341, 342, 343, + 0, 0, 1332, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, 0, 0, - 1325, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 1362, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, - 0, 0, 0, 0, 0, 0, 0, 0, 1328, 337, + 0, 0, 0, 0, 0, 0, 0, 0, 1364, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, - 0, 0, 0, 0, 0, 0, 1358, 337, 338, 339, + 0, 0, 0, 0, 0, 0, 1366, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, - 0, 0, 0, 0, 1360, 337, 338, 339, 340, 341, + 0, 0, 0, 0, 1379, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, + 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, + 0, 596, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, + 351, 0, 0, 0, 0, 0, 0, 0, 1212, 337, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 0, 0, 0, 0, 351, 0, 523, + 0, 0, 0, 0, 600, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, - 0, 0, 1362, 337, 338, 339, 340, 341, 342, 343, + 559, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, + 0, 0, 0, 0, 0, 0, 600, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, + 0, 0, 601, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, - 0, 351, 0, 0, 0, 0, 0, 0, 0, 0, - 1375, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 0, 351, 0, 0, 0, 0, 0, 0, 647, 337, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, + 0, 0, 0, 0, 694, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, + 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, + 695, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, - 0, 0, 0, 0, 0, 0, 0, 1209, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 0, 0, 0, 0, 351, 0, 523, 0, - 0, 0, 0, 600, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, - 0, 0, 351, 0, 0, 0, 0, 0, 0, 559, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, - 0, 0, 0, 0, 0, 600, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 0, 0, 0, 0, 351, 0, 0, 0, 0, 0, - 0, 601, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, - 351, 0, 0, 0, 0, 0, 0, 647, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, - 0, 0, 0, 694, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, - 0, 0, 351, 0, 0, 0, 0, 0, 0, 695, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, - 0, 0, 0, 0, 0, 708, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 0, 0, 0, 0, 351, 0, 0, 0, 0, 0, - 0, 709, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, - 351, 0, 0, 0, 0, 0, 0, 710, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, - 0, 0, 0, 711, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, - 0, 0, 351, 0, 0, 0, 0, 0, 0, 712, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, - 0, 0, 0, 0, 0, 713, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 0, 0, 0, 0, 351, 0, 0, 0, 0, 0, - 0, 794, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, - 351, 0, 0, 0, 0, 0, 0, 795, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, - 0, 0, 0, 796, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, - 0, 0, 351, 0, 0, 0, 0, 0, 0, 890, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, - 0, 0, 0, 0, 0, 926, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 0, 0, 0, 0, 351, 0, 0, 0, 0, 0, - 0, 927, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, - 351, 0, 0, 0, 0, 0, 0, 965, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, - 0, 0, 0, 1090, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, - 0, 0, 351, 0, 0, 0, 0, 0, 0, 1091, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, - 0, 0, 0, 0, 0, 1111, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 0, 0, 0, 0, 351, 0, 0, 0, 0, 0, - 0, 1241, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, - 351, 0, 0, 0, 0, 0, 0, 1242, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, - 0, 0, 0, 1248, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, - 0, 0, 351, 0, 0, 0, 0, 0, 0, 1320, + 0, 0, 0, 0, 0, 0, 708, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, + 0, 0, 709, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, + 0, 351, 0, 0, 0, 0, 0, 0, 710, 337, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, + 0, 0, 0, 0, 711, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, + 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, + 712, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, + 0, 0, 0, 0, 0, 0, 713, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, + 0, 0, 794, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, + 0, 351, 0, 0, 0, 0, 0, 0, 795, 337, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, + 0, 0, 0, 0, 796, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, + 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, + 890, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, + 0, 0, 0, 0, 0, 0, 926, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, + 0, 0, 927, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, + 0, 351, 0, 0, 0, 0, 0, 0, 965, 337, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, + 0, 0, 0, 0, 1092, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, + 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, + 1093, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, + 0, 0, 0, 0, 0, 0, 1113, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 0, 0, 0, 0, 351, 0, 0, 0, 0, + 0, 0, 1245, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, + 0, 351, 0, 0, 0, 0, 0, 0, 1246, 337, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, + 0, 0, 0, 0, 1252, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, + 0, 0, 0, 351, 0, 0, 0, 0, 0, 0, + 1324, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, + 0, 0, 0, 0, 0, 0, 1327, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 0, 0, 0, 0, 351, 0, 0, 0, 527, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, - 0, 0, 0, 0, 0, 1323, 337, 338, 339, 340, + 0, 0, 652, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, + 0, 351, 0, 0, 0, 658, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 0, 0, 0, 0, 351, 0, 0, 0, 527, 337, + 0, 0, 0, 0, 351, 0, 0, 0, 673, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, - 0, 652, 337, 338, 339, 340, 341, 342, 343, 344, + 0, 675, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, - 351, 0, 0, 0, 658, 337, 338, 339, 340, 341, + 351, 0, 0, 0, 677, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, - 0, 0, 0, 351, 0, 0, 0, 673, 337, 338, + 0, 0, 0, 351, 0, 0, 0, 679, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, - 675, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 681, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, - 0, 0, 0, 677, 337, 338, 339, 340, 341, 342, + 0, 0, 0, 683, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, - 0, 0, 351, 0, 0, 0, 679, 337, 338, 339, + 0, 0, 351, 0, 0, 0, 685, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 0, 0, 0, 0, 351, 0, 0, 0, 681, + 350, 0, 0, 0, 0, 351, 0, 0, 0, 687, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, - 0, 0, 683, 337, 338, 339, 340, 341, 342, 343, + 0, 0, 689, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, - 0, 351, 0, 0, 0, 685, 337, 338, 339, 340, + 0, 351, 0, 0, 0, 691, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 0, 0, 0, 0, 351, 0, 0, 0, 687, 337, + 0, 0, 0, 0, 351, 0, 0, 0, 693, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, - 0, 689, 337, 338, 339, 340, 341, 342, 343, 344, + 0, 697, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, - 351, 0, 0, 0, 691, 337, 338, 339, 340, 341, + 351, 0, 0, 0, 699, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, - 0, 0, 0, 351, 0, 0, 0, 693, 337, 338, + 0, 0, 0, 351, 0, 0, 0, 701, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, - 697, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 703, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, - 0, 0, 0, 699, 337, 338, 339, 340, 341, 342, + 0, 0, 0, 705, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, - 0, 0, 351, 0, 0, 0, 701, 337, 338, 339, + 0, 0, 351, 0, 0, 0, 707, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 0, 0, 0, 0, 351, 0, 0, 0, 703, + 350, 0, 0, 0, 0, 351, 0, 0, 0, 817, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, - 0, 0, 705, 337, 338, 339, 340, 341, 342, 343, + 0, 0, 818, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, - 0, 351, 0, 0, 0, 707, 337, 338, 339, 340, + 0, 351, 0, 0, 0, 822, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 0, 0, 0, 0, 351, 0, 0, 0, 817, 337, + 0, 0, 0, 0, 351, 0, 0, 0, 823, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, - 0, 818, 337, 338, 339, 340, 341, 342, 343, 344, + 0, 825, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, - 351, 0, 0, 0, 822, 337, 338, 339, 340, 341, + 351, 0, 0, 0, 843, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, - 0, 0, 0, 351, 0, 0, 0, 823, 337, 338, + 0, 0, 0, 351, 0, 0, 0, 983, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, 0, - 825, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 985, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, - 0, 0, 0, 843, 337, 338, 339, 340, 341, 342, + 0, 0, 0, 987, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, - 0, 0, 351, 0, 0, 0, 982, 337, 338, 339, + 0, 0, 351, 0, 0, 0, 989, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 0, 0, 0, 0, 351, 0, 0, 0, 984, + 350, 0, 0, 0, 0, 351, 0, 0, 0, 990, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, - 0, 0, 986, 337, 338, 339, 340, 341, 342, 343, + 0, 0, 1106, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, - 0, 351, 0, 0, 0, 988, 337, 338, 339, 340, + 0, 351, 0, 0, 0, 1224, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 0, 0, 0, 0, 351, 0, 0, 0, 989, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 0, 0, 0, 0, 351, 0, 0, - 0, 1104, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, - 351, 0, 0, 0, 1221, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, - 0, 0, 0, 351, 0, 523, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 0, 0, 0, 0, 351, 0, 563, 337, 338, 339, + 0, 0, 0, 0, 351, 0, 523, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 0, 0, 0, 0, 351, 0, 567, 337, 338, + 350, 0, 0, 0, 0, 351, 0, 563, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 0, 0, 0, 0, 351, 0, 568, 337, + 349, 350, 0, 0, 0, 0, 351, 0, 567, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 0, 0, 0, 0, 351, 0, 570, + 348, 349, 350, 0, 0, 0, 0, 351, 0, 568, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, - 572, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 570, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, - 0, 573, 337, 338, 339, 340, 341, 342, 343, 344, + 0, 572, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, - 351, 0, 576, 337, 338, 339, 340, 341, 342, 343, + 351, 0, 573, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, - 0, 351, 0, 577, 337, 338, 339, 340, 341, 342, + 0, 351, 0, 576, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, - 0, 0, 351, 0, 643, 337, 338, 339, 340, 341, + 0, 0, 351, 0, 577, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, - 0, 0, 0, 351, 0, 644, 337, 338, 339, 340, + 0, 0, 0, 351, 0, 643, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 0, 0, 0, 0, 351, 0, 645, 337, 338, 339, + 0, 0, 0, 0, 351, 0, 644, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 0, 0, 0, 0, 351, 0, 651, 337, 338, + 350, 0, 0, 0, 0, 351, 0, 645, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 0, 0, 0, 0, 351, 0, 672, 337, + 349, 350, 0, 0, 0, 0, 351, 0, 651, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 0, 0, 0, 0, 351, 0, 674, + 348, 349, 350, 0, 0, 0, 0, 351, 0, 672, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, - 676, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 674, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, - 0, 678, 337, 338, 339, 340, 341, 342, 343, 344, + 0, 676, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, - 351, 0, 680, 337, 338, 339, 340, 341, 342, 343, + 351, 0, 678, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, - 0, 351, 0, 682, 337, 338, 339, 340, 341, 342, + 0, 351, 0, 680, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, - 0, 0, 351, 0, 684, 337, 338, 339, 340, 341, + 0, 0, 351, 0, 682, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, - 0, 0, 0, 351, 0, 686, 337, 338, 339, 340, + 0, 0, 0, 351, 0, 684, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 0, 0, 0, 0, 351, 0, 688, 337, 338, 339, + 0, 0, 0, 0, 351, 0, 686, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 0, 0, 0, 0, 351, 0, 690, 337, 338, + 350, 0, 0, 0, 0, 351, 0, 688, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 0, 0, 0, 0, 351, 0, 692, 337, + 349, 350, 0, 0, 0, 0, 351, 0, 690, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 0, 0, 0, 0, 351, 0, 696, + 348, 349, 350, 0, 0, 0, 0, 351, 0, 692, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, - 698, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 696, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, - 0, 700, 337, 338, 339, 340, 341, 342, 343, 344, + 0, 698, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, - 351, 0, 702, 337, 338, 339, 340, 341, 342, 343, + 351, 0, 700, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, - 0, 351, 0, 704, 337, 338, 339, 340, 341, 342, + 0, 351, 0, 702, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, - 0, 0, 351, 0, 706, 337, 338, 339, 340, 341, + 0, 0, 351, 0, 704, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, - 0, 0, 0, 351, 0, 756, 337, 338, 339, 340, + 0, 0, 0, 351, 0, 706, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 0, 0, 0, 0, 351, 0, 761, 337, 338, 339, + 0, 0, 0, 0, 351, 0, 756, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 0, 0, 0, 0, 351, 0, 766, 337, 338, + 350, 0, 0, 0, 0, 351, 0, 761, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 0, 0, 0, 0, 351, 0, 768, 337, + 349, 350, 0, 0, 0, 0, 351, 0, 766, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 0, 0, 0, 0, 351, 0, 769, + 348, 349, 350, 0, 0, 0, 0, 351, 0, 768, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, - 775, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 769, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, - 0, 782, 337, 338, 339, 340, 341, 342, 343, 344, + 0, 775, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, - 351, 0, 783, 337, 338, 339, 340, 341, 342, 343, + 351, 0, 782, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, - 0, 351, 0, 784, 337, 338, 339, 340, 341, 342, + 0, 351, 0, 783, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, - 0, 0, 351, 0, 808, 337, 338, 339, 340, 341, + 0, 0, 351, 0, 784, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, - 0, 0, 0, 351, 0, 810, 337, 338, 339, 340, + 0, 0, 0, 351, 0, 808, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 0, 0, 0, 0, 351, 0, 811, 337, 338, 339, + 0, 0, 0, 0, 351, 0, 810, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 0, 0, 0, 0, 351, 0, 812, 337, 338, + 350, 0, 0, 0, 0, 351, 0, 811, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 0, 0, 0, 0, 351, 0, 816, 337, + 349, 350, 0, 0, 0, 0, 351, 0, 812, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 0, 0, 0, 0, 351, 0, 981, + 348, 349, 350, 0, 0, 0, 0, 351, 0, 816, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, 0, - 983, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 982, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 351, - 0, 985, 337, 338, 339, 340, 341, 342, 343, 344, + 0, 984, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, - 351, 0, 987, 337, 338, 339, 340, 341, 342, 343, + 351, 0, 986, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, - 0, 351, 0, 992, 337, 338, 339, 340, 341, 342, + 0, 351, 0, 988, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, 0, - 0, 0, 351, 0, 1141, 337, 338, 339, 340, 341, + 0, 0, 351, 0, 993, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 0, - 0, 0, 0, 351, 0, 1157, 337, 338, 339, 340, + 0, 0, 0, 351, 0, 1143, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 0, 0, 0, 0, 351, 0, 1175, 337, 338, 339, + 0, 0, 0, 0, 351, 0, 1159, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 0, 0, 0, 0, 351, 0, 1319, 337, 338, + 350, 0, 0, 0, 0, 351, 0, 1177, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 0, 0, 0, 0, 351, 0, 1373, 337, + 349, 350, 0, 0, 0, 0, 351, 0, 1323, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 0, 0, 0, 0, 351 + 348, 349, 350, 0, 0, 0, 0, 351, 0, 1377, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 0, 0, 0, 0, 351 }; #define yypact_value_is_default(yystate) \ - ((yystate) == (-1061)) + ((yystate) == (-1070)) #define yytable_value_is_error(yytable_value) \ YYID (0) static const yytype_int16 yycheck[] = { - 6, 4, 3, 0, 6, 401, 402, 206, 323, 1069, - 4, 326, 4, 6, 4, 6, 4, 6, 217, 4, - 150, 55, 6, 4, 4, 155, 4, 6, 4, 4, - 4, 803, 311, 312, 313, 5, 315, 316, 317, 5, - 735, 5, 7, 6, 6, 149, 4, 6, 6, 6, - 4, 4, 156, 6, 70, 6, 255, 150, 257, 149, - 139, 140, 155, 79, 139, 140, 807, 179, 180, 181, - 86, 87, 146, 147, 90, 91, 155, 151, 157, 153, - 7, 156, 139, 140, 158, 139, 140, 13, 94, 39, - 40, 49, 42, 8, 5, 49, 139, 140, 155, 53, - 212, 155, 6, 157, 94, 95, 96, 97, 92, 63, - 150, 6, 155, 92, 157, 155, 104, 105, 112, 104, - 105, 139, 140, 149, 1184, 151, 37, 38, 39, 40, - 139, 140, 43, 135, 136, 137, 6, 155, 140, 141, - 149, 157, 149, 144, 151, 136, 149, 156, 1208, 151, - 139, 140, 154, 156, 589, 590, 591, 149, 160, 161, - 162, 163, 156, 165, 166, 167, 168, 157, 170, 171, - 172, 943, 146, 147, 149, 156, 156, 151, 156, 153, - 156, 156, 877, 6, 158, 136, 156, 59, 153, 191, - 156, 151, 156, 156, 156, 197, 198, 156, 151, 126, - 127, 128, 129, 149, 206, 55, 150, 149, 119, 120, - 156, 155, 527, 412, 156, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 149, - 232, 233, 7, 148, 139, 140, 139, 140, 55, 241, - 242, 243, 157, 245, 194, 195, 248, 249, 149, 251, - 149, 156, 202, 156, 453, 49, 206, 156, 52, 261, - 150, 55, 1322, 57, 149, 155, 268, 269, 270, 271, + 6, 1070, 3, 206, 6, 5, 4, 6, 401, 402, + 4, 7, 150, 323, 217, 4, 326, 155, 6, 6, + 4, 6, 4, 6, 4, 4, 4, 4, 4, 4, + 4, 4, 0, 5, 5, 49, 6, 6, 52, 735, + 6, 55, 149, 57, 151, 311, 312, 313, 803, 315, + 316, 317, 255, 4, 257, 6, 807, 70, 4, 70, + 6, 149, 52, 151, 6, 55, 79, 57, 79, 179, + 180, 181, 7, 86, 87, 86, 87, 90, 91, 90, + 91, 139, 140, 139, 140, 6, 4, 5, 94, 39, + 40, 4, 42, 73, 74, 75, 76, 155, 13, 157, + 156, 81, 212, 49, 84, 92, 55, 92, 139, 140, + 94, 95, 96, 97, 52, 6, 7, 55, 1187, 37, + 38, 39, 40, 112, 155, 43, 104, 105, 149, 139, + 140, 104, 105, 135, 136, 137, 49, 6, 140, 141, + 53, 7, 1211, 144, 157, 155, 157, 157, 136, 151, + 63, 149, 154, 136, 6, 149, 156, 153, 160, 161, + 162, 163, 156, 165, 166, 167, 168, 156, 170, 171, + 172, 146, 147, 157, 156, 149, 151, 156, 153, 156, + 156, 877, 156, 158, 156, 156, 156, 156, 943, 191, + 156, 126, 127, 128, 129, 197, 198, 139, 140, 6, + 151, 119, 120, 155, 206, 157, 70, 139, 140, 412, + 6, 146, 147, 146, 147, 79, 161, 527, 153, 139, + 140, 166, 86, 87, 156, 170, 90, 91, 146, 147, + 232, 233, 7, 6, 7, 153, 156, 139, 140, 241, + 242, 243, 151, 245, 194, 195, 248, 249, 149, 251, + 453, 149, 202, 155, 149, 157, 206, 1326, 156, 261, + 126, 127, 128, 129, 139, 140, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 1003, 149, - 146, 147, 314, 139, 140, 139, 140, 153, 52, 146, - 147, 55, 324, 57, 52, 4, 5, 55, 149, 155, - 151, 155, 7, 326, 1394, 337, 338, 339, 340, 341, + 302, 303, 304, 305, 306, 307, 308, 309, 1004, 589, + 590, 591, 314, 139, 140, 139, 140, 139, 140, 150, + 149, 149, 324, 149, 155, 4, 5, 326, 156, 1398, + 156, 155, 149, 155, 7, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 149, 126, 127, 128, 129, 6, 7, 359, 37, 38, - 39, 40, 149, 365, 43, 139, 140, 152, 370, 6, - 155, 146, 147, 375, 376, 377, 378, 8, 153, 658, - 382, 155, 139, 140, 55, 387, 388, 389, 6, 7, - 161, 52, 139, 140, 55, 166, 57, 55, 155, 170, - 401, 402, 404, 405, 406, 407, 408, 409, 155, 7, - 57, 413, 414, 415, 416, 417, 139, 140, 420, 139, + 149, 126, 127, 128, 129, 146, 147, 359, 37, 38, + 39, 40, 153, 365, 43, 139, 140, 149, 370, 151, + 149, 146, 147, 375, 376, 377, 378, 156, 149, 324, + 382, 155, 139, 140, 149, 387, 388, 389, 59, 55, + 49, 156, 658, 52, 139, 140, 55, 149, 155, 151, + 401, 402, 404, 405, 406, 407, 408, 409, 55, 8, + 155, 413, 414, 415, 416, 417, 139, 140, 420, 139, 140, 423, 424, 139, 140, 427, 428, 429, 430, 431, - 432, 149, 155, 435, 149, 155, 151, 439, 55, 718, - 119, 120, 444, 445, 149, 724, 151, 139, 140, 399, - 400, 126, 127, 128, 129, 156, 149, 407, 151, 149, - 52, 151, 464, 155, 55, 467, 745, 146, 147, 70, - 156, 146, 147, 466, 153, 1216, 52, 1218, 79, 1220, - 4, 5, 139, 140, 52, 86, 87, 4, 55, 90, - 91, 1263, 4, 149, 1266, 151, 1191, 1269, 155, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 37, 38, 39, 40, 148, 4, 43, - 522, 149, 528, 151, 139, 140, 157, 529, 126, 127, - 128, 129, 6, 49, 527, 149, 52, 151, 149, 55, - 155, 149, 139, 140, 139, 140, 149, 149, 146, 147, - 139, 140, 70, 324, 869, 870, 558, 559, 155, 4, - 155, 79, 564, 565, 139, 140, 155, 151, 86, 87, - 1311, 1343, 90, 91, 139, 140, 578, 139, 140, 4, - 155, 583, 588, 589, 590, 591, 588, 589, 590, 591, - 155, 149, 156, 155, 596, 119, 120, 149, 600, 601, - 141, 142, 143, 149, 606, 151, 1378, 148, 155, 1381, - 157, 149, 1384, 151, 149, 1387, 1357, 619, 1359, 621, - 1361, 149, 53, 139, 140, 161, 1367, 149, 7, 151, - 166, 633, 4, 149, 170, 12, 13, 6, 640, 157, - 156, 149, 1414, 8, 1416, 647, 1418, 649, 650, 599, - 149, 149, 151, 151, 1050, 149, 427, 428, 429, 1400, - 149, 1402, 612, 1404, 149, 658, 151, 149, 439, 151, - 6, 5, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 149, 60, 151, 6, 63, 64, 149, 66, - 67, 68, 694, 695, 149, 72, 232, 233, 149, 149, - 151, 151, 149, 155, 151, 157, 708, 709, 710, 711, - 712, 713, 714, 149, 145, 717, 155, 155, 157, 157, - 722, 156, 99, 100, 101, 155, 728, 157, 151, 155, - 153, 157, 1011, 149, 149, 70, 738, 739, 740, 741, - 742, 155, 173, 157, 79, 155, 149, 157, 179, 180, - 181, 86, 87, 12, 13, 90, 91, 149, 155, 190, - 157, 155, 193, 157, 149, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 149, - 157, 212, 213, 148, 55, 150, 57, 558, 324, 4, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 750, 60, 156, 156, 63, 64, 156, 66, 67, 68, - 155, 149, 157, 72, 6, 156, 1212, 70, 155, 821, - 157, 149, 157, 359, 149, 596, 79, 829, 259, 155, - 149, 157, 825, 86, 87, 151, 156, 90, 91, 156, - 99, 100, 101, 70, 794, 795, 796, 849, 850, 155, - 5, 157, 79, 155, 155, 157, 157, 4, 70, 86, - 87, 151, 633, 90, 91, 151, 155, 79, 157, 640, - 155, 6, 157, 151, 86, 87, 878, 870, 90, 91, - 155, 4, 157, 6, 5, 70, 5, 153, 890, 891, - 107, 427, 428, 429, 79, 155, 6, 157, 157, 70, - 6, 86, 87, 439, 157, 90, 91, 156, 79, 445, - 155, 155, 157, 157, 6, 86, 87, 151, 6, 90, - 91, 6, 70, 925, 926, 927, 73, 74, 75, 76, - 157, 79, 934, 935, 81, 4, 156, 84, 86, 87, - 942, 6, 90, 91, 148, 157, 717, 155, 950, 157, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 153, 965, 966, 967, 148, 738, 739, 740, - 741, 7, 157, 975, 155, 155, 157, 157, 980, 151, - 973, 139, 140, 141, 142, 143, 157, 156, 6, 995, - 148, 155, 942, 157, 996, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 157, - 155, 1013, 157, 148, 1016, 155, 155, 157, 157, 157, - 1022, 1023, 558, 7, 7, 1027, 1225, 149, 564, 565, - 7, 155, 1034, 157, 149, 155, 70, 157, 149, 155, - 1046, 157, 1044, 7, 1046, 79, 155, 149, 157, 1050, - 150, 6, 86, 87, 70, 1057, 90, 91, 7, 155, - 596, 157, 7, 79, 6, 1067, 155, 1017, 157, 1071, - 86, 87, 1074, 6, 90, 91, 155, 4, 157, 1085, - 155, 104, 157, 1085, 155, 155, 157, 150, 1090, 1091, - 70, 150, 156, 1372, 525, 155, 150, 633, 155, 79, - 6, 1051, 4, 1053, 640, 1055, 86, 87, 152, 1111, - 90, 91, 6, 1312, 4, 7, 107, 1067, 7, 7, - 1070, 1071, 70, 157, 7, 107, 7, 7, 1407, 107, - 1409, 79, 7, 7, 4, 6, 153, 157, 86, 87, - 1142, 157, 90, 91, 146, 147, 157, 6, 152, 151, - 1429, 153, 7, 584, 156, 7, 158, 1159, 7, 1161, - 153, 6, 149, 149, 595, 6, 156, 4, 6, 1171, - 6, 1173, 6, 152, 1176, 7, 151, 157, 1180, 950, - 6, 717, 136, 1185, 7, 7, 55, 7, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 738, 739, 740, 741, 148, 1209, 7, 157, - 57, 1212, 7, 1215, 6, 1217, 7, 1219, 7, 7, - 150, 150, 150, 7, 655, 150, 7, 1229, 7, 6, - 4, 1233, 4, 6, 156, 149, 7, 6, 156, 1241, - 1242, 7, 7, 7, 55, 6, 1248, 6, 6, 6, - 12, 13, 6, 1255, 6, 4, 4, 1259, 4, 157, - 4, 6, 149, 6, 6, 1215, 150, 1217, 150, 1219, - 156, 7, 6, 63, 153, 6, 6, 1227, 156, 156, - 1230, 6, 1284, 156, 156, 6, 5, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 1299, 60, 4, - 1302, 63, 64, 1305, 66, 67, 68, 1309, 6, 151, - 72, 1313, 7, 1315, 7, 7, 7, 7, 1320, 6, - 6, 1323, 152, 754, 755, 156, 757, 156, 759, 760, - 6, 156, 763, 764, 6, 156, 103, 99, 100, 101, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 6, 6, 1355, 6, 148, 153, 4, 6, 155, - 6, 6, 6, 6, 6, 1315, 6, 1369, 6, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 6, 5, 12, 13, 148, 6, 6, - 107, 6, 1398, 6, 1396, 157, 6, 6, 6, 6, - 831, 832, 833, 6, 6, 1176, 6, 4, 6, 156, - 6, 5, 7, 6, 950, 153, 6, 53, 6, 1425, - 6, 6, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 6, 60, 6, 6, 63, 64, 1209, 66, - 67, 68, 156, 156, 156, 72, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 157, 156, 156, 1229, 148, - 6, 102, 7, 6, 6, 896, 6, 6, 156, 6, - 105, 902, 99, 100, 101, 6, 6, 908, 909, 910, - 6, 156, 6, 914, 6, 156, 6, 157, 919, 920, - 921, 6, 70, 156, 6, 4, 6, 157, 6, 6, - 6, 6, 6, 934, 6, 6, 6, 156, 6, 6, - 6, 6, 6, 944, 6, 6, 6, 948, 6, 156, - 6, 6, 156, 156, 156, 156, 156, 156, 156, 6, - 157, 1067, 6, 6, 6, 1071, 6, 6, 6, 1284, - 889, 3, 1313, 895, 1315, 3, 381, -1, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 999, 994, 3, 4, 148, -1, -1, -1, - 9, 10, 11, -1, 156, 14, 15, 16, 17, 18, + 432, 52, 155, 435, 55, 155, 57, 439, 6, 155, + 119, 120, 444, 445, 139, 140, 150, 139, 140, 399, + 400, 155, 718, 126, 127, 128, 129, 407, 724, 150, + 155, 150, 464, 155, 155, 467, 155, 466, 1219, 149, + 1221, 151, 1223, 146, 147, 57, 5, 139, 140, 745, + 139, 140, 427, 428, 429, 149, 70, 151, 139, 140, + 149, 55, 55, 155, 439, 79, 152, 156, 1194, 155, + 139, 140, 86, 87, 155, 149, 90, 91, 37, 38, + 39, 40, 1267, 52, 43, 1270, 155, 149, 1273, 151, + 522, 149, 528, 151, 149, 156, 151, 529, 527, 139, + 140, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 155, 149, 156, 151, 148, + 55, 8, 139, 140, 139, 140, 558, 559, 157, 869, + 870, 55, 564, 565, 1315, 141, 142, 143, 155, 149, + 155, 151, 148, 157, 52, 52, 578, 139, 140, 55, + 149, 583, 588, 589, 590, 591, 588, 589, 590, 591, + 119, 120, 1347, 155, 596, 4, 146, 147, 600, 601, + 161, 151, 4, 153, 606, 166, 156, 4, 158, 170, + 1361, 149, 1363, 558, 1365, 149, 149, 619, 151, 621, + 1371, 149, 53, 151, 149, 149, 151, 1382, 6, 151, + 1385, 633, 4, 1388, 146, 147, 1391, 4, 640, 151, + 149, 153, 151, 156, 7, 647, 158, 649, 650, 599, + 149, 596, 151, 1404, 149, 1406, 151, 1408, 1051, 658, + 149, 149, 612, 1418, 149, 1420, 151, 1422, 149, 149, + 151, 232, 233, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 149, 633, 151, + 149, 148, 694, 695, 149, 640, 151, 155, 149, 157, + 157, 155, 155, 157, 157, 149, 708, 709, 710, 711, + 712, 713, 714, 149, 145, 717, 155, 151, 157, 153, + 722, 139, 140, 141, 142, 143, 728, 155, 4, 157, + 148, 155, 155, 157, 157, 6, 738, 739, 740, 741, + 742, 155, 173, 157, 70, 155, 1012, 157, 179, 180, + 181, 6, 6, 79, 55, 155, 57, 157, 5, 190, + 86, 87, 193, 324, 90, 91, 149, 70, 8, 12, + 13, 155, 717, 157, 149, 155, 79, 157, 155, 149, + 157, 212, 213, 86, 87, 156, 4, 90, 91, 155, + 155, 157, 157, 738, 739, 740, 741, 155, 359, 157, + 750, 155, 155, 157, 157, 149, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 155, 60, 157, 821, + 63, 64, 1215, 66, 67, 68, 825, 829, 259, 72, + 4, 157, 6, 155, 155, 157, 157, 155, 155, 157, + 157, 149, 149, 70, 794, 795, 796, 849, 850, 155, + 149, 157, 79, 155, 157, 157, 99, 100, 101, 86, + 87, 149, 149, 90, 91, 70, 427, 428, 429, 149, + 155, 870, 157, 155, 79, 157, 878, 155, 439, 157, + 6, 86, 87, 156, 445, 90, 91, 156, 890, 891, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 155, 155, 157, 157, 148, 155, + 150, 157, 156, 155, 157, 157, 155, 155, 157, 157, + 151, 156, 70, 925, 926, 927, 155, 155, 157, 157, + 157, 79, 934, 935, 155, 149, 157, 70, 86, 87, + 942, 149, 90, 91, 156, 155, 79, 157, 950, 149, + 70, 5, 157, 86, 87, 156, 151, 90, 91, 79, + 70, 151, 151, 965, 966, 967, 86, 87, 5, 79, + 90, 91, 5, 153, 976, 974, 86, 87, 6, 981, + 90, 91, 6, 156, 107, 6, 6, 6, 151, 4, + 996, 156, 942, 6, 148, 997, 153, 558, 7, 6, + 151, 156, 6, 564, 565, 950, 7, 157, 7, 157, + 7, 70, 1014, 149, 149, 1017, 7, 149, 149, 6, + 79, 1023, 1024, 150, 157, 1228, 1028, 86, 87, 7, + 7, 90, 91, 1035, 6, 596, 4, 157, 104, 156, + 155, 1047, 150, 1045, 150, 1047, 155, 157, 150, 6, + 1051, 155, 4, 152, 4, 6, 1058, 107, 7, 7, + 7, 7, 107, 7, 7, 107, 1068, 7, 1018, 7, + 1072, 4, 633, 1075, 6, 153, 70, 157, 157, 640, + 1086, 6, 152, 7, 1086, 79, 7, 7, 153, 6, + 1092, 1093, 86, 87, 525, 156, 90, 91, 157, 6, + 149, 149, 1052, 4, 1054, 152, 1056, 6, 6, 6, + 1376, 1113, 7, 1316, 6, 151, 7, 7, 1068, 136, + 55, 1071, 1072, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 7, 57, 7, + 7, 148, 1144, 7, 7, 1411, 6, 1413, 7, 7, + 150, 12, 13, 584, 150, 150, 717, 150, 7, 1161, + 7, 1163, 6, 157, 595, 4, 4, 1433, 156, 6, + 149, 1173, 7, 1175, 6, 156, 1178, 738, 739, 740, + 741, 1183, 7, 7, 7, 6, 1188, 6, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 6, 60, + 55, 6, 63, 64, 6, 66, 67, 68, 4, 4, + 1212, 72, 6, 4, 1215, 149, 1218, 6, 1220, 4, + 1222, 150, 6, 150, 655, 156, 7, 153, 6, 63, + 1232, 4, 6, 1178, 1236, 6, 6, 6, 99, 100, + 101, 156, 156, 1245, 1246, 156, 156, 6, 5, 7, + 1252, 6, 6, 156, 7, 7, 7, 1259, 7, 6, + 6, 1263, 151, 156, 152, 6, 6, 1212, 1218, 156, + 1220, 156, 1222, 103, 6, 6, 153, 6, 4, 6, + 1230, 6, 6, 1233, 6, 6, 1288, 1232, 6, 6, + 6, 6, 6, 5, 107, 6, 157, 6, 6, 6, + 6, 1303, 6, 6, 1306, 6, 6, 1309, 6, 155, + 6, 1313, 157, 156, 4, 1317, 7, 1319, 6, 6, + 6, 6, 1324, 754, 755, 1327, 757, 153, 759, 760, + 5, 7, 763, 764, 53, 6, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 6, 6, 6, 6, 148, 156, 6, 1359, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 1319, + 156, 1373, 1317, 148, 1319, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 950, + 157, 156, 156, 148, 6, 156, 1402, 6, 1400, 6, + 831, 832, 833, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 156, 102, 6, + 6, 148, 6, 1429, 3, 4, 6, 105, 1373, 6, + 9, 10, 11, 6, 6, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, -1, 1369, -1, - -1, -1, -1, -1, -1, -1, 1037, 1038, 1039, 1040, - 49, -1, -1, 52, -1, -1, 55, -1, 57, -1, - -1, -1, -1, -1, -1, 1161, -1, -1, -1, -1, - -1, -1, -1, -1, 73, 74, 75, 76, 77, -1, - 1176, -1, 81, -1, -1, 84, -1, -1, 1079, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1092, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1209, -1, -1, -1, -1, -1, 118, - -1, -1, -1, -1, 123, 124, 125, -1, -1, -1, - -1, -1, -1, 1229, -1, -1, -1, -1, -1, -1, - 139, 140, -1, -1, -1, 144, -1, -1, -1, -1, - 149, -1, -1, -1, -1, 154, -1, 156, 157, -1, - -1, -1, -1, -1, -1, 1156, 3, 4, -1, -1, - -1, -1, 9, 10, 11, -1, -1, 14, 15, 16, + 29, 30, 31, 32, 33, 34, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 896, 6, 156, 6, 148, + 6, 902, 6, 156, 6, 157, 70, 908, 909, 910, + 6, 4, 156, 914, 6, 6, 6, 6, 919, 920, + 921, 6, 6, 6, 6, 157, 6, 156, 156, 156, + 6, 6, 6, 934, 156, 6, 6, 1068, 6, 6, + 156, 1072, 6, 944, 156, 156, 156, 948, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 156, 6, 6, 6, 148, 6, 6, 118, + 971, 6, 6, 6, 123, 124, 125, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 6, + 139, 140, 6, 148, 995, 144, 3, 4, 895, 889, + 149, 1288, 9, 10, 11, 154, 3, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 49, -1, -1, 52, -1, 1313, 55, 1315, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 3, + -1, 381, 1163, -1, 6, 1000, -1, 1038, 1039, 1040, + 1041, -1, 49, -1, -1, 52, -1, 1178, 55, -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1224, -1, -1, 73, 74, 75, 76, - 77, -1, -1, 6, 81, -1, -1, 84, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1355, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1369, -1, -1, -1, -1, -1, -1, - 1271, 118, -1, -1, -1, -1, 123, 124, 125, -1, + -1, -1, -1, -1, -1, -1, 73, 74, 75, 76, + 77, -1, -1, -1, 81, -1, -1, 84, -1, 1080, + -1, 1212, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1094, -1, -1, -1, -1, -1, -1, + -1, 1232, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 118, -1, -1, -1, -1, 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, 144, -1, -1, - -1, -1, 149, -1, -1, -1, -1, 154, -1, -1, - 157, -1, -1, 3, 4, 5, -1, 7, -1, 9, - 10, 11, -1, 1324, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, -1, -1, 37, 38, 39, - 40, -1, -1, 43, -1, 12, 13, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, -1, -1, -1, -1, 148, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, -1, 60, -1, -1, 63, 64, -1, 66, - 67, 68, -1, -1, -1, 72, -1, -1, -1, -1, - -1, -1, 112, -1, -1, -1, -1, -1, 118, 119, - 120, -1, -1, 123, 124, 125, 126, 127, 128, 129, - -1, -1, 99, 100, 101, -1, -1, -1, -1, 139, - 140, -1, -1, -1, 144, -1, 146, 147, -1, 149, - -1, 151, -1, 153, 154, -1, 156, 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, 35, - 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 49, -1, -1, 52, -1, -1, 55, - -1, 57, -1, 12, 13, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 73, 74, 75, - 76, 77, -1, -1, -1, 81, -1, -1, 84, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - -1, 60, -1, -1, 63, 64, -1, 66, 67, 68, - -1, -1, 118, 72, -1, -1, -1, 123, 124, 125, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 139, 140, -1, -1, -1, 144, -1, - 99, 100, 101, 149, -1, 3, 4, 5, 154, -1, - 156, 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, 35, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 49, -1, -1, 52, -1, -1, 55, 157, 57, - -1, 12, 13, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 73, 74, 75, 76, 77, - -1, -1, -1, 81, -1, -1, 84, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, - -1, 6, 63, 64, -1, 66, 67, 68, -1, -1, - 118, 72, -1, -1, -1, 123, 124, 125, -1, -1, - 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 139, 140, -1, -1, -1, 144, -1, 99, 100, - 101, 149, -1, 3, 4, 5, 154, -1, 156, 9, + -1, -1, 149, -1, -1, -1, -1, 154, -1, 156, + 157, -1, -1, -1, -1, -1, -1, 1158, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, -1, -1, -1, -1, 148, -1, -1, -1, + -1, -1, -1, 3, 4, -1, 1317, -1, 1319, 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, 35, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, - -1, -1, 52, -1, -1, 55, 157, 57, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1227, -1, 1359, 49, + -1, -1, 52, -1, -1, 55, -1, 57, -1, -1, + -1, -1, 1373, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 73, 74, 75, 76, 77, -1, -1, - -1, 81, -1, -1, 84, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, - -1, -1, -1, 148, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 118, 6, - -1, -1, 148, 123, 124, 125, -1, -1, -1, -1, + -1, 81, -1, -1, 84, 3, 4, -1, -1, -1, + -1, 9, 10, 11, 1275, -1, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, -1, 118, -1, + -1, -1, -1, 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, - 140, -1, -1, -1, 144, -1, -1, -1, -1, 149, - -1, 3, 4, -1, 154, -1, 156, 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, 35, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 49, -1, -1, - 52, -1, -1, 55, -1, 57, -1, -1, -1, -1, + 140, -1, -1, -1, 144, -1, -1, 1328, -1, 149, + -1, -1, -1, -1, 154, -1, -1, 157, 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, -1, 37, 38, 39, 40, -1, -1, 43, -1, + 118, -1, 12, 13, -1, 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 73, 74, 75, 76, 77, -1, -1, -1, 81, - -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 6, -1, -1, - -1, 148, -1, -1, -1, -1, 118, -1, -1, -1, - -1, 123, 124, 125, -1, -1, 6, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, - -1, -1, 144, -1, -1, -1, -1, 149, -1, 3, - 4, -1, 154, -1, 156, 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, 35, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 49, -1, -1, 52, -1, - -1, 55, -1, 57, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 73, - 74, 75, 76, 77, -1, -1, -1, 81, -1, -1, - 84, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, -1, -1, -1, -1, 148, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 118, 6, -1, -1, 148, 123, - 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, - 144, -1, -1, -1, -1, 149, -1, 3, 4, -1, - 154, -1, 156, 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, 35, + -1, 139, 140, -1, -1, -1, 144, -1, -1, -1, + -1, 149, -1, -1, 152, -1, 154, -1, 156, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, + 60, -1, -1, 63, 64, -1, 66, 67, 68, -1, + -1, -1, 72, -1, -1, -1, -1, 112, -1, -1, + -1, -1, -1, 118, 119, 120, -1, -1, 123, 124, + 125, 126, 127, 128, 129, -1, -1, -1, -1, 99, + 100, 101, -1, -1, 139, 140, -1, -1, -1, 144, + -1, 146, 147, -1, 149, -1, 151, -1, 153, 154, + -1, 156, 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, 35, -1, -1, 157, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 49, -1, + -1, 52, -1, -1, 55, -1, 57, -1, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 49, -1, -1, 52, -1, -1, 55, - -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 73, 74, 75, - 76, 77, -1, -1, -1, 81, -1, -1, 84, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 6, -1, -1, -1, 148, -1, -1, - -1, -1, 118, -1, -1, -1, -1, 123, 124, 125, - -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 139, 140, -1, -1, -1, 144, -1, - -1, -1, -1, 149, -1, 3, 4, -1, 154, -1, - 156, 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, 35, -1, -1, + -1, -1, 73, 74, 75, 76, 77, -1, -1, -1, + 81, -1, -1, 84, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, -1, 60, -1, -1, 63, + 64, -1, 66, 67, 68, -1, -1, 118, 72, -1, + -1, -1, 123, 124, 125, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, + -1, -1, -1, 144, -1, 99, 100, 101, 149, -1, + 3, 4, 5, 154, -1, 156, 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, 35, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 49, -1, -1, 52, + -1, -1, 55, 157, 57, -1, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 49, -1, -1, 52, -1, -1, 55, -1, 57, + 73, 74, 75, 76, 77, -1, -1, -1, 81, -1, + -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, -1, 60, -1, -1, 63, 64, -1, + 66, 67, 68, -1, -1, 118, 72, -1, -1, -1, + 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, + -1, 144, -1, 99, 100, 101, 149, -1, 3, 4, + 5, 154, -1, 156, 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, + 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 49, -1, -1, 52, -1, -1, + 55, 157, 57, -1, 12, 13, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 73, 74, + 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 73, 74, 75, 76, 77, - -1, -1, -1, 81, -1, -1, 84, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, -1, -1, -1, -1, 148, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 118, -1, -1, -1, 148, 123, 124, 125, -1, -1, + -1, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, -1, 60, -1, -1, 63, 64, -1, 66, 67, + 68, -1, -1, 118, 72, -1, -1, -1, 123, 124, + 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 139, 140, -1, -1, -1, 144, + -1, 99, 100, 101, 149, -1, 3, 4, -1, 154, + -1, 156, 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, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 139, 140, -1, -1, -1, 144, -1, -1, -1, - -1, 149, -1, 3, 4, -1, 154, -1, 156, 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, 35, -1, -1, -1, -1, + -1, -1, 49, -1, -1, 52, -1, -1, 55, 157, + 57, -1, 12, 13, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 73, 74, 75, 76, + 77, -1, -1, -1, 81, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, - -1, -1, 52, -1, -1, 55, -1, 57, -1, -1, + 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, + 60, -1, 6, 63, 64, -1, 66, 67, 68, -1, + -1, 118, 72, -1, -1, -1, 123, 124, 125, -1, + -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 139, 140, -1, -1, -1, 144, -1, 99, + 100, 101, 149, -1, 3, 4, -1, 154, -1, 156, + 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, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 73, 74, 75, 76, 77, -1, 3, - 4, 81, -1, -1, 84, 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, 118, -1, - -1, -1, -1, 123, 124, 125, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, - 140, -1, -1, -1, 144, -1, -1, -1, -1, 149, - -1, 3, 4, 5, 154, -1, 156, 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, 37, 38, 39, 40, -1, - -1, 43, -1, -1, 118, -1, -1, -1, -1, 123, - 124, 125, -1, -1, -1, -1, -1, 6, -1, -1, - -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, - 144, -1, -1, -1, -1, 149, -1, -1, 152, -1, - 154, -1, 156, 3, 4, -1, -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, -1, 118, 119, 120, 7, - 8, 123, 124, 125, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, - -1, -1, 144, -1, -1, -1, -1, 149, -1, 3, - 4, -1, 154, -1, 156, 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, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, -1, -1, -1, 118, 148, - -1, -1, -1, 123, 124, 125, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, - 140, -1, -1, -1, 144, -1, -1, -1, -1, 149, - -1, -1, 152, -1, 154, -1, 156, -1, -1, -1, - -1, -1, 130, 131, 132, 133, 134, 135, 136, 137, + 49, -1, -1, 52, -1, -1, 55, 157, 57, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 73, 74, 75, 76, 77, -1, + -1, -1, 81, -1, -1, 84, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + -1, -1, -1, -1, 148, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 118, + 6, -1, -1, 148, 123, 124, 125, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 139, 140, -1, -1, -1, 144, -1, -1, -1, -1, + 149, -1, 3, 4, -1, 154, -1, 156, 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, 35, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 49, -1, + -1, 52, -1, -1, 55, -1, 57, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 73, 74, 75, 76, 77, -1, -1, -1, + 81, -1, -1, 84, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 6, -1, + -1, -1, 148, -1, -1, -1, -1, 118, -1, -1, + -1, -1, 123, 124, 125, -1, -1, 6, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, + -1, -1, -1, 144, -1, -1, -1, -1, 149, -1, + 3, 4, -1, 154, -1, 156, 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, 35, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 49, -1, -1, 52, + -1, -1, 55, -1, 57, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 73, 74, 75, 76, 77, -1, -1, -1, 81, -1, + -1, 84, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, - 148, -1, -1, -1, 118, -1, -1, -1, -1, 123, - 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, - 144, -1, -1, -1, -1, 149, -1, 3, 4, -1, - 154, -1, 156, 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, -1, -1, -1, -1, 9, 10, + 148, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 118, -1, -1, -1, 148, + 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, + -1, 144, -1, -1, -1, -1, 149, -1, 3, 4, + -1, 154, -1, 156, 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, + 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 49, -1, -1, 52, -1, -1, + 55, -1, 57, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 73, 74, + 75, 76, 77, -1, 3, 4, 81, -1, -1, 84, + 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, 118, -1, -1, -1, -1, 123, 124, + 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 139, 140, -1, -1, -1, 144, + -1, -1, -1, -1, 149, -1, 3, 4, 5, 154, + -1, 156, 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, + 37, 38, 39, 40, -1, -1, 43, -1, -1, 118, + -1, -1, -1, -1, 123, 124, 125, -1, -1, -1, + -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, + 139, 140, -1, -1, -1, 144, -1, -1, -1, -1, + 149, -1, -1, 152, -1, 154, -1, 156, 3, 4, + -1, -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, 118, 119, 120, -1, -1, 123, 124, 125, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 139, 140, -1, -1, -1, 144, -1, -1, + -1, -1, 149, -1, 3, 4, -1, 154, -1, 156, + 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, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + -1, -1, -1, 118, 148, -1, -1, -1, 123, 124, + 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 139, 140, -1, -1, -1, 144, + -1, -1, -1, -1, 149, -1, -1, -1, -1, 154, + -1, 156, -1, -1, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, + -1, -1, 148, 7, 8, -1, -1, -1, -1, 118, + -1, -1, -1, -1, 123, 124, 125, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 139, 140, -1, -1, -1, 144, -1, -1, -1, -1, + 149, -1, 3, 4, -1, 154, -1, 156, 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, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, -1, -1, 52, -1, -1, 55, -1, 57, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, 73, 74, 75, 76, 77, -1, -1, -1, - 81, -1, 118, 84, -1, -1, -1, 123, 124, 125, - -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 139, 140, -1, -1, -1, 144, -1, - -1, 8, -1, 149, -1, -1, -1, 118, 154, -1, - 156, -1, 123, 124, 125, -1, -1, -1, -1, -1, + 81, -1, 8, 84, -1, -1, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + -1, 8, -1, -1, 148, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 118, -1, -1, + -1, -1, 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, 144, 3, 4, 5, -1, 149, -1, 9, 10, 11, 154, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, -1, -1, 37, 38, - 39, 40, 3, 4, 43, -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, 130, 131, 132, 133, 134, 135, + 29, 30, 31, 32, 33, 34, 8, -1, 37, 38, + 39, 40, -1, -1, 43, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 8, + -1, -1, -1, 148, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 8, -1, -1, -1, 148, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 8, -1, -1, - -1, 148, -1, -1, -1, -1, -1, -1, -1, 118, - 119, 120, -1, -1, 123, 124, 125, 8, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 139, 140, -1, -1, -1, 144, 8, -1, -1, -1, - 149, -1, -1, -1, -1, 154, -1, 118, -1, -1, - -1, -1, 123, 124, 125, 8, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, - -1, -1, -1, 144, -1, -1, -1, -1, 149, -1, - -1, -1, -1, 154, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 148, -1, -1, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, -1, 118, + 119, 120, 148, -1, 123, 124, 125, -1, -1, 155, + -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, + 139, 140, -1, -1, -1, 144, -1, -1, -1, -1, + 149, -1, -1, -1, -1, 154, -1, -1, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, -1, -1, -1, -1, 148, -1, -1, -1, + -1, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 70, -1, -1, -1, 148, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, 148, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, -1, -1, -1, -1, 148, -1, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 70, -1, -1, -1, 148, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, -1, -1, -1, -1, 148, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, -1, 0, 1, -1, 148, 4, -1, -1, -1, - -1, -1, -1, -1, 12, 13, -1, -1, -1, -1, - -1, -1, -1, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, -1, 36, -1, - -1, 148, -1, 41, 42, -1, 44, 45, 46, -1, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, -1, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 4, -1, - 88, 89, -1, -1, -1, 93, 12, 13, -1, -1, - 98, 99, 100, 101, -1, -1, 104, -1, 106, -1, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 36, -1, -1, 121, 122, 41, 42, -1, 44, 45, + 141, 142, 143, -1, 0, 1, -1, 148, 4, -1, + -1, -1, -1, -1, -1, -1, 12, 13, -1, -1, + -1, -1, -1, -1, -1, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, + 36, -1, -1, 148, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 12, 13, 88, 89, -1, -1, -1, 93, -1, -1, + 4, -1, 88, 89, -1, -1, -1, 93, 12, 13, -1, -1, 98, 99, 100, 101, -1, -1, 104, -1, 106, -1, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, -1, -1, -1, 121, 122, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, -1, 60, -1, - -1, 63, 64, -1, 66, 67, 68, -1, -1, -1, - 72, -1, -1, -1, -1, 130, 131, 132, 133, 134, + 116, 117, 36, -1, -1, 121, 122, 41, 42, -1, + 44, 45, 46, -1, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, -1, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 12, 13, 88, 89, -1, -1, -1, 93, + -1, -1, -1, -1, 98, 99, 100, 101, -1, -1, + 104, -1, 106, -1, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, -1, -1, -1, 121, 122, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, -1, + 60, -1, -1, 63, 64, -1, 66, 67, 68, -1, + -1, -1, 72, -1, -1, -1, -1, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, -1, -1, -1, -1, 148, -1, -1, -1, 99, + 100, 101, 155, -1, 157, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, - -1, -1, -1, 148, -1, -1, -1, 99, 100, 101, + -1, -1, -1, 148, -1, -1, -1, -1, -1, -1, 155, -1, 157, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, - -1, 148, -1, -1, -1, -1, -1, -1, 155, -1, + -1, 148, -1, -1, -1, -1, -1, -1, -1, -1, 157, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, 148, - -1, -1, -1, -1, -1, -1, 155, -1, 157, 130, + -1, -1, -1, -1, -1, -1, -1, -1, 157, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, 148, -1, -1, -1, -1, -1, -1, -1, -1, 157, 130, 131, 132, @@ -2763,85 +2753,89 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, 157, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, 148, -1, -1, -1, -1, -1, -1, - -1, -1, 157, 130, 131, 132, 133, 134, 135, 136, + -1, 156, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, + 148, -1, -1, -1, -1, -1, -1, -1, 156, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, -1, -1, -1, -1, 148, -1, 150, + -1, -1, -1, -1, 155, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, + -1, -1, -1, 148, -1, -1, -1, -1, -1, -1, + 155, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, -1, -1, -1, -1, 148, + -1, -1, -1, -1, -1, -1, 155, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, -1, -1, -1, -1, 148, -1, -1, -1, -1, + -1, -1, 155, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, - -1, 148, -1, -1, -1, -1, -1, -1, -1, -1, - 157, 130, 131, 132, 133, 134, 135, 136, 137, 138, + -1, 148, -1, -1, -1, -1, -1, -1, 155, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, -1, -1, -1, -1, 148, -1, -1, + -1, -1, -1, -1, 155, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, + -1, -1, -1, 148, -1, -1, -1, -1, -1, -1, + 155, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, 148, - -1, -1, -1, -1, -1, -1, -1, 156, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, -1, -1, -1, -1, 148, -1, 150, -1, - -1, -1, -1, 155, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, - -1, -1, 148, -1, -1, -1, -1, -1, -1, 155, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, -1, -1, -1, -1, 148, -1, - -1, -1, -1, -1, -1, 155, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - -1, -1, -1, -1, 148, -1, -1, -1, -1, -1, - -1, 155, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, - 148, -1, -1, -1, -1, -1, -1, 155, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, -1, -1, -1, -1, 148, -1, -1, -1, - -1, -1, -1, 155, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, - -1, -1, 148, -1, -1, -1, -1, -1, -1, 155, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, -1, -1, -1, -1, 148, -1, - -1, -1, -1, -1, -1, 155, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - -1, -1, -1, -1, 148, -1, -1, -1, -1, -1, - -1, 155, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, - 148, -1, -1, -1, -1, -1, -1, 155, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, -1, -1, -1, -1, 148, -1, -1, -1, - -1, -1, -1, 155, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, - -1, -1, 148, -1, -1, -1, -1, -1, -1, 155, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, -1, -1, -1, -1, 148, -1, - -1, -1, -1, -1, -1, 155, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - -1, -1, -1, -1, 148, -1, -1, -1, -1, -1, - -1, 155, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, - 148, -1, -1, -1, -1, -1, -1, 155, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, -1, -1, -1, -1, 148, -1, -1, -1, - -1, -1, -1, 155, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, - -1, -1, 148, -1, -1, -1, -1, -1, -1, 155, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, -1, -1, -1, -1, 148, -1, - -1, -1, -1, -1, -1, 155, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - -1, -1, -1, -1, 148, -1, -1, -1, -1, -1, - -1, 155, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, - 148, -1, -1, -1, -1, -1, -1, 155, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, -1, -1, -1, -1, 148, -1, -1, -1, - -1, -1, -1, 155, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, - -1, -1, 148, -1, -1, -1, -1, -1, -1, 155, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, -1, -1, -1, -1, 148, -1, - -1, -1, -1, -1, -1, 155, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - -1, -1, -1, -1, 148, -1, -1, -1, -1, -1, - -1, 155, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, - 148, -1, -1, -1, -1, -1, -1, 155, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, -1, -1, -1, -1, 148, -1, -1, -1, - -1, -1, -1, 155, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, - -1, -1, 148, -1, -1, -1, -1, -1, -1, 155, + -1, -1, -1, -1, -1, -1, 155, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, -1, -1, -1, -1, 148, -1, -1, -1, -1, + -1, -1, 155, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, + -1, 148, -1, -1, -1, -1, -1, -1, 155, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, -1, -1, -1, -1, 148, -1, -1, + -1, -1, -1, -1, 155, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, + -1, -1, -1, 148, -1, -1, -1, -1, -1, -1, + 155, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, -1, -1, -1, -1, 148, + -1, -1, -1, -1, -1, -1, 155, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, -1, -1, -1, -1, 148, -1, -1, -1, -1, + -1, -1, 155, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, + -1, 148, -1, -1, -1, -1, -1, -1, 155, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, -1, -1, -1, -1, 148, -1, -1, + -1, -1, -1, -1, 155, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, + -1, -1, -1, 148, -1, -1, -1, -1, -1, -1, + 155, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, -1, -1, -1, -1, 148, + -1, -1, -1, -1, -1, -1, 155, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, -1, -1, -1, -1, 148, -1, -1, -1, -1, + -1, -1, 155, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, + -1, 148, -1, -1, -1, -1, -1, -1, 155, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, -1, -1, -1, -1, 148, -1, -1, + -1, -1, -1, -1, 155, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, + -1, -1, -1, 148, -1, -1, -1, -1, -1, -1, + 155, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, -1, -1, -1, -1, 148, + -1, -1, -1, -1, -1, -1, 155, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, -1, -1, -1, -1, 148, -1, -1, -1, -1, + -1, -1, 155, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, + -1, 148, -1, -1, -1, -1, -1, -1, 155, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, -1, -1, -1, -1, 148, -1, -1, + -1, -1, -1, -1, 155, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, + -1, -1, -1, 148, -1, -1, -1, -1, -1, -1, + 155, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, -1, -1, -1, -1, 148, + -1, -1, -1, -1, -1, -1, 155, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, -1, -1, -1, -1, 148, -1, -1, -1, 152, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, 148, -1, - -1, -1, -1, -1, -1, 155, 130, 131, 132, 133, + -1, -1, 152, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, + -1, 148, -1, -1, -1, 152, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, 148, -1, -1, -1, 152, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, @@ -2911,15 +2905,6 @@ static const yytype_int16 yycheck[] = -1, -1, 152, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, 148, -1, -1, -1, 152, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - -1, -1, -1, -1, 148, -1, -1, -1, 152, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, -1, -1, -1, -1, 148, -1, -1, - -1, 152, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, - 148, -1, -1, -1, 152, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, - -1, -1, -1, 148, -1, 150, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, 148, -1, 150, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, @@ -3032,7 +3017,9 @@ static const yytype_int16 yycheck[] = 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, -1, 148, -1, 150, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, -1, -1, -1, -1, 148 + 141, 142, 143, -1, -1, -1, -1, 148, -1, 150, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, -1, -1, -1, -1, 148 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -3136,53 +3123,54 @@ static const yytype_uint8 yystos[] = 157, 222, 155, 221, 7, 6, 7, 7, 7, 6, 156, 6, 6, 6, 55, 233, 6, 6, 157, 233, 157, 238, 238, 238, 4, 155, 8, 8, 150, 4, - 4, 157, 6, 4, 6, 149, 233, 233, 237, 238, - 156, 150, 152, 150, 152, 150, 152, 150, 152, 152, - 150, 150, 150, 150, 181, 7, 181, 182, 153, 7, - 6, 242, 233, 155, 157, 157, 157, 157, 157, 6, - 6, 163, 233, 156, 233, 6, 156, 63, 192, 192, - 238, 6, 156, 156, 6, 6, 238, 156, 6, 6, - 5, 238, 238, 238, 4, 6, 238, 7, 7, 7, - 7, 238, 238, 238, 7, 6, 7, 233, 233, 233, - 156, 155, 157, 155, 157, 155, 157, 151, 233, 238, - 233, 6, 6, 233, 235, 157, 5, 156, 238, 156, - 156, 156, 238, 241, 156, 6, 152, 6, 6, 103, - 233, 233, 233, 6, 6, 7, 6, 182, 167, 233, - 155, 155, 155, 157, 168, 233, 153, 238, 246, 233, - 6, 4, 243, 6, 152, 242, 6, 6, 6, 6, - 245, 155, 233, 233, 235, 6, 6, 6, 233, 233, - 6, 233, 5, 6, 6, 107, 191, 233, 6, 238, - 238, 238, 238, 6, 4, 6, 6, 233, 233, 246, - 157, 150, 155, 157, 199, 235, 6, 212, 235, 6, - 213, 235, 6, 214, 233, 157, 155, 150, 157, 155, - 6, 140, 235, 6, 237, 235, 235, 6, 157, 233, - 238, 155, 157, 8, 157, 150, 156, 233, 246, 150, - 155, 233, 233, 238, 156, 155, 157, 4, 6, 6, - 6, 7, 6, 153, 6, 233, 186, 157, 157, 157, - 157, 5, 53, 6, 6, 6, 6, 6, 156, 156, - 6, 6, 156, 233, 157, 155, 156, 155, 156, 155, - 156, 152, 6, 238, 7, 156, 233, 155, 157, 155, - 155, 6, 157, 102, 233, 233, 241, 6, 6, 171, - 233, 155, 155, 237, 233, 6, 242, 105, 155, 188, - 6, 6, 6, 6, 6, 156, 237, 241, 199, 155, - 157, 233, 235, 221, 233, 235, 221, 233, 235, 221, - 6, 155, 157, 238, 200, 157, 235, 6, 241, 235, - 233, 157, 157, 157, 156, 233, 233, 157, 6, 233, - 155, 157, 189, 233, 157, 157, 157, 233, 157, 155, - 157, 157, 155, 157, 157, 155, 157, 238, 6, 70, - 157, 209, 156, 155, 157, 155, 6, 6, 168, 150, - 155, 6, 156, 155, 4, 157, 6, 6, 157, 6, - 215, 233, 6, 6, 216, 233, 6, 6, 217, 233, - 6, 157, 233, 221, 200, 241, 6, 235, 241, 157, - 174, 233, 237, 233, 5, 156, 238, 156, 157, 156, - 157, 156, 157, 6, 6, 157, 157, 210, 157, 155, - 157, 6, 156, 150, 157, 157, 187, 233, 221, 6, - 218, 221, 6, 219, 221, 6, 220, 221, 6, 241, - 6, 172, 245, 177, 156, 6, 155, 157, 7, 157, - 156, 157, 156, 157, 156, 157, 157, 155, 157, 156, - 237, 233, 246, 6, 221, 6, 221, 6, 221, 6, - 245, 6, 175, 245, 157, 7, 157, 157, 157, 155, - 157, 6, 246, 6, 6, 6, 245, 6 + 4, 155, 157, 6, 4, 6, 149, 233, 233, 237, + 238, 156, 150, 152, 150, 152, 150, 152, 150, 152, + 152, 150, 150, 150, 150, 181, 7, 181, 182, 153, + 7, 6, 242, 233, 155, 157, 157, 157, 157, 157, + 6, 6, 163, 233, 156, 233, 6, 156, 63, 192, + 192, 238, 6, 156, 156, 6, 6, 238, 156, 6, + 6, 5, 238, 238, 238, 4, 6, 238, 7, 7, + 7, 7, 238, 238, 238, 7, 6, 7, 233, 233, + 233, 156, 155, 157, 155, 157, 155, 157, 151, 233, + 238, 233, 6, 6, 233, 235, 157, 5, 156, 238, + 156, 156, 156, 238, 241, 156, 6, 152, 6, 6, + 103, 233, 233, 233, 6, 6, 7, 238, 6, 182, + 167, 233, 155, 155, 155, 157, 168, 233, 153, 238, + 246, 233, 6, 4, 243, 6, 152, 242, 6, 6, + 6, 6, 245, 155, 233, 233, 235, 6, 6, 6, + 233, 233, 6, 233, 5, 6, 6, 107, 191, 233, + 6, 238, 238, 238, 238, 6, 4, 6, 6, 233, + 233, 246, 157, 150, 155, 157, 199, 235, 6, 212, + 235, 6, 213, 235, 6, 214, 233, 157, 155, 150, + 157, 155, 6, 140, 235, 6, 237, 235, 235, 6, + 157, 233, 238, 155, 157, 8, 157, 150, 156, 233, + 246, 157, 150, 155, 233, 233, 238, 156, 155, 157, + 4, 6, 6, 6, 7, 6, 153, 6, 233, 186, + 157, 157, 157, 157, 5, 53, 6, 6, 6, 6, + 6, 156, 156, 6, 6, 156, 233, 157, 155, 156, + 155, 156, 155, 156, 152, 6, 238, 7, 156, 233, + 155, 157, 155, 155, 6, 157, 102, 233, 233, 241, + 6, 6, 6, 171, 233, 155, 155, 237, 233, 6, + 242, 105, 155, 188, 6, 6, 6, 6, 6, 156, + 237, 241, 199, 155, 157, 233, 235, 221, 233, 235, + 221, 233, 235, 221, 6, 155, 157, 238, 200, 157, + 235, 6, 241, 235, 233, 157, 157, 157, 156, 233, + 233, 157, 6, 233, 155, 157, 189, 233, 157, 157, + 157, 233, 157, 155, 157, 157, 155, 157, 157, 155, + 157, 238, 6, 70, 157, 209, 156, 155, 157, 155, + 6, 6, 168, 150, 155, 6, 156, 155, 4, 157, + 6, 6, 157, 6, 215, 233, 6, 6, 216, 233, + 6, 6, 217, 233, 6, 157, 233, 221, 200, 241, + 6, 235, 241, 157, 174, 233, 237, 233, 5, 156, + 238, 156, 157, 156, 157, 156, 157, 6, 6, 157, + 157, 210, 157, 155, 157, 6, 156, 150, 157, 157, + 187, 233, 221, 6, 218, 221, 6, 219, 221, 6, + 220, 221, 6, 241, 6, 172, 245, 177, 156, 6, + 155, 157, 7, 157, 156, 157, 156, 157, 156, 157, + 157, 155, 157, 156, 237, 233, 246, 6, 221, 6, + 221, 6, 221, 6, 245, 6, 175, 245, 157, 7, + 157, 157, 157, 155, 157, 6, 246, 6, 6, 6, + 245, 6 }; #define yyerrok (yyerrstatus = 0) @@ -8678,23 +8666,27 @@ yyreduce: /* Line 1806 of yacc.c */ #line 3723 "Gmsh.y" { - std::vector<int> domain, subdomain; - GModel::current()->addHomologyRequest((yyvsp[(1) - (2)].c), domain, subdomain); + std::vector<int> domain, subdomain, dim; + if(GModel::current()->getDim() != 1) dim.push_back(1); + if(GModel::current()->getDim() != 2) dim.push_back(2); + GModel::current()->addHomologyRequest((yyvsp[(1) - (2)].c), domain, subdomain, dim); } break; case 279: /* Line 1806 of yacc.c */ -#line 3728 "Gmsh.y" +#line 3730 "Gmsh.y" { - std::vector<int> domain, subdomain; + std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(3) - (5)].l)); i++){ double d; List_Read((yyvsp[(3) - (5)].l), i, &d); domain.push_back((int)d); } - GModel::current()->addHomologyRequest((yyvsp[(1) - (5)].c), domain, subdomain); + if(GModel::current()->getDim() != 1) dim.push_back(1); + if(GModel::current()->getDim() != 2) dim.push_back(2); + GModel::current()->addHomologyRequest((yyvsp[(1) - (5)].c), domain, subdomain, dim); List_Delete((yyvsp[(3) - (5)].l)); } break; @@ -8702,9 +8694,9 @@ yyreduce: case 280: /* Line 1806 of yacc.c */ -#line 3739 "Gmsh.y" +#line 3743 "Gmsh.y" { - std::vector<int> domain, subdomain; + std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(3) - (7)].l)); i++){ double d; List_Read((yyvsp[(3) - (7)].l), i, &d); @@ -8715,7 +8707,9 @@ yyreduce: List_Read((yyvsp[(5) - (7)].l), i, &d); subdomain.push_back((int)d); } - GModel::current()->addHomologyRequest((yyvsp[(1) - (7)].c), domain, subdomain); + if(GModel::current()->getDim() != 1) dim.push_back(1); + if(GModel::current()->getDim() != 2) dim.push_back(2); + GModel::current()->addHomologyRequest((yyvsp[(1) - (7)].c), domain, subdomain, dim); List_Delete((yyvsp[(3) - (7)].l)); List_Delete((yyvsp[(5) - (7)].l)); } @@ -8724,63 +8718,91 @@ yyreduce: case 281: /* Line 1806 of yacc.c */ -#line 3760 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (1)].d); } +#line 3762 "Gmsh.y" + { + std::vector<int> domain, subdomain, dim; + for(int i = 0; i < List_Nbr((yyvsp[(3) - (9)].l)); i++){ + double d; + List_Read((yyvsp[(3) - (9)].l), i, &d); + domain.push_back((int)d); + } + for(int i = 0; i < List_Nbr((yyvsp[(5) - (9)].l)); i++){ + double d; + List_Read((yyvsp[(5) - (9)].l), i, &d); + subdomain.push_back((int)d); + } + for(int i = 0; i < List_Nbr((yyvsp[(7) - (9)].l)); i++){ + double d; + List_Read((yyvsp[(7) - (9)].l), i, &d); + dim.push_back((int)d); + } + GModel::current()->addHomologyRequest((yyvsp[(1) - (9)].c), domain, subdomain, dim); + List_Delete((yyvsp[(3) - (9)].l)); + List_Delete((yyvsp[(5) - (9)].l)); + List_Delete((yyvsp[(7) - (9)].l)); + } break; case 282: /* Line 1806 of yacc.c */ -#line 3761 "Gmsh.y" - { (yyval.d) = (yyvsp[(2) - (3)].d); } +#line 3789 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (1)].d); } break; case 283: /* Line 1806 of yacc.c */ -#line 3762 "Gmsh.y" - { (yyval.d) = -(yyvsp[(2) - (2)].d); } +#line 3790 "Gmsh.y" + { (yyval.d) = (yyvsp[(2) - (3)].d); } break; case 284: /* Line 1806 of yacc.c */ -#line 3763 "Gmsh.y" - { (yyval.d) = (yyvsp[(2) - (2)].d); } +#line 3791 "Gmsh.y" + { (yyval.d) = -(yyvsp[(2) - (2)].d); } break; case 285: /* Line 1806 of yacc.c */ -#line 3764 "Gmsh.y" - { (yyval.d) = !(yyvsp[(2) - (2)].d); } +#line 3792 "Gmsh.y" + { (yyval.d) = (yyvsp[(2) - (2)].d); } break; case 286: /* Line 1806 of yacc.c */ -#line 3765 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d); } +#line 3793 "Gmsh.y" + { (yyval.d) = !(yyvsp[(2) - (2)].d); } break; case 287: /* Line 1806 of yacc.c */ -#line 3766 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d); } +#line 3794 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d); } break; case 288: /* Line 1806 of yacc.c */ -#line 3767 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d); } +#line 3795 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d); } break; case 289: /* Line 1806 of yacc.c */ -#line 3769 "Gmsh.y" +#line 3796 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d); } + break; + + case 290: + +/* Line 1806 of yacc.c */ +#line 3798 "Gmsh.y" { if(!(yyvsp[(3) - (3)].d)) yymsg(0, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); @@ -8789,430 +8811,430 @@ yyreduce: } break; - case 290: - -/* Line 1806 of yacc.c */ -#line 3775 "Gmsh.y" - { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d); } - break; - case 291: /* Line 1806 of yacc.c */ -#line 3776 "Gmsh.y" - { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); } +#line 3804 "Gmsh.y" + { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d); } break; case 292: /* Line 1806 of yacc.c */ -#line 3777 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d); } +#line 3805 "Gmsh.y" + { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); } break; case 293: /* Line 1806 of yacc.c */ -#line 3778 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d); } +#line 3806 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d); } break; case 294: /* Line 1806 of yacc.c */ -#line 3779 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d); } +#line 3807 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d); } break; case 295: /* Line 1806 of yacc.c */ -#line 3780 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d); } +#line 3808 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d); } break; case 296: /* Line 1806 of yacc.c */ -#line 3781 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d); } +#line 3809 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d); } break; case 297: /* Line 1806 of yacc.c */ -#line 3782 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d); } +#line 3810 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d); } break; case 298: /* Line 1806 of yacc.c */ -#line 3783 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d); } +#line 3811 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d); } break; case 299: /* Line 1806 of yacc.c */ -#line 3784 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d); } +#line 3812 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d); } break; case 300: /* Line 1806 of yacc.c */ -#line 3785 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); } +#line 3813 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d); } break; case 301: /* Line 1806 of yacc.c */ -#line 3786 "Gmsh.y" - { (yyval.d) = exp((yyvsp[(3) - (4)].d)); } +#line 3814 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); } break; case 302: /* Line 1806 of yacc.c */ -#line 3787 "Gmsh.y" - { (yyval.d) = log((yyvsp[(3) - (4)].d)); } +#line 3815 "Gmsh.y" + { (yyval.d) = exp((yyvsp[(3) - (4)].d)); } break; case 303: /* Line 1806 of yacc.c */ -#line 3788 "Gmsh.y" - { (yyval.d) = log10((yyvsp[(3) - (4)].d)); } +#line 3816 "Gmsh.y" + { (yyval.d) = log((yyvsp[(3) - (4)].d)); } break; case 304: /* Line 1806 of yacc.c */ -#line 3789 "Gmsh.y" - { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); } +#line 3817 "Gmsh.y" + { (yyval.d) = log10((yyvsp[(3) - (4)].d)); } break; case 305: /* Line 1806 of yacc.c */ -#line 3790 "Gmsh.y" - { (yyval.d) = sin((yyvsp[(3) - (4)].d)); } +#line 3818 "Gmsh.y" + { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); } break; case 306: /* Line 1806 of yacc.c */ -#line 3791 "Gmsh.y" - { (yyval.d) = asin((yyvsp[(3) - (4)].d)); } +#line 3819 "Gmsh.y" + { (yyval.d) = sin((yyvsp[(3) - (4)].d)); } break; case 307: /* Line 1806 of yacc.c */ -#line 3792 "Gmsh.y" - { (yyval.d) = cos((yyvsp[(3) - (4)].d)); } +#line 3820 "Gmsh.y" + { (yyval.d) = asin((yyvsp[(3) - (4)].d)); } break; case 308: /* Line 1806 of yacc.c */ -#line 3793 "Gmsh.y" - { (yyval.d) = acos((yyvsp[(3) - (4)].d)); } +#line 3821 "Gmsh.y" + { (yyval.d) = cos((yyvsp[(3) - (4)].d)); } break; case 309: /* Line 1806 of yacc.c */ -#line 3794 "Gmsh.y" - { (yyval.d) = tan((yyvsp[(3) - (4)].d)); } +#line 3822 "Gmsh.y" + { (yyval.d) = acos((yyvsp[(3) - (4)].d)); } break; case 310: /* Line 1806 of yacc.c */ -#line 3795 "Gmsh.y" - { (yyval.d) = atan((yyvsp[(3) - (4)].d)); } +#line 3823 "Gmsh.y" + { (yyval.d) = tan((yyvsp[(3) - (4)].d)); } break; case 311: /* Line 1806 of yacc.c */ -#line 3796 "Gmsh.y" - { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));} +#line 3824 "Gmsh.y" + { (yyval.d) = atan((yyvsp[(3) - (4)].d)); } break; case 312: /* Line 1806 of yacc.c */ -#line 3797 "Gmsh.y" - { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); } +#line 3825 "Gmsh.y" + { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));} break; case 313: /* Line 1806 of yacc.c */ -#line 3798 "Gmsh.y" - { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); } +#line 3826 "Gmsh.y" + { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); } break; case 314: /* Line 1806 of yacc.c */ -#line 3799 "Gmsh.y" - { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); } +#line 3827 "Gmsh.y" + { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); } break; case 315: /* Line 1806 of yacc.c */ -#line 3800 "Gmsh.y" - { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); } +#line 3828 "Gmsh.y" + { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); } break; case 316: /* Line 1806 of yacc.c */ -#line 3801 "Gmsh.y" - { (yyval.d) = floor((yyvsp[(3) - (4)].d)); } +#line 3829 "Gmsh.y" + { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); } break; case 317: /* Line 1806 of yacc.c */ -#line 3802 "Gmsh.y" - { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); } +#line 3830 "Gmsh.y" + { (yyval.d) = floor((yyvsp[(3) - (4)].d)); } break; case 318: /* Line 1806 of yacc.c */ -#line 3803 "Gmsh.y" - { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); } +#line 3831 "Gmsh.y" + { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); } break; case 319: /* Line 1806 of yacc.c */ -#line 3804 "Gmsh.y" +#line 3832 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); } break; case 320: /* Line 1806 of yacc.c */ -#line 3805 "Gmsh.y" - { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); } +#line 3833 "Gmsh.y" + { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); } break; case 321: /* Line 1806 of yacc.c */ -#line 3806 "Gmsh.y" - { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; } +#line 3834 "Gmsh.y" + { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); } break; case 322: /* Line 1806 of yacc.c */ -#line 3808 "Gmsh.y" - { (yyval.d) = exp((yyvsp[(3) - (4)].d)); } +#line 3835 "Gmsh.y" + { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; } break; case 323: /* Line 1806 of yacc.c */ -#line 3809 "Gmsh.y" - { (yyval.d) = log((yyvsp[(3) - (4)].d)); } +#line 3837 "Gmsh.y" + { (yyval.d) = exp((yyvsp[(3) - (4)].d)); } break; case 324: /* Line 1806 of yacc.c */ -#line 3810 "Gmsh.y" - { (yyval.d) = log10((yyvsp[(3) - (4)].d)); } +#line 3838 "Gmsh.y" + { (yyval.d) = log((yyvsp[(3) - (4)].d)); } break; case 325: /* Line 1806 of yacc.c */ -#line 3811 "Gmsh.y" - { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); } +#line 3839 "Gmsh.y" + { (yyval.d) = log10((yyvsp[(3) - (4)].d)); } break; case 326: /* Line 1806 of yacc.c */ -#line 3812 "Gmsh.y" - { (yyval.d) = sin((yyvsp[(3) - (4)].d)); } +#line 3840 "Gmsh.y" + { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); } break; case 327: /* Line 1806 of yacc.c */ -#line 3813 "Gmsh.y" - { (yyval.d) = asin((yyvsp[(3) - (4)].d)); } +#line 3841 "Gmsh.y" + { (yyval.d) = sin((yyvsp[(3) - (4)].d)); } break; case 328: /* Line 1806 of yacc.c */ -#line 3814 "Gmsh.y" - { (yyval.d) = cos((yyvsp[(3) - (4)].d)); } +#line 3842 "Gmsh.y" + { (yyval.d) = asin((yyvsp[(3) - (4)].d)); } break; case 329: /* Line 1806 of yacc.c */ -#line 3815 "Gmsh.y" - { (yyval.d) = acos((yyvsp[(3) - (4)].d)); } +#line 3843 "Gmsh.y" + { (yyval.d) = cos((yyvsp[(3) - (4)].d)); } break; case 330: /* Line 1806 of yacc.c */ -#line 3816 "Gmsh.y" - { (yyval.d) = tan((yyvsp[(3) - (4)].d)); } +#line 3844 "Gmsh.y" + { (yyval.d) = acos((yyvsp[(3) - (4)].d)); } break; case 331: /* Line 1806 of yacc.c */ -#line 3817 "Gmsh.y" - { (yyval.d) = atan((yyvsp[(3) - (4)].d)); } +#line 3845 "Gmsh.y" + { (yyval.d) = tan((yyvsp[(3) - (4)].d)); } break; case 332: /* Line 1806 of yacc.c */ -#line 3818 "Gmsh.y" - { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));} +#line 3846 "Gmsh.y" + { (yyval.d) = atan((yyvsp[(3) - (4)].d)); } break; case 333: /* Line 1806 of yacc.c */ -#line 3819 "Gmsh.y" - { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); } +#line 3847 "Gmsh.y" + { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));} break; case 334: /* Line 1806 of yacc.c */ -#line 3820 "Gmsh.y" - { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); } +#line 3848 "Gmsh.y" + { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); } break; case 335: /* Line 1806 of yacc.c */ -#line 3821 "Gmsh.y" - { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); } +#line 3849 "Gmsh.y" + { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); } break; case 336: /* Line 1806 of yacc.c */ -#line 3822 "Gmsh.y" - { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); } +#line 3850 "Gmsh.y" + { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); } break; case 337: /* Line 1806 of yacc.c */ -#line 3823 "Gmsh.y" - { (yyval.d) = floor((yyvsp[(3) - (4)].d)); } +#line 3851 "Gmsh.y" + { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); } break; case 338: /* Line 1806 of yacc.c */ -#line 3824 "Gmsh.y" - { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); } +#line 3852 "Gmsh.y" + { (yyval.d) = floor((yyvsp[(3) - (4)].d)); } break; case 339: /* Line 1806 of yacc.c */ -#line 3825 "Gmsh.y" - { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); } +#line 3853 "Gmsh.y" + { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); } break; case 340: /* Line 1806 of yacc.c */ -#line 3826 "Gmsh.y" +#line 3854 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); } break; case 341: /* Line 1806 of yacc.c */ -#line 3827 "Gmsh.y" - { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); } +#line 3855 "Gmsh.y" + { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); } break; case 342: /* Line 1806 of yacc.c */ -#line 3828 "Gmsh.y" - { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; } +#line 3856 "Gmsh.y" + { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); } break; case 343: /* Line 1806 of yacc.c */ -#line 3837 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (1)].d); } +#line 3857 "Gmsh.y" + { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; } break; case 344: /* Line 1806 of yacc.c */ -#line 3838 "Gmsh.y" - { (yyval.d) = 3.141592653589793; } +#line 3866 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (1)].d); } break; case 345: /* Line 1806 of yacc.c */ -#line 3839 "Gmsh.y" - { (yyval.d) = Msg::GetCommRank(); } +#line 3867 "Gmsh.y" + { (yyval.d) = 3.141592653589793; } break; case 346: /* Line 1806 of yacc.c */ -#line 3840 "Gmsh.y" - { (yyval.d) = Msg::GetCommSize(); } +#line 3868 "Gmsh.y" + { (yyval.d) = Msg::GetCommRank(); } break; case 347: /* Line 1806 of yacc.c */ -#line 3841 "Gmsh.y" - { (yyval.d) = GetGmshMajorVersion(); } +#line 3869 "Gmsh.y" + { (yyval.d) = Msg::GetCommSize(); } break; case 348: /* Line 1806 of yacc.c */ -#line 3842 "Gmsh.y" - { (yyval.d) = GetGmshMinorVersion(); } +#line 3870 "Gmsh.y" + { (yyval.d) = GetGmshMajorVersion(); } break; case 349: /* Line 1806 of yacc.c */ -#line 3843 "Gmsh.y" - { (yyval.d) = GetGmshPatchVersion(); } +#line 3871 "Gmsh.y" + { (yyval.d) = GetGmshMinorVersion(); } break; case 350: /* Line 1806 of yacc.c */ -#line 3848 "Gmsh.y" +#line 3872 "Gmsh.y" + { (yyval.d) = GetGmshPatchVersion(); } + break; + + case 351: + +/* Line 1806 of yacc.c */ +#line 3877 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (1)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (1)].c)); @@ -9231,10 +9253,10 @@ yyreduce: } break; - case 351: + case 352: /* Line 1806 of yacc.c */ -#line 3868 "Gmsh.y" +#line 3897 "Gmsh.y" { char tmpstring[1024]; sprintf(tmpstring, "%s_%d", (yyvsp[(1) - (5)].c), (int)(yyvsp[(4) - (5)].d)) ; @@ -9255,10 +9277,10 @@ yyreduce: } break; - case 352: + case 353: /* Line 1806 of yacc.c */ -#line 3887 "Gmsh.y" +#line 3916 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -9278,10 +9300,10 @@ yyreduce: } break; - case 353: + case 354: /* Line 1806 of yacc.c */ -#line 3905 "Gmsh.y" +#line 3934 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(2) - (4)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(2) - (4)].c)); @@ -9295,10 +9317,10 @@ yyreduce: } break; - case 354: + case 355: /* Line 1806 of yacc.c */ -#line 3917 "Gmsh.y" +#line 3946 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (2)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (2)].c)); @@ -9317,10 +9339,10 @@ yyreduce: } break; - case 355: + case 356: /* Line 1806 of yacc.c */ -#line 3934 "Gmsh.y" +#line 3963 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -9340,30 +9362,30 @@ yyreduce: } break; - case 356: + case 357: /* Line 1806 of yacc.c */ -#line 3955 "Gmsh.y" +#line 3984 "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 357: + case 358: /* Line 1806 of yacc.c */ -#line 3960 "Gmsh.y" +#line 3989 "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 358: + case 359: /* Line 1806 of yacc.c */ -#line 3965 "Gmsh.y" +#line 3994 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (4)].c), 0, (yyvsp[(3) - (4)].c), d)){ @@ -9375,10 +9397,10 @@ yyreduce: } break; - case 359: + case 360: /* Line 1806 of yacc.c */ -#line 3975 "Gmsh.y" +#line 4004 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c), d)){ @@ -9390,158 +9412,158 @@ yyreduce: } break; - case 360: + case 361: /* Line 1806 of yacc.c */ -#line 3985 "Gmsh.y" +#line 4014 "Gmsh.y" { (yyval.d) = Msg::GetValue((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d)); Free((yyvsp[(3) - (6)].c)); } break; - case 361: + case 362: /* Line 1806 of yacc.c */ -#line 3993 "Gmsh.y" +#line 4022 "Gmsh.y" { memcpy((yyval.v), (yyvsp[(1) - (1)].v), 5*sizeof(double)); } break; - case 362: + case 363: /* Line 1806 of yacc.c */ -#line 3997 "Gmsh.y" +#line 4026 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = -(yyvsp[(2) - (2)].v)[i]; } break; - case 363: + case 364: /* Line 1806 of yacc.c */ -#line 4001 "Gmsh.y" +#line 4030 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i]; } break; - case 364: + case 365: /* Line 1806 of yacc.c */ -#line 4005 "Gmsh.y" +#line 4034 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] - (yyvsp[(3) - (3)].v)[i]; } break; - case 365: + case 366: /* Line 1806 of yacc.c */ -#line 4009 "Gmsh.y" +#line 4038 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] + (yyvsp[(3) - (3)].v)[i]; } break; - case 366: + case 367: /* Line 1806 of yacc.c */ -#line 4016 "Gmsh.y" +#line 4045 "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 367: + case 368: /* Line 1806 of yacc.c */ -#line 4020 "Gmsh.y" +#line 4049 "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 368: + case 369: /* Line 1806 of yacc.c */ -#line 4024 "Gmsh.y" +#line 4053 "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 369: + case 370: /* Line 1806 of yacc.c */ -#line 4028 "Gmsh.y" +#line 4057 "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 370: + case 371: /* Line 1806 of yacc.c */ -#line 4035 "Gmsh.y" +#line 4064 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(List_T*)); List_Add((yyval.l), &((yyvsp[(1) - (1)].l))); } break; - case 371: + case 372: /* Line 1806 of yacc.c */ -#line 4040 "Gmsh.y" +#line 4069 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].l))); } break; - case 372: + case 373: /* Line 1806 of yacc.c */ -#line 4047 "Gmsh.y" +#line 4076 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); } break; - case 373: + case 374: /* Line 1806 of yacc.c */ -#line 4052 "Gmsh.y" +#line 4081 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); } break; - case 374: + case 375: /* Line 1806 of yacc.c */ -#line 4056 "Gmsh.y" +#line 4085 "Gmsh.y" { // creates an empty list (yyval.l) = List_Create(2, 1, sizeof(double)); } break; - case 375: + case 376: /* Line 1806 of yacc.c */ -#line 4061 "Gmsh.y" +#line 4090 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); } break; - case 376: + case 377: /* Line 1806 of yacc.c */ -#line 4065 "Gmsh.y" +#line 4094 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -9551,10 +9573,10 @@ yyreduce: } break; - case 377: + case 378: /* Line 1806 of yacc.c */ -#line 4073 "Gmsh.y" +#line 4102 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (5)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -9564,19 +9586,19 @@ yyreduce: } break; - case 378: + case 379: /* Line 1806 of yacc.c */ -#line 4084 "Gmsh.y" +#line 4113 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); } break; - case 379: + case 380: /* Line 1806 of yacc.c */ -#line 4088 "Gmsh.y" +#line 4117 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "*") || !strcmp((yyvsp[(1) - (1)].c), "all")) (yyval.l) = 0; @@ -9587,10 +9609,10 @@ yyreduce: } break; - case 380: + case 381: /* Line 1806 of yacc.c */ -#line 4100 "Gmsh.y" +#line 4129 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -9600,10 +9622,10 @@ yyreduce: } break; - case 381: + case 382: /* Line 1806 of yacc.c */ -#line 4108 "Gmsh.y" +#line 4137 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (3)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -9613,10 +9635,10 @@ yyreduce: } break; - case 382: + case 383: /* Line 1806 of yacc.c */ -#line 4116 "Gmsh.y" +#line 4145 "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)); @@ -9625,10 +9647,10 @@ yyreduce: } break; - case 383: + case 384: /* Line 1806 of yacc.c */ -#line 4123 "Gmsh.y" +#line 4152 "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)){ @@ -9641,10 +9663,10 @@ yyreduce: } break; - case 384: + case 385: /* Line 1806 of yacc.c */ -#line 4134 "Gmsh.y" +#line 4163 "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 @@ -9666,46 +9688,46 @@ yyreduce: } break; - case 385: + case 386: /* Line 1806 of yacc.c */ -#line 4154 "Gmsh.y" +#line 4183 "Gmsh.y" { (yyval.l) = GetAllEntityNumbers(0); } break; - case 386: + case 387: /* Line 1806 of yacc.c */ -#line 4158 "Gmsh.y" +#line 4187 "Gmsh.y" { (yyval.l) = GetAllEntityNumbers(1); } break; - case 387: + case 388: /* Line 1806 of yacc.c */ -#line 4162 "Gmsh.y" +#line 4191 "Gmsh.y" { (yyval.l) = GetAllEntityNumbers(2); } break; - case 388: + case 389: /* Line 1806 of yacc.c */ -#line 4166 "Gmsh.y" +#line 4195 "Gmsh.y" { (yyval.l) = GetAllEntityNumbers(3); } break; - case 389: + case 390: /* Line 1806 of yacc.c */ -#line 4170 "Gmsh.y" +#line 4199 "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++){ @@ -9717,10 +9739,10 @@ yyreduce: } break; - case 390: + case 391: /* Line 1806 of yacc.c */ -#line 4180 "Gmsh.y" +#line 4209 "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++){ @@ -9732,10 +9754,10 @@ yyreduce: } break; - case 391: + case 392: /* Line 1806 of yacc.c */ -#line 4190 "Gmsh.y" +#line 4219 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c))) @@ -9749,10 +9771,10 @@ yyreduce: } break; - case 392: + case 393: /* Line 1806 of yacc.c */ -#line 4202 "Gmsh.y" +#line 4231 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(3) - (4)].c))) @@ -9766,10 +9788,10 @@ yyreduce: } break; - case 393: + case 394: /* Line 1806 of yacc.c */ -#line 4214 "Gmsh.y" +#line 4243 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) @@ -9789,38 +9811,38 @@ yyreduce: } break; - case 394: + case 395: /* Line 1806 of yacc.c */ -#line 4235 "Gmsh.y" +#line 4264 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); } break; - case 395: + case 396: /* Line 1806 of yacc.c */ -#line 4240 "Gmsh.y" +#line 4269 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); } break; - case 396: + case 397: /* Line 1806 of yacc.c */ -#line 4244 "Gmsh.y" +#line 4273 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].d))); } break; - case 397: + case 398: /* Line 1806 of yacc.c */ -#line 4248 "Gmsh.y" +#line 4277 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){ double d; @@ -9831,28 +9853,28 @@ yyreduce: } break; - case 398: + case 399: /* Line 1806 of yacc.c */ -#line 4260 "Gmsh.y" +#line 4289 "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 399: + case 400: /* Line 1806 of yacc.c */ -#line 4264 "Gmsh.y" +#line 4293 "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 400: + case 401: /* Line 1806 of yacc.c */ -#line 4276 "Gmsh.y" +#line 4305 "Gmsh.y" { int flag; (yyval.u) = GetColorForString(-1, (yyvsp[(1) - (1)].c), &flag); @@ -9861,10 +9883,10 @@ yyreduce: } break; - case 401: + case 402: /* Line 1806 of yacc.c */ -#line 4283 "Gmsh.y" +#line 4312 "Gmsh.y" { unsigned int val = 0; ColorOption(GMSH_GET, (yyvsp[(1) - (5)].c), 0, (yyvsp[(5) - (5)].c), val); @@ -9873,19 +9895,19 @@ yyreduce: } break; - case 402: + case 403: /* Line 1806 of yacc.c */ -#line 4293 "Gmsh.y" +#line 4322 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); } break; - case 403: + case 404: /* Line 1806 of yacc.c */ -#line 4297 "Gmsh.y" +#line 4326 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (6)].d)); @@ -9899,38 +9921,38 @@ yyreduce: } break; - case 404: + case 405: /* Line 1806 of yacc.c */ -#line 4312 "Gmsh.y" +#line 4341 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); List_Add((yyval.l), &((yyvsp[(1) - (1)].u))); } break; - case 405: + case 406: /* Line 1806 of yacc.c */ -#line 4317 "Gmsh.y" +#line 4346 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].u))); } break; - case 406: + case 407: /* Line 1806 of yacc.c */ -#line 4324 "Gmsh.y" +#line 4353 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); } break; - case 407: + case 408: /* Line 1806 of yacc.c */ -#line 4328 "Gmsh.y" +#line 4357 "Gmsh.y" { if(!gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c))){ yymsg(0, "Unknown string variable '%s'", (yyvsp[(1) - (1)].c)); @@ -9945,10 +9967,10 @@ yyreduce: } break; - case 408: + case 409: /* Line 1806 of yacc.c */ -#line 4341 "Gmsh.y" +#line 4370 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), out); @@ -9958,10 +9980,10 @@ yyreduce: } break; - case 409: + case 410: /* Line 1806 of yacc.c */ -#line 4349 "Gmsh.y" +#line 4378 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), out); @@ -9971,19 +9993,19 @@ yyreduce: } break; - case 410: + case 411: /* Line 1806 of yacc.c */ -#line 4360 "Gmsh.y" +#line 4389 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); } break; - case 411: + case 412: /* Line 1806 of yacc.c */ -#line 4364 "Gmsh.y" +#line 4393 "Gmsh.y" { (yyval.c) = (char *)Malloc(32 * sizeof(char)); time_t now; @@ -9993,10 +10015,10 @@ yyreduce: } break; - case 412: + case 413: /* Line 1806 of yacc.c */ -#line 4372 "Gmsh.y" +#line 4401 "Gmsh.y" { const char *env = GetEnvironmentVar((yyvsp[(3) - (4)].c)); if(!env) env = ""; @@ -10006,10 +10028,10 @@ yyreduce: } break; - case 413: + case 414: /* Line 1806 of yacc.c */ -#line 4380 "Gmsh.y" +#line 4409 "Gmsh.y" { std::string s = Msg::GetString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -10019,10 +10041,10 @@ yyreduce: } break; - case 414: + case 415: /* Line 1806 of yacc.c */ -#line 4388 "Gmsh.y" +#line 4417 "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)); @@ -10032,10 +10054,10 @@ yyreduce: } break; - case 415: + case 416: /* Line 1806 of yacc.c */ -#line 4396 "Gmsh.y" +#line 4425 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -10051,10 +10073,10 @@ yyreduce: } break; - case 416: + case 417: /* Line 1806 of yacc.c */ -#line 4410 "Gmsh.y" +#line 4439 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -10070,19 +10092,19 @@ yyreduce: } break; - case 417: + case 418: /* Line 1806 of yacc.c */ -#line 4424 "Gmsh.y" +#line 4453 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); } break; - case 418: + case 419: /* Line 1806 of yacc.c */ -#line 4428 "Gmsh.y" +#line 4457 "Gmsh.y" { char tmpstring[1024]; int i = PrintListOfDouble((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].l), tmpstring); @@ -10106,7 +10128,7 @@ yyreduce: /* Line 1806 of yacc.c */ -#line 10110 "Gmsh.tab.cpp" +#line 10132 "Gmsh.tab.cpp" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -10337,7 +10359,7 @@ yyreturn: /* Line 2067 of yacc.c */ -#line 4448 "Gmsh.y" +#line 4477 "Gmsh.y" int PrintListOfDouble(char *format, List_T *list, char *buffer) diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index dbda010127584d650e7f4bcd7285c657b74e6429..8b5d746dea45bbb43c57a3ca422823a297179e62 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -3721,23 +3721,27 @@ HomologyCommand : Homology : HomologyCommand tEND { - std::vector<int> domain, subdomain; - GModel::current()->addHomologyRequest($1, domain, subdomain); + std::vector<int> domain, subdomain, dim; + if(GModel::current()->getDim() != 1) dim.push_back(1); + if(GModel::current()->getDim() != 2) dim.push_back(2); + GModel::current()->addHomologyRequest($1, domain, subdomain, dim); } | HomologyCommand '{' ListOfDouble '}' tEND { - std::vector<int> domain, subdomain; + std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr($3); i++){ double d; List_Read($3, i, &d); domain.push_back((int)d); } - GModel::current()->addHomologyRequest($1, domain, subdomain); + if(GModel::current()->getDim() != 1) dim.push_back(1); + if(GModel::current()->getDim() != 2) dim.push_back(2); + GModel::current()->addHomologyRequest($1, domain, subdomain, dim); List_Delete($3); } | HomologyCommand '{' ListOfDouble ',' ListOfDouble '}' tEND { - std::vector<int> domain, subdomain; + std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr($3); i++){ double d; List_Read($3, i, &d); @@ -3748,10 +3752,35 @@ Homology : List_Read($5, i, &d); subdomain.push_back((int)d); } - GModel::current()->addHomologyRequest($1, domain, subdomain); + if(GModel::current()->getDim() != 1) dim.push_back(1); + if(GModel::current()->getDim() != 2) dim.push_back(2); + GModel::current()->addHomologyRequest($1, domain, subdomain, dim); List_Delete($3); List_Delete($5); } + | HomologyCommand '{' ListOfDouble ',' ListOfDouble ',' ListOfDouble '}' tEND + { + std::vector<int> domain, subdomain, dim; + for(int i = 0; i < List_Nbr($3); i++){ + double d; + List_Read($3, i, &d); + domain.push_back((int)d); + } + for(int i = 0; i < List_Nbr($5); i++){ + double d; + List_Read($5, i, &d); + subdomain.push_back((int)d); + } + for(int i = 0; i < List_Nbr($7); i++){ + double d; + List_Read($7, i, &d); + dim.push_back((int)d); + } + GModel::current()->addHomologyRequest($1, domain, subdomain, dim); + List_Delete($3); + List_Delete($5); + List_Delete($7); + } ; // G E N E R A L diff --git a/Plugin/HomologyComputation.cpp b/Plugin/HomologyComputation.cpp index ca7ecbe2e21e831ce87e73f97c2919fad27a30c8..d7cbaf402ab075a2811bdc37fcf94aaafbbe0967 100644 --- a/Plugin/HomologyComputation.cpp +++ b/Plugin/HomologyComputation.cpp @@ -19,13 +19,20 @@ StringXNumber HomologyComputationOptions_Number[] = { {GMSH_FULLRC, "ComputeHomology", NULL, 1.}, - {GMSH_FULLRC, "ComputeCohomology", NULL, 0.} + {GMSH_FULLRC, "ComputeCohomology", NULL, 0.}, + {GMSH_FULLRC, "HomologyPhysicalGroupsBegin", NULL, -1.}, + {GMSH_FULLRC, "CohomologyPhysicalGroupsBegin", NULL, -1.}, + {GMSH_FULLRC, "CreatePostProcessingViews", NULL, 1.}, + {GMSH_FULLRC, "ReductionOmit", NULL, 1.}, + {GMSH_FULLRC, "ReductionCombine", NULL, 1.}, + {GMSH_FULLRC, "PostProcessSmoothen", NULL, 1.} }; StringXString HomologyComputationOptions_String[] = { {GMSH_FULLRC, "DomainPhysicalGroups", NULL, ""}, {GMSH_FULLRC, "SubdomainPhysicalGroups", NULL, ""}, - {GMSH_FULLRC, "DimensionOfChainsToSave", NULL, "1, 2"}, + {GMSH_FULLRC, "ReductionImmunePhysicalGroups", NULL, ""}, + {GMSH_FULLRC, "DimensionOfChainsToSave", NULL, "0, 1, 2, 3"}, {GMSH_FULLRC, "Filename", NULL, "homology.msh"} }; @@ -95,20 +102,29 @@ bool GMSH_HomologyComputationPlugin::parseStringOpt PView *GMSH_HomologyComputationPlugin::execute(PView *v) { - std::string fileName = HomologyComputationOptions_String[3].def; + std::string fileName = HomologyComputationOptions_String[4].def; int hom = (int)HomologyComputationOptions_Number[0].def; int coh = (int)HomologyComputationOptions_Number[1].def; + int hompg = (int)HomologyComputationOptions_Number[2].def; + int cohpg = (int)HomologyComputationOptions_Number[3].def; + bool pviews = (bool)HomologyComputationOptions_Number[4].def; + bool omit = (bool)HomologyComputationOptions_Number[5].def; + bool combine = (bool)HomologyComputationOptions_Number[6].def; + bool smoothen = (bool)HomologyComputationOptions_Number[7].def; std::vector<int> domain; std::vector<int> subdomain; + std::vector<int> imdomain; std::vector<int> dimsave; if(!parseStringOpt(0, domain)) return 0; if(!parseStringOpt(1, subdomain)) return 0; - if(!parseStringOpt(2, dimsave)) return 0; + if(!parseStringOpt(2, imdomain)) return 0; + if(!parseStringOpt(3, dimsave)) return 0; GModel* m = GModel::current(); - Homology* homology = new Homology(m, domain, subdomain); + Homology* homology = new Homology(m, domain, subdomain, imdomain, + true, combine, omit, smoothen); homology->setFileName(fileName); if(hom != 0) homology->findHomologyBasis(); @@ -116,8 +132,14 @@ PView *GMSH_HomologyComputationPlugin::execute(PView *v) for(unsigned int i = 0; i < dimsave.size(); i++) { int dim = dimsave.at(i); - if(dim > -1 && dim < 4 && hom != 0) homology->addChainsToModel(dim); - if(dim > -1 && dim < 4 && coh != 0) homology->addCochainsToModel(dim); + if(dim > -1 && dim < 4 && hom != 0) { + homology->addChainsToModel(dim, pviews, hompg); + if(hompg != -1) hompg += homology->betti(dim); + } + if(dim > -1 && dim < 4 && coh != 0) { + homology->addCochainsToModel(dim, pviews, cohpg); + if(cohpg != -1) cohpg += homology->betti(dim); + } } delete homology;