diff --git a/CMakeLists.txt b/CMakeLists.txt index 60aeefe177..1614dffa5f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -291,7 +291,7 @@ mapgeomtransform.c mapogroutput.cpp mapwfslayer.c mapagg.cpp mapkml.cpp mapgeomutil.cpp mapkmlrenderer.cpp fontcache.c textlayout.c maputfgrid.cpp mapogr.cpp mapcontour.c mapsmoothing.c mapv8.cpp ${REGEX_SOURCES} kerneldensity.c idw.c interpolation.c -mapcompositingfilter.c mapmvt.c mapiconv.c) +mapcompositingfilter.c mapmvt.c mapiconv.c mapgraph.cpp) set(mapserver_HEADERS cgiutil.h dejavu-sans-condensed.h dxfcolor.h fontcache.h hittest.h mapagg.h @@ -300,7 +300,7 @@ maphttp.h mapio.h mapkmlrenderer.h maplibxml2.h mapogcfilter.h mapogcsld.h mapoglcontext.h mapoglrenderer.h mapowscommon.h mapows.h mapparser.h mapogcapi.h mappostgis.h mapprimitive.h mapproject.h mapraster.h mapregex.h mapresample.h mapserver-api.h mapserver.h mapserv.h mapshape.h mapsymbol.h maptemplate.h -mapthread.h maptile.h maptime.h maptree.h maputfgrid.h mapwcs.h uthash.h mapiconv.h) +mapthread.h maptile.h maptime.h maptree.h maputfgrid.h mapwcs.h uthash.h mapiconv.h mapgraph.h) if(WIN32) configure_file( diff --git a/mapgeomtransform.c b/mapgeomtransform.c index fd90a413f1..03b3199095 100644 --- a/mapgeomtransform.c +++ b/mapgeomtransform.c @@ -301,7 +301,9 @@ int msGeomTransformShape(mapObj *map, layerObj *layer, shapeObj *shape) free(shape->line[i].point); shape->numlines = 0; if (shape->line) free(shape->line); - + shape->line = NULL; + shape->type = tmpshp->type; /* might have been a change (e.g. centerline) */ + for(i=0; inumlines; i++) msAddLine(shape, &(tmpshp->line[i])); /* copy each line */ diff --git a/mapgeos.c b/mapgeos.c index 7e4aae8bfa..29146f25c0 100644 --- a/mapgeos.c +++ b/mapgeos.c @@ -28,6 +28,7 @@ *****************************************************************************/ #include "mapserver.h" +#include "mapgraph.h" #ifdef USE_GEOS @@ -1121,6 +1122,209 @@ shapeObj *msGEOSSymDifference(shapeObj *shape1, shapeObj *shape2) #endif } +shapeObj *msGEOSLineMerge(shapeObj *shape) +{ +#ifdef USE_GEOS + GEOSGeom g1, g2; + GEOSContextHandle_t handle = msGetGeosContextHandle(); + + if(!shape) return NULL; + if(shape->type != MS_SHAPE_LINE) return NULL; + + if(!shape->geometry) /* if no geometry for the shape then build one */ + shape->geometry = (GEOSGeom) msGEOSShape2Geometry(shape); + g1 = (GEOSGeom) shape->geometry; + if(!g1) return NULL; + + g2 = GEOSLineMerge_r(handle, g1); + return msGEOSGeometry2Shape(g2); +#else + msSetError(MS_GEOSERR, "GEOS support is not available.", "msGEOSLineMerge()"); + return NULL; +#endif +} + +shapeObj *msGEOSVoronoiDiagram(shapeObj *shape, double tolerance, int onlyEdges) +{ +#if defined(USE_GEOS) && (GEOS_VERSION_MAJOR > 3 || (GEOS_VERSION_MAJOR == 3 && GEOS_VERSION_MINOR >= 5)) + GEOSGeom g1, g2; + GEOSContextHandle_t handle = msGetGeosContextHandle(); + + if(!shape) return NULL; + + if(!shape->geometry) /* if no geometry for the shape then build one */ + shape->geometry = (GEOSGeom) msGEOSShape2Geometry(shape); + g1 = (GEOSGeom) shape->geometry; + if(!g1) return NULL; + + g2 = GEOSVoronoiDiagram_r(handle, g1, NULL, tolerance, onlyEdges); + return msGEOSGeometry2Shape(g2); +#else + msSetError(MS_GEOSERR, "GEOS support is not available or GEOS version is not 3.5 or higher.", "msGEOSVoronoiDiagram()"); + return NULL; +#endif +} + +static int keepEdge(lineObj *segment, shapeObj *polygon) +{ + int i,j; + + if(segment->numpoints<2) return MS_FALSE; + if(msIntersectPointPolygon(&segment->point[0], polygon) != MS_TRUE) return MS_FALSE; + if(msIntersectPointPolygon(&segment->point[1], polygon) != MS_TRUE) return MS_FALSE; + + for(i=0; inumlines; i++) + for(j=1; jline[i].numpoints; j++) + if(msIntersectSegments(&(segment->point[0]), &(segment->point[1]), &(polygon->line[i].point[j-1]), &(polygon->line[i].point[j])) == MS_TRUE) + return(MS_FALSE); + + return(MS_TRUE); +} + +#define ARE_SAME_POINTS(a,b) (((a).x!=(b).x || (a).y!=(b).y)?MS_FALSE:MS_TRUE) + +// returns the index of the node, we use z to store a count of points at the same coordinate +static int buildNodes(multipointObj *nodes, pointObj *point) +{ + int i; + + for(i=0; inumpoints; i++) { + if(ARE_SAME_POINTS(nodes->point[i], *point)) { // found it + nodes->point[i].z++; + return i; + } + } + + // not found, add it + nodes->point[i].x = point->x; + nodes->point[i].y = point->y; + nodes->point[i].z = 1; + nodes->numpoints++; + + return i; +} + +shapeObj *msGEOSCenterline(shapeObj *shape) +{ +#if defined(USE_GEOS) && (GEOS_VERSION_MAJOR > 3 || (GEOS_VERSION_MAJOR == 3 && GEOS_VERSION_MINOR >= 5)) + int i; + shapeObj *shape2=NULL; + + multipointObj nodes; + graphObj *graph; + + int *path=NULL; // array of node indexes + int path_size=0; + double path_dist=-1, max_path_dist=-1; + + if(!shape) return NULL; + if(shape->type != MS_SHAPE_POLYGON) { + msSetError(MS_GEOSERR, "Centerlines can only be computed for polygon shapes.", "msGEOSCenterline()"); + return NULL; + } + + shape2 = msGEOSVoronoiDiagram(shape, 0.0, MS_TRUE); + if(!shape2) { + msSetError(MS_GEOSERR, "Voronoi diagram generation failed.", "msGEOSCenterline()"); + return NULL; + } + + // process the edges and build a graph representation + nodes.point = (pointObj *) malloc(shape2->numlines*sizeof(pointObj)*2); + nodes.numpoints = 0; + if(!nodes.point) { + msFreeShape(shape2); + free(shape2); + return NULL; + } + + graph = msCreateGraph(shape2->numlines*2); + if(!graph) { + msFreeShape(shape2); + free(shape2); + free(nodes.point); + return NULL; + } + + for(i=0; inumlines; i++) { + if(keepEdge(&shape2->line[i], shape) == MS_TRUE) { + int src = buildNodes(&nodes, &shape2->line[i].point[0]); + int dest = buildNodes(&nodes, &shape2->line[i].point[1]); + msGraphAddEdge(graph, src, dest, msDistancePointToPoint(&shape2->line[i].point[0], &shape2->line[i].point[1])); + } + } + msFreeShape(shape2); // done with voronoi geometry, shape2 is still allocated though, just empty + shape2->type = MS_SHAPE_LINE; // will fill with centerline + + if(nodes.numpoints == 0) { + msSetError(MS_GEOSERR, "Centerline generation failed, try densifying the shapes.", "msGEOSCenterline()"); + free(shape2); + msFreeGraph(graph); + free(nodes.point); + return NULL; + } + + // step through edge nodes (z=1) + for(i=0; i max_path_dist) { + free(path); + path = tmp_path; + path_size = tmp_path_size; + path_dist = tmp_path_dist; + max_path_dist = tmp_path_dist; + } else { // skip path + msFree(tmp_path); + } + } + } + msFreeGraph(graph); // done with graph + + // transform the path into a shape + if(!path) { + msSetError(MS_GEOSERR, "Centerline generation failed.", "msGEOSCenterline()"); + free(shape2); + free(nodes.point); + return NULL; + } else { + lineObj line; + line.point = (pointObj *) malloc(path_size*sizeof(pointObj)); + if(!line.point) { + free(shape2); + free(path); + free(nodes.point); + return NULL; + } + line.numpoints = path_size; + + for(i=0; i // for std::swap + +graphObj *msCreateGraph(signed int numnodes) +{ + graphObj *graph=nullptr; + + if(numnodes <= 0) return nullptr; + + graph = (graphObj *) malloc(sizeof(graphObj)); + if(!graph) return nullptr; + + graph->head = (graphNodeObj **) calloc(numnodes, sizeof(graphNodeObj)); + if(!graph->head) { + free(graph); + return nullptr; + } + graph->numnodes = numnodes; + + return graph; +} + +void msFreeGraph(graphObj *graph) +{ + if(!graph) return; + + graphNodeObj *tmp=nullptr; + + for(int i=0; inumnodes; i++) { + while(graph->head[i] != nullptr) { + tmp = graph->head[i]; + graph->head[i] = graph->head[i]->next; + free(tmp); + } + } + + free(graph->head); + free(graph); +} + +int msGraphAddEdge(graphObj *graph, int src, int dest, double weight) +{ + graphNodeObj *node=nullptr; + + if(!graph) return MS_FAILURE; + + // src -> dest + node = (graphNodeObj *) malloc(sizeof(graphNodeObj)); + if(!node) return MS_FAILURE; + + node->dest = dest; + node->weight = weight; + node->next = graph->head[src]; + graph->head[src] = node; + + // dest -> src + node = (graphNodeObj *) malloc(sizeof(graphNodeObj)); + if(!node) return MS_FAILURE; + + node->dest = src; + node->weight = weight; + node->next = graph->head[dest]; + graph->head[dest] = node; + + return MS_SUCCESS; +} + +void msPrintGraph(graphObj *graph) +{ + int i; + + if(!graph) return; + + for(i=0; inumnodes; i++) { + graphNodeObj *node = graph->head[i]; + if(node != nullptr) { + do { + msDebug("%d -> %d (%.6f)\t", i, node->dest, node->weight); + node = node->next; + } while (node != nullptr); + msDebug("\n"); + } + } +} + +/* +** Derived from an number web resources including: +** +** https://www.geeksforgeeks.org/dijkstras-algorithm-for-adjacency-list-representation-greedy-algo-8/ +** https://youtube.com/watch?v=pSqmAO-m7Lk +** https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm +** +** Much of the bulk here is for min-heap (key,value) management. +*/ + +typedef struct { + int idx; + double dist; +} minHeapNodeObj; + +typedef struct { + int size; + int capacity; + int *pos; + minHeapNodeObj **nodes; +} minHeapObj; + +static minHeapNodeObj *newMinHeapNode(int idx, double dist) +{ + minHeapNodeObj *node = (minHeapNodeObj *) malloc(sizeof(minHeapNodeObj)); + if(!node) return nullptr; + node->idx = idx; + node->dist = dist; + return node; +} + +static void freeMinHeap(minHeapObj *minHeap) +{ + if(!minHeap) return; + + free(minHeap->pos); + for(int i=0; isize; i++) { + free(minHeap->nodes[i]); + } + free(minHeap->nodes); + free(minHeap); +} + +static minHeapObj *createMinHeap(signed int capacity) +{ + minHeapObj *minHeap = (minHeapObj *) malloc(sizeof(minHeapObj)); + if(!minHeap) return nullptr; + + minHeap->pos = (int *) malloc(capacity * sizeof(int)); + if(!minHeap->pos) { + free(minHeap); + return nullptr; + } + minHeap->size = 0; + minHeap->capacity = capacity; + minHeap->nodes = (minHeapNodeObj **) malloc(capacity * sizeof(minHeapNodeObj *)); + if(!minHeap->nodes) { + free(minHeap->pos); + free(minHeap); + return nullptr; + } + return minHeap; +} + +static void minHeapify(minHeapObj *minHeap, int idx) +{ + int smallest = idx; + const int left = 2*idx + 1; + const int right = 2*idx + 2; + + if (left < minHeap->size && minHeap->nodes[left]->dist < minHeap->nodes[smallest]->dist) + smallest = left; + + if (right < minHeap->size && minHeap->nodes[right]->dist < minHeap->nodes[smallest]->dist) + smallest = right; + + if (smallest != idx) { + minHeapNodeObj *smallestNode = minHeap->nodes[smallest]; + minHeapNodeObj *idxNode = minHeap->nodes[idx]; + + minHeap->pos[smallestNode->idx] = idx; // swap positions + minHeap->pos[idxNode->idx] = smallest; + + std::swap(minHeap->nodes[smallest], minHeap->nodes[idx]); // swap nodes + minHeapify(minHeap, smallest); + } +} + +static bool isEmpty(const minHeapObj *minHeap) +{ + return minHeap->size == 0; +} + +static minHeapNodeObj *extractMin(minHeapObj *minHeap) +{ + if (isEmpty(minHeap)) return nullptr; + + // store root node + minHeapNodeObj *root = minHeap->nodes[0]; + + // replace root node with last node + minHeapNodeObj *lastNode = minHeap->nodes[minHeap->size - 1]; + minHeap->nodes[0] = lastNode; + + // update position of last node + minHeap->pos[root->idx] = minHeap->size - 1; + minHeap->pos[lastNode->idx] = 0; + + // Reduce heap size and heapify root + --minHeap->size; + minHeapify(minHeap, 0); + + return root; +} + +static void decreaseKey(minHeapObj *minHeap, int idx, int dist) +{ + // get the index of idx in min heap nodes + int i = minHeap->pos[idx]; + + // get the node and update its dist value + minHeap->nodes[i]->dist = dist; + + // travel up while the complete tree is not hepified (this is a O(Logn) loop) + while (i && minHeap->nodes[i]->dist < minHeap->nodes[(i - 1) / 2]->dist) { + // swap this node with its parent + minHeap->pos[minHeap->nodes[i]->idx] = (i-1)/2; + minHeap->pos[minHeap->nodes[(i-1)/2]->idx] = i; + std::swap(minHeap->nodes[i], minHeap->nodes[(i - 1) / 2]); + + // move to parent index + i = (i - 1) / 2; + } +} + +static bool isInMinHeap(const minHeapObj *minHeap, int idx) +{ + return minHeap->pos[idx] < minHeap->size; +} + +typedef struct { + double *dist; + int *prev; +} dijkstraOutputObj; + +static dijkstraOutputObj *dijkstra(graphObj *graph, int src) +{ + int n = graph->numnodes; + + minHeapObj *minHeap = createMinHeap(n); // priority queue implemented as a min heap structure + if(!minHeap) return nullptr; + + dijkstraOutputObj *output = nullptr; + output = (dijkstraOutputObj *) malloc(sizeof(dijkstraOutputObj)); + output->dist = (double *) malloc(n * sizeof(double)); + output->prev = (int *) malloc(n * sizeof(int)); + if(!output->dist || !output->prev) { + msFree(output->dist); + msFree(output->prev); + free(output); + freeMinHeap(minHeap); + return nullptr; + } + + // initialize + for (int i=0; idist[i] = HUGE_VAL; + output->prev[i] = -1; + minHeap->nodes[i] = newMinHeapNode(i, output->dist[i]); // allocate a min heap node for each graph node + minHeap->pos[i] = i; + } + + // make dist value of src vertex as 0 so that it is extracted first + minHeap->pos[src] = src; + output->dist[src] = 0; + decreaseKey(minHeap, src, output->dist[src]); + + // initially size of min heap is equal to graph->numnodes (n) + minHeap->size = n; + + // In the following loop, minHeap contains all nodes + // whose shortest distance is not yet finalized. + while (!isEmpty(minHeap)) { + + // extract the vertex with minimum distance value and store the node index + minHeapNodeObj *minHeapNode = extractMin(minHeap); + int u = minHeapNode->idx; + free(minHeapNode); // done with this node + + // traverse through all adjacent nodes of u and update their distance values + graphNodeObj *node = graph->head[u]; + while (node != nullptr) { + int v = node->dest; + + // if shortest distance to v is not finalized yet, and distance to v + // through u is less than its previously calculated distance + if (isInMinHeap(minHeap, v) && output->dist[u] != HUGE_VAL && node->weight + output->dist[u] < output->dist[v]) { + output->dist[v] = output->dist[u] + node->weight; + output->prev[v] = u; + decreaseKey(minHeap, v, output->dist[v]); + } + node = node->next; + } + } + + freeMinHeap(minHeap); + + return output; +} + +int *msGraphGetLongestShortestPath(graphObj *graph, int src, int *path_size, double *path_dist) +{ + if(!graph || src < 0 || src > graph->numnodes) return nullptr; + + int* path = (int *) malloc((graph->numnodes)*sizeof(int)); // worst case is path traverses all nodes + if(!path) return nullptr; + + dijkstraOutputObj *output = dijkstra(graph, src); + if(!output) { + free(path); + return nullptr; // algorithm failed for some reason + } + + // get longest shortest distance from src to another node (our dest) + *path_dist = -1; + int dest = -1; + for(int i=0; inumnodes; i++) { + if(output->dist[i] != HUGE_VAL && *path_dist < output->dist[i]) { + *path_dist = output->dist[i]; + dest = i; + } + } + + if(dest == -1) { // unable to determine destination node + free(path); + free(output->dist); + free(output->prev); + free(output); + return nullptr; + } + + // construct the path from src to dest + int j = 0; + for(int i=dest; i!=-1; i=output->prev[i],j++) path[j] = i; + std::reverse(path, path + j); + *path_size = j; + + // clean up dijkstra output + free(output->dist); + free(output->prev); + free(output); + + return path; +} diff --git a/mapgraph.h b/mapgraph.h new file mode 100644 index 0000000000..e05401d3c4 --- /dev/null +++ b/mapgraph.h @@ -0,0 +1,59 @@ +/****************************************************************************** + * $Id$ + * + * Project: MapServer + * Purpose: Declarations for basic undirected, wighted graph support. + * Author: Steve Lime and the MapServer team. + * + ****************************************************************************** + * Copyright (c) 1996-2005 Regents of the University of Minnesota. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies of this Software or works derived from this Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************/ + +#ifndef MAPGRAPH_H +#define MAPGRAPH_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct graphNodeObj { + int dest; + double weight; + struct graphNodeObj *next; +} graphNodeObj; + +typedef struct { + int numnodes; + struct graphNodeObj **head; +} graphObj; + +graphObj *msCreateGraph(int numnodes); +void msFreeGraph(graphObj *graph); +int msGraphAddEdge(graphObj *graph, int src, int dest, double weight); +void msPrintGraph(graphObj *graph); + +int *msGraphGetLongestShortestPath(graphObj *graph, int src, int *path_size, double *path_dist); + +#ifdef __cplusplus +} +#endif + +#endif /* MAPGRAPH_H */ diff --git a/maplexer.c b/maplexer.c index b46cf19bc9..d8ce095da0 100644 --- a/maplexer.c +++ b/maplexer.c @@ -1,6 +1,6 @@ -#line 2 "maplexer.c" +#line 2 "/vagrant/maplexer.c" -#line 4 "maplexer.c" +#line 4 "/vagrant/maplexer.c" #define YY_INT_ALIGNED short int @@ -611,8 +611,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 341 -#define YY_END_OF_BUFFER 342 +#define YY_NUM_RULES 345 +#define YY_END_OF_BUFFER 346 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -620,223 +620,225 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1953] = +static const flex_int16_t yy_accept[1975] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 342, 339, 1, 337, 330, 2, - 339, 339, 323, 336, 323, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 339, - 339, 339, 338, 338, 8, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, - 1, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 340, 1, 1, 11, 335, 340, 335, 340, - - 324, 324, 15, 12, 14, 340, 340, 340, 340, 340, + 0, 0, 0, 0, 346, 343, 1, 341, 334, 2, + 343, 343, 327, 340, 327, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 338, 18, 338, 341, 1, 341, - 341, 333, 331, 331, 332, 5, 7, 6, 1, 2, - 0, 328, 323, 323, 336, 323, 336, 0, 3, 336, - 2, 323, 0, 336, 336, 336, 336, 336, 336, 336, - 336, 240, 336, 336, 336, 244, 336, 245, 336, 336, - 250, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 264, 336, - - 336, 267, 268, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 279, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 219, - 336, 336, 305, 306, 336, 307, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 0, 316, 0, 329, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 343, + 343, 343, 342, 342, 8, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 1, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 344, 1, 1, 11, 339, 344, 339, 344, + + 328, 328, 15, 12, 14, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 342, 18, 342, 345, 1, 345, + 345, 337, 335, 335, 336, 5, 7, 6, 1, 2, + 0, 332, 327, 327, 340, 327, 340, 0, 3, 340, + 2, 327, 0, 340, 340, 340, 340, 340, 340, 340, + 340, 244, 340, 340, 340, 248, 340, 249, 340, 340, + 254, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 268, 340, + + 340, 271, 272, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 283, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 223, + 340, 340, 309, 310, 340, 311, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 0, 320, 0, 333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 315, 336, 336, 244, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 319, 340, 340, 248, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 336, 336, 279, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 13, 0, - 10, 0, 324, 324, 324, 0, 324, 0, 17, 19, + 340, 340, 283, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 13, 0, + 10, 0, 328, 328, 328, 0, 328, 0, 17, 19, 12, 16, 0, 0, 0, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 16, 14, 21, 0, 17, 0, - 15, 0, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 320, 0, 0, 325, 20, - 0, 334, 0, 333, 331, 331, 332, 5, 4, 323, - 0, 0, 336, 323, 0, 327, 336, 327, 2, 2, - 2, 323, 0, 0, 323, 336, 336, 336, 336, 336, - - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 246, 336, 336, - 336, 336, 336, 336, 336, 336, 82, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 97, - 336, 336, 336, 336, 336, 336, 336, 336, 259, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 136, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 277, 278, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 299, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 230, 312, - 336, 232, 313, 336, 61, 0, 0, 0, 0, 0, - 0, 0, 0, 136, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 230, 0, 314, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 277, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 0, 0, 0, 0, 0, 324, 324, 0, 0, 324, + 0, 0, 12, 0, 0, 0, 16, 14, 21, 0, + 17, 0, 15, 0, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, + 0, 329, 20, 0, 338, 0, 337, 335, 335, 336, + 5, 4, 327, 0, 0, 340, 327, 0, 331, 340, + 331, 2, 2, 2, 327, 0, 0, 327, 340, 340, + + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 250, 340, 340, 340, 340, 340, 340, 340, 340, 86, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 101, 340, 340, 340, 340, 340, 340, 340, + 340, 263, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 140, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 281, 282, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 303, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 234, 316, 340, 236, 317, 340, 65, 0, 0, + 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 234, 0, 318, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 281, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 0, 0, 0, 0, 0, 328, 328, + 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, + 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 327, 330, 330, 2, 2, 2, 0, 327, 340, + 340, 340, 340, 340, 239, 340, 340, 340, 340, 340, + 340, 340, 243, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 80, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 258, 340, 340, + 340, 96, 340, 340, 340, 100, 340, 340, 340, 103, + + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 119, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 269, 340, 270, 340, 143, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 174, 340, 279, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 206, 340, 340, 340, + + 340, 340, 340, 340, 218, 340, 305, 340, 340, 340, + 340, 307, 228, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 237, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 206, 0, 0, 0, + 340, 340, 340, 80, 340, 96, 340, 340, 340, 340, + 340, 206, 340, 340, 307, 325, 0, 328, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 323, 326, 326, 2, 2, 2, - 0, 323, 336, 336, 336, 336, 336, 235, 336, 336, - 336, 336, 336, 336, 336, 239, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 76, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 254, 336, 336, 336, 92, 336, 336, 336, 96, 336, - 336, 336, 99, 336, 336, 336, 336, 336, 336, 336, - - 336, 336, 336, 336, 115, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 265, 336, 266, 336, 139, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 170, 336, - 275, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 202, - 336, 336, 336, 336, 336, 336, 336, 214, 336, 301, - - 336, 336, 336, 336, 303, 224, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 233, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, - 0, 0, 0, 336, 336, 336, 76, 336, 92, 336, - 336, 336, 336, 336, 202, 336, 336, 303, 321, 0, - 324, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, - 0, 0, 322, 2, 54, 336, 56, 336, 336, 236, - 336, 336, 237, 336, 336, 336, 336, 336, 336, 242, - - 336, 65, 336, 69, 336, 336, 336, 336, 336, 336, - 336, 78, 336, 336, 336, 336, 252, 80, 336, 83, - 336, 336, 253, 336, 336, 336, 336, 336, 336, 94, - 336, 336, 256, 336, 336, 102, 257, 336, 336, 104, - 336, 336, 112, 336, 336, 181, 336, 336, 336, 336, - 336, 119, 263, 336, 129, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 272, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 273, 336, 248, 336, 336, 336, 336, 336, 336, 336, - - 336, 336, 336, 336, 336, 336, 336, 336, 286, 336, - 336, 336, 336, 336, 336, 336, 336, 290, 336, 336, - 336, 336, 336, 336, 336, 336, 292, 293, 195, 336, - 336, 336, 336, 336, 336, 297, 336, 336, 205, 336, - 211, 336, 336, 336, 336, 218, 336, 336, 336, 336, - 308, 225, 336, 336, 336, 336, 336, 336, 231, 56, - 65, 0, 0, 0, 119, 129, 0, 0, 0, 0, - 0, 0, 205, 0, 225, 336, 69, 336, 336, 336, - 336, 336, 336, 336, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, - - 0, 28, 0, 26, 0, 0, 0, 0, 27, 0, - 0, 0, 0, 336, 336, 336, 336, 336, 336, 238, - 336, 63, 241, 336, 243, 336, 336, 336, 336, 336, - 72, 336, 73, 336, 336, 336, 336, 336, 336, 79, - 336, 336, 336, 336, 85, 336, 88, 89, 255, 336, - 91, 336, 336, 336, 336, 103, 260, 336, 336, 336, - 336, 336, 261, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 128, 130, 131, 336, - 336, 137, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 269, 336, 270, 336, 336, - - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 276, 171, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 285, 284, 289, 180, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 291, 336, 190, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 295, 296, 336, 298, 204, 336, 207, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 229, 311, 0, 85, 0, 0, - 131, 0, 0, 0, 0, 0, 0, 336, 207, 336, - 46, 31, 0, 0, 0, 0, 0, 0, 45, 0, - - 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, - 0, 43, 0, 0, 0, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 68, 336, 336, 336, 336, - 310, 336, 336, 249, 336, 251, 336, 336, 336, 87, - 336, 93, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 111, 336, 336, 336, 336, 117, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 133, 336, 336, 140, - 336, 336, 336, 336, 336, 336, 336, 336, 149, 336, - 336, 336, 336, 336, 155, 336, 336, 336, 336, 336, - 336, 336, 166, 336, 336, 336, 336, 336, 172, 336, - - 173, 336, 336, 336, 336, 179, 336, 336, 287, 336, - 288, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 217, 336, - 336, 336, 336, 336, 226, 227, 336, 336, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 336, 336, 25, - 0, 42, 0, 0, 47, 0, 0, 0, 29, 0, - 0, 0, 0, 0, 0, 40, 0, 0, 317, 336, - 336, 336, 336, 336, 60, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 81, 336, 336, 336, - - 336, 336, 336, 100, 336, 336, 336, 336, 110, 336, - 336, 336, 116, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 134, 336, 336, 336, 336, 336, 336, 336, - 336, 145, 336, 336, 152, 153, 154, 336, 336, 336, - 336, 336, 336, 162, 336, 336, 169, 274, 336, 336, - 336, 336, 336, 336, 336, 178, 336, 336, 182, 336, - 336, 184, 336, 336, 336, 188, 336, 336, 336, 336, - 192, 336, 197, 336, 336, 294, 336, 336, 336, 336, - 336, 336, 336, 212, 109, 336, 216, 336, 336, 336, - 302, 304, 309, 336, 0, 0, 0, 0, 188, 0, - - 0, 197, 0, 336, 212, 44, 0, 39, 30, 48, - 0, 0, 0, 41, 33, 0, 24, 0, 0, 336, - 336, 57, 336, 59, 336, 64, 336, 66, 336, 336, - 71, 336, 336, 52, 336, 336, 86, 336, 336, 336, - 101, 336, 107, 108, 106, 336, 114, 336, 336, 336, - 336, 336, 122, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 148, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 165, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 53, 189, 336, 336, 336, 336, 336, 336, - - 336, 201, 203, 206, 336, 210, 336, 215, 220, 223, - 336, 336, 0, 0, 106, 0, 189, 0, 0, 336, - 0, 0, 0, 0, 0, 36, 0, 0, 336, 234, - 336, 336, 67, 51, 70, 74, 336, 336, 84, 90, - 336, 336, 105, 113, 336, 118, 262, 120, 336, 336, - 336, 336, 336, 336, 138, 141, 336, 336, 336, 336, - 336, 336, 336, 336, 156, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 280, 336, 336, 336, 336, 336, - 336, 247, 336, 185, 186, 336, 191, 336, 193, 196, - 198, 336, 200, 336, 336, 336, 336, 228, 0, 105, - - 186, 193, 0, 74, 32, 35, 38, 37, 34, 0, - 0, 55, 336, 336, 336, 336, 77, 336, 336, 336, - 336, 121, 336, 336, 336, 336, 336, 142, 143, 147, - 144, 336, 336, 336, 151, 157, 336, 164, 161, 336, - 336, 168, 336, 281, 336, 336, 336, 336, 283, 300, - 336, 187, 336, 199, 208, 336, 336, 222, 0, 222, - 0, 0, 336, 62, 336, 336, 336, 95, 336, 336, - 336, 336, 336, 132, 336, 336, 336, 150, 336, 336, - 167, 336, 336, 175, 176, 177, 336, 336, 336, 336, - 336, 0, 0, 0, 336, 336, 336, 194, 98, 258, - - 123, 125, 127, 336, 336, 146, 336, 163, 271, 282, - 336, 336, 336, 336, 336, 194, 0, 0, 336, 336, - 75, 336, 336, 336, 336, 160, 183, 158, 336, 336, - 221, 0, 318, 58, 336, 336, 336, 135, 159, 336, - 213, 319, 336, 336, 336, 209, 174, 336, 336, 124, - 126, 0 + 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, + 0, 0, 0, 326, 2, 58, 340, 60, 340, 340, + + 240, 340, 340, 241, 340, 340, 340, 340, 340, 340, + 246, 340, 69, 340, 73, 340, 340, 340, 340, 340, + 340, 340, 82, 340, 340, 340, 340, 256, 84, 340, + 87, 340, 340, 257, 340, 340, 340, 340, 340, 340, + 98, 340, 340, 260, 340, 340, 106, 261, 340, 340, + 108, 340, 340, 116, 340, 340, 185, 340, 340, 340, + 340, 340, 123, 267, 340, 133, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 276, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + + 340, 277, 340, 252, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 290, + 340, 340, 340, 340, 340, 340, 340, 340, 294, 340, + 340, 340, 340, 340, 340, 340, 340, 296, 297, 199, + 340, 340, 340, 340, 340, 340, 301, 340, 340, 209, + 340, 215, 340, 340, 340, 340, 222, 340, 340, 340, + 340, 312, 229, 340, 340, 340, 340, 340, 340, 235, + 60, 69, 0, 0, 0, 123, 133, 0, 0, 0, + 0, 0, 0, 209, 0, 229, 340, 73, 340, 340, + 340, 340, 340, 340, 340, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, + 0, 40, 0, 0, 0, 28, 39, 0, 26, 0, + 0, 0, 0, 27, 0, 0, 0, 0, 340, 340, + 340, 340, 340, 340, 242, 340, 67, 245, 340, 247, + 340, 340, 340, 340, 340, 76, 340, 77, 340, 340, + 340, 340, 340, 340, 83, 340, 340, 340, 340, 89, + 340, 92, 93, 259, 340, 95, 340, 340, 340, 340, + 107, 264, 340, 340, 340, 340, 340, 265, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 132, 134, 135, 340, 340, 141, 340, 340, 340, + + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 273, 340, 274, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 280, 175, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 289, + 288, 293, 184, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 295, 340, 194, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 299, 300, + 340, 302, 208, 340, 211, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 233, + 315, 0, 89, 0, 0, 135, 0, 0, 0, 0, + + 0, 0, 340, 211, 340, 50, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, + 0, 0, 23, 0, 0, 0, 0, 0, 47, 0, + 0, 0, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 72, 340, 340, 340, 340, 314, 340, 340, + 253, 340, 255, 340, 340, 340, 91, 340, 97, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 115, 340, + 340, 340, 340, 121, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 137, 340, 340, 144, 340, 340, 340, + 340, 340, 340, 340, 340, 153, 340, 340, 340, 340, + + 340, 159, 340, 340, 340, 340, 340, 340, 340, 170, + 340, 340, 340, 340, 340, 176, 340, 177, 340, 340, + 340, 340, 183, 340, 340, 291, 340, 292, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 221, 340, 340, 340, 340, + 340, 230, 231, 340, 340, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 340, 340, 0, 25, 0, 46, + 38, 0, 0, 51, 0, 0, 0, 29, 0, 0, + 0, 0, 0, 0, 44, 0, 0, 321, 340, 340, + + 340, 340, 340, 64, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 85, 340, 340, 340, 340, + 340, 340, 104, 340, 340, 340, 340, 114, 340, 340, + 340, 120, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 138, 340, 340, 340, 340, 340, 340, 340, 340, + 149, 340, 340, 156, 157, 158, 340, 340, 340, 340, + 340, 340, 166, 340, 340, 173, 278, 340, 340, 340, + 340, 340, 340, 340, 182, 340, 340, 186, 340, 340, + 188, 340, 340, 340, 192, 340, 340, 340, 340, 196, + 340, 201, 340, 340, 298, 340, 340, 340, 340, 340, + + 340, 340, 216, 113, 340, 220, 340, 340, 340, 306, + 308, 313, 340, 0, 0, 0, 0, 192, 0, 0, + 201, 0, 340, 216, 0, 48, 0, 43, 30, 52, + 0, 0, 0, 45, 33, 0, 24, 0, 0, 340, + 340, 61, 340, 63, 340, 68, 340, 70, 340, 340, + 75, 340, 340, 56, 340, 340, 90, 340, 340, 340, + 105, 340, 111, 112, 110, 340, 118, 340, 340, 340, + 340, 340, 126, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 152, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 169, 340, 340, 340, 340, 340, + + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 57, 193, 340, 340, 340, 340, 340, 340, + 340, 205, 207, 210, 340, 214, 340, 219, 224, 227, + 340, 340, 0, 0, 110, 0, 193, 0, 0, 340, + 0, 0, 0, 0, 0, 0, 36, 0, 0, 340, + 238, 340, 340, 71, 55, 74, 78, 340, 340, 88, + 94, 340, 340, 109, 117, 340, 122, 266, 124, 340, + 340, 340, 340, 340, 340, 142, 145, 340, 340, 340, + 340, 340, 340, 340, 340, 160, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 284, 340, 340, 340, 340, + + 340, 340, 251, 340, 189, 190, 340, 195, 340, 197, + 200, 202, 340, 204, 340, 340, 340, 340, 232, 0, + 109, 190, 197, 0, 78, 37, 32, 35, 42, 41, + 34, 0, 0, 59, 340, 340, 340, 340, 81, 340, + 340, 340, 340, 125, 340, 340, 340, 340, 340, 146, + 147, 151, 148, 340, 340, 340, 155, 161, 340, 168, + 165, 340, 340, 172, 340, 285, 340, 340, 340, 340, + 287, 304, 340, 191, 340, 203, 212, 340, 340, 226, + 0, 226, 0, 0, 340, 66, 340, 340, 340, 99, + 340, 340, 340, 340, 340, 136, 340, 340, 340, 154, + + 340, 340, 171, 340, 340, 179, 180, 181, 340, 340, + 340, 340, 340, 0, 0, 0, 340, 340, 340, 198, + 102, 262, 127, 129, 131, 340, 340, 150, 340, 167, + 275, 286, 340, 340, 340, 340, 340, 198, 0, 0, + 340, 340, 79, 340, 340, 340, 340, 164, 187, 162, + 340, 340, 225, 0, 322, 62, 340, 340, 340, 139, + 163, 340, 217, 323, 340, 340, 340, 213, 178, 340, + 340, 128, 130, 0 } ; static const YY_CHAR yy_ec[256] = @@ -884,449 +886,457 @@ static const YY_CHAR yy_meta[89] = 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[1980] = +static const flex_int16_t yy_base[2002] = { 0, 0, 0, 86, 172, 260, 0, 348, 0, 89, 93, - 97, 99, 98, 102, 1000, 4711, 115, 4711, 4711, 0, - 979, 115, 119, 436, 151, 127, 430, 499, 162, 428, + 97, 99, 98, 102, 996, 4748, 115, 4748, 4748, 0, + 978, 115, 119, 436, 151, 127, 430, 499, 162, 428, 504, 511, 173, 424, 54, 114, 553, 554, 168, 560, - 599, 80, 614, 658, 664, 650, 442, 710, 0, 933, - 899, 863, 4711, 4711, 4711, 98, 116, 126, 162, 183, + 599, 80, 614, 658, 664, 650, 442, 710, 0, 934, + 900, 883, 4748, 4748, 4748, 98, 116, 126, 162, 183, 444, 200, 185, 408, 445, 709, 435, 440, 450, 461, 179, 783, 604, 457, 772, 623, 479, 777, 581, 501, 775, 521, 792, 586, 509, 819, 821, 717, 829, 868, - 837, 561, 4711, 254, 546, 914, 874, 906, 835, 641, - - 681, 740, 859, 574, 856, 782, 703, 845, 634, 498, - 875, 845, 507, 619, 882, 874, 856, 606, 886, 857, - 691, 716, 908, 137, 793, 817, 4711, 4711, 659, 815, - 807, 0, 718, 739, 504, 0, 4711, 797, 823, 0, - 762, 748, 927, 943, 0, 939, 950, 740, 4711, 1002, - 1090, 959, 965, 776, 994, 778, 964, 781, 990, 883, - 997, 0, 886, 915, 901, 973, 999, 0, 918, 956, - 0, 1013, 997, 1004, 1080, 1017, 1000, 1006, 1011, 1084, - 1012, 1079, 1012, 1067, 1077, 1094, 1097, 1079, 1099, 1089, - 1079, 1102, 1136, 1099, 1096, 1139, 1095, 1140, 0, 1140, - - 1130, 0, 0, 1143, 1159, 1187, 1154, 1155, 1190, 1167, - 1176, 1165, 1179, 1185, 1201, 1184, 1188, 1191, 1194, 1198, - 1217, 1212, 1215, 1209, 1249, 1215, 1220, 1242, 1232, 1244, - 1256, 1245, 1226, 1263, 1241, 1249, 1261, 1260, 1269, 1259, - 1289, 1264, 0, 0, 1276, 0, 1285, 1285, 1293, 1303, - 1305, 1289, 1305, 1297, 1299, 1322, 676, 4711, 625, 621, - 581, 1317, 1324, 1320, 1307, 1327, 1328, 1324, 1316, 1318, - 1330, 1341, 1341, 1317, 1319, 1344, 1337, 1348, 563, 1356, - 4711, 1372, 1362, 1366, 1356, 1349, 1365, 1370, 1376, 1367, - 1370, 1392, 1373, 1388, 1406, 1365, 1391, 1388, 1377, 1393, - - 1387, 1406, 0, 1396, 1402, 1403, 1422, 1414, 1413, 1431, - 1407, 1433, 1429, 1431, 1436, 1433, 1428, 1441, 4711, 559, - 4711, 551, 1472, 1489, 1493, 974, 1495, 1501, 4711, 4711, - 4711, 4711, 1448, 1465, 1446, 1468, 1490, 1463, 1493, 1486, - 1485, 1495, 1492, 1496, 1499, 4711, 1507, 1492, 1501, 1494, - 4711, 1498, 4711, 1514, 1499, 1508, 1507, 1535, 1503, 1512, - 1512, 548, 1532, 1538, 1549, 4711, 500, 199, 4711, 4711, - 503, 4711, 474, 0, 4711, 4711, 4711, 0, 4711, 1570, - 1577, 573, 588, 637, 438, 1531, 1629, 1551, 177, 1717, - 1805, 1585, 1601, 695, 735, 1567, 1586, 1587, 1585, 1592, - - 1587, 1592, 1600, 1617, 1620, 1615, 1613, 1631, 1618, 1619, - 1622, 1638, 1623, 1624, 1629, 1629, 1704, 0, 1645, 1626, - 1708, 1626, 1640, 1645, 1631, 1637, 0, 1639, 1694, 1711, - 1700, 1700, 1701, 1710, 1711, 1705, 1707, 1725, 1716, 0, - 1718, 1718, 1713, 1730, 1714, 1733, 1733, 1730, 0, 1735, - 1792, 1780, 1777, 1793, 1786, 1792, 1793, 1799, 1794, 1805, - 1804, 1800, 1808, 1811, 1797, 1814, 1815, 0, 1810, 1811, - 1870, 1814, 1855, 1819, 1821, 1924, 1822, 1827, 1844, 1868, - 1855, 1875, 1868, 1864, 0, 237, 1881, 1883, 1906, 1868, - 1876, 1895, 1896, 1916, 1920, 1938, 1926, 1922, 1935, 1923, - - 1935, 1928, 1945, 1942, 1951, 1950, 1937, 1945, 1963, 1966, - 1972, 1980, 1983, 1972, 1983, 1987, 1981, 1994, 1976, 1985, - 0, 1996, 1988, 1985, 1983, 1999, 1980, 1994, 2002, 1994, - 2008, 2005, 2007, 2002, 2016, 2012, 2024, 2022, 0, 0, - 2026, 0, 0, 2031, 4711, 2037, 2031, 2034, 2049, 2048, - 2052, 2053, 2054, 4711, 2050, 2043, 2057, 2048, 2053, 2061, - 2055, 2054, 2049, 4711, 196, 4711, 2051, 2056, 2058, 2073, - 2074, 2074, 2062, 2064, 2080, 2087, 2095, 2102, 2103, 2090, - 2099, 2107, 2102, 2108, 2115, 2115, 2119, 2106, 2118, 2104, - 189, 703, 181, 924, 745, 977, 2132, 1670, 1113, 1115, - - 2124, 2114, 2124, 2118, 2112, 2114, 2128, 2126, 2121, 2143, - 2127, 2130, 2144, 2153, 2139, 2161, 2168, 2163, 2166, 4711, - 2155, 2160, 2160, 2163, 2159, 2178, 2177, 2178, 2176, 2165, - 2170, 2190, 713, 920, 1173, 4711, 0, 2178, 2245, 0, - 1229, 1581, 2192, 2193, 2215, 2201, 2224, 153, 2231, 2221, - 2232, 2224, 2246, 2229, 2244, 0, 2245, 2262, 2241, 2235, - 2235, 2239, 2252, 2250, 2255, 2246, 2246, 2258, 2245, 2263, - 2265, 2267, 2283, 2275, 2298, 2293, 2307, 2301, 2311, 2296, - 0, 2314, 2315, 2306, 2303, 2318, 2319, 2324, 0, 2306, - 2307, 2319, 2310, 2314, 2324, 2329, 2315, 2331, 2332, 2317, - - 2315, 2331, 2323, 2325, 0, 2340, 2336, 2365, 2349, 2352, - 2368, 2362, 2360, 2374, 0, 2368, 2380, 2379, 0, 2367, - 2371, 2378, 2383, 2384, 2377, 2387, 2372, 2421, 2391, 2388, - 2377, 2396, 2383, 2383, 2383, 2388, 2392, 2417, 2430, 2431, - 2425, 2435, 2438, 2438, 2435, 2427, 2437, 2436, 0, 2440, - 0, 2449, 2447, 2431, 2444, 2442, 2449, 2439, 2453, 2458, - 2459, 2453, 2467, 2460, 2466, 2470, 2485, 2477, 2491, 2483, - 2497, 2499, 2480, 2501, 2502, 2490, 2494, 2490, 2510, 2503, - 2501, 2494, 2511, 2511, 2515, 2505, 2516, 2510, 2512, 2504, - 2514, 2509, 2509, 2526, 2533, 2545, 2547, 0, 2545, 0, - - 2555, 2547, 2547, 2553, 2548, 0, 2555, 2551, 2570, 2552, - 2554, 2570, 2570, 2561, 2569, 0, 2573, 2561, 2577, 2569, - 2579, 2574, 2569, 2574, 2584, 2567, 2575, 2598, 2607, 4711, - 2611, 2602, 2603, 2606, 2608, 2622, 0, 2614, 0, 2624, - 2621, 2619, 2627, 2613, 0, 2619, 2623, 0, 4711, 1587, - 1668, 4711, 2622, 2632, 2629, 2638, 2621, 2637, 2629, 2637, - 2634, 2643, 2629, 2630, 2633, 2651, 2637, 2653, 2654, 2660, - 2671, 2680, 2675, 2668, 2671, 2682, 4711, 2673, 2683, 2695, - 1742, 2678, 4711, 0, 0, 2677, 0, 2696, 2686, 0, - 2681, 2691, 0, 2700, 2686, 2699, 2688, 2690, 2707, 0, - - 2706, 2727, 2707, 2695, 2707, 2729, 2731, 2737, 2725, 2748, - 2749, 0, 2739, 2733, 2735, 2735, 0, 0, 2746, 0, - 2737, 2738, 0, 2741, 2756, 2743, 2739, 2758, 2746, 0, - 2746, 2750, 0, 2767, 2752, 0, 0, 2755, 2769, 2793, - 2779, 2796, 0, 2801, 2785, 0, 2796, 2809, 2785, 2811, - 2810, 2817, 0, 2802, 0, 2799, 2814, 2818, 2806, 2804, - 2821, 2801, 2809, 2831, 2819, 2816, 2844, 2855, 2861, 2838, - 2866, 2856, 2866, 2858, 2871, 2854, 0, 2849, 2872, 2852, - 2858, 2877, 2864, 2860, 2867, 2881, 2857, 2882, 2872, 2882, - 0, 2871, 0, 2885, 2878, 2872, 2874, 2881, 2877, 2893, - - 2906, 2902, 2923, 2908, 2916, 2912, 2916, 2919, 2915, 2920, - 2921, 2928, 2929, 2938, 2931, 2922, 2939, 2937, 2935, 2927, - 2941, 2934, 2940, 2932, 2936, 2935, 0, 0, 2980, 2938, - 2936, 2944, 2981, 2983, 2978, 0, 2988, 2975, 2986, 2984, - 0, 2996, 2997, 2985, 2983, 0, 3001, 2998, 2996, 2981, - 0, 0, 2987, 3003, 2989, 3009, 2992, 2994, 0, 4711, - 4711, 2997, 2998, 3041, 4711, 4711, 3016, 3018, 3009, 3041, - 3027, 3048, 4711, 3038, 4711, 3048, 0, 3053, 3038, 3056, - 3051, 3043, 3051, 3063, 3061, 3048, 3061, 3059, 3065, 3053, - 3063, 3064, 3055, 4711, 3073, 3073, 3079, 3081, 3064, 3081, - - 3098, 4711, 3107, 4711, 3101, 3104, 3107, 3112, 4711, 3104, - 1865, 3116, 3115, 3105, 3102, 3114, 3109, 3105, 3114, 0, - 3121, 0, 0, 3108, 0, 3111, 3110, 3113, 3131, 3121, - 0, 3125, 0, 3115, 3118, 3118, 3126, 3122, 3131, 0, - 3163, 3156, 3153, 3165, 0, 3170, 0, 3167, 0, 3158, - 0, 3164, 3179, 3160, 3177, 0, 0, 3168, 3169, 3184, - 3161, 3169, 0, 3183, 3177, 3189, 3187, 3185, 3188, 3191, - 3175, 3195, 3182, 3178, 3199, 3197, 0, 0, 3198, 3214, - 3223, 3215, 3217, 3218, 3218, 3220, 3218, 3237, 3236, 3226, - 3233, 3241, 3243, 3232, 3229, 0, 3230, 0, 3235, 3233, - - 3234, 3234, 3235, 3233, 3252, 3251, 3247, 3255, 3258, 3248, - 3246, 3258, 3291, 0, 0, 3289, 150, 3271, 3279, 3294, - 3294, 3290, 3289, 3284, 0, 0, 0, 0, 3299, 3292, - 3292, 3289, 3304, 3308, 3291, 3293, 3293, 3299, 3314, 3296, - 0, 3303, 0, 3296, 3315, 3315, 3301, 3321, 3319, 3311, - 3323, 3351, 3331, 0, 0, 3347, 0, 0, 3338, 3341, - 3341, 3342, 3360, 3360, 3347, 3353, 3353, 3368, 3359, 3356, - 3372, 3361, 3370, 3356, 0, 0, 3362, 4711, 3363, 3354, - 4711, 3360, 3380, 3368, 3363, 3383, 3385, 3368, 0, 3370, - 4711, 4711, 3369, 3402, 3399, 3415, 3408, 3409, 4711, 3423, - - 3402, 3415, 3412, 3424, 3412, 4711, 3415, 3426, 3414, 3420, - 3416, 4711, 3438, 3439, 88, 3423, 3430, 3439, 3421, 3438, - 3426, 3431, 3443, 3435, 3447, 0, 3442, 3458, 3460, 3473, - 0, 3464, 3478, 0, 3474, 0, 3481, 3480, 3475, 0, - 3471, 0, 3476, 3479, 3482, 3479, 3484, 3493, 3478, 3483, - 3488, 0, 3494, 3490, 3498, 3499, 0, 3496, 3501, 3504, - 3490, 3505, 3488, 3500, 3501, 3525, 0, 3528, 3535, 0, - 3537, 3546, 3527, 3541, 3533, 3532, 3541, 3549, 0, 3546, - 3544, 3549, 3557, 3554, 0, 3551, 3560, 3541, 3554, 3546, - 3545, 3561, 0, 3558, 3556, 3561, 3565, 3560, 0, 3561, - - 0, 3564, 3599, 3589, 3587, 0, 3607, 3603, 0, 3596, - 0, 3593, 3608, 3589, 3606, 3607, 3599, 3602, 3614, 3617, - 3616, 3614, 3605, 3616, 3608, 3613, 3617, 3625, 3615, 3622, - 3612, 3614, 3631, 3661, 3633, 3634, 3663, 3657, 0, 3668, - 3654, 3656, 3670, 3671, 0, 0, 3659, 3669, 3667, 3668, - 3665, 3673, 3667, 3681, 3676, 3668, 3669, 3679, 3684, 4711, - 3671, 4711, 3677, 3672, 4711, 3677, 3674, 3687, 4711, 3695, - 3691, 3685, 3701, 3719, 3723, 4711, 3727, 3721, 4711, 3725, - 3721, 3718, 3724, 3726, 0, 3722, 3723, 3721, 3730, 3737, - 3740, 3741, 3732, 3743, 3744, 3730, 0, 3737, 3739, 3749, - - 3735, 3739, 3755, 0, 3747, 3761, 3773, 3782, 0, 3787, - 3771, 3778, 0, 3780, 3777, 3788, 3785, 3786, 3781, 3782, - 3781, 3785, 3791, 3779, 3780, 3793, 3790, 3805, 3788, 3803, - 3812, 3810, 3793, 3815, 0, 0, 0, 3791, 3806, 3804, - 3820, 3806, 3835, 3845, 3828, 3851, 0, 0, 3841, 3855, - 3843, 3857, 3845, 3852, 3844, 0, 3856, 3845, 0, 3848, - 3854, 0, 3853, 3853, 3856, 0, 3857, 3866, 3852, 3854, - 0, 3860, 0, 3861, 3872, 0, 3866, 3853, 3874, 3865, - 3873, 3889, 3885, 3895, 0, 3888, 0, 3909, 3903, 3913, - 0, 0, 0, 3904, 3899, 3907, 3918, 3909, 4711, 3920, - - 3911, 4711, 3922, 3913, 0, 4711, 3926, 4711, 4711, 4711, - 3904, 3911, 3916, 4711, 3917, 3933, 4711, 3923, 3955, 3923, - 3924, 0, 3935, 0, 3927, 0, 3925, 0, 3939, 3928, - 0, 3934, 3955, 0, 3954, 3962, 0, 3965, 3971, 3975, - 0, 3964, 0, 0, 0, 3967, 0, 3966, 3979, 3968, - 3983, 3988, 0, 3987, 3988, 3983, 3980, 3993, 3990, 3991, - 3994, 3994, 3980, 4000, 0, 3986, 3998, 3997, 3988, 4005, - 4012, 4024, 4015, 4035, 0, 4033, 4031, 4022, 4034, 4030, - 4040, 4027, 4036, 4045, 4037, 4046, 4047, 4041, 4051, 4048, - 4042, 4056, 0, 0, 4043, 4039, 4047, 4049, 4049, 4049, - - 4060, 0, 0, 0, 4056, 0, 4069, 0, 4051, 0, - 4063, 4077, 4077, 4080, 4711, 4086, 4711, 4088, 4090, 4091, - 4101, 4102, 4090, 4090, 4091, 4711, 4101, 4095, 4092, 0, - 4112, 4115, 0, 0, 0, 4103, 4103, 4110, 0, 0, - 4105, 4106, 0, 0, 4116, 0, 0, 0, 4106, 4126, - 4131, 4116, 4138, 4129, 0, 0, 4150, 4140, 4152, 4149, - 4161, 4150, 4162, 4162, 0, 4163, 4150, 4163, 4160, 4159, - 4170, 4170, 4164, 4152, 0, 4169, 4164, 4160, 4180, 4163, - 4163, 0, 4184, 0, 0, 4167, 0, 4187, 0, 0, - 0, 4171, 0, 4189, 4176, 4187, 4195, 0, 4208, 4711, - - 4711, 4711, 4201, 4202, 4711, 4711, 4711, 4711, 4711, 4204, - 4215, 0, 4211, 4208, 4213, 4205, 0, 4216, 4220, 4217, - 4216, 0, 4225, 4226, 4234, 4220, 4222, 0, 0, 0, - 0, 4228, 4228, 4240, 0, 0, 4238, 0, 0, 4234, - 4245, 0, 4246, 0, 4255, 4240, 4255, 4244, 0, 0, - 4272, 0, 4263, 0, 4275, 4263, 4275, 0, 4270, 4711, - 4282, 4264, 4274, 0, 4268, 4276, 4282, 0, 4284, 4273, - 4294, 4295, 4282, 0, 4293, 4296, 4291, 0, 4279, 4294, - 0, 4290, 4300, 0, 0, 0, 4305, 4315, 4315, 4319, - 4305, 4312, 4313, 4332, 4326, 4336, 4341, 0, 0, 0, - - 4343, 4344, 0, 4324, 4340, 0, 4348, 0, 0, 0, - 4349, 4353, 4345, 4342, 4343, 4711, 4358, 64, 4346, 4350, - 0, 4361, 4362, 4364, 4366, 0, 0, 0, 4358, 4360, - 0, 56, 4711, 0, 4361, 4366, 4368, 0, 0, 4373, - 0, 4711, 4369, 4377, 4384, 0, 0, 4388, 4390, 0, - 0, 4711, 4457, 4467, 4477, 4487, 4497, 4507, 4511, 4519, - 4529, 4539, 4542, 4552, 4562, 4572, 4582, 4592, 4602, 4612, - 4622, 4632, 4640, 4650, 4660, 4670, 4680, 4690, 4700 + 837, 561, 4748, 254, 546, 942, 907, 909, 851, 641, + + 681, 740, 866, 574, 856, 782, 703, 845, 853, 498, + 878, 879, 507, 619, 896, 887, 891, 606, 911, 857, + 627, 648, 933, 137, 793, 817, 4748, 4748, 659, 815, + 807, 0, 698, 716, 504, 0, 4748, 797, 823, 0, + 762, 748, 930, 943, 0, 954, 962, 740, 4748, 1013, + 1101, 969, 980, 718, 1005, 728, 975, 763, 1001, 783, + 1008, 0, 789, 873, 879, 985, 1010, 0, 876, 880, + 0, 1024, 947, 973, 1016, 1030, 1009, 1015, 1017, 1095, + 1024, 1090, 1023, 1077, 1079, 1102, 1105, 1087, 1108, 1098, + 1088, 1111, 1149, 1108, 1106, 1098, 1105, 1153, 0, 1169, + + 1104, 0, 0, 1161, 1152, 1178, 1107, 1107, 1161, 1179, + 1162, 1163, 1183, 1193, 1194, 1176, 1197, 1196, 1194, 1199, + 1221, 1222, 1227, 1220, 1260, 1231, 1221, 1242, 1232, 1246, + 1267, 1251, 1232, 1257, 1247, 1242, 1254, 1275, 1280, 1247, + 1295, 1244, 0, 0, 1286, 0, 1295, 1284, 1293, 1303, + 1307, 1295, 1311, 1297, 1299, 1319, 676, 4748, 625, 621, + 581, 1314, 1321, 1322, 1309, 1333, 1336, 1332, 1325, 1327, + 1338, 1338, 1349, 1328, 1330, 1355, 1349, 1360, 563, 1368, + 4748, 1364, 1364, 1367, 1365, 1356, 1374, 1380, 1379, 1374, + 1379, 1389, 1380, 1395, 1397, 1380, 1410, 1410, 1398, 1407, + + 1399, 1417, 0, 1404, 1408, 1405, 1421, 1418, 1421, 1438, + 1415, 1441, 1431, 1432, 1445, 1434, 1431, 1444, 4748, 559, + 4748, 551, 1484, 1497, 1486, 1471, 1490, 1508, 4748, 4748, + 4748, 4748, 1470, 1473, 1469, 1491, 1484, 1493, 1486, 1494, + 1504, 1502, 1491, 1501, 1496, 1500, 1502, 4748, 1510, 1495, + 1504, 1498, 4748, 1507, 4748, 1511, 1529, 1514, 1523, 1525, + 1532, 1535, 1541, 1539, 548, 1562, 1563, 1560, 4748, 500, + 199, 4748, 4748, 503, 4748, 474, 0, 4748, 4748, 4748, + 0, 4748, 1574, 1581, 573, 588, 637, 438, 1565, 1633, + 1566, 177, 1721, 1809, 1602, 1644, 695, 735, 1571, 1593, + + 1591, 1610, 1617, 1613, 1626, 1637, 1637, 1639, 1631, 1622, + 1640, 1627, 1628, 1631, 1647, 1632, 1633, 1638, 1638, 1708, + 0, 1654, 1637, 1712, 1694, 1711, 1718, 1704, 1710, 0, + 1711, 1709, 1724, 1712, 1712, 1713, 1722, 1723, 1716, 1717, + 1798, 1725, 0, 1726, 1726, 1721, 1739, 1725, 1786, 1798, + 1794, 0, 1797, 1800, 1805, 1793, 1809, 1802, 1802, 1803, + 1810, 1806, 1817, 1816, 1812, 1820, 1822, 1807, 1823, 1825, + 0, 1820, 1840, 1882, 1855, 1874, 1860, 1871, 1936, 1872, + 1858, 1863, 1876, 1865, 1882, 1877, 1873, 0, 237, 1890, + 1895, 1887, 1880, 1884, 1910, 1934, 1919, 1913, 1940, 1940, + + 1931, 1951, 1932, 1944, 1932, 1948, 1953, 1962, 1959, 1945, + 1952, 1967, 1974, 1977, 1994, 1996, 1985, 1995, 1998, 1992, + 2004, 1987, 1996, 0, 2007, 1998, 1995, 1993, 2009, 1990, + 2004, 2012, 2004, 2020, 2017, 2018, 2009, 2047, 2025, 2041, + 2007, 0, 0, 2008, 0, 0, 2021, 4748, 2049, 2044, + 2046, 2060, 2059, 2062, 2064, 2065, 4748, 2061, 2054, 2068, + 2059, 2063, 2071, 2065, 2064, 2059, 4748, 196, 4748, 2061, + 2068, 2070, 2084, 2085, 2083, 2069, 2070, 2084, 2091, 2104, + 2107, 2113, 2105, 2113, 2121, 2113, 2119, 2125, 2126, 2130, + 2117, 2129, 2115, 189, 703, 181, 932, 745, 926, 2141, + + 1674, 974, 985, 2137, 2124, 2134, 2121, 2129, 2125, 2128, + 2129, 2144, 2141, 2132, 2152, 2142, 2148, 2155, 2169, 2155, + 2175, 2180, 2185, 2180, 2183, 4748, 2184, 2172, 2177, 2177, + 2179, 2175, 2193, 2192, 2195, 2193, 2183, 2186, 2206, 713, + 953, 1052, 4748, 0, 2199, 2262, 0, 1126, 1240, 2209, + 2215, 2231, 2217, 2241, 153, 2248, 2237, 2245, 2241, 2263, + 2246, 2261, 0, 2264, 2278, 2258, 2252, 2252, 2256, 2269, + 2267, 2272, 2263, 2264, 2274, 2262, 2280, 2294, 2288, 2313, + 2293, 2315, 2310, 2326, 2318, 2328, 2313, 0, 2331, 2332, + 2323, 2320, 2335, 2336, 2341, 0, 2323, 2324, 2336, 2327, + + 2331, 2343, 2347, 2333, 2349, 2350, 2335, 2333, 2349, 2342, + 2342, 0, 2361, 2366, 2384, 2367, 2369, 2385, 2379, 2377, + 2391, 0, 2384, 2396, 2396, 0, 2384, 2388, 2395, 2400, + 2402, 2394, 2404, 2391, 2438, 2409, 2406, 2396, 2414, 2401, + 2401, 2402, 2405, 2427, 2434, 2447, 2450, 2442, 2452, 2455, + 2455, 2452, 2444, 2454, 2453, 0, 2457, 0, 2466, 2466, + 2448, 2460, 2458, 2468, 2458, 2471, 2476, 2477, 2472, 2484, + 2494, 2484, 2487, 2502, 2494, 2510, 2500, 2514, 2515, 2496, + 2518, 2519, 2507, 2511, 2507, 2527, 2520, 2518, 2511, 2528, + 2528, 2534, 2523, 2534, 2529, 2530, 2522, 2532, 2528, 2526, + + 2560, 2551, 2562, 2564, 0, 2562, 0, 2574, 2564, 2564, + 2570, 2565, 0, 2572, 2568, 2587, 2569, 2571, 2587, 2587, + 2578, 2586, 0, 2590, 2580, 2595, 2587, 2598, 2592, 2587, + 2592, 2603, 2584, 2609, 2616, 2624, 4748, 2628, 2619, 2622, + 2623, 2625, 2639, 0, 2631, 0, 2641, 2638, 2636, 2644, + 2630, 0, 2636, 2640, 0, 4748, 1585, 1590, 4748, 2639, + 2649, 2650, 2647, 2656, 2642, 2653, 2658, 2650, 2658, 2655, + 2663, 2650, 2651, 2671, 2687, 2673, 2677, 2681, 2683, 2686, + 2687, 2694, 2703, 2696, 2689, 2692, 2703, 4748, 2694, 2704, + 2716, 1658, 2699, 4748, 0, 0, 2698, 0, 2717, 2707, + + 0, 2705, 2715, 0, 2724, 2711, 2724, 2712, 2714, 2730, + 0, 2746, 2750, 2747, 2735, 2753, 2749, 2759, 2764, 2748, + 2769, 2770, 0, 2760, 2754, 2756, 2756, 0, 0, 2767, + 0, 2758, 2759, 0, 2762, 2777, 2767, 2763, 2782, 2771, + 0, 2771, 2774, 0, 2791, 2775, 0, 0, 2795, 2809, + 2816, 2796, 2817, 0, 2823, 2805, 0, 2816, 2829, 2805, + 2832, 2829, 2863, 0, 2825, 0, 2822, 2838, 2842, 2832, + 2830, 2846, 2827, 2834, 2853, 2841, 2837, 2861, 2872, 2882, + 2860, 2887, 2877, 2887, 2879, 2892, 2875, 0, 2870, 2893, + 2874, 2880, 2900, 2887, 2884, 2891, 2908, 2884, 2909, 2900, + + 2911, 0, 2900, 0, 2915, 2907, 2908, 2911, 2919, 2917, + 2933, 2925, 2923, 2944, 2930, 2937, 2933, 2937, 2940, 2936, + 2941, 2942, 2949, 2954, 2959, 2952, 2945, 2963, 2965, 2958, + 2955, 2970, 2963, 2971, 2961, 2972, 2972, 0, 0, 2997, + 2976, 2977, 2989, 3002, 3005, 2999, 0, 3009, 2996, 3007, + 3006, 0, 3018, 3019, 3008, 3005, 0, 3024, 3023, 3019, + 3008, 0, 0, 3014, 3030, 3017, 3039, 3023, 3025, 0, + 4748, 4748, 3033, 3035, 3055, 4748, 4748, 3057, 3059, 3050, + 3062, 3048, 3070, 4748, 3060, 4748, 3070, 0, 3075, 3060, + 3078, 3073, 3065, 3073, 3086, 3084, 3072, 3077, 3090, 3088, + + 3094, 3095, 3084, 3095, 3096, 3095, 4748, 3114, 3115, 3122, + 3123, 4748, 3106, 3126, 3123, 4748, 4748, 3133, 4748, 3128, + 3130, 3130, 3135, 4748, 3127, 1746, 3144, 3138, 3128, 3126, + 3140, 3135, 3132, 3141, 0, 3151, 0, 0, 3138, 0, + 3141, 3141, 3145, 3163, 3154, 0, 3167, 0, 3159, 3164, + 3165, 3172, 3167, 3176, 0, 3188, 3182, 3179, 3190, 0, + 3195, 0, 3192, 0, 3182, 0, 3188, 3203, 3184, 3201, + 0, 0, 3193, 3194, 3210, 3187, 3196, 0, 3210, 3207, + 3219, 3217, 3216, 3220, 3223, 3208, 3237, 3226, 3224, 3246, + 3243, 0, 0, 3243, 3237, 3249, 3241, 3242, 3243, 3243, + + 3244, 3242, 3261, 3260, 3250, 3258, 3266, 3269, 3258, 3256, + 0, 3257, 0, 3265, 3263, 3264, 3265, 3267, 3265, 3285, + 3293, 3291, 3301, 3305, 3294, 3291, 3303, 3316, 0, 0, + 3315, 150, 3297, 3304, 3319, 3319, 3314, 3313, 3308, 0, + 0, 0, 0, 3323, 3316, 3317, 3314, 3330, 3334, 3318, + 3320, 3323, 3329, 3344, 3327, 0, 3335, 0, 3328, 3348, + 3357, 3345, 3367, 3366, 3357, 3368, 3376, 3376, 0, 0, + 3373, 0, 0, 3364, 3366, 3366, 3367, 3384, 3384, 3371, + 3377, 3377, 3393, 3385, 3382, 3399, 3388, 3400, 3386, 0, + 0, 3392, 4748, 3394, 3386, 4748, 3392, 3413, 3410, 3407, + + 3429, 3432, 3414, 0, 3415, 4748, 4748, 3427, 3416, 3430, + 3427, 3422, 3443, 3435, 3436, 4748, 3450, 3428, 3441, 3438, + 3451, 3439, 4748, 3443, 3454, 3443, 3449, 3448, 4748, 3466, + 3463, 88, 3456, 3464, 3473, 3455, 3481, 3470, 3481, 3492, + 3486, 3498, 0, 3492, 3488, 3489, 3501, 0, 3491, 3505, + 0, 3501, 0, 3507, 3506, 3501, 0, 3498, 0, 3503, + 3507, 3510, 3507, 3512, 3521, 3506, 3513, 3518, 0, 3524, + 3521, 3530, 3531, 0, 3529, 3543, 3548, 3540, 3554, 3539, + 3551, 3551, 3555, 0, 3557, 3563, 0, 3564, 3573, 3554, + 3567, 3559, 3558, 3568, 3576, 0, 3574, 3572, 3577, 3585, + + 3582, 0, 3579, 3590, 3571, 3584, 3577, 3577, 3593, 0, + 3591, 3598, 3605, 3615, 3609, 0, 3612, 0, 3614, 3630, + 3617, 3615, 0, 3634, 3630, 0, 3623, 0, 3619, 3634, + 3615, 3633, 3634, 3627, 3630, 3642, 3645, 3644, 3641, 3635, + 3646, 3639, 3645, 3649, 3658, 3657, 3666, 3662, 3663, 3682, + 3689, 3684, 3687, 3691, 3684, 0, 3695, 3681, 3682, 3696, + 3697, 0, 0, 3686, 3696, 3695, 3696, 3693, 3701, 3695, + 3709, 3706, 3698, 3699, 3710, 3716, 3713, 4748, 3705, 4748, + 4748, 3720, 3717, 4748, 3728, 3725, 3740, 4748, 3748, 3745, + 3737, 3732, 3749, 3752, 4748, 3755, 3749, 4748, 3753, 3748, + + 3745, 3752, 3754, 0, 3751, 3752, 3750, 3759, 3766, 3769, + 3772, 3764, 3776, 3778, 3765, 0, 3781, 3785, 3801, 3787, + 3790, 3806, 0, 3798, 3810, 3808, 3813, 0, 3818, 3801, + 3807, 0, 3808, 3805, 3816, 3812, 3813, 3809, 3810, 3810, + 3814, 3820, 3808, 3809, 3822, 3821, 3837, 3821, 3837, 3847, + 3854, 3839, 3867, 0, 0, 0, 3843, 3857, 3855, 3871, + 3855, 3870, 3876, 3859, 3881, 0, 0, 3870, 3883, 3871, + 3885, 3872, 3879, 3872, 0, 3884, 3874, 0, 3877, 3883, + 0, 3882, 3882, 3885, 0, 3888, 3898, 3885, 3888, 0, + 3895, 0, 3905, 3918, 0, 3918, 3905, 3925, 3916, 3924, + + 3938, 3920, 3926, 0, 3919, 0, 3939, 3932, 3941, 0, + 0, 0, 3932, 3927, 3934, 3945, 3937, 4748, 3948, 3940, + 4748, 3951, 3942, 0, 3944, 4748, 3956, 4748, 4748, 4748, + 3934, 3943, 3949, 4748, 3951, 3968, 4748, 3970, 3973, 3958, + 3978, 0, 3989, 0, 3982, 0, 3981, 0, 3996, 3986, + 0, 3991, 3988, 0, 3987, 3994, 0, 3996, 4001, 4005, + 0, 3994, 0, 0, 0, 3998, 0, 3996, 4010, 3999, + 4014, 4019, 0, 4018, 4019, 4016, 4014, 4028, 4025, 4026, + 4030, 4029, 4024, 4046, 0, 4038, 4050, 4048, 4039, 4058, + 4063, 4062, 4048, 4068, 0, 4065, 4062, 4052, 4064, 4060, + + 4071, 4057, 4067, 4076, 4068, 4077, 4078, 4072, 4084, 4082, + 4077, 4091, 0, 0, 4078, 4075, 4082, 4093, 4095, 4101, + 4112, 0, 0, 0, 4107, 0, 4120, 0, 4104, 0, + 4114, 4115, 4110, 4113, 4748, 4118, 4748, 4119, 4120, 4121, + 4131, 4133, 4134, 4122, 4122, 4123, 4748, 4139, 4125, 4125, + 0, 4143, 4148, 0, 0, 0, 4138, 4141, 4148, 0, + 0, 4156, 4163, 0, 0, 4170, 0, 0, 0, 4161, + 4182, 4184, 4169, 4189, 4167, 0, 0, 4187, 4174, 4186, + 4183, 4195, 4183, 4194, 4194, 0, 4195, 4182, 4195, 4192, + 4191, 4202, 4202, 4196, 4186, 0, 4204, 4200, 4197, 4218, + + 4201, 4213, 0, 4239, 0, 0, 4221, 0, 4242, 0, + 0, 0, 4227, 0, 4242, 4229, 4238, 4233, 0, 4245, + 4748, 4748, 4748, 4235, 4236, 4748, 4748, 4748, 4748, 4748, + 4748, 4238, 4250, 0, 4243, 4240, 4245, 4237, 0, 4248, + 4251, 4248, 4248, 0, 4257, 4258, 4268, 4255, 4258, 0, + 0, 0, 0, 4267, 4267, 4290, 0, 0, 4289, 0, + 0, 4287, 4298, 0, 4300, 0, 4306, 4291, 4302, 4291, + 0, 0, 4311, 0, 4301, 0, 4312, 4297, 4309, 0, + 4304, 4748, 4314, 4295, 4308, 0, 4302, 4309, 4313, 0, + 4315, 4305, 4326, 4327, 4316, 0, 4328, 4332, 4331, 0, + + 4329, 4344, 0, 4341, 4352, 0, 0, 0, 4357, 4364, + 4364, 4366, 4352, 4359, 4348, 4377, 4361, 4369, 4374, 0, + 0, 0, 4376, 4377, 0, 4357, 4372, 0, 4380, 0, + 0, 0, 4382, 4384, 4376, 4374, 4374, 4748, 4396, 64, + 4379, 4384, 0, 4403, 4412, 4414, 4417, 0, 0, 0, + 4411, 4413, 0, 56, 4748, 0, 4415, 4417, 4419, 0, + 0, 4421, 0, 4748, 4416, 4421, 4422, 0, 0, 4425, + 4427, 0, 0, 4748, 4494, 4504, 4514, 4524, 4534, 4544, + 4548, 4556, 4566, 4576, 4579, 4589, 4599, 4609, 4619, 4629, + 4639, 4649, 4659, 4669, 4677, 4687, 4697, 4707, 4717, 4727, + + 4737 } ; -static const flex_int16_t yy_def[1980] = +static const flex_int16_t yy_def[2002] = { 0, - 1952, 1, 1953, 1953, 1952, 5, 1952, 7, 1954, 1954, - 1955, 1955, 1956, 1956, 1952, 1952, 1952, 1952, 1952, 1957, - 1958, 1952, 1959, 1960, 1952, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1961, - 1962, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1963, - 1952, 1960, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 37, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 46, 1959, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1964, 1965, 1952, 1952, 1952, 1952, 1952, 1966, - 1967, 1968, 1952, 1952, 1952, 1969, 1952, 1952, 1952, 1957, - 1958, 1958, 1952, 1952, 1959, 1959, 1959, 1970, 1952, 1971, - 1972, 1952, 1952, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1961, 1952, 1962, 1962, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1973, 1952, - 1952, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1952, 1974, - 1952, 1975, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1964, 1964, 1964, 1964, 1952, 1965, 1976, 1952, 1952, - 1966, 1952, 1967, 1968, 1952, 1952, 1952, 1969, 1952, 1952, - 1952, 1952, 1959, 1959, 1970, 1952, 1971, 1959, 1977, 1972, - 1978, 1952, 1952, 1952, 1952, 1959, 1959, 1959, 1959, 1959, - - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1973, 1952, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1974, 1974, 1975, 1975, 1952, 1952, 1952, 1952, 1952, 1952, - - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1964, - 1964, 1964, 1976, 1976, 1952, 1952, 1959, 1979, 1978, 639, - 1952, 1952, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1964, - 1964, 1964, 1952, 1979, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1964, 1964, 1964, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1959, 1959, 1959, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1964, 1964, 1964, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1959, 1959, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1964, 1964, 1952, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1952, 1952, 1952, 1952, 1952, 1952, - - 1952, 1952, 1952, 1959, 1959, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1964, 1964, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1959, - 1952, 1952, 1952, 1952, 1952, 1952, 1964, 1964, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1952, 1952, - - 1952, 1952, 1952, 1959, 1952, 1952, 1952, 1952, 1952, 1964, - 1964, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1952, 1952, - 1964, 1964, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1952, 1964, 1964, 1959, 1959, 1959, 1959, 1959, 1959, - - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1952, 1964, 1964, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1964, 1952, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1952, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 0, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952 + 1974, 1, 1975, 1975, 1974, 5, 1974, 7, 1976, 1976, + 1977, 1977, 1978, 1978, 1974, 1974, 1974, 1974, 1974, 1979, + 1980, 1974, 1981, 1982, 1974, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1983, + 1984, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1985, + 1974, 1982, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 37, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 46, 1981, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1986, 1987, 1974, 1974, 1974, 1974, 1974, 1988, + 1989, 1990, 1974, 1974, 1974, 1991, 1974, 1974, 1974, 1979, + 1980, 1980, 1974, 1974, 1981, 1981, 1981, 1992, 1974, 1993, + 1994, 1974, 1974, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1983, 1974, 1984, 1984, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1995, 1974, + 1974, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1974, 1996, + 1974, 1997, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1986, 1986, 1986, 1986, 1974, 1987, + 1998, 1974, 1974, 1988, 1974, 1989, 1990, 1974, 1974, 1974, + 1991, 1974, 1974, 1974, 1974, 1981, 1981, 1992, 1974, 1993, + 1981, 1999, 1994, 2000, 1974, 1974, 1974, 1974, 1981, 1981, + + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1995, 1974, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1996, 1996, 1997, 1997, 1974, 1974, 1974, + + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1986, 1986, 1986, 1998, + 1998, 1974, 1974, 1981, 2001, 2000, 646, 1974, 1974, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1986, 1986, 1986, 1974, 2001, 1981, 1981, 1981, 1981, 1981, + + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1974, 1974, 1974, 1974, 1974, + + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1986, 1986, 1986, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + + 1974, 1974, 1981, 1981, 1981, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1986, + 1986, 1986, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1981, 1981, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1986, 1986, 1974, 1981, 1981, + + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1981, 1981, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1986, 1986, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1981, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1986, 1986, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1974, + 1974, 1974, 1974, 1974, 1981, 1974, 1974, 1974, 1974, 1974, + 1974, 1986, 1986, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1974, 1974, 1986, 1986, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1974, 1986, 1986, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1974, 1986, 1986, + 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1986, 1974, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 1974, 1981, 1981, 1981, 1981, 1981, 1981, + 1981, 1981, 1981, 0, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + + 1974 } ; -static const flex_int16_t yy_nxt[4800] = +static const flex_int16_t yy_nxt[4837] = { 0, 16, 17, 18, 17, 17, 16, 19, 20, 16, 19, 21, 16, 16, 16, 22, 23, 24, 25, 25, 16, @@ -1339,23 +1349,23 @@ static const flex_int16_t yy_nxt[4800] = 51, 16, 16, 16, 16, 16, 52, 16, 53, 54, 129, 195, 129, 129, 129, 130, 129, 129, 131, 130, - 137, 55, 131, 133, 137, 133, 134, 1942, 134, 56, - 138, 57, 58, 59, 138, 1933, 139, 60, 139, 139, + 137, 55, 131, 133, 137, 133, 134, 1964, 134, 56, + 138, 57, 58, 59, 138, 1955, 139, 60, 139, 139, 61, 62, 195, 223, 63, 64, 65, 66, 67, 68, - 143, 69, 144, 144, 262, 70, 146, 146, 55, 1479, + 143, 69, 144, 144, 262, 70, 146, 146, 55, 1498, 56, 196, 57, 58, 59, 197, 147, 135, 60, 135, 263, 61, 62, 264, 223, 63, 64, 65, 66, 67, - 68, 154, 69, 155, 1400, 262, 152, 54, 144, 144, - 156, 890, 196, 54, 53, 54, 197, 147, 153, 385, - 139, 263, 139, 139, 264, 170, 368, 55, 171, 172, - 369, 209, 154, 638, 155, 56, 188, 57, 58, 59, + 68, 154, 69, 155, 1417, 262, 152, 54, 144, 144, + 156, 901, 196, 54, 53, 54, 197, 147, 153, 388, + 139, 263, 139, 139, 264, 170, 371, 55, 171, 172, + 372, 209, 154, 645, 155, 56, 188, 57, 58, 59, 189, 156, 173, 60, 190, 210, 61, 62, 265, 153, 63, 64, 65, 66, 67, 68, 170, 69, 266, 171, 172, 70, 209, 269, 55, 270, 56, 188, 57, 58, - 59, 189, 594, 173, 60, 190, 210, 61, 62, 265, - 592, 63, 64, 65, 66, 67, 68, 566, 69, 266, - 634, 754, 369, 54, 269, 139, 270, 139, 139, 54, + 59, 189, 597, 173, 60, 190, 210, 61, 62, 265, + 595, 63, 64, 65, 66, 67, 68, 569, 69, 266, + 641, 761, 372, 54, 269, 139, 270, 139, 139, 54, 16, 17, 53, 71, 17, 16, 19, 16, 16, 19, 21, 16, 16, 16, 22, 23, 72, 25, 25, 16, 16, 16, 16, 73, 74, 75, 76, 77, 78, 79, @@ -1377,488 +1387,492 @@ static const flex_int16_t yy_nxt[4800] = 119, 120, 121, 93, 122, 93, 93, 93, 93, 125, 93, 126, 93, 93, 93, 127, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 149, 148, - 191, 271, 151, 157, 386, 148, 148, 158, 148, 192, + 191, 271, 151, 157, 389, 148, 148, 158, 148, 192, 193, 159, 174, 175, 176, 249, 194, 267, 177, 250, 160, 268, 272, 161, 178, 276, 277, 278, 280, 280, - 283, 191, 271, 372, 157, 148, 148, 148, 158, 148, + 283, 191, 271, 375, 157, 148, 148, 148, 158, 148, 192, 193, 159, 174, 175, 176, 249, 194, 267, 177, - 250, 160, 268, 272, 161, 178, 276, 277, 278, 372, - 377, 283, 281, 377, 288, 289, 148, 148, 148, 148, + 250, 160, 268, 272, 161, 178, 276, 277, 278, 375, + 380, 283, 281, 380, 288, 289, 148, 148, 148, 148, 148, 148, 148, 148, 162, 290, 163, 179, 189, 164, - 165, 180, 301, 166, 184, 181, 167, 341, 185, 168, - 169, 182, 186, 347, 183, 288, 289, 139, 296, 139, - 139, 187, 197, 369, 377, 162, 290, 163, 179, 189, - 164, 165, 180, 301, 166, 184, 181, 167, 341, 185, - 168, 169, 182, 186, 347, 183, 198, 204, 199, 296, + 165, 180, 301, 166, 184, 181, 167, 343, 185, 168, + 169, 182, 186, 349, 183, 288, 289, 139, 296, 139, + 139, 187, 197, 372, 380, 162, 290, 163, 179, 189, + 164, 165, 180, 301, 166, 184, 181, 167, 343, 185, + 168, 169, 182, 186, 349, 183, 198, 204, 199, 296, 200, 205, 187, 197, 201, 206, 330, 202, 211, 212, - 635, 635, 253, 203, 254, 331, 213, 207, 214, 366, + 642, 642, 253, 203, 254, 331, 213, 207, 214, 369, - 215, 208, 594, 216, 184, 384, 384, 198, 204, 199, - 592, 200, 205, 299, 566, 201, 206, 300, 202, 211, + 215, 208, 597, 216, 184, 387, 387, 198, 204, 199, + 595, 200, 205, 299, 569, 201, 206, 300, 202, 211, 212, 293, 217, 253, 203, 254, 218, 213, 207, 214, 219, 215, 208, 220, 216, 184, 221, 224, 154, 222, - 282, 225, 348, 355, 299, 226, 286, 156, 300, 171, - 287, 227, 293, 217, 384, 384, 323, 218, 324, 324, - 139, 219, 139, 139, 220, 339, 545, 221, 224, 154, - 222, 282, 225, 348, 355, 243, 226, 286, 156, 340, + 282, 225, 350, 358, 299, 226, 286, 156, 300, 171, + 287, 227, 293, 217, 387, 387, 323, 218, 324, 324, + 139, 219, 139, 139, 220, 363, 548, 221, 224, 154, + 222, 282, 225, 350, 358, 243, 226, 286, 156, 364, 171, 287, 227, 228, 244, 229, 245, 237, 230, 231, - 246, 238, 247, 232, 248, 239, 339, 233, 325, 325, + 246, 238, 247, 232, 248, 239, 363, 233, 325, 325, - 234, 240, 235, 260, 241, 236, 243, 260, 326, 849, - 340, 242, 395, 395, 228, 244, 229, 245, 237, 230, - 231, 246, 238, 247, 232, 248, 239, 258, 233, 360, + 234, 240, 235, 260, 241, 236, 243, 260, 326, 856, + 364, 242, 398, 398, 228, 244, 229, 245, 237, 230, + 231, 246, 238, 247, 232, 248, 239, 258, 233, 378, 335, 234, 240, 235, 273, 241, 236, 251, 252, 326, - 274, 253, 242, 254, 309, 255, 336, 361, 226, 375, - 256, 275, 395, 395, 592, 327, 386, 324, 324, 142, - 360, 335, 596, 596, 634, 273, 369, 328, 251, 252, - 376, 274, 253, 142, 254, 309, 255, 336, 361, 226, - 375, 256, 275, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 1952, 148, 162, 328, 163, - - 179, 376, 148, 148, 180, 148, 284, 396, 291, 285, - 294, 295, 168, 379, 292, 297, 372, 194, 333, 298, - 401, 372, 334, 145, 139, 404, 139, 139, 162, 370, - 163, 179, 148, 148, 148, 180, 148, 284, 396, 291, + 274, 253, 242, 254, 309, 255, 336, 379, 226, 399, + 256, 275, 398, 398, 595, 327, 389, 324, 324, 142, + 378, 335, 599, 599, 641, 273, 372, 328, 251, 252, + 404, 274, 253, 142, 254, 309, 255, 336, 379, 226, + 399, 256, 275, 148, 148, 148, 148, 148, 148, 148, + 148, 148, 148, 148, 148, 1974, 148, 162, 328, 163, + + 179, 404, 148, 148, 180, 148, 284, 407, 291, 285, + 294, 295, 168, 382, 292, 297, 375, 194, 333, 298, + 410, 375, 334, 145, 139, 413, 139, 139, 162, 373, + 163, 179, 148, 148, 148, 180, 148, 284, 407, 291, 285, 294, 295, 168, 305, 292, 297, 302, 194, 333, - 298, 401, 306, 334, 145, 303, 404, 214, 307, 310, + 298, 410, 306, 334, 145, 303, 413, 214, 307, 310, 311, 308, 304, 148, 148, 148, 148, 148, 148, 148, - 148, 312, 345, 318, 353, 305, 313, 332, 302, 145, - 329, 145, 337, 306, 322, 338, 303, 346, 214, 307, - 310, 311, 308, 304, 358, 314, 353, 359, 342, 315, - - 354, 319, 312, 345, 318, 316, 343, 313, 317, 349, - 145, 352, 145, 337, 321, 344, 338, 356, 346, 350, - 407, 357, 410, 320, 351, 358, 314, 353, 359, 342, - 315, 354, 319, 849, 363, 319, 316, 343, 411, 317, - 349, 412, 352, 364, 380, 380, 344, 261, 356, 365, - 350, 407, 357, 410, 381, 351, 146, 146, 152, 366, - 144, 144, 418, 382, 383, 363, 147, 384, 384, 411, - 153, 634, 412, 883, 364, 594, 392, 392, 394, 394, - 365, 260, 395, 395, 258, 381, 393, 595, 595, 402, - 142, 596, 596, 418, 596, 596, 413, 147, 419, 1952, - - 403, 153, 385, 385, 385, 385, 385, 385, 385, 385, - 385, 385, 385, 385, 385, 385, 414, 393, 388, 397, - 402, 385, 385, 398, 385, 408, 405, 413, 422, 419, - 399, 403, 406, 415, 416, 417, 400, 420, 423, 409, - 428, 421, 426, 427, 429, 431, 434, 414, 430, 439, - 397, 385, 385, 385, 398, 385, 408, 405, 1952, 422, - 1952, 399, 1952, 406, 415, 416, 417, 400, 420, 423, - 409, 428, 421, 426, 427, 429, 431, 434, 1952, 430, - 439, 1952, 385, 385, 385, 385, 385, 385, 385, 385, - 389, 389, 385, 389, 389, 389, 389, 389, 389, 389, - - 389, 389, 389, 389, 424, 440, 391, 432, 1952, 389, - 389, 433, 389, 435, 441, 436, 437, 442, 425, 438, - 443, 446, 447, 448, 449, 450, 455, 456, 444, 459, - 600, 600, 600, 600, 445, 424, 440, 1952, 432, 389, - 389, 389, 433, 389, 435, 441, 436, 437, 442, 425, - 438, 443, 446, 447, 448, 449, 450, 455, 456, 444, - 459, 451, 452, 464, 460, 445, 467, 453, 465, 466, - 389, 389, 389, 389, 389, 389, 389, 389, 454, 457, - 461, 468, 462, 469, 470, 472, 458, 463, 478, 471, - 635, 635, 451, 452, 464, 460, 479, 467, 453, 465, - - 466, 473, 1952, 482, 484, 485, 486, 483, 487, 454, - 457, 461, 468, 462, 469, 470, 472, 458, 463, 478, - 471, 474, 475, 476, 488, 480, 489, 479, 490, 477, - 491, 492, 473, 481, 482, 484, 485, 486, 483, 487, - 493, 494, 500, 498, 509, 501, 642, 642, 495, 499, - 502, 496, 474, 475, 476, 488, 480, 489, 497, 490, - 477, 491, 492, 510, 481, 511, 512, 513, 517, 518, - 521, 493, 494, 500, 498, 509, 501, 503, 504, 495, - 499, 502, 496, 505, 522, 523, 519, 506, 507, 497, - 508, 514, 515, 529, 510, 524, 511, 512, 513, 517, - - 518, 521, 533, 526, 516, 527, 525, 534, 503, 504, - 520, 528, 530, 535, 505, 522, 523, 519, 506, 507, - 531, 508, 514, 515, 529, 536, 524, 537, 538, 539, - 540, 541, 532, 533, 526, 516, 527, 525, 534, 542, - 543, 520, 528, 530, 535, 544, 546, 547, 548, 549, - 550, 531, 551, 553, 554, 555, 536, 556, 537, 538, - 539, 540, 541, 532, 559, 560, 561, 562, 563, 557, - 542, 543, 564, 280, 280, 552, 544, 546, 547, 548, - 549, 550, 558, 551, 553, 554, 555, 402, 556, 567, - 568, 570, 569, 571, 424, 559, 560, 561, 562, 563, - - 557, 398, 427, 564, 573, 429, 552, 281, 399, 572, - 445, 575, 577, 558, 400, 578, 465, 1952, 402, 579, - 567, 568, 570, 569, 571, 424, 435, 474, 574, 437, - 481, 576, 398, 427, 580, 573, 429, 453, 581, 399, - 572, 445, 575, 577, 491, 400, 578, 465, 454, 582, - 579, 499, 507, 583, 585, 586, 519, 435, 474, 574, - 437, 481, 576, 584, 587, 580, 588, 529, 453, 581, - 526, 589, 590, 1952, 321, 491, 1952, 525, 528, 454, - 582, 1952, 499, 507, 583, 585, 586, 519, 1952, 325, - 325, 1952, 601, 602, 584, 587, 603, 588, 529, 326, - - 606, 526, 589, 590, 327, 321, 324, 324, 525, 528, - 325, 325, 597, 597, 599, 599, 328, 609, 600, 600, - 326, 607, 598, 601, 602, 604, 605, 603, 610, 611, - 326, 606, 612, 613, 608, 614, 617, 618, 615, 619, - 620, 621, 622, 623, 624, 1952, 627, 328, 609, 616, - 628, 326, 607, 598, 629, 630, 604, 605, 1952, 610, - 611, 631, 636, 612, 613, 608, 614, 617, 618, 615, - 619, 620, 621, 622, 623, 624, 625, 627, 626, 632, - 616, 628, 637, 366, 1952, 629, 630, 380, 380, 366, - 382, 382, 631, 636, 635, 635, 643, 381, 642, 642, - - 366, 1952, 392, 392, 851, 851, 1952, 625, 1952, 626, - 632, 1952, 393, 637, 641, 641, 644, 1952, 642, 642, - 1952, 645, 646, 647, 648, 649, 650, 643, 381, 385, - 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, - 385, 385, 385, 393, 651, 388, 652, 644, 385, 385, - 653, 385, 645, 646, 647, 648, 649, 650, 654, 655, - 656, 657, 658, 659, 660, 661, 662, 663, 667, 668, - 671, 672, 673, 674, 675, 651, 676, 652, 385, 385, - 385, 653, 385, 850, 850, 851, 851, 851, 851, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 667, - - 668, 671, 672, 673, 674, 675, 1952, 676, 1952, 385, - 385, 385, 385, 385, 385, 385, 385, 389, 389, 385, - 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, - 389, 669, 664, 391, 677, 1952, 389, 389, 678, 389, - 665, 679, 680, 681, 682, 684, 666, 685, 670, 686, - 687, 689, 683, 690, 691, 692, 693, 694, 695, 696, - 688, 697, 669, 664, 698, 677, 389, 389, 389, 678, - 389, 665, 679, 680, 681, 682, 684, 666, 685, 670, - 686, 687, 689, 683, 690, 691, 692, 693, 694, 695, - 696, 688, 697, 366, 1112, 698, 1952, 389, 389, 389, - - 389, 389, 389, 389, 389, 140, 140, 701, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 702, - 703, 704, 699, 1952, 140, 140, 700, 140, 705, 706, - 707, 709, 710, 711, 712, 713, 640, 714, 701, 715, - 708, 716, 717, 718, 719, 731, 734, 1952, 735, 746, - 702, 703, 704, 699, 140, 140, 140, 700, 140, 705, - 706, 707, 709, 710, 711, 712, 713, 640, 714, 747, - 715, 708, 716, 717, 718, 719, 731, 734, 732, 735, - 746, 1952, 733, 748, 1952, 140, 140, 140, 140, 140, - 140, 140, 140, 720, 721, 749, 722, 750, 723, 724, - - 747, 725, 751, 752, 726, 753, 755, 727, 756, 732, - 759, 728, 729, 733, 748, 730, 366, 1313, 760, 1952, - 761, 1952, 1952, 762, 720, 721, 749, 722, 750, 723, - 724, 763, 725, 751, 752, 726, 753, 755, 727, 756, - 757, 759, 728, 729, 758, 764, 730, 736, 737, 760, - 738, 761, 739, 740, 762, 741, 765, 768, 742, 770, - 771, 766, 763, 773, 774, 743, 744, 772, 769, 745, - 775, 757, 776, 777, 778, 758, 764, 779, 736, 737, - 780, 738, 781, 739, 740, 767, 741, 765, 768, 742, - 770, 771, 766, 782, 773, 774, 743, 744, 772, 769, - - 745, 775, 783, 776, 777, 778, 784, 785, 779, 786, - 788, 780, 789, 781, 790, 791, 767, 792, 793, 794, - 795, 787, 796, 797, 782, 798, 799, 800, 801, 802, - 803, 804, 805, 783, 806, 811, 1952, 784, 785, 807, - 786, 788, 809, 789, 808, 790, 791, 810, 792, 793, - 794, 795, 787, 796, 797, 812, 798, 799, 800, 801, - 802, 803, 804, 805, 814, 806, 811, 813, 815, 816, - 807, 817, 818, 809, 819, 808, 820, 821, 810, 822, - 823, 824, 825, 826, 827, 828, 812, 829, 830, 831, - 832, 833, 834, 835, 836, 814, 837, 669, 813, 815, - - 816, 838, 817, 818, 683, 819, 839, 820, 821, 840, - 822, 823, 824, 825, 826, 827, 828, 699, 829, 830, - 831, 832, 833, 834, 835, 836, 707, 837, 669, 842, - 733, 843, 838, 757, 762, 683, 841, 839, 844, 768, - 840, 786, 845, 846, 847, 848, 808, 852, 699, 597, - 597, 853, 854, 855, 856, 857, 858, 707, 859, 598, - 842, 733, 843, 860, 757, 762, 861, 841, 862, 844, - 768, 863, 786, 845, 846, 847, 848, 808, 852, 864, - 865, 866, 853, 854, 855, 856, 857, 858, 867, 859, - 598, 868, 869, 870, 860, 871, 872, 861, 873, 862, - - 874, 875, 863, 876, 877, 878, 879, 880, 881, 884, - 864, 865, 866, 882, 1952, 1952, 366, 1952, 1952, 867, - 1952, 366, 868, 869, 870, 1952, 871, 872, 885, 873, - 886, 874, 875, 1952, 876, 877, 878, 879, 880, 881, - 884, 366, 887, 888, 882, 140, 140, 889, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 885, - 891, 886, 892, 1952, 140, 140, 893, 140, 894, 895, - 896, 897, 898, 887, 888, 901, 902, 903, 889, 904, - 905, 907, 908, 909, 910, 899, 911, 912, 913, 906, - 914, 891, 915, 892, 140, 140, 140, 893, 140, 894, - - 895, 896, 897, 898, 900, 916, 901, 902, 903, 917, - 904, 905, 907, 908, 909, 910, 899, 911, 912, 913, - 906, 914, 918, 915, 919, 140, 140, 140, 140, 140, - 140, 140, 140, 920, 921, 900, 916, 922, 923, 924, - 917, 925, 926, 927, 928, 929, 930, 931, 932, 933, - 934, 935, 936, 918, 937, 919, 938, 939, 940, 941, - 942, 943, 944, 945, 920, 921, 946, 947, 922, 923, - 924, 948, 925, 926, 927, 928, 929, 930, 931, 932, - 933, 934, 935, 936, 951, 937, 952, 938, 939, 940, - 941, 942, 943, 944, 945, 953, 949, 946, 947, 954, - - 955, 956, 948, 950, 957, 958, 960, 961, 962, 963, - 964, 965, 959, 966, 967, 951, 968, 952, 972, 973, - 974, 1952, 975, 976, 977, 978, 953, 949, 979, 980, - 954, 955, 956, 1952, 950, 957, 958, 960, 961, 962, - 963, 964, 965, 959, 966, 967, 969, 968, 981, 972, - 973, 974, 970, 975, 976, 977, 978, 982, 983, 979, - 980, 984, 985, 986, 971, 989, 990, 991, 992, 987, - 993, 994, 995, 998, 996, 999, 1000, 969, 997, 981, - 1001, 988, 1002, 970, 1003, 1004, 1005, 1006, 982, 983, - 1007, 1008, 984, 985, 986, 971, 989, 990, 991, 992, - - 987, 993, 994, 995, 998, 996, 999, 1000, 1009, 997, - 1010, 1001, 988, 1002, 1011, 1003, 1004, 1005, 1006, 1012, - 1013, 1007, 1008, 1015, 1016, 1014, 1017, 1018, 1019, 1020, - 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1009, - 1030, 1010, 1031, 1032, 1033, 1011, 1034, 1035, 1036, 1037, - 1012, 1013, 1038, 1039, 1015, 1016, 1014, 1017, 1018, 1019, - 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, - 1040, 1030, 1041, 1031, 1032, 1033, 1044, 1034, 1035, 1036, - 1037, 1042, 1046, 1038, 1039, 1043, 1045, 1047, 1048, 1049, - 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, - - 1060, 1040, 1061, 1041, 1062, 1063, 1064, 1044, 1065, 1066, - 1067, 1068, 1042, 1046, 1069, 1070, 1043, 1045, 1047, 1048, - 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, - 1059, 1060, 1071, 1061, 1072, 1062, 1063, 1064, 1073, 1065, - 1066, 1067, 1068, 1074, 1075, 1069, 1070, 1076, 1077, 1078, - 1079, 1080, 949, 1081, 996, 1082, 1083, 1084, 1085, 1086, - 1087, 1088, 1089, 1071, 1090, 1072, 1091, 1092, 1093, 1073, - 1094, 1095, 1096, 1097, 1074, 1075, 1098, 1099, 1076, 1077, - 1078, 1079, 1080, 949, 1081, 996, 1082, 1083, 1084, 1085, - 1086, 1087, 1088, 1089, 1100, 1090, 1101, 1091, 1092, 1093, - - 1102, 1094, 1095, 1096, 1097, 1103, 1104, 1098, 1099, 1105, - 1106, 1107, 1108, 1109, 1110, 1952, 1113, 1114, 1111, 1115, - 1116, 1117, 1118, 1119, 1120, 1100, 1121, 1101, 1122, 366, - 1123, 1102, 1124, 1125, 1128, 1129, 1103, 1104, 1130, 1952, - 1105, 1106, 1107, 1108, 1109, 1110, 366, 1113, 1114, 1111, - 1115, 1116, 1117, 1118, 1119, 1120, 1126, 1121, 1127, 1122, - 1133, 1123, 1134, 1124, 1125, 1128, 1129, 1131, 1135, 1130, - 1132, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, - 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1126, 1152, 1127, - 1153, 1133, 1154, 1134, 1155, 1156, 1157, 1952, 1131, 1135, - - 1952, 1132, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, - 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1158, 1152, - 1163, 1153, 1164, 1154, 1165, 1155, 1156, 1157, 1159, 1166, - 1167, 1160, 1168, 1169, 1170, 1161, 1162, 1171, 1177, 1178, - 1179, 1180, 1172, 1181, 1182, 1173, 1183, 1184, 1174, 1158, - 1185, 1163, 1175, 1164, 1186, 1165, 1187, 1176, 1188, 1159, - 1166, 1167, 1160, 1168, 1169, 1170, 1161, 1162, 1171, 1177, - 1178, 1179, 1180, 1172, 1181, 1182, 1173, 1183, 1184, 1174, - 1189, 1185, 1190, 1175, 1191, 1186, 1192, 1187, 1176, 1188, - 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, - - 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, - 1213, 1189, 1214, 1190, 1215, 1191, 1216, 1192, 1217, 1218, - 1219, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, - 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, - 1212, 1213, 1220, 1214, 1221, 1215, 1222, 1216, 1223, 1217, - 1218, 1219, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, - 1232, 1234, 1235, 1236, 1237, 1238, 1240, 1241, 1242, 1233, - 1243, 1244, 1239, 1220, 1245, 1221, 1246, 1222, 1247, 1223, - 1251, 1252, 1253, 1224, 1225, 1226, 1227, 1228, 1229, 1230, - 1231, 1232, 1234, 1235, 1236, 1237, 1238, 1240, 1241, 1242, - - 1233, 1243, 1244, 1239, 1248, 1245, 1249, 1246, 1254, 1247, - 1255, 1251, 1252, 1253, 1256, 1257, 1258, 1259, 1260, 1261, - 1262, 1263, 1250, 1265, 1266, 1269, 1267, 1264, 1270, 1271, - 1272, 1273, 1274, 1275, 1276, 1248, 1268, 1249, 1277, 1254, - 1278, 1255, 1281, 1282, 1283, 1256, 1257, 1258, 1259, 1260, - 1261, 1262, 1263, 1250, 1265, 1266, 1269, 1267, 1264, 1270, - 1271, 1272, 1273, 1274, 1275, 1276, 1279, 1268, 1284, 1277, - 1285, 1278, 1286, 1281, 1282, 1283, 1287, 1126, 1288, 1127, - 1145, 1158, 1174, 1280, 1228, 1289, 1290, 1291, 1292, 1293, - 1294, 1176, 1295, 1296, 1297, 1298, 1299, 1279, 1300, 1284, - - 1301, 1285, 1302, 1286, 1303, 1304, 1305, 1287, 1126, 1288, - 1127, 1145, 1158, 1174, 1280, 1228, 1289, 1290, 1291, 1292, - 1293, 1294, 1176, 1295, 1296, 1297, 1298, 1299, 1306, 1300, - 1307, 1301, 1308, 1302, 1309, 1303, 1304, 1305, 1310, 1311, - 1312, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, - 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1306, - 1332, 1307, 1333, 1308, 1334, 1309, 366, 366, 1335, 1310, - 1311, 1312, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, - 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, - 1336, 1332, 1337, 1333, 1338, 1334, 1339, 1340, 1341, 1335, - - 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, - 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, - 1362, 1336, 1363, 1337, 1365, 1338, 1366, 1339, 1340, 1341, - 1364, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, - 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, - 1361, 1362, 1367, 1363, 1368, 1365, 1369, 1366, 1370, 1371, - 1372, 1364, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, - 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, - 1391, 1392, 1393, 1367, 1394, 1368, 1395, 1369, 1396, 1370, - 1371, 1372, 1397, 1373, 1374, 1375, 1376, 1377, 1378, 1379, - - 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, - 1390, 1391, 1392, 1393, 1398, 1394, 1399, 1395, 1401, 1396, - 1402, 1403, 1404, 1397, 1405, 1406, 1407, 1408, 1409, 1410, - 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, - 1421, 1422, 1423, 1424, 1425, 1398, 1426, 1399, 1427, 1401, - 1428, 1402, 1403, 1404, 1431, 1405, 1406, 1407, 1408, 1409, - 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, - 1420, 1421, 1422, 1423, 1424, 1425, 1429, 1426, 1432, 1427, - 1433, 1428, 1434, 1435, 1436, 1431, 1437, 1438, 1439, 1440, - 1441, 1442, 1430, 1443, 1444, 1445, 1446, 1447, 1448, 1449, - - 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1429, 1457, 1432, - 1458, 1433, 1459, 1434, 1435, 1436, 1460, 1437, 1438, 1439, - 1440, 1441, 1442, 1430, 1443, 1444, 1445, 1446, 1447, 1448, - 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1461, 1457, - 1462, 1458, 1463, 1459, 1464, 1465, 1466, 1460, 1467, 1468, - 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1952, 1952, - 1480, 1481, 1482, 1477, 1483, 1484, 1478, 1485, 1486, 1461, - 1487, 1462, 1488, 1463, 1489, 1464, 1465, 1466, 1490, 1467, - 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 366, - 366, 1480, 1481, 1482, 1477, 1483, 1484, 1478, 1485, 1486, - - 1491, 1487, 1492, 1488, 1493, 1489, 1494, 1495, 1496, 1490, - 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, - 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, - 1517, 1491, 1518, 1492, 1519, 1493, 1520, 1494, 1495, 1496, - 1521, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, - 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, - 1516, 1517, 1522, 1518, 1523, 1519, 1524, 1520, 1525, 1526, - 1527, 1521, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, - 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, - 1546, 1547, 1548, 1522, 1549, 1523, 1550, 1524, 1551, 1525, - - 1526, 1527, 1552, 1528, 1529, 1530, 1531, 1532, 1533, 1534, - 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, - 1545, 1546, 1547, 1548, 1553, 1549, 1555, 1550, 1556, 1551, - 1557, 1558, 1559, 1552, 1560, 1561, 1562, 1563, 1564, 1565, - 1566, 1567, 1568, 1569, 1554, 1570, 1571, 1572, 1573, 1574, - 1575, 1576, 1577, 1578, 1579, 1553, 1580, 1555, 1581, 1556, - 1584, 1557, 1558, 1559, 1585, 1560, 1561, 1562, 1563, 1564, - 1565, 1566, 1567, 1568, 1569, 1554, 1570, 1571, 1572, 1573, - 1574, 1575, 1576, 1577, 1578, 1579, 1582, 1580, 1583, 1581, - 1586, 1584, 1587, 1588, 1589, 1585, 1590, 1591, 1592, 1593, - - 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, - 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1582, 1611, 1583, - 1612, 1586, 1613, 1587, 1588, 1589, 1614, 1590, 1591, 1592, - 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, - 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1615, 1611, - 1616, 1612, 1617, 1613, 1618, 1619, 1620, 1614, 1621, 1622, - 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, - 1633, 1634, 366, 1635, 1636, 1637, 1638, 1639, 366, 1615, - 1640, 1616, 1641, 1617, 1642, 1618, 1619, 1620, 1643, 1621, - 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, - - 1632, 1633, 1634, 1644, 1635, 1636, 1637, 1638, 1639, 1645, - 1646, 1640, 1647, 1641, 1648, 1642, 1649, 1650, 1651, 1643, - 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, - 1662, 1663, 1664, 1665, 1644, 1666, 1667, 1668, 1669, 1670, - 1645, 1646, 1671, 1647, 1672, 1648, 1673, 1649, 1650, 1651, - 1674, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, - 1661, 1662, 1663, 1664, 1665, 1675, 1666, 1667, 1668, 1669, - 1670, 1676, 1677, 1671, 1678, 1672, 1679, 1673, 1680, 1681, - 1682, 1674, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, - 1691, 1692, 1693, 1694, 1695, 1696, 1675, 1697, 1698, 1699, - - 1700, 1701, 1676, 1677, 1702, 1678, 1703, 1679, 1704, 1680, - 1681, 1682, 1705, 1683, 1684, 1685, 1686, 1687, 1688, 1689, - 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1706, 1697, 1698, - 1699, 1700, 1701, 1707, 1708, 1702, 1709, 1703, 1710, 1704, - 1711, 1712, 1713, 1705, 1714, 1715, 1716, 1717, 1718, 1719, - 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1706, 1729, - 1730, 1731, 1732, 1733, 1707, 1708, 1734, 1709, 1735, 1710, - 1736, 1711, 1712, 1713, 366, 1714, 1715, 1716, 1717, 1718, - 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, - 1729, 1730, 1731, 1732, 1733, 1737, 1738, 1734, 1739, 1735, - - 1740, 1736, 1741, 1742, 1743, 1744, 366, 1745, 1746, 1747, - 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, - 1728, 1758, 1759, 1760, 1761, 1762, 1737, 1738, 1763, 1739, - 1764, 1740, 1765, 1741, 1742, 1743, 1744, 1766, 1745, 1746, - 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, - 1757, 1767, 1758, 1759, 1760, 1761, 1762, 1768, 1769, 1763, - 1770, 1764, 1771, 1765, 1772, 1773, 1774, 1775, 1766, 1776, - 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, - 1787, 1788, 1767, 1789, 1790, 1791, 1792, 1793, 1768, 1769, - 1794, 1770, 1795, 1771, 1796, 1772, 1773, 1774, 1775, 1797, - - 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, - 1786, 1787, 1788, 1798, 1789, 1790, 1791, 1792, 1793, 1799, - 1800, 1794, 1801, 1795, 1802, 1796, 1803, 1804, 1805, 1806, - 1797, 1807, 1808, 1809, 1812, 1810, 1811, 1813, 1814, 1817, - 1815, 1818, 1819, 1820, 1798, 1816, 366, 1821, 1822, 1823, - 1799, 1800, 366, 1801, 1824, 1802, 1825, 1803, 1804, 1805, - 1806, 1826, 1807, 1808, 1809, 1812, 1810, 1811, 1813, 1814, - 1817, 1815, 1818, 1819, 1820, 1827, 1816, 1828, 1821, 1822, - 1823, 1829, 1830, 1831, 1832, 1824, 1833, 1825, 1834, 1835, - 1836, 1837, 1826, 1838, 1839, 1840, 1841, 1842, 1843, 1844, - - 1845, 1846, 1847, 1848, 1849, 1850, 1827, 1851, 1828, 1852, - 1853, 1854, 1829, 1830, 1831, 1832, 1855, 1833, 1856, 1834, - 1835, 1836, 1837, 1857, 1838, 1839, 1840, 1841, 1842, 1843, - 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1858, 1851, 1859, - 1852, 1853, 1854, 1860, 1816, 1861, 1862, 1855, 1863, 1856, - 1864, 1865, 1866, 1867, 1857, 366, 1868, 1869, 1870, 1871, - 1872, 1873, 1874, 1875, 1876, 1877, 366, 1878, 1858, 1879, - 1859, 1880, 1881, 1882, 1860, 1816, 1861, 1862, 1883, 1863, - 1884, 1864, 1865, 1866, 1867, 1885, 1886, 1868, 1869, 1870, - 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1887, 1878, 1888, - - 1879, 1889, 1880, 1881, 1882, 1890, 1891, 1892, 1895, 1883, - 1896, 1884, 1894, 1893, 1897, 366, 1885, 1886, 1898, 1899, - 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1887, 1908, - 1888, 1909, 1889, 366, 1910, 1911, 1890, 1891, 1892, 1895, - 1912, 1896, 1913, 1894, 1893, 1897, 1914, 1915, 1916, 1898, - 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1918, - 1908, 1917, 1909, 1919, 366, 1910, 1911, 1920, 1921, 1922, - 1923, 1912, 1924, 1913, 1925, 1926, 1927, 1914, 1915, 1916, - 1928, 1929, 1930, 366, 1931, 1932, 1934, 1935, 1936, 1937, - 1918, 1938, 1917, 1939, 1919, 1940, 1941, 1943, 1920, 1921, - - 1922, 1923, 1944, 1924, 1945, 1925, 1926, 1927, 1946, 366, - 1947, 1928, 1929, 1930, 1948, 1931, 1932, 1934, 1935, 1936, - 1937, 1949, 1938, 1950, 1939, 1951, 1940, 1941, 1943, 1952, - 1952, 1952, 1952, 1944, 1952, 1945, 1952, 1952, 1952, 1946, - 1952, 1947, 1952, 1952, 1952, 1948, 1952, 1952, 1952, 1952, - 1952, 1952, 1949, 1952, 1950, 1952, 1951, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 136, 136, 136, - 136, 136, 136, 136, 136, 136, 136, 140, 1952, 140, - - 140, 140, 140, 140, 140, 140, 140, 141, 1952, 141, - 141, 141, 141, 141, 141, 141, 141, 145, 145, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 259, - 1952, 259, 259, 259, 259, 259, 259, 259, 259, 279, - 1952, 279, 362, 362, 362, 362, 362, 362, 362, 362, - 362, 362, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 374, 374, 374, 1952, 1952, 374, 374, 374, - - 1952, 374, 378, 1952, 378, 378, 378, 1952, 378, 378, - 378, 378, 385, 385, 385, 385, 385, 385, 385, 385, - 385, 385, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 390, 390, 390, 390, 390, 390, 390, 390, - 390, 390, 565, 1952, 1952, 1952, 565, 565, 1952, 565, - 591, 591, 591, 1952, 591, 591, 591, 591, 591, 591, - 593, 593, 593, 593, 1952, 593, 593, 593, 593, 593, - 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, - 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, - 639, 1952, 639, 639, 639, 639, 639, 639, 639, 639, - - 140, 1952, 140, 140, 140, 140, 140, 140, 140, 140, - 15, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952 - + 148, 312, 337, 318, 355, 305, 313, 332, 302, 145, + 340, 145, 338, 306, 341, 339, 303, 329, 214, 307, + 310, 311, 308, 304, 361, 314, 414, 362, 342, 315, + + 322, 344, 312, 337, 318, 316, 347, 313, 317, 345, + 145, 340, 145, 338, 319, 341, 339, 321, 346, 415, + 421, 348, 422, 351, 354, 361, 314, 414, 362, 342, + 315, 355, 344, 352, 356, 357, 316, 347, 353, 317, + 345, 856, 359, 599, 599, 319, 360, 383, 383, 346, + 415, 421, 348, 422, 351, 354, 320, 384, 152, 366, + 144, 144, 355, 319, 352, 356, 357, 261, 367, 353, + 153, 146, 146, 359, 368, 385, 386, 360, 425, 387, + 387, 147, 260, 597, 369, 258, 395, 395, 384, 142, + 366, 603, 603, 397, 397, 1974, 396, 398, 398, 367, + + 405, 153, 603, 603, 641, 368, 894, 426, 416, 425, + 1974, 406, 147, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 396, 417, 391, + 400, 405, 388, 388, 401, 388, 411, 408, 426, 416, + 427, 402, 406, 409, 418, 419, 420, 403, 423, 431, + 412, 434, 424, 432, 428, 429, 430, 433, 437, 417, + 442, 400, 388, 388, 388, 401, 388, 411, 408, 642, + 642, 427, 402, 1974, 409, 418, 419, 420, 403, 423, + 431, 412, 434, 424, 432, 428, 429, 430, 433, 437, + 1974, 442, 1974, 388, 388, 388, 388, 388, 388, 388, + + 388, 392, 392, 388, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 392, 443, 444, 394, 435, 1974, + 392, 392, 436, 392, 438, 445, 439, 440, 446, 449, + 441, 450, 451, 452, 453, 458, 447, 459, 460, 462, + 470, 481, 448, 649, 649, 461, 443, 444, 482, 435, + 392, 392, 392, 436, 392, 438, 445, 439, 440, 446, + 449, 441, 450, 451, 452, 453, 458, 447, 459, 460, + 462, 470, 481, 448, 454, 455, 461, 463, 475, 482, + 456, 392, 392, 392, 392, 392, 392, 392, 392, 1974, + 487, 457, 467, 464, 476, 465, 483, 468, 469, 471, + + 466, 472, 473, 488, 484, 454, 455, 474, 463, 475, + 489, 456, 477, 478, 479, 485, 490, 491, 492, 486, + 480, 487, 457, 467, 464, 476, 465, 483, 468, 469, + 471, 466, 472, 473, 488, 484, 495, 493, 474, 494, + 496, 489, 497, 477, 478, 479, 485, 490, 491, 492, + 486, 480, 498, 501, 503, 499, 504, 649, 649, 502, + 512, 505, 500, 1974, 513, 514, 515, 495, 493, 516, + 494, 496, 1974, 497, 520, 521, 524, 525, 526, 1974, + 522, 532, 536, 498, 501, 503, 499, 504, 506, 507, + 502, 512, 505, 500, 508, 513, 514, 515, 509, 510, + + 516, 511, 517, 518, 523, 520, 521, 524, 525, 526, + 527, 522, 532, 536, 529, 519, 530, 537, 533, 506, + 507, 528, 531, 538, 539, 508, 534, 540, 541, 509, + 510, 542, 511, 517, 518, 523, 543, 544, 535, 545, + 546, 527, 547, 549, 550, 529, 519, 530, 537, 533, + 551, 552, 528, 531, 538, 539, 553, 534, 540, 541, + 554, 556, 542, 557, 558, 559, 560, 543, 544, 535, + 545, 546, 562, 547, 549, 550, 563, 564, 565, 561, + 566, 551, 552, 555, 567, 280, 280, 553, 1974, 405, + 570, 554, 556, 401, 557, 558, 559, 560, 573, 571, + + 402, 572, 574, 562, 427, 430, 403, 563, 564, 565, + 561, 566, 432, 576, 555, 567, 575, 448, 578, 281, + 405, 570, 579, 438, 401, 577, 440, 580, 456, 573, + 571, 402, 572, 574, 581, 427, 430, 403, 468, 457, + 582, 477, 484, 432, 576, 583, 584, 575, 448, 578, + 494, 585, 586, 579, 438, 502, 577, 440, 580, 456, + 510, 588, 587, 589, 522, 581, 590, 591, 532, 468, + 457, 582, 477, 484, 592, 593, 583, 584, 528, 529, + 1974, 494, 585, 586, 598, 598, 502, 531, 599, 599, + 1974, 510, 588, 587, 589, 522, 321, 590, 591, 532, + + 604, 325, 325, 325, 325, 592, 593, 600, 600, 528, + 529, 326, 327, 326, 324, 324, 605, 601, 531, 606, + 607, 602, 602, 610, 328, 603, 603, 321, 608, 609, + 611, 604, 612, 614, 615, 616, 617, 618, 619, 623, + 624, 620, 326, 625, 326, 613, 621, 605, 601, 626, + 606, 607, 622, 627, 610, 328, 628, 629, 630, 608, + 609, 611, 631, 612, 614, 615, 616, 617, 618, 619, + 623, 624, 620, 632, 625, 633, 613, 621, 634, 635, + 626, 636, 1974, 622, 627, 637, 638, 628, 629, 630, + 639, 383, 383, 631, 385, 385, 643, 644, 642, 642, + + 650, 384, 858, 858, 632, 1974, 633, 858, 858, 634, + 635, 369, 636, 369, 369, 1974, 637, 638, 1974, 395, + 395, 639, 1974, 651, 1974, 652, 1974, 643, 644, 396, + 1974, 650, 384, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 653, 654, 391, + 655, 1974, 388, 388, 651, 388, 652, 648, 648, 656, + 396, 649, 649, 657, 658, 659, 660, 661, 662, 663, + 664, 665, 666, 667, 668, 669, 670, 674, 653, 654, + 675, 655, 388, 388, 388, 1974, 388, 857, 857, 1974, + 656, 858, 858, 1974, 657, 658, 659, 660, 661, 662, + + 663, 664, 665, 666, 667, 668, 669, 670, 674, 369, + 1127, 675, 1974, 388, 388, 388, 388, 388, 388, 388, + 388, 392, 392, 388, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 392, 676, 671, 394, 678, 1974, + 392, 392, 679, 392, 672, 680, 681, 682, 683, 684, + 673, 685, 677, 686, 687, 688, 689, 691, 692, 693, + 696, 697, 698, 699, 690, 700, 676, 671, 701, 678, + 392, 392, 392, 679, 392, 672, 680, 681, 682, 683, + 684, 673, 685, 677, 686, 687, 688, 689, 691, 692, + 693, 696, 697, 698, 699, 690, 700, 369, 1330, 701, + + 1974, 392, 392, 392, 392, 392, 392, 392, 392, 140, + 140, 702, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 694, 703, 704, 705, 1974, 140, 140, + 706, 140, 708, 695, 707, 709, 710, 711, 712, 713, + 647, 714, 702, 716, 717, 718, 719, 720, 721, 722, + 723, 715, 724, 725, 694, 703, 704, 705, 140, 140, + 140, 706, 140, 708, 695, 707, 709, 710, 711, 712, + 713, 647, 714, 726, 716, 717, 718, 719, 720, 721, + 722, 723, 715, 724, 725, 1974, 738, 741, 1974, 140, + 140, 140, 140, 140, 140, 140, 140, 739, 742, 753, + + 754, 740, 755, 756, 726, 727, 728, 757, 729, 758, + 730, 731, 759, 732, 760, 762, 733, 738, 741, 734, + 763, 764, 766, 735, 736, 765, 767, 737, 739, 742, + 753, 754, 740, 755, 756, 768, 727, 728, 757, 729, + 758, 730, 731, 759, 732, 760, 762, 733, 771, 772, + 734, 763, 764, 766, 735, 736, 765, 767, 737, 743, + 744, 769, 745, 773, 746, 747, 768, 748, 777, 770, + 749, 775, 780, 781, 782, 783, 778, 750, 751, 771, + 772, 752, 776, 779, 784, 785, 786, 774, 787, 788, + 743, 744, 769, 745, 773, 746, 747, 789, 748, 777, + + 770, 749, 775, 780, 781, 782, 783, 778, 750, 751, + 790, 791, 752, 776, 779, 784, 785, 786, 774, 787, + 788, 792, 793, 795, 796, 797, 798, 799, 789, 800, + 801, 802, 803, 804, 794, 805, 806, 807, 808, 809, + 810, 790, 791, 811, 812, 813, 814, 1974, 818, 821, + 822, 815, 792, 793, 795, 796, 797, 798, 799, 823, + 800, 801, 802, 803, 804, 794, 805, 806, 807, 808, + 809, 810, 819, 816, 811, 812, 813, 814, 817, 818, + 821, 822, 815, 824, 820, 825, 826, 827, 828, 829, + 823, 830, 831, 832, 833, 834, 835, 836, 837, 838, + + 839, 840, 841, 819, 816, 842, 843, 844, 676, 817, + 845, 690, 846, 847, 824, 820, 825, 826, 827, 828, + 829, 706, 830, 831, 832, 833, 834, 835, 836, 837, + 838, 839, 840, 841, 849, 714, 842, 843, 844, 676, + 740, 845, 690, 846, 847, 848, 850, 764, 769, 851, + 775, 793, 706, 852, 853, 854, 855, 815, 600, 600, + 859, 860, 861, 862, 863, 849, 714, 864, 601, 865, + 866, 740, 867, 868, 869, 870, 848, 850, 764, 769, + 851, 775, 793, 871, 852, 853, 854, 855, 815, 872, + 873, 859, 860, 861, 862, 863, 874, 875, 864, 601, + + 865, 866, 876, 867, 868, 869, 870, 877, 878, 879, + 880, 881, 882, 883, 871, 884, 885, 886, 887, 888, + 872, 873, 889, 890, 892, 891, 1974, 874, 875, 893, + 895, 1974, 1974, 876, 369, 1974, 1974, 369, 877, 878, + 879, 880, 881, 882, 883, 896, 884, 885, 886, 887, + 888, 1974, 897, 889, 890, 892, 891, 369, 898, 899, + 893, 895, 140, 140, 900, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 896, 902, 903, 904, + 1974, 140, 140, 897, 140, 905, 906, 907, 908, 898, + 899, 909, 912, 913, 914, 900, 915, 916, 918, 919, + + 920, 910, 921, 923, 922, 924, 917, 925, 902, 903, + 904, 140, 140, 140, 1974, 140, 905, 906, 907, 908, + 911, 926, 909, 912, 913, 914, 927, 915, 916, 918, + 919, 920, 910, 921, 923, 922, 924, 917, 925, 928, + 929, 930, 140, 140, 140, 140, 140, 140, 140, 140, + 931, 911, 926, 932, 933, 934, 935, 927, 936, 937, + 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, + 928, 929, 930, 948, 949, 950, 951, 952, 953, 954, + 955, 931, 956, 957, 932, 933, 934, 935, 958, 936, + 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, + + 947, 959, 962, 963, 948, 949, 950, 951, 952, 953, + 954, 955, 964, 956, 957, 960, 965, 966, 967, 958, + 968, 969, 961, 971, 972, 973, 974, 975, 970, 976, + 977, 978, 959, 962, 963, 979, 983, 984, 1974, 985, + 986, 987, 988, 964, 989, 990, 960, 965, 966, 967, + 1974, 968, 969, 961, 971, 972, 973, 974, 975, 970, + 976, 977, 978, 980, 991, 992, 979, 983, 984, 981, + 985, 986, 987, 988, 993, 989, 990, 994, 995, 996, + 997, 982, 1000, 1001, 1002, 1003, 998, 1004, 1005, 1006, + 1009, 1010, 1011, 1007, 980, 991, 992, 1008, 999, 1012, + + 981, 1013, 1014, 1015, 1016, 993, 1017, 1018, 994, 995, + 996, 997, 982, 1000, 1001, 1002, 1003, 998, 1004, 1005, + 1006, 1009, 1010, 1011, 1007, 1019, 1020, 1021, 1008, 999, + 1012, 1022, 1013, 1014, 1015, 1016, 1023, 1017, 1018, 1024, + 1026, 1027, 1028, 1029, 1025, 1030, 1031, 1032, 1033, 1034, + 1035, 1036, 1037, 1038, 1039, 1040, 1019, 1020, 1021, 1041, + 1042, 1043, 1022, 1044, 1045, 1046, 1047, 1023, 1048, 1049, + 1024, 1026, 1027, 1028, 1029, 1025, 1030, 1031, 1032, 1033, + 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1050, 1051, 1052, + 1041, 1042, 1043, 1055, 1044, 1045, 1046, 1047, 1053, 1048, + + 1049, 1057, 1054, 1056, 1058, 1059, 1060, 1061, 1062, 1063, + 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1050, 1051, + 1052, 1072, 1073, 1074, 1055, 1075, 1076, 1077, 1078, 1053, + 1079, 1080, 1057, 1054, 1056, 1058, 1059, 1060, 1061, 1062, + 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1081, + 1082, 1083, 1072, 1073, 1074, 1084, 1075, 1076, 1077, 1078, + 1085, 1079, 1080, 1086, 1087, 1088, 1089, 1090, 1091, 960, + 1092, 1007, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, + 1081, 1082, 1083, 1101, 1102, 1103, 1084, 1104, 1105, 1106, + 1107, 1085, 1108, 1109, 1086, 1087, 1088, 1089, 1090, 1091, + + 960, 1092, 1007, 1093, 1094, 1095, 1096, 1097, 1098, 1099, + 1100, 1110, 1111, 1112, 1101, 1102, 1103, 1113, 1104, 1105, + 1106, 1107, 1114, 1108, 1109, 1115, 1116, 1117, 1118, 1119, + 1120, 1121, 1122, 1123, 1124, 1125, 1974, 1128, 1129, 1126, + 1130, 1131, 1110, 1111, 1112, 1132, 1133, 1134, 1113, 1135, + 369, 1136, 1137, 1114, 1138, 1139, 1115, 1116, 1117, 1118, + 1119, 1120, 1121, 1122, 1123, 1124, 1125, 369, 1128, 1129, + 1126, 1130, 1131, 1140, 1143, 1144, 1132, 1133, 1134, 1141, + 1135, 1142, 1136, 1137, 1145, 1138, 1139, 1146, 1148, 1149, + 1147, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, + + 1159, 1160, 1161, 1162, 1140, 1143, 1144, 1163, 1164, 1165, + 1141, 1166, 1142, 1167, 1168, 1145, 1169, 1170, 1146, 1148, + 1149, 1147, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, + 1158, 1159, 1160, 1161, 1162, 1171, 1172, 1178, 1163, 1164, + 1165, 1173, 1166, 1179, 1167, 1168, 1180, 1169, 1170, 1181, + 1182, 1174, 1183, 1184, 1175, 1185, 1186, 1974, 1176, 1177, + 1974, 1192, 1193, 1974, 1194, 1195, 1171, 1172, 1178, 1196, + 1197, 1198, 1173, 1199, 1179, 1200, 1201, 1180, 1202, 1203, + 1181, 1182, 1174, 1183, 1184, 1175, 1185, 1186, 1187, 1176, + 1177, 1188, 1192, 1193, 1189, 1194, 1195, 1204, 1190, 1205, + + 1196, 1197, 1198, 1191, 1199, 1206, 1200, 1201, 1207, 1202, + 1203, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1187, + 1216, 1217, 1188, 1218, 1219, 1189, 1220, 1221, 1204, 1190, + 1205, 1222, 1223, 1224, 1191, 1225, 1206, 1226, 1227, 1207, + 1228, 1229, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, + 1230, 1216, 1217, 1231, 1218, 1219, 1232, 1220, 1221, 1233, + 1234, 1235, 1222, 1223, 1224, 1236, 1225, 1237, 1226, 1227, + 1238, 1228, 1229, 1239, 1240, 1241, 1242, 1243, 1244, 1245, + 1246, 1230, 1249, 1250, 1231, 1247, 1251, 1232, 1252, 1255, + 1233, 1234, 1235, 1253, 1248, 1256, 1236, 1257, 1237, 1258, + + 1254, 1238, 1259, 1260, 1239, 1240, 1241, 1242, 1243, 1244, + 1245, 1246, 1261, 1249, 1250, 1262, 1247, 1251, 1266, 1252, + 1255, 1263, 1267, 1264, 1253, 1248, 1256, 1268, 1257, 1269, + 1258, 1254, 1270, 1259, 1260, 1271, 1272, 1273, 1274, 1265, + 1275, 1276, 1277, 1261, 1278, 1280, 1262, 1281, 1284, 1266, + 1279, 1282, 1263, 1267, 1264, 1285, 1286, 1287, 1268, 1288, + 1269, 1283, 1289, 1270, 1290, 1291, 1271, 1272, 1273, 1274, + 1265, 1275, 1276, 1277, 1292, 1278, 1280, 1293, 1281, 1284, + 1294, 1279, 1282, 1296, 1297, 1298, 1285, 1286, 1287, 1299, + 1288, 1300, 1283, 1289, 1301, 1290, 1291, 1295, 1302, 1141, + + 1303, 1142, 1160, 1173, 1189, 1292, 1243, 1304, 1293, 1305, + 1306, 1294, 1307, 1191, 1296, 1297, 1298, 1308, 1309, 1310, + 1299, 1311, 1300, 1312, 1313, 1301, 1314, 1315, 1295, 1302, + 1141, 1303, 1142, 1160, 1173, 1189, 1316, 1243, 1304, 1317, + 1305, 1306, 1318, 1307, 1191, 1319, 1320, 1321, 1308, 1309, + 1310, 1322, 1311, 1323, 1312, 1313, 1324, 1314, 1315, 1325, + 1326, 1327, 1328, 1329, 1974, 1332, 1333, 1316, 1334, 1331, + 1317, 1335, 1336, 1318, 1337, 1338, 1319, 1320, 1321, 1339, + 1340, 1341, 1322, 1342, 1323, 1343, 1344, 1324, 1345, 369, + 1325, 1326, 1327, 1328, 1329, 369, 1332, 1333, 1346, 1334, + + 1331, 1347, 1335, 1336, 1348, 1337, 1338, 1349, 1350, 1351, + 1339, 1340, 1341, 1352, 1342, 1353, 1343, 1344, 1354, 1345, + 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1346, + 1364, 1365, 1347, 1366, 1367, 1348, 1368, 1369, 1349, 1350, + 1351, 1370, 1371, 1372, 1352, 1373, 1353, 1374, 1375, 1354, + 1376, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, + 1377, 1364, 1365, 1378, 1366, 1367, 1379, 1368, 1369, 1380, + 1382, 1383, 1370, 1371, 1372, 1384, 1373, 1381, 1374, 1375, + 1385, 1376, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, + 1394, 1377, 1395, 1396, 1378, 1397, 1398, 1379, 1399, 1400, + + 1380, 1382, 1383, 1401, 1402, 1403, 1384, 1404, 1381, 1405, + 1406, 1385, 1407, 1386, 1387, 1388, 1389, 1390, 1391, 1392, + 1393, 1394, 1408, 1395, 1396, 1409, 1397, 1398, 1410, 1399, + 1400, 1411, 1412, 1413, 1401, 1402, 1403, 1414, 1404, 1415, + 1405, 1406, 1416, 1407, 1418, 1419, 1420, 1421, 1422, 1423, + 1424, 1425, 1426, 1408, 1427, 1428, 1409, 1429, 1430, 1410, + 1431, 1432, 1411, 1412, 1413, 1433, 1434, 1435, 1414, 1436, + 1415, 1437, 1438, 1416, 1439, 1418, 1419, 1420, 1421, 1422, + 1423, 1424, 1425, 1426, 1440, 1427, 1428, 1441, 1429, 1430, + 1442, 1431, 1432, 1443, 1444, 1445, 1433, 1434, 1435, 1448, + + 1436, 1446, 1437, 1438, 1449, 1439, 1450, 1451, 1452, 1453, + 1454, 1455, 1456, 1457, 1458, 1440, 1459, 1447, 1441, 1460, + 1461, 1442, 1462, 1463, 1443, 1444, 1445, 1464, 1465, 1466, + 1448, 1467, 1446, 1468, 1469, 1449, 1470, 1450, 1451, 1452, + 1453, 1454, 1455, 1456, 1457, 1458, 1471, 1459, 1447, 1472, + 1460, 1461, 1473, 1462, 1463, 1474, 1475, 1476, 1464, 1465, + 1466, 1477, 1467, 1478, 1468, 1469, 1479, 1470, 1480, 1481, + 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1471, 1489, 1490, + 1472, 1491, 1492, 1473, 1493, 1494, 1474, 1475, 1476, 1495, + 1497, 1496, 1477, 1499, 1478, 1500, 1501, 1479, 1502, 1480, + + 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1503, 1489, + 1490, 1504, 1491, 1492, 369, 1493, 1494, 369, 1505, 1506, + 1495, 1497, 1496, 1507, 1499, 1508, 1500, 1501, 1509, 1502, + 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1503, + 1519, 1520, 1504, 1521, 1522, 1523, 1524, 1525, 1526, 1505, + 1506, 1527, 1528, 1529, 1507, 1530, 1508, 1531, 1532, 1509, + 1533, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, + 1534, 1519, 1520, 1535, 1521, 1522, 1523, 1524, 1525, 1526, + 1536, 1537, 1527, 1528, 1529, 1538, 1530, 1539, 1531, 1532, + 1540, 1533, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, + + 1549, 1534, 1550, 1551, 1535, 1552, 1553, 1554, 1555, 1556, + 1557, 1536, 1537, 1558, 1559, 1560, 1538, 1561, 1539, 1562, + 1563, 1540, 1564, 1541, 1542, 1543, 1544, 1545, 1546, 1547, + 1548, 1549, 1565, 1550, 1551, 1566, 1552, 1553, 1554, 1555, + 1556, 1557, 1567, 1568, 1558, 1559, 1560, 1569, 1561, 1570, + 1562, 1563, 1571, 1564, 1574, 1572, 1575, 1576, 1577, 1578, + 1579, 1580, 1581, 1565, 1582, 1583, 1566, 1584, 1585, 1586, + 1587, 1588, 1589, 1567, 1568, 1573, 1590, 1591, 1569, 1592, + 1570, 1593, 1594, 1571, 1595, 1574, 1572, 1575, 1576, 1577, + 1578, 1579, 1580, 1581, 1596, 1582, 1583, 1597, 1584, 1585, + + 1586, 1587, 1588, 1589, 1598, 1599, 1573, 1590, 1591, 1600, + 1592, 1603, 1593, 1594, 1601, 1595, 1602, 1604, 1605, 1606, + 1607, 1608, 1609, 1610, 1611, 1596, 1612, 1613, 1597, 1614, + 1615, 1616, 1617, 1618, 1619, 1598, 1599, 1620, 1621, 1622, + 1600, 1623, 1603, 1624, 1625, 1601, 1626, 1602, 1604, 1605, + 1606, 1607, 1608, 1609, 1610, 1611, 1627, 1612, 1613, 1628, + 1614, 1615, 1616, 1617, 1618, 1619, 1629, 1630, 1620, 1621, + 1622, 1631, 1623, 1632, 1624, 1625, 1633, 1626, 1634, 1635, + 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1627, 1643, 1644, + 1628, 1645, 1646, 1647, 1648, 1649, 1650, 1629, 1630, 1651, + + 369, 1652, 1631, 1653, 1632, 1654, 369, 1633, 1655, 1634, + 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1656, 1643, + 1644, 1657, 1645, 1646, 1647, 1648, 1649, 1650, 1658, 1659, + 1651, 1660, 1652, 1661, 1653, 1662, 1654, 1663, 1664, 1655, + 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1656, + 1674, 1675, 1657, 1676, 1677, 1678, 1679, 1680, 1681, 1658, + 1659, 1682, 1660, 1683, 1661, 1684, 1662, 1685, 1663, 1664, + 1686, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, + 1687, 1674, 1675, 1688, 1676, 1677, 1678, 1679, 1680, 1681, + 1689, 1690, 1682, 1691, 1683, 1692, 1684, 1693, 1685, 1694, + + 1695, 1686, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, + 1704, 1687, 1705, 1706, 1688, 1707, 1708, 1709, 1710, 1711, + 1712, 1689, 1690, 1713, 1691, 1714, 1692, 1715, 1693, 1716, + 1694, 1695, 1717, 1696, 1697, 1698, 1699, 1700, 1701, 1702, + 1703, 1704, 1718, 1705, 1706, 1719, 1707, 1708, 1709, 1710, + 1711, 1712, 1720, 1721, 1713, 1722, 1714, 1723, 1715, 1724, + 1716, 1725, 1726, 1717, 1727, 1728, 1729, 1730, 1731, 1732, + 1733, 1734, 1735, 1718, 1736, 1737, 1719, 1738, 1739, 1740, + 1741, 1742, 1743, 1720, 1721, 1744, 1722, 1745, 1723, 1746, + 1724, 1747, 1725, 1726, 1750, 1727, 1728, 1729, 1730, 1731, + + 1732, 1733, 1734, 1735, 1748, 1736, 1737, 1749, 1738, 1739, + 1740, 1741, 1742, 1743, 1751, 1752, 1744, 1753, 1745, 1754, + 1746, 369, 1747, 1755, 369, 1750, 1756, 1757, 1758, 1759, + 1760, 1761, 1762, 1763, 1764, 1748, 1765, 1766, 1749, 1767, + 1768, 1769, 1770, 1771, 1772, 1751, 1752, 1773, 1753, 1774, + 1754, 1775, 1776, 1777, 1755, 1778, 1779, 1756, 1757, 1758, + 1759, 1760, 1761, 1762, 1763, 1764, 1780, 1765, 1766, 1781, + 1767, 1768, 1769, 1770, 1771, 1772, 1782, 1783, 1773, 1784, + 1774, 1785, 1775, 1776, 1777, 1786, 1778, 1779, 1787, 1788, + 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1780, 1796, 1797, + + 1781, 1798, 1799, 1800, 1801, 1802, 1803, 1782, 1783, 1804, + 1784, 1805, 1785, 1806, 1807, 1808, 1786, 1809, 1810, 1787, + 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1811, 1796, + 1797, 1812, 1798, 1799, 1800, 1801, 1802, 1803, 1813, 1814, + 1804, 1815, 1805, 1816, 1806, 1807, 1808, 1817, 1809, 1810, + 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1811, + 1827, 1828, 1812, 1829, 1830, 1831, 1833, 1834, 1835, 1813, + 1814, 1836, 1815, 1832, 1816, 1837, 369, 1839, 1817, 1840, + 1838, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, + 369, 1827, 1828, 1841, 1829, 1830, 1831, 1833, 1834, 1835, + + 1842, 1843, 1836, 1844, 1832, 1845, 1837, 1846, 1839, 1847, + 1840, 1838, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, + 1856, 1857, 1858, 1859, 1841, 1860, 1861, 1862, 1863, 1864, + 1865, 1842, 1843, 1866, 1844, 1867, 1845, 1868, 1846, 1869, + 1847, 1870, 1871, 1848, 1849, 1850, 1851, 1852, 1853, 1854, + 1855, 1856, 1857, 1858, 1859, 1872, 1860, 1861, 1862, 1863, + 1864, 1865, 1873, 1874, 1866, 1875, 1867, 1876, 1868, 1877, + 1869, 1878, 1870, 1871, 1879, 1880, 1881, 1882, 1838, 1883, + 1885, 1884, 1886, 1887, 1888, 1889, 1872, 1890, 1891, 369, + 1892, 1893, 1894, 1873, 1874, 1895, 1875, 1896, 1876, 1897, + + 1877, 369, 1878, 1898, 1899, 1879, 1880, 1881, 1882, 1838, + 1883, 1885, 1884, 1886, 1887, 1888, 1889, 1900, 1890, 1891, + 1901, 1892, 1893, 1894, 1902, 1903, 1895, 1904, 1896, 1905, + 1897, 1906, 1907, 1908, 1898, 1899, 1909, 1910, 1911, 1912, + 1913, 1914, 1917, 1916, 1918, 1915, 369, 1919, 1900, 1920, + 1921, 1901, 1922, 1923, 1924, 1902, 1903, 1925, 1904, 1926, + 1905, 1927, 1906, 1907, 1908, 369, 1928, 1909, 1910, 1911, + 1912, 1913, 1914, 1917, 1916, 1918, 1915, 1929, 1919, 1930, + 1920, 1921, 1931, 1922, 1923, 1924, 1932, 1933, 1925, 1934, + 1926, 1935, 1927, 1936, 1937, 1938, 1939, 1928, 1941, 369, + + 1942, 1943, 1944, 1945, 1940, 1946, 1947, 1948, 1929, 1949, + 1930, 1950, 1951, 1931, 1952, 1953, 1974, 1932, 1933, 1956, + 1934, 1957, 1935, 1954, 1936, 1937, 1938, 1939, 369, 1941, + 1958, 1942, 1943, 1944, 1945, 1940, 1946, 1947, 1948, 1959, + 1949, 1960, 1950, 1951, 1961, 1952, 1953, 369, 1962, 1963, + 1956, 1965, 1957, 1966, 1954, 1967, 1968, 1969, 1970, 1971, + 1972, 1958, 1973, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1959, 1974, 1960, 1974, 1974, 1961, 1974, 1974, 1974, 1962, + 1963, 1974, 1965, 1974, 1966, 1974, 1967, 1968, 1969, 1970, + 1971, 1972, 1974, 1973, 16, 16, 16, 16, 16, 16, + + 16, 16, 16, 16, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 136, 136, 136, 136, 136, 136, + 136, 136, 136, 136, 140, 1974, 140, 140, 140, 140, + 140, 140, 140, 140, 141, 1974, 141, 141, 141, 141, + 141, 141, 141, 141, 145, 145, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 259, 1974, 259, 259, + 259, 259, 259, 259, 259, 259, 279, 1974, 279, 365, + 365, 365, 365, 365, 365, 365, 365, 365, 365, 370, + + 370, 370, 370, 370, 370, 370, 370, 370, 370, 374, + 374, 374, 374, 374, 374, 374, 374, 374, 374, 376, + 376, 376, 376, 376, 376, 376, 376, 376, 376, 377, + 377, 377, 1974, 1974, 377, 377, 377, 1974, 377, 381, + 1974, 381, 381, 381, 1974, 381, 381, 381, 381, 388, + 388, 388, 388, 388, 388, 388, 388, 388, 388, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 568, + 1974, 1974, 1974, 568, 568, 1974, 568, 594, 594, 594, + 1974, 594, 594, 594, 594, 594, 594, 596, 596, 596, + + 596, 1974, 596, 596, 596, 596, 596, 640, 640, 640, + 640, 640, 640, 640, 640, 640, 640, 392, 392, 392, + 392, 392, 392, 392, 392, 392, 392, 646, 1974, 646, + 646, 646, 646, 646, 646, 646, 646, 140, 1974, 140, + 140, 140, 140, 140, 140, 140, 140, 15, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974 } ; -static const flex_int16_t yy_chk[4800] = +static const flex_int16_t yy_chk[4837] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1871,23 +1885,23 @@ static const flex_int16_t yy_chk[4800] = 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 9, 35, 9, 9, 10, 9, 10, 10, 9, 10, - 13, 3, 10, 11, 14, 12, 11, 1932, 12, 3, - 13, 3, 3, 3, 14, 1918, 17, 3, 17, 17, + 13, 3, 10, 11, 14, 12, 11, 1954, 12, 3, + 13, 3, 3, 3, 14, 1940, 17, 3, 17, 17, 3, 3, 35, 42, 3, 3, 3, 3, 3, 3, - 22, 3, 22, 22, 56, 3, 23, 23, 3, 1315, + 22, 3, 22, 22, 56, 3, 23, 23, 3, 1332, 3, 36, 3, 3, 3, 36, 23, 11, 3, 12, 57, 3, 3, 58, 42, 3, 3, 3, 3, 3, - 3, 26, 3, 26, 1217, 56, 25, 3, 25, 25, - 26, 648, 36, 3, 4, 4, 36, 23, 25, 389, + 3, 26, 3, 26, 1232, 56, 25, 3, 25, 25, + 26, 655, 36, 3, 4, 4, 36, 23, 25, 392, 71, 57, 71, 71, 58, 29, 124, 4, 29, 29, - 124, 39, 26, 389, 26, 4, 33, 4, 4, 4, + 124, 39, 26, 392, 26, 4, 33, 4, 4, 4, 33, 26, 29, 4, 33, 39, 4, 4, 59, 25, 4, 4, 4, 4, 4, 4, 29, 4, 60, 29, 29, 4, 39, 62, 4, 63, 4, 33, 4, 4, - 4, 33, 593, 29, 4, 33, 39, 4, 4, 59, - 591, 4, 4, 4, 4, 4, 4, 565, 4, 60, - 368, 486, 368, 4, 62, 94, 63, 94, 94, 4, + 4, 33, 596, 29, 4, 33, 39, 4, 4, 59, + 594, 4, 4, 4, 4, 4, 4, 568, 4, 60, + 371, 489, 371, 4, 62, 94, 63, 94, 94, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, @@ -1909,485 +1923,489 @@ static const flex_int16_t yy_chk[4800] = 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 34, 64, 24, 27, 385, 24, 24, 27, 24, 34, + 34, 64, 24, 27, 388, 24, 24, 27, 24, 34, 34, 27, 30, 30, 30, 47, 34, 61, 30, 47, 27, 61, 65, 27, 30, 67, 68, 69, 70, 70, - 74, 34, 64, 373, 27, 24, 24, 24, 27, 24, + 74, 34, 64, 376, 27, 24, 24, 24, 27, 24, 34, 34, 27, 30, 30, 30, 47, 34, 61, 30, - 47, 27, 61, 65, 27, 30, 67, 68, 69, 371, + 47, 27, 61, 65, 27, 30, 67, 68, 69, 374, 135, 74, 70, 135, 77, 77, 24, 24, 24, 24, 24, 24, 24, 24, 28, 77, 28, 31, 80, 28, 28, 31, 85, 28, 32, 31, 28, 110, 32, 28, 28, 31, 32, 113, 31, 77, 77, 95, 82, 95, - 95, 32, 82, 367, 135, 28, 77, 28, 31, 80, + 95, 32, 82, 370, 135, 28, 77, 28, 31, 80, 28, 28, 31, 85, 28, 32, 31, 28, 110, 32, 28, 28, 31, 32, 113, 31, 37, 38, 37, 82, 37, 38, 32, 82, 37, 38, 104, 37, 40, 40, - 382, 382, 92, 37, 92, 104, 40, 38, 40, 362, + 385, 385, 92, 37, 92, 104, 40, 38, 40, 365, - 40, 38, 322, 40, 79, 383, 383, 37, 38, 37, + 40, 38, 322, 40, 79, 386, 386, 37, 38, 37, 320, 37, 38, 84, 279, 37, 38, 84, 37, 40, 40, 79, 41, 92, 37, 92, 41, 40, 38, 40, 41, 40, 38, 41, 40, 79, 41, 43, 73, 41, 73, 43, 114, 118, 84, 43, 76, 73, 84, 76, - 76, 43, 79, 41, 384, 384, 100, 41, 100, 100, - 129, 41, 129, 129, 41, 109, 261, 41, 43, 73, - 41, 73, 43, 114, 118, 46, 43, 76, 73, 109, + 76, 43, 79, 41, 387, 387, 100, 41, 100, 100, + 129, 41, 129, 129, 41, 121, 261, 41, 43, 73, + 41, 73, 43, 114, 118, 46, 43, 76, 73, 122, 76, 76, 43, 44, 46, 44, 46, 45, 44, 44, - 46, 45, 46, 44, 46, 45, 109, 44, 101, 101, + 46, 45, 46, 44, 46, 45, 121, 44, 101, 101, - 44, 45, 44, 260, 45, 44, 46, 259, 101, 592, - 109, 45, 394, 394, 44, 46, 44, 46, 45, 44, - 44, 46, 45, 46, 44, 46, 45, 257, 44, 121, + 44, 45, 44, 260, 45, 44, 46, 259, 101, 595, + 122, 45, 397, 397, 44, 46, 44, 46, 45, 44, + 44, 46, 45, 46, 44, 46, 45, 257, 44, 133, 107, 44, 45, 44, 66, 45, 44, 48, 48, 101, - 66, 48, 45, 48, 88, 48, 107, 122, 88, 133, - 48, 66, 395, 395, 592, 102, 148, 102, 102, 142, - 121, 107, 595, 595, 633, 66, 633, 102, 48, 48, - 134, 66, 48, 141, 48, 88, 48, 107, 122, 88, - 133, 48, 66, 72, 72, 72, 72, 72, 72, 72, + 66, 48, 45, 48, 88, 48, 107, 134, 88, 154, + 48, 66, 398, 398, 595, 102, 148, 102, 102, 142, + 133, 107, 598, 598, 640, 66, 640, 102, 48, 48, + 156, 66, 48, 141, 48, 88, 48, 107, 134, 88, + 154, 48, 66, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 75, 102, 75, - 78, 134, 72, 72, 78, 72, 75, 154, 78, 75, + 78, 156, 72, 72, 78, 72, 75, 158, 78, 75, 81, 81, 75, 138, 78, 83, 131, 81, 106, 83, - 156, 130, 106, 83, 139, 158, 139, 139, 75, 126, - 75, 78, 72, 72, 72, 78, 72, 75, 154, 78, + 160, 130, 106, 83, 139, 163, 139, 139, 75, 126, + 75, 78, 72, 72, 72, 78, 72, 75, 158, 78, 75, 81, 81, 75, 87, 78, 83, 86, 81, 106, - 83, 156, 87, 106, 83, 86, 158, 86, 87, 89, + 83, 160, 87, 106, 83, 86, 163, 86, 87, 89, 89, 87, 86, 72, 72, 72, 72, 72, 72, 72, - 72, 89, 112, 91, 125, 87, 89, 105, 86, 91, - 103, 91, 108, 87, 99, 108, 86, 112, 86, 87, - 89, 89, 87, 86, 120, 90, 117, 120, 111, 90, - - 117, 116, 89, 112, 91, 90, 111, 89, 90, 115, - 91, 116, 91, 108, 98, 111, 108, 119, 112, 115, - 160, 119, 163, 97, 115, 120, 90, 117, 120, 111, - 90, 117, 116, 594, 123, 96, 90, 111, 164, 90, - 115, 165, 116, 123, 143, 143, 111, 52, 119, 123, - 115, 160, 119, 163, 143, 115, 146, 146, 144, 123, - 144, 144, 169, 147, 147, 123, 146, 147, 147, 164, - 144, 634, 165, 634, 123, 594, 152, 152, 153, 153, - 123, 51, 153, 153, 50, 143, 152, 326, 326, 157, - 21, 326, 326, 169, 596, 596, 166, 146, 170, 15, - - 157, 144, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 166, 152, 150, 155, - 157, 150, 150, 155, 150, 161, 159, 166, 173, 170, - 155, 157, 159, 167, 167, 167, 155, 172, 174, 161, - 177, 172, 176, 176, 178, 179, 181, 166, 178, 183, - 155, 150, 150, 150, 155, 150, 161, 159, 0, 173, - 0, 155, 0, 159, 167, 167, 167, 155, 172, 174, - 161, 177, 172, 176, 176, 178, 179, 181, 0, 178, - 183, 0, 150, 150, 150, 150, 150, 150, 150, 150, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - - 151, 151, 151, 151, 175, 184, 151, 180, 0, 151, - 151, 180, 151, 182, 185, 182, 182, 186, 175, 182, - 187, 188, 189, 190, 191, 192, 194, 195, 187, 197, - 599, 599, 600, 600, 187, 175, 184, 0, 180, 151, - 151, 151, 180, 151, 182, 185, 182, 182, 186, 175, - 182, 187, 188, 189, 190, 191, 192, 194, 195, 187, - 197, 193, 193, 200, 198, 187, 201, 193, 200, 200, - 151, 151, 151, 151, 151, 151, 151, 151, 193, 196, - 198, 204, 198, 204, 204, 205, 196, 198, 207, 204, - 635, 635, 193, 193, 200, 198, 208, 201, 193, 200, - - 200, 205, 0, 210, 211, 212, 213, 210, 214, 193, - 196, 198, 204, 198, 204, 204, 205, 196, 198, 207, - 204, 206, 206, 206, 215, 209, 216, 208, 217, 206, - 217, 218, 205, 209, 210, 211, 212, 213, 210, 214, - 219, 220, 223, 222, 226, 224, 641, 641, 221, 222, - 224, 221, 206, 206, 206, 215, 209, 216, 221, 217, - 206, 217, 218, 227, 209, 228, 229, 230, 232, 233, - 235, 219, 220, 223, 222, 226, 224, 225, 225, 221, - 222, 224, 221, 225, 236, 237, 234, 225, 225, 221, - 225, 231, 231, 240, 227, 238, 228, 229, 230, 232, - - 233, 235, 242, 239, 231, 239, 238, 245, 225, 225, - 234, 239, 241, 247, 225, 236, 237, 234, 225, 225, - 241, 225, 231, 231, 240, 248, 238, 249, 250, 251, - 252, 253, 241, 242, 239, 231, 239, 238, 245, 254, - 255, 234, 239, 241, 247, 256, 262, 263, 264, 265, - 266, 241, 267, 268, 269, 270, 248, 271, 249, 250, - 251, 252, 253, 241, 273, 274, 275, 276, 277, 272, - 254, 255, 278, 280, 280, 267, 256, 262, 263, 264, - 265, 266, 272, 267, 268, 269, 270, 283, 271, 284, - 285, 286, 285, 287, 288, 273, 274, 275, 276, 277, - - 272, 282, 289, 278, 291, 290, 267, 280, 282, 290, - 293, 294, 296, 272, 282, 297, 298, 0, 283, 299, - 284, 285, 286, 285, 287, 288, 292, 300, 292, 292, - 301, 295, 282, 289, 302, 291, 290, 295, 304, 282, - 290, 293, 294, 296, 305, 282, 297, 298, 295, 306, - 299, 308, 309, 307, 310, 311, 312, 292, 300, 292, - 292, 301, 295, 307, 313, 302, 314, 316, 295, 304, - 315, 317, 318, 0, 333, 305, 0, 314, 315, 295, - 306, 0, 308, 309, 307, 310, 311, 312, 0, 323, - 323, 0, 334, 335, 307, 313, 336, 314, 316, 323, - - 338, 315, 317, 318, 324, 333, 324, 324, 314, 315, - 325, 325, 327, 327, 328, 328, 324, 340, 328, 328, - 325, 339, 327, 334, 335, 337, 337, 336, 341, 342, - 323, 338, 343, 344, 339, 345, 348, 349, 347, 350, - 352, 354, 355, 356, 357, 0, 359, 324, 340, 347, - 360, 325, 339, 327, 361, 363, 337, 337, 0, 341, - 342, 364, 386, 343, 344, 339, 345, 348, 349, 347, - 350, 352, 354, 355, 356, 357, 358, 359, 358, 365, - 347, 360, 388, 363, 0, 361, 363, 380, 380, 364, - 381, 381, 364, 386, 381, 381, 396, 380, 642, 642, - - 365, 0, 392, 392, 850, 850, 0, 358, 0, 358, - 365, 0, 392, 388, 393, 393, 397, 0, 393, 393, - 0, 398, 399, 400, 401, 402, 403, 396, 380, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 392, 404, 387, 405, 397, 387, 387, - 406, 387, 398, 399, 400, 401, 402, 403, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 419, 420, - 422, 423, 424, 425, 426, 404, 428, 405, 387, 387, - 387, 406, 387, 598, 598, 851, 851, 598, 598, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 419, - - 420, 422, 423, 424, 425, 426, 0, 428, 0, 387, - 387, 387, 387, 387, 387, 387, 387, 390, 390, 390, - 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, - 390, 421, 417, 390, 429, 0, 390, 390, 430, 390, - 417, 431, 432, 433, 434, 435, 417, 436, 421, 437, - 438, 439, 434, 441, 442, 443, 444, 445, 446, 447, - 438, 448, 421, 417, 450, 429, 390, 390, 390, 430, - 390, 417, 431, 432, 433, 434, 435, 417, 436, 421, - 437, 438, 439, 434, 441, 442, 443, 444, 445, 446, - 447, 438, 448, 881, 881, 450, 0, 390, 390, 390, - - 390, 390, 390, 390, 390, 391, 391, 452, 391, 391, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 453, - 454, 455, 451, 0, 391, 391, 451, 391, 456, 457, - 458, 459, 460, 461, 462, 463, 391, 464, 452, 465, - 458, 466, 467, 469, 470, 472, 474, 0, 475, 477, - 453, 454, 455, 451, 391, 391, 391, 451, 391, 456, - 457, 458, 459, 460, 461, 462, 463, 391, 464, 478, - 465, 458, 466, 467, 469, 470, 472, 474, 473, 475, - 477, 0, 473, 479, 0, 391, 391, 391, 391, 391, - 391, 391, 391, 471, 471, 480, 471, 481, 471, 471, - - 478, 471, 482, 483, 471, 484, 487, 471, 488, 473, - 490, 471, 471, 473, 479, 471, 1111, 1111, 491, 0, - 492, 0, 0, 493, 471, 471, 480, 471, 481, 471, - 471, 493, 471, 482, 483, 471, 484, 487, 471, 488, - 489, 490, 471, 471, 489, 494, 471, 476, 476, 491, - 476, 492, 476, 476, 493, 476, 495, 497, 476, 498, - 499, 496, 493, 500, 501, 476, 476, 499, 497, 476, - 502, 489, 503, 504, 505, 489, 494, 506, 476, 476, - 507, 476, 508, 476, 476, 496, 476, 495, 497, 476, - 498, 499, 496, 509, 500, 501, 476, 476, 499, 497, - - 476, 502, 510, 503, 504, 505, 511, 512, 506, 513, - 514, 507, 515, 508, 516, 517, 496, 518, 519, 520, - 522, 513, 523, 524, 509, 525, 526, 527, 528, 529, - 530, 531, 532, 510, 533, 536, 0, 511, 512, 534, - 513, 514, 535, 515, 534, 516, 517, 535, 518, 519, - 520, 522, 513, 523, 524, 537, 525, 526, 527, 528, - 529, 530, 531, 532, 538, 533, 536, 537, 541, 544, - 534, 546, 547, 535, 548, 534, 549, 550, 535, 551, - 552, 553, 555, 556, 557, 558, 537, 559, 560, 561, - 562, 563, 567, 568, 569, 538, 570, 571, 537, 541, - - 544, 572, 546, 547, 573, 548, 574, 549, 550, 575, - 551, 552, 553, 555, 556, 557, 558, 576, 559, 560, - 561, 562, 563, 567, 568, 569, 577, 570, 571, 578, - 579, 580, 572, 581, 582, 573, 577, 574, 583, 584, - 575, 585, 586, 587, 588, 589, 590, 601, 576, 597, - 597, 602, 603, 604, 605, 606, 607, 577, 608, 597, - 578, 579, 580, 609, 581, 582, 610, 577, 611, 583, - 584, 612, 585, 586, 587, 588, 589, 590, 601, 613, - 614, 615, 602, 603, 604, 605, 606, 607, 616, 608, - 597, 617, 618, 619, 609, 621, 622, 610, 623, 611, - - 624, 625, 612, 626, 627, 628, 629, 630, 631, 638, - 613, 614, 615, 632, 0, 0, 630, 0, 0, 616, - 0, 631, 617, 618, 619, 0, 621, 622, 643, 623, - 644, 624, 625, 0, 626, 627, 628, 629, 630, 631, - 638, 632, 645, 646, 632, 639, 639, 647, 639, 639, - 639, 639, 639, 639, 639, 639, 639, 639, 639, 643, - 649, 644, 650, 0, 639, 639, 651, 639, 652, 653, - 654, 655, 657, 645, 646, 659, 660, 661, 647, 662, - 663, 664, 665, 666, 667, 658, 667, 668, 669, 663, - 670, 649, 671, 650, 639, 639, 639, 651, 639, 652, - - 653, 654, 655, 657, 658, 672, 659, 660, 661, 673, - 662, 663, 664, 665, 666, 667, 658, 667, 668, 669, - 663, 670, 674, 671, 675, 639, 639, 639, 639, 639, - 639, 639, 639, 676, 677, 658, 672, 678, 679, 680, - 673, 682, 683, 684, 685, 686, 687, 688, 690, 691, - 692, 693, 694, 674, 695, 675, 696, 697, 698, 699, - 700, 701, 702, 703, 676, 677, 704, 706, 678, 679, - 680, 707, 682, 683, 684, 685, 686, 687, 688, 690, - 691, 692, 693, 694, 709, 695, 710, 696, 697, 698, - 699, 700, 701, 702, 703, 711, 708, 704, 706, 712, - - 713, 714, 707, 708, 716, 717, 718, 720, 721, 722, - 723, 724, 717, 725, 726, 709, 727, 710, 729, 730, - 731, 0, 732, 733, 734, 735, 711, 708, 736, 737, - 712, 713, 714, 0, 708, 716, 717, 718, 720, 721, - 722, 723, 724, 717, 725, 726, 728, 727, 738, 729, - 730, 731, 728, 732, 733, 734, 735, 739, 740, 736, - 737, 741, 742, 743, 728, 744, 745, 746, 747, 743, - 748, 750, 752, 754, 753, 755, 756, 728, 753, 738, - 757, 743, 758, 728, 759, 760, 761, 762, 739, 740, - 763, 764, 741, 742, 743, 728, 744, 745, 746, 747, - - 743, 748, 750, 752, 754, 753, 755, 756, 765, 753, - 766, 757, 743, 758, 767, 759, 760, 761, 762, 768, - 769, 763, 764, 770, 771, 769, 772, 773, 774, 775, - 776, 777, 778, 779, 780, 781, 782, 783, 784, 765, - 785, 766, 786, 787, 788, 767, 789, 790, 791, 792, - 768, 769, 793, 794, 770, 771, 769, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, - 795, 785, 796, 786, 787, 788, 799, 789, 790, 791, - 792, 797, 801, 793, 794, 797, 799, 802, 803, 804, - 805, 807, 808, 809, 810, 811, 812, 813, 814, 815, - - 817, 795, 818, 796, 819, 820, 821, 799, 822, 823, - 824, 825, 797, 801, 826, 827, 797, 799, 802, 803, - 804, 805, 807, 808, 809, 810, 811, 812, 813, 814, - 815, 817, 828, 818, 829, 819, 820, 821, 831, 822, - 823, 824, 825, 832, 833, 826, 827, 834, 835, 836, - 838, 840, 841, 842, 843, 844, 846, 847, 853, 854, - 855, 856, 857, 828, 858, 829, 859, 860, 861, 831, - 862, 863, 864, 865, 832, 833, 866, 867, 834, 835, - 836, 838, 840, 841, 842, 843, 844, 846, 847, 853, - 854, 855, 856, 857, 868, 858, 869, 859, 860, 861, - - 870, 862, 863, 864, 865, 871, 872, 866, 867, 873, - 874, 875, 876, 878, 879, 0, 882, 886, 880, 888, - 889, 891, 892, 894, 895, 868, 896, 869, 897, 882, - 898, 870, 899, 901, 903, 904, 871, 872, 905, 0, - 873, 874, 875, 876, 878, 879, 880, 882, 886, 880, - 888, 889, 891, 892, 894, 895, 902, 896, 902, 897, - 907, 898, 908, 899, 901, 903, 904, 906, 909, 905, - 906, 910, 911, 913, 914, 915, 916, 919, 921, 922, - 922, 924, 925, 926, 927, 928, 929, 902, 931, 902, - 932, 907, 934, 908, 935, 938, 939, 0, 906, 909, - - 0, 906, 910, 911, 913, 914, 915, 916, 919, 921, - 922, 922, 924, 925, 926, 927, 928, 929, 940, 931, - 941, 932, 942, 934, 944, 935, 938, 939, 940, 945, - 947, 940, 948, 949, 950, 940, 940, 951, 954, 956, - 957, 958, 952, 959, 960, 952, 961, 962, 952, 940, - 963, 941, 952, 942, 964, 944, 965, 952, 966, 940, - 945, 947, 940, 948, 949, 950, 940, 940, 951, 954, - 956, 957, 958, 952, 959, 960, 952, 961, 962, 952, - 967, 963, 968, 952, 969, 964, 970, 965, 952, 966, - 971, 972, 973, 974, 975, 976, 978, 979, 980, 981, - - 982, 983, 984, 985, 986, 987, 988, 989, 990, 992, - 994, 967, 995, 968, 996, 969, 997, 970, 998, 999, - 1000, 971, 972, 973, 974, 975, 976, 978, 979, 980, - 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, - 992, 994, 1001, 995, 1002, 996, 1003, 997, 1004, 998, - 999, 1000, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, - 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1013, - 1022, 1023, 1018, 1001, 1024, 1002, 1025, 1003, 1026, 1004, - 1030, 1031, 1032, 1005, 1006, 1007, 1008, 1009, 1010, 1011, - 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, - - 1013, 1022, 1023, 1018, 1029, 1024, 1029, 1025, 1033, 1026, - 1034, 1030, 1031, 1032, 1035, 1037, 1038, 1039, 1040, 1042, - 1043, 1044, 1029, 1045, 1047, 1049, 1048, 1044, 1050, 1053, - 1054, 1055, 1056, 1057, 1058, 1029, 1048, 1029, 1062, 1033, - 1063, 1034, 1067, 1068, 1069, 1035, 1037, 1038, 1039, 1040, - 1042, 1043, 1044, 1029, 1045, 1047, 1049, 1048, 1044, 1050, - 1053, 1054, 1055, 1056, 1057, 1058, 1064, 1048, 1070, 1062, - 1071, 1063, 1072, 1067, 1068, 1069, 1074, 1076, 1078, 1076, - 1079, 1080, 1081, 1064, 1082, 1083, 1084, 1085, 1086, 1087, - 1088, 1081, 1089, 1090, 1091, 1092, 1093, 1064, 1095, 1070, - - 1096, 1071, 1097, 1072, 1098, 1099, 1100, 1074, 1076, 1078, - 1076, 1079, 1080, 1081, 1064, 1082, 1083, 1084, 1085, 1086, - 1087, 1088, 1081, 1089, 1090, 1091, 1092, 1093, 1101, 1095, - 1103, 1096, 1105, 1097, 1106, 1098, 1099, 1100, 1107, 1108, - 1110, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1121, - 1124, 1126, 1127, 1128, 1129, 1130, 1132, 1134, 1135, 1101, - 1136, 1103, 1137, 1105, 1138, 1106, 1113, 1112, 1139, 1107, - 1108, 1110, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, - 1121, 1124, 1126, 1127, 1128, 1129, 1130, 1132, 1134, 1135, - 1141, 1136, 1142, 1137, 1143, 1138, 1144, 1146, 1148, 1139, - - 1150, 1152, 1153, 1154, 1155, 1158, 1159, 1160, 1161, 1162, - 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, - 1174, 1141, 1175, 1142, 1176, 1143, 1179, 1144, 1146, 1148, - 1175, 1150, 1152, 1153, 1154, 1155, 1158, 1159, 1160, 1161, - 1162, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, - 1173, 1174, 1180, 1175, 1181, 1176, 1182, 1179, 1183, 1184, - 1185, 1175, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, - 1194, 1195, 1197, 1199, 1200, 1201, 1202, 1203, 1204, 1205, - 1206, 1207, 1208, 1180, 1209, 1181, 1210, 1182, 1211, 1183, - 1184, 1185, 1212, 1186, 1187, 1188, 1189, 1190, 1191, 1192, - - 1193, 1194, 1195, 1197, 1199, 1200, 1201, 1202, 1203, 1204, - 1205, 1206, 1207, 1208, 1213, 1209, 1216, 1210, 1218, 1211, - 1219, 1220, 1221, 1212, 1222, 1223, 1224, 1229, 1230, 1231, - 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1242, - 1244, 1245, 1246, 1247, 1248, 1213, 1249, 1216, 1250, 1218, - 1251, 1219, 1220, 1221, 1253, 1222, 1223, 1224, 1229, 1230, - 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, - 1242, 1244, 1245, 1246, 1247, 1248, 1252, 1249, 1256, 1250, - 1259, 1251, 1260, 1261, 1262, 1253, 1263, 1264, 1265, 1266, - 1267, 1268, 1252, 1269, 1270, 1271, 1272, 1273, 1274, 1277, - - 1279, 1280, 1282, 1283, 1284, 1285, 1286, 1252, 1287, 1256, - 1288, 1259, 1290, 1260, 1261, 1262, 1293, 1263, 1264, 1265, - 1266, 1267, 1268, 1252, 1269, 1270, 1271, 1272, 1273, 1274, - 1277, 1279, 1280, 1282, 1283, 1284, 1285, 1286, 1294, 1287, - 1295, 1288, 1296, 1290, 1297, 1298, 1300, 1293, 1301, 1302, - 1303, 1304, 1305, 1307, 1308, 1309, 1310, 1311, 0, 0, - 1316, 1317, 1318, 1313, 1319, 1320, 1314, 1321, 1322, 1294, - 1323, 1295, 1324, 1296, 1325, 1297, 1298, 1300, 1327, 1301, - 1302, 1303, 1304, 1305, 1307, 1308, 1309, 1310, 1311, 1313, - 1314, 1316, 1317, 1318, 1313, 1319, 1320, 1314, 1321, 1322, - - 1328, 1323, 1329, 1324, 1330, 1325, 1332, 1333, 1335, 1327, - 1337, 1338, 1339, 1341, 1343, 1344, 1345, 1346, 1347, 1348, - 1349, 1350, 1351, 1353, 1354, 1355, 1356, 1358, 1359, 1360, - 1361, 1328, 1362, 1329, 1363, 1330, 1364, 1332, 1333, 1335, - 1365, 1337, 1338, 1339, 1341, 1343, 1344, 1345, 1346, 1347, - 1348, 1349, 1350, 1351, 1353, 1354, 1355, 1356, 1358, 1359, - 1360, 1361, 1366, 1362, 1368, 1363, 1369, 1364, 1371, 1372, - 1373, 1365, 1374, 1375, 1376, 1377, 1378, 1380, 1381, 1382, - 1383, 1384, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1394, - 1395, 1396, 1397, 1366, 1398, 1368, 1400, 1369, 1400, 1371, - - 1372, 1373, 1402, 1374, 1375, 1376, 1377, 1378, 1380, 1381, - 1382, 1383, 1384, 1386, 1387, 1388, 1389, 1390, 1391, 1392, - 1394, 1395, 1396, 1397, 1403, 1398, 1404, 1400, 1405, 1400, - 1407, 1408, 1410, 1402, 1412, 1413, 1414, 1415, 1416, 1417, - 1418, 1419, 1420, 1421, 1403, 1422, 1423, 1424, 1425, 1426, - 1427, 1428, 1429, 1430, 1431, 1403, 1432, 1404, 1433, 1405, - 1435, 1407, 1408, 1410, 1436, 1412, 1413, 1414, 1415, 1416, - 1417, 1418, 1419, 1420, 1421, 1403, 1422, 1423, 1424, 1425, - 1426, 1427, 1428, 1429, 1430, 1431, 1434, 1432, 1434, 1433, - 1437, 1435, 1438, 1440, 1441, 1436, 1442, 1443, 1444, 1447, - - 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, - 1458, 1459, 1461, 1463, 1464, 1466, 1467, 1434, 1468, 1434, - 1470, 1437, 1471, 1438, 1440, 1441, 1472, 1442, 1443, 1444, - 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, - 1457, 1458, 1459, 1461, 1463, 1464, 1466, 1467, 1473, 1468, - 1474, 1470, 1475, 1471, 1477, 1478, 1480, 1472, 1481, 1482, - 1483, 1484, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, - 1494, 1495, 1478, 1496, 1498, 1499, 1500, 1501, 1477, 1473, - 1502, 1474, 1503, 1475, 1505, 1477, 1478, 1480, 1506, 1481, - 1482, 1483, 1484, 1486, 1487, 1488, 1489, 1490, 1491, 1492, - - 1493, 1494, 1495, 1507, 1496, 1498, 1499, 1500, 1501, 1508, - 1510, 1502, 1511, 1503, 1512, 1505, 1514, 1515, 1516, 1506, - 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, - 1527, 1528, 1529, 1530, 1507, 1531, 1532, 1533, 1534, 1538, - 1508, 1510, 1539, 1511, 1540, 1512, 1541, 1514, 1515, 1516, - 1542, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, - 1526, 1527, 1528, 1529, 1530, 1543, 1531, 1532, 1533, 1534, - 1538, 1544, 1545, 1539, 1546, 1540, 1549, 1541, 1550, 1551, - 1552, 1542, 1553, 1554, 1555, 1557, 1558, 1560, 1561, 1563, - 1564, 1565, 1567, 1568, 1569, 1570, 1543, 1572, 1574, 1575, - - 1577, 1578, 1544, 1545, 1579, 1546, 1580, 1549, 1581, 1550, - 1551, 1552, 1582, 1553, 1554, 1555, 1557, 1558, 1560, 1561, - 1563, 1564, 1565, 1567, 1568, 1569, 1570, 1583, 1572, 1574, - 1575, 1577, 1578, 1584, 1586, 1579, 1588, 1580, 1589, 1581, - 1590, 1594, 1595, 1582, 1596, 1597, 1598, 1600, 1601, 1603, - 1604, 1607, 1611, 1612, 1613, 1615, 1616, 1618, 1583, 1620, - 1621, 1623, 1625, 1627, 1584, 1586, 1629, 1588, 1630, 1589, - 1632, 1590, 1594, 1595, 1618, 1596, 1597, 1598, 1600, 1601, - 1603, 1604, 1607, 1611, 1612, 1613, 1615, 1616, 1618, 1619, - 1620, 1621, 1623, 1625, 1627, 1633, 1635, 1629, 1636, 1630, - - 1638, 1632, 1639, 1640, 1642, 1646, 1619, 1648, 1649, 1650, - 1651, 1652, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, - 1619, 1662, 1663, 1664, 1666, 1667, 1633, 1635, 1668, 1636, - 1669, 1638, 1670, 1639, 1640, 1642, 1646, 1671, 1648, 1649, - 1650, 1651, 1652, 1654, 1655, 1656, 1657, 1658, 1659, 1660, - 1661, 1672, 1662, 1663, 1664, 1666, 1667, 1673, 1674, 1668, - 1676, 1669, 1677, 1670, 1678, 1679, 1680, 1681, 1671, 1682, - 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, - 1695, 1696, 1672, 1697, 1698, 1699, 1700, 1701, 1673, 1674, - 1705, 1676, 1707, 1677, 1709, 1678, 1679, 1680, 1681, 1711, - - 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, - 1692, 1695, 1696, 1712, 1697, 1698, 1699, 1700, 1701, 1713, - 1714, 1705, 1716, 1707, 1718, 1709, 1719, 1720, 1721, 1722, - 1711, 1723, 1724, 1725, 1729, 1727, 1728, 1731, 1732, 1737, - 1736, 1738, 1741, 1742, 1712, 1736, 1728, 1745, 1749, 1750, - 1713, 1714, 1727, 1716, 1751, 1718, 1752, 1719, 1720, 1721, - 1722, 1753, 1723, 1724, 1725, 1729, 1727, 1728, 1731, 1732, - 1737, 1736, 1738, 1741, 1742, 1754, 1736, 1757, 1745, 1749, - 1750, 1758, 1759, 1760, 1761, 1751, 1762, 1752, 1763, 1764, - 1766, 1767, 1753, 1768, 1769, 1770, 1771, 1772, 1773, 1774, - - 1776, 1777, 1778, 1779, 1780, 1781, 1754, 1783, 1757, 1786, - 1788, 1792, 1758, 1759, 1760, 1761, 1794, 1762, 1795, 1763, - 1764, 1766, 1767, 1796, 1768, 1769, 1770, 1771, 1772, 1773, - 1774, 1776, 1777, 1778, 1779, 1780, 1781, 1797, 1783, 1799, - 1786, 1788, 1792, 1803, 1804, 1810, 1811, 1794, 1813, 1795, - 1814, 1815, 1816, 1818, 1796, 1810, 1819, 1820, 1821, 1823, - 1824, 1825, 1826, 1827, 1832, 1833, 1811, 1834, 1797, 1837, - 1799, 1840, 1841, 1843, 1803, 1804, 1810, 1811, 1845, 1813, - 1846, 1814, 1815, 1816, 1818, 1847, 1848, 1819, 1820, 1821, - 1823, 1824, 1825, 1826, 1827, 1832, 1833, 1851, 1834, 1853, - - 1837, 1855, 1840, 1841, 1843, 1856, 1857, 1859, 1863, 1845, - 1865, 1846, 1862, 1861, 1866, 1862, 1847, 1848, 1867, 1869, - 1870, 1871, 1872, 1873, 1875, 1876, 1877, 1879, 1851, 1880, - 1853, 1882, 1855, 1861, 1883, 1887, 1856, 1857, 1859, 1863, - 1888, 1865, 1889, 1862, 1861, 1866, 1890, 1891, 1892, 1867, - 1869, 1870, 1871, 1872, 1873, 1875, 1876, 1877, 1879, 1894, - 1880, 1893, 1882, 1895, 1893, 1883, 1887, 1896, 1897, 1901, - 1902, 1888, 1904, 1889, 1905, 1907, 1911, 1890, 1891, 1892, - 1912, 1913, 1914, 1894, 1915, 1917, 1919, 1920, 1922, 1923, - 1894, 1924, 1893, 1925, 1895, 1929, 1930, 1935, 1896, 1897, - - 1901, 1902, 1936, 1904, 1937, 1905, 1907, 1911, 1940, 1917, - 1943, 1912, 1913, 1914, 1944, 1915, 1917, 1919, 1920, 1922, - 1923, 1945, 1924, 1948, 1925, 1949, 1929, 1930, 1935, 0, - 0, 0, 0, 1936, 0, 1937, 0, 0, 0, 1940, - 0, 1943, 0, 0, 0, 1944, 0, 0, 0, 0, - 0, 0, 1945, 0, 1948, 0, 1949, 1953, 1953, 1953, - 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1954, 1954, 1954, - 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1955, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1956, 1956, 1956, - 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1957, 0, 1957, - - 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1958, 0, 1958, - 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1959, 1959, 1960, - 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1961, - 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1962, - 0, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1963, - 0, 1963, 1964, 1964, 1964, 1964, 1964, 1964, 1964, 1964, - 1964, 1964, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, - 1965, 1965, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, - 1966, 1966, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, - 1967, 1967, 1968, 1968, 1968, 0, 0, 1968, 1968, 1968, - - 0, 1968, 1969, 0, 1969, 1969, 1969, 0, 1969, 1969, - 1969, 1969, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, - 1970, 1970, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, - 1971, 1971, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, - 1972, 1972, 1973, 0, 0, 0, 1973, 1973, 0, 1973, - 1974, 1974, 1974, 0, 1974, 1974, 1974, 1974, 1974, 1974, - 1975, 1975, 1975, 1975, 0, 1975, 1975, 1975, 1975, 1975, - 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1978, 0, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, - - 1979, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952 - + 72, 89, 108, 91, 125, 87, 89, 105, 86, 91, + 109, 91, 108, 87, 109, 108, 86, 103, 86, 87, + 89, 89, 87, 86, 120, 90, 164, 120, 109, 90, + + 99, 111, 89, 108, 91, 90, 112, 89, 90, 111, + 91, 109, 91, 108, 116, 109, 108, 98, 111, 165, + 169, 112, 170, 115, 116, 120, 90, 164, 120, 109, + 90, 117, 111, 115, 117, 117, 90, 112, 115, 90, + 111, 597, 119, 599, 599, 116, 119, 143, 143, 111, + 165, 169, 112, 170, 115, 116, 97, 143, 144, 123, + 144, 144, 117, 96, 115, 117, 117, 52, 123, 115, + 144, 146, 146, 119, 123, 147, 147, 119, 173, 147, + 147, 146, 51, 597, 123, 50, 152, 152, 143, 21, + 123, 602, 602, 153, 153, 15, 152, 153, 153, 123, + + 157, 144, 603, 603, 641, 123, 641, 174, 166, 173, + 0, 157, 146, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 152, 166, 150, + 155, 157, 150, 150, 155, 150, 161, 159, 174, 166, + 175, 155, 157, 159, 167, 167, 167, 155, 172, 177, + 161, 179, 172, 178, 175, 176, 176, 178, 181, 166, + 183, 155, 150, 150, 150, 155, 150, 161, 159, 642, + 642, 175, 155, 0, 159, 167, 167, 167, 155, 172, + 177, 161, 179, 172, 178, 175, 176, 176, 178, 181, + 0, 183, 0, 150, 150, 150, 150, 150, 150, 150, + + 150, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 184, 185, 151, 180, 0, + 151, 151, 180, 151, 182, 186, 182, 182, 187, 188, + 182, 189, 190, 191, 192, 194, 187, 195, 196, 197, + 201, 207, 187, 648, 648, 196, 184, 185, 208, 180, + 151, 151, 151, 180, 151, 182, 186, 182, 182, 187, + 188, 182, 189, 190, 191, 192, 194, 187, 195, 196, + 197, 201, 207, 187, 193, 193, 196, 198, 205, 208, + 193, 151, 151, 151, 151, 151, 151, 151, 151, 0, + 211, 193, 200, 198, 205, 198, 209, 200, 200, 204, + + 198, 204, 204, 212, 209, 193, 193, 204, 198, 205, + 213, 193, 206, 206, 206, 210, 214, 215, 216, 210, + 206, 211, 193, 200, 198, 205, 198, 209, 200, 200, + 204, 198, 204, 204, 212, 209, 218, 217, 204, 217, + 219, 213, 220, 206, 206, 206, 210, 214, 215, 216, + 210, 206, 221, 222, 223, 221, 224, 649, 649, 222, + 226, 224, 221, 0, 227, 228, 229, 218, 217, 230, + 217, 219, 0, 220, 232, 233, 235, 236, 237, 0, + 234, 240, 242, 221, 222, 223, 221, 224, 225, 225, + 222, 226, 224, 221, 225, 227, 228, 229, 225, 225, + + 230, 225, 231, 231, 234, 232, 233, 235, 236, 237, + 238, 234, 240, 242, 239, 231, 239, 245, 241, 225, + 225, 238, 239, 247, 248, 225, 241, 249, 250, 225, + 225, 251, 225, 231, 231, 234, 252, 253, 241, 254, + 255, 238, 256, 262, 263, 239, 231, 239, 245, 241, + 264, 265, 238, 239, 247, 248, 266, 241, 249, 250, + 267, 268, 251, 269, 270, 271, 272, 252, 253, 241, + 254, 255, 273, 256, 262, 263, 274, 275, 276, 272, + 277, 264, 265, 267, 278, 280, 280, 266, 0, 283, + 284, 267, 268, 282, 269, 270, 271, 272, 286, 285, + + 282, 285, 287, 273, 288, 289, 282, 274, 275, 276, + 272, 277, 290, 291, 267, 278, 290, 293, 294, 280, + 283, 284, 295, 292, 282, 292, 292, 296, 295, 286, + 285, 282, 285, 287, 297, 288, 289, 282, 298, 295, + 299, 300, 301, 290, 291, 302, 304, 290, 293, 294, + 305, 306, 307, 295, 292, 308, 292, 292, 296, 295, + 309, 310, 307, 311, 312, 297, 313, 314, 316, 298, + 295, 299, 300, 301, 317, 318, 302, 304, 314, 315, + 0, 305, 306, 307, 326, 326, 308, 315, 326, 326, + 0, 309, 310, 307, 311, 312, 333, 313, 314, 316, + + 334, 323, 323, 325, 325, 317, 318, 327, 327, 314, + 315, 323, 324, 325, 324, 324, 335, 327, 315, 336, + 337, 328, 328, 339, 324, 328, 328, 333, 338, 338, + 340, 334, 341, 342, 343, 344, 345, 346, 347, 350, + 351, 349, 323, 352, 325, 341, 349, 335, 327, 354, + 336, 337, 349, 356, 339, 324, 357, 358, 359, 338, + 338, 340, 360, 341, 342, 343, 344, 345, 346, 347, + 350, 351, 349, 361, 352, 361, 341, 349, 362, 363, + 354, 364, 0, 349, 356, 366, 367, 357, 358, 359, + 368, 383, 383, 360, 384, 384, 389, 391, 384, 384, + + 399, 383, 857, 857, 361, 0, 361, 858, 858, 362, + 363, 368, 364, 366, 367, 0, 366, 367, 0, 395, + 395, 368, 0, 400, 0, 401, 0, 389, 391, 395, + 0, 399, 383, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 402, 403, 390, + 404, 0, 390, 390, 400, 390, 401, 396, 396, 405, + 395, 396, 396, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 422, 402, 403, + 423, 404, 390, 390, 390, 0, 390, 601, 601, 0, + 405, 601, 601, 0, 406, 407, 408, 409, 410, 411, + + 412, 413, 414, 415, 416, 417, 418, 419, 422, 892, + 892, 423, 0, 390, 390, 390, 390, 390, 390, 390, + 390, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 424, 420, 393, 425, 0, + 393, 393, 426, 393, 420, 427, 428, 429, 431, 432, + 420, 433, 424, 434, 435, 436, 437, 438, 439, 440, + 442, 444, 445, 446, 437, 447, 424, 420, 448, 425, + 393, 393, 393, 426, 393, 420, 427, 428, 429, 431, + 432, 420, 433, 424, 434, 435, 436, 437, 438, 439, + 440, 442, 444, 445, 446, 437, 447, 1126, 1126, 448, + + 0, 393, 393, 393, 393, 393, 393, 393, 393, 394, + 394, 449, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 441, 450, 451, 453, 0, 394, 394, + 454, 394, 455, 441, 454, 456, 457, 458, 459, 460, + 394, 461, 449, 462, 463, 464, 465, 466, 467, 468, + 469, 461, 470, 472, 441, 450, 451, 453, 394, 394, + 394, 454, 394, 455, 441, 454, 456, 457, 458, 459, + 460, 394, 461, 473, 462, 463, 464, 465, 466, 467, + 468, 469, 461, 470, 472, 0, 475, 477, 0, 394, + 394, 394, 394, 394, 394, 394, 394, 476, 478, 480, + + 481, 476, 482, 483, 473, 474, 474, 484, 474, 485, + 474, 474, 486, 474, 487, 490, 474, 475, 477, 474, + 491, 492, 493, 474, 474, 492, 494, 474, 476, 478, + 480, 481, 476, 482, 483, 495, 474, 474, 484, 474, + 485, 474, 474, 486, 474, 487, 490, 474, 497, 498, + 474, 491, 492, 493, 474, 474, 492, 494, 474, 479, + 479, 496, 479, 499, 479, 479, 495, 479, 501, 496, + 479, 500, 503, 504, 505, 506, 502, 479, 479, 497, + 498, 479, 500, 502, 507, 508, 509, 499, 510, 511, + 479, 479, 496, 479, 499, 479, 479, 512, 479, 501, + + 496, 479, 500, 503, 504, 505, 506, 502, 479, 479, + 513, 514, 479, 500, 502, 507, 508, 509, 499, 510, + 511, 515, 516, 517, 518, 519, 520, 521, 512, 522, + 523, 525, 526, 527, 516, 528, 529, 530, 531, 532, + 533, 513, 514, 534, 535, 536, 537, 0, 539, 541, + 544, 537, 515, 516, 517, 518, 519, 520, 521, 547, + 522, 523, 525, 526, 527, 516, 528, 529, 530, 531, + 532, 533, 540, 538, 534, 535, 536, 537, 538, 539, + 541, 544, 537, 549, 540, 550, 551, 552, 553, 554, + 547, 555, 556, 558, 559, 560, 561, 562, 563, 564, + + 565, 566, 570, 540, 538, 571, 572, 573, 574, 538, + 575, 576, 577, 578, 549, 540, 550, 551, 552, 553, + 554, 579, 555, 556, 558, 559, 560, 561, 562, 563, + 564, 565, 566, 570, 581, 580, 571, 572, 573, 574, + 582, 575, 576, 577, 578, 580, 583, 584, 585, 586, + 587, 588, 579, 589, 590, 591, 592, 593, 600, 600, + 604, 605, 606, 607, 608, 581, 580, 609, 600, 610, + 611, 582, 612, 613, 614, 615, 580, 583, 584, 585, + 586, 587, 588, 616, 589, 590, 591, 592, 593, 617, + 618, 604, 605, 606, 607, 608, 619, 620, 609, 600, + + 610, 611, 621, 612, 613, 614, 615, 622, 623, 624, + 625, 627, 628, 629, 616, 630, 631, 632, 633, 634, + 617, 618, 635, 636, 638, 637, 0, 619, 620, 639, + 645, 0, 0, 621, 637, 0, 0, 638, 622, 623, + 624, 625, 627, 628, 629, 650, 630, 631, 632, 633, + 634, 0, 651, 635, 636, 638, 637, 639, 652, 653, + 639, 645, 646, 646, 654, 646, 646, 646, 646, 646, + 646, 646, 646, 646, 646, 646, 650, 656, 657, 658, + 0, 646, 646, 651, 646, 659, 660, 661, 662, 652, + 653, 664, 666, 667, 668, 654, 669, 670, 671, 672, + + 673, 665, 674, 675, 674, 676, 670, 677, 656, 657, + 658, 646, 646, 646, 0, 646, 659, 660, 661, 662, + 665, 678, 664, 666, 667, 668, 679, 669, 670, 671, + 672, 673, 665, 674, 675, 674, 676, 670, 677, 680, + 681, 682, 646, 646, 646, 646, 646, 646, 646, 646, + 683, 665, 678, 684, 685, 686, 687, 679, 689, 690, + 691, 692, 693, 694, 695, 697, 698, 699, 700, 701, + 680, 681, 682, 702, 703, 704, 705, 706, 707, 708, + 709, 683, 710, 711, 684, 685, 686, 687, 713, 689, + 690, 691, 692, 693, 694, 695, 697, 698, 699, 700, + + 701, 714, 716, 717, 702, 703, 704, 705, 706, 707, + 708, 709, 718, 710, 711, 715, 719, 720, 721, 713, + 723, 724, 715, 725, 727, 728, 729, 730, 724, 731, + 732, 733, 714, 716, 717, 734, 736, 737, 0, 738, + 739, 740, 741, 718, 742, 743, 715, 719, 720, 721, + 0, 723, 724, 715, 725, 727, 728, 729, 730, 724, + 731, 732, 733, 735, 744, 745, 734, 736, 737, 735, + 738, 739, 740, 741, 746, 742, 743, 747, 748, 749, + 750, 735, 751, 752, 753, 754, 750, 755, 757, 759, + 761, 762, 763, 760, 735, 744, 745, 760, 750, 764, + + 735, 765, 766, 767, 768, 746, 769, 770, 747, 748, + 749, 750, 735, 751, 752, 753, 754, 750, 755, 757, + 759, 761, 762, 763, 760, 771, 772, 773, 760, 750, + 764, 774, 765, 766, 767, 768, 775, 769, 770, 776, + 777, 778, 779, 780, 776, 781, 782, 783, 784, 785, + 786, 787, 788, 789, 790, 791, 771, 772, 773, 792, + 793, 794, 774, 795, 796, 797, 798, 775, 799, 800, + 776, 777, 778, 779, 780, 776, 781, 782, 783, 784, + 785, 786, 787, 788, 789, 790, 791, 801, 802, 803, + 792, 793, 794, 806, 795, 796, 797, 798, 804, 799, + + 800, 808, 804, 806, 809, 810, 811, 812, 814, 815, + 816, 817, 818, 819, 820, 821, 822, 824, 801, 802, + 803, 825, 826, 827, 806, 828, 829, 830, 831, 804, + 832, 833, 808, 804, 806, 809, 810, 811, 812, 814, + 815, 816, 817, 818, 819, 820, 821, 822, 824, 834, + 835, 836, 825, 826, 827, 838, 828, 829, 830, 831, + 839, 832, 833, 840, 841, 842, 843, 845, 847, 848, + 849, 850, 851, 853, 854, 860, 861, 862, 863, 864, + 834, 835, 836, 865, 866, 867, 838, 868, 869, 870, + 871, 839, 872, 873, 840, 841, 842, 843, 845, 847, + + 848, 849, 850, 851, 853, 854, 860, 861, 862, 863, + 864, 874, 875, 876, 865, 866, 867, 877, 868, 869, + 870, 871, 878, 872, 873, 879, 880, 881, 882, 883, + 884, 885, 886, 887, 889, 890, 0, 893, 897, 891, + 899, 900, 874, 875, 876, 902, 903, 905, 877, 906, + 893, 907, 908, 878, 909, 910, 879, 880, 881, 882, + 883, 884, 885, 886, 887, 889, 890, 891, 893, 897, + 891, 899, 900, 912, 914, 915, 902, 903, 905, 913, + 906, 913, 907, 908, 916, 909, 910, 917, 918, 919, + 917, 920, 921, 922, 924, 925, 926, 927, 930, 932, + + 933, 933, 935, 936, 912, 914, 915, 937, 938, 939, + 913, 940, 913, 942, 943, 916, 945, 946, 917, 918, + 919, 917, 920, 921, 922, 924, 925, 926, 927, 930, + 932, 933, 933, 935, 936, 949, 950, 952, 937, 938, + 939, 951, 940, 953, 942, 943, 955, 945, 946, 956, + 958, 951, 959, 960, 951, 961, 962, 0, 951, 951, + 0, 965, 967, 0, 968, 969, 949, 950, 952, 970, + 971, 972, 951, 973, 953, 974, 975, 955, 976, 977, + 956, 958, 951, 959, 960, 951, 961, 962, 963, 951, + 951, 963, 965, 967, 963, 968, 969, 978, 963, 979, + + 970, 971, 972, 963, 973, 980, 974, 975, 981, 976, + 977, 982, 983, 984, 985, 986, 987, 989, 990, 963, + 991, 992, 963, 993, 994, 963, 995, 996, 978, 963, + 979, 997, 998, 999, 963, 1000, 980, 1001, 1003, 981, + 1005, 1006, 982, 983, 984, 985, 986, 987, 989, 990, + 1007, 991, 992, 1008, 993, 994, 1009, 995, 996, 1010, + 1011, 1012, 997, 998, 999, 1013, 1000, 1014, 1001, 1003, + 1015, 1005, 1006, 1016, 1017, 1018, 1019, 1020, 1021, 1022, + 1023, 1007, 1025, 1026, 1008, 1024, 1027, 1009, 1028, 1030, + 1010, 1011, 1012, 1029, 1024, 1031, 1013, 1032, 1014, 1033, + + 1029, 1015, 1034, 1035, 1016, 1017, 1018, 1019, 1020, 1021, + 1022, 1023, 1036, 1025, 1026, 1037, 1024, 1027, 1041, 1028, + 1030, 1040, 1042, 1040, 1029, 1024, 1031, 1043, 1032, 1044, + 1033, 1029, 1045, 1034, 1035, 1046, 1048, 1049, 1050, 1040, + 1051, 1053, 1054, 1036, 1055, 1056, 1037, 1058, 1060, 1041, + 1055, 1059, 1040, 1042, 1040, 1061, 1064, 1065, 1043, 1066, + 1044, 1059, 1067, 1045, 1068, 1069, 1046, 1048, 1049, 1050, + 1040, 1051, 1053, 1054, 1073, 1055, 1056, 1074, 1058, 1060, + 1075, 1055, 1059, 1078, 1079, 1080, 1061, 1064, 1065, 1081, + 1066, 1082, 1059, 1067, 1083, 1068, 1069, 1075, 1085, 1087, + + 1089, 1087, 1090, 1091, 1092, 1073, 1093, 1094, 1074, 1095, + 1096, 1075, 1097, 1092, 1078, 1079, 1080, 1098, 1099, 1100, + 1081, 1101, 1082, 1102, 1103, 1083, 1104, 1105, 1075, 1085, + 1087, 1089, 1087, 1090, 1091, 1092, 1106, 1093, 1094, 1108, + 1095, 1096, 1109, 1097, 1092, 1110, 1111, 1113, 1098, 1099, + 1100, 1114, 1101, 1115, 1102, 1103, 1118, 1104, 1105, 1120, + 1121, 1122, 1123, 1125, 0, 1128, 1129, 1106, 1130, 1127, + 1108, 1131, 1132, 1109, 1133, 1134, 1110, 1111, 1113, 1136, + 1139, 1141, 1114, 1142, 1115, 1143, 1144, 1118, 1145, 1128, + 1120, 1121, 1122, 1123, 1125, 1127, 1128, 1129, 1147, 1130, + + 1127, 1149, 1131, 1132, 1150, 1133, 1134, 1151, 1152, 1153, + 1136, 1139, 1141, 1154, 1142, 1156, 1143, 1144, 1157, 1145, + 1158, 1159, 1161, 1163, 1165, 1167, 1168, 1169, 1170, 1147, + 1173, 1174, 1149, 1175, 1176, 1150, 1177, 1179, 1151, 1152, + 1153, 1180, 1181, 1182, 1154, 1183, 1156, 1184, 1185, 1157, + 1186, 1158, 1159, 1161, 1163, 1165, 1167, 1168, 1169, 1170, + 1187, 1173, 1174, 1188, 1175, 1176, 1189, 1177, 1179, 1190, + 1191, 1194, 1180, 1181, 1182, 1195, 1183, 1190, 1184, 1185, + 1196, 1186, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, + 1205, 1187, 1206, 1207, 1188, 1208, 1209, 1189, 1210, 1212, + + 1190, 1191, 1194, 1214, 1215, 1216, 1195, 1217, 1190, 1218, + 1219, 1196, 1220, 1197, 1198, 1199, 1200, 1201, 1202, 1203, + 1204, 1205, 1221, 1206, 1207, 1222, 1208, 1209, 1223, 1210, + 1212, 1224, 1225, 1226, 1214, 1215, 1216, 1227, 1217, 1228, + 1218, 1219, 1231, 1220, 1233, 1234, 1235, 1236, 1237, 1238, + 1239, 1244, 1245, 1221, 1246, 1247, 1222, 1248, 1249, 1223, + 1250, 1251, 1224, 1225, 1226, 1252, 1253, 1254, 1227, 1255, + 1228, 1257, 1259, 1231, 1260, 1233, 1234, 1235, 1236, 1237, + 1238, 1239, 1244, 1245, 1261, 1246, 1247, 1262, 1248, 1249, + 1263, 1250, 1251, 1264, 1265, 1266, 1252, 1253, 1254, 1268, + + 1255, 1267, 1257, 1259, 1271, 1260, 1274, 1275, 1276, 1277, + 1278, 1279, 1280, 1281, 1282, 1261, 1283, 1267, 1262, 1284, + 1285, 1263, 1286, 1287, 1264, 1265, 1266, 1288, 1289, 1292, + 1268, 1294, 1267, 1295, 1297, 1271, 1298, 1274, 1275, 1276, + 1277, 1278, 1279, 1280, 1281, 1282, 1299, 1283, 1267, 1300, + 1284, 1285, 1301, 1286, 1287, 1302, 1303, 1305, 1288, 1289, + 1292, 1308, 1294, 1309, 1295, 1297, 1310, 1298, 1311, 1312, + 1313, 1314, 1315, 1317, 1318, 1319, 1320, 1299, 1321, 1322, + 1300, 1324, 1325, 1301, 1326, 1327, 1302, 1303, 1305, 1328, + 1331, 1330, 1308, 1333, 1309, 1334, 1335, 1310, 1336, 1311, + + 1312, 1313, 1314, 1315, 1317, 1318, 1319, 1320, 1337, 1321, + 1322, 1338, 1324, 1325, 1331, 1326, 1327, 1330, 1339, 1340, + 1328, 1331, 1330, 1341, 1333, 1342, 1334, 1335, 1344, 1336, + 1345, 1346, 1347, 1349, 1350, 1352, 1354, 1355, 1356, 1337, + 1358, 1360, 1338, 1361, 1362, 1363, 1364, 1365, 1366, 1339, + 1340, 1367, 1368, 1370, 1341, 1371, 1342, 1372, 1373, 1344, + 1375, 1345, 1346, 1347, 1349, 1350, 1352, 1354, 1355, 1356, + 1376, 1358, 1360, 1377, 1361, 1362, 1363, 1364, 1365, 1366, + 1378, 1379, 1367, 1368, 1370, 1380, 1371, 1381, 1372, 1373, + 1382, 1375, 1383, 1385, 1386, 1388, 1389, 1390, 1391, 1392, + + 1393, 1376, 1394, 1395, 1377, 1397, 1398, 1399, 1400, 1401, + 1403, 1378, 1379, 1404, 1405, 1406, 1380, 1407, 1381, 1408, + 1409, 1382, 1411, 1383, 1385, 1386, 1388, 1389, 1390, 1391, + 1392, 1393, 1412, 1394, 1395, 1413, 1397, 1398, 1399, 1400, + 1401, 1403, 1414, 1415, 1404, 1405, 1406, 1417, 1407, 1417, + 1408, 1409, 1419, 1411, 1421, 1420, 1422, 1424, 1425, 1427, + 1429, 1430, 1431, 1412, 1432, 1433, 1413, 1434, 1435, 1436, + 1437, 1438, 1439, 1414, 1415, 1420, 1440, 1441, 1417, 1442, + 1417, 1443, 1444, 1419, 1445, 1421, 1420, 1422, 1424, 1425, + 1427, 1429, 1430, 1431, 1446, 1432, 1433, 1447, 1434, 1435, + + 1436, 1437, 1438, 1439, 1448, 1449, 1420, 1440, 1441, 1450, + 1442, 1452, 1443, 1444, 1451, 1445, 1451, 1453, 1454, 1455, + 1457, 1458, 1459, 1460, 1461, 1446, 1464, 1465, 1447, 1466, + 1467, 1468, 1469, 1470, 1471, 1448, 1449, 1472, 1473, 1474, + 1450, 1475, 1452, 1476, 1477, 1451, 1479, 1451, 1453, 1454, + 1455, 1457, 1458, 1459, 1460, 1461, 1482, 1464, 1465, 1483, + 1466, 1467, 1468, 1469, 1470, 1471, 1485, 1486, 1472, 1473, + 1474, 1487, 1475, 1489, 1476, 1477, 1490, 1479, 1491, 1492, + 1493, 1494, 1496, 1497, 1499, 1500, 1501, 1482, 1502, 1503, + 1483, 1505, 1506, 1507, 1508, 1509, 1510, 1485, 1486, 1511, + + 1497, 1512, 1487, 1513, 1489, 1514, 1496, 1490, 1515, 1491, + 1492, 1493, 1494, 1496, 1497, 1499, 1500, 1501, 1517, 1502, + 1503, 1518, 1505, 1506, 1507, 1508, 1509, 1510, 1519, 1520, + 1511, 1521, 1512, 1522, 1513, 1524, 1514, 1525, 1526, 1515, + 1527, 1529, 1530, 1531, 1533, 1534, 1535, 1536, 1537, 1517, + 1538, 1539, 1518, 1540, 1541, 1542, 1543, 1544, 1545, 1519, + 1520, 1546, 1521, 1547, 1522, 1548, 1524, 1549, 1525, 1526, + 1550, 1527, 1529, 1530, 1531, 1533, 1534, 1535, 1536, 1537, + 1551, 1538, 1539, 1552, 1540, 1541, 1542, 1543, 1544, 1545, + 1553, 1557, 1546, 1558, 1547, 1559, 1548, 1560, 1549, 1561, + + 1562, 1550, 1563, 1564, 1565, 1568, 1569, 1570, 1571, 1572, + 1573, 1551, 1574, 1576, 1552, 1577, 1579, 1580, 1582, 1583, + 1584, 1553, 1557, 1586, 1558, 1587, 1559, 1588, 1560, 1589, + 1561, 1562, 1591, 1563, 1564, 1565, 1568, 1569, 1570, 1571, + 1572, 1573, 1593, 1574, 1576, 1594, 1577, 1579, 1580, 1582, + 1583, 1584, 1596, 1597, 1586, 1598, 1587, 1599, 1588, 1600, + 1589, 1601, 1602, 1591, 1603, 1605, 1607, 1608, 1609, 1613, + 1614, 1615, 1616, 1593, 1617, 1619, 1594, 1620, 1622, 1623, + 1625, 1627, 1631, 1596, 1597, 1632, 1598, 1633, 1599, 1635, + 1600, 1636, 1601, 1602, 1640, 1603, 1605, 1607, 1608, 1609, + + 1613, 1614, 1615, 1616, 1638, 1617, 1619, 1639, 1620, 1622, + 1623, 1625, 1627, 1631, 1641, 1643, 1632, 1645, 1633, 1647, + 1635, 1638, 1636, 1649, 1639, 1640, 1650, 1652, 1653, 1655, + 1656, 1658, 1659, 1660, 1662, 1638, 1666, 1668, 1639, 1669, + 1670, 1671, 1672, 1674, 1675, 1641, 1643, 1676, 1645, 1677, + 1647, 1678, 1679, 1680, 1649, 1681, 1682, 1650, 1652, 1653, + 1655, 1656, 1658, 1659, 1660, 1662, 1683, 1666, 1668, 1684, + 1669, 1670, 1671, 1672, 1674, 1675, 1686, 1687, 1676, 1688, + 1677, 1689, 1678, 1679, 1680, 1690, 1681, 1682, 1691, 1692, + 1693, 1694, 1696, 1697, 1698, 1699, 1700, 1683, 1701, 1702, + + 1684, 1703, 1704, 1705, 1706, 1707, 1708, 1686, 1687, 1709, + 1688, 1710, 1689, 1711, 1712, 1715, 1690, 1716, 1717, 1691, + 1692, 1693, 1694, 1696, 1697, 1698, 1699, 1700, 1718, 1701, + 1702, 1719, 1703, 1704, 1705, 1706, 1707, 1708, 1720, 1721, + 1709, 1725, 1710, 1727, 1711, 1712, 1715, 1729, 1716, 1717, + 1731, 1732, 1733, 1734, 1736, 1738, 1739, 1740, 1741, 1718, + 1742, 1743, 1719, 1744, 1745, 1746, 1749, 1750, 1752, 1720, + 1721, 1753, 1725, 1748, 1727, 1757, 1749, 1758, 1729, 1759, + 1757, 1731, 1732, 1733, 1734, 1736, 1738, 1739, 1740, 1741, + 1748, 1742, 1743, 1762, 1744, 1745, 1746, 1749, 1750, 1752, + + 1763, 1766, 1753, 1770, 1748, 1771, 1757, 1772, 1758, 1773, + 1759, 1757, 1774, 1775, 1778, 1779, 1780, 1781, 1782, 1783, + 1784, 1785, 1787, 1788, 1762, 1789, 1790, 1791, 1792, 1793, + 1794, 1763, 1766, 1795, 1770, 1797, 1771, 1798, 1772, 1799, + 1773, 1800, 1801, 1774, 1775, 1778, 1779, 1780, 1781, 1782, + 1783, 1784, 1785, 1787, 1788, 1802, 1789, 1790, 1791, 1792, + 1793, 1794, 1804, 1807, 1795, 1809, 1797, 1813, 1798, 1815, + 1799, 1816, 1800, 1801, 1817, 1818, 1820, 1824, 1825, 1832, + 1835, 1833, 1836, 1837, 1838, 1840, 1802, 1841, 1842, 1832, + 1843, 1845, 1846, 1804, 1807, 1847, 1809, 1848, 1813, 1849, + + 1815, 1833, 1816, 1854, 1855, 1817, 1818, 1820, 1824, 1825, + 1832, 1835, 1833, 1836, 1837, 1838, 1840, 1856, 1841, 1842, + 1859, 1843, 1845, 1846, 1862, 1863, 1847, 1865, 1848, 1867, + 1849, 1868, 1869, 1870, 1854, 1855, 1873, 1875, 1877, 1878, + 1879, 1881, 1885, 1884, 1887, 1883, 1884, 1888, 1856, 1889, + 1891, 1859, 1892, 1893, 1894, 1862, 1863, 1895, 1865, 1897, + 1867, 1898, 1868, 1869, 1870, 1883, 1899, 1873, 1875, 1877, + 1878, 1879, 1881, 1885, 1884, 1887, 1883, 1901, 1888, 1902, + 1889, 1891, 1904, 1892, 1893, 1894, 1905, 1909, 1895, 1910, + 1897, 1911, 1898, 1912, 1913, 1914, 1915, 1899, 1917, 1915, + + 1918, 1919, 1923, 1924, 1916, 1926, 1927, 1929, 1901, 1933, + 1902, 1934, 1935, 1904, 1936, 1937, 0, 1905, 1909, 1941, + 1910, 1942, 1911, 1939, 1912, 1913, 1914, 1915, 1916, 1917, + 1944, 1918, 1919, 1923, 1924, 1916, 1926, 1927, 1929, 1945, + 1933, 1946, 1934, 1935, 1947, 1936, 1937, 1939, 1951, 1952, + 1941, 1957, 1942, 1958, 1939, 1959, 1962, 1965, 1966, 1967, + 1970, 1944, 1971, 0, 0, 0, 0, 0, 0, 0, + 1945, 0, 1946, 0, 0, 1947, 0, 0, 0, 1951, + 1952, 0, 1957, 0, 1958, 0, 1959, 1962, 1965, 1966, + 1967, 1970, 0, 1971, 1975, 1975, 1975, 1975, 1975, 1975, + + 1975, 1975, 1975, 1975, 1976, 1976, 1976, 1976, 1976, 1976, + 1976, 1976, 1976, 1976, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1978, 1978, 1978, 1978, 1978, 1978, + 1978, 1978, 1978, 1978, 1979, 0, 1979, 1979, 1979, 1979, + 1979, 1979, 1979, 1979, 1980, 0, 1980, 1980, 1980, 1980, + 1980, 1980, 1980, 1980, 1981, 1981, 1982, 1982, 1982, 1982, + 1982, 1982, 1982, 1982, 1982, 1982, 1983, 1983, 1983, 1983, + 1983, 1983, 1983, 1983, 1983, 1983, 1984, 0, 1984, 1984, + 1984, 1984, 1984, 1984, 1984, 1984, 1985, 0, 1985, 1986, + 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1987, + + 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1988, + 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1989, + 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1990, + 1990, 1990, 0, 0, 1990, 1990, 1990, 0, 1990, 1991, + 0, 1991, 1991, 1991, 0, 1991, 1991, 1991, 1991, 1992, + 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1993, + 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1994, + 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1995, + 0, 0, 0, 1995, 1995, 0, 1995, 1996, 1996, 1996, + 0, 1996, 1996, 1996, 1996, 1996, 1996, 1997, 1997, 1997, + + 1997, 0, 1997, 1997, 1997, 1997, 1997, 1998, 1998, 1998, + 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1999, 1999, 1999, + 1999, 1999, 1999, 1999, 1999, 1999, 1999, 2000, 0, 2000, + 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2001, 0, 2001, + 2001, 2001, 2001, 2001, 2001, 2001, 2001, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974 } ; static yy_state_type yy_last_accepting_state; @@ -2487,9 +2505,9 @@ int include_lineno[MAX_INCLUDE_DEPTH]; int include_stack_ptr = 0; char path[MS_MAXPATHLEN]; -#line 2491 "maplexer.c" +#line 2509 "/vagrant/maplexer.c" -#line 2493 "maplexer.c" +#line 2511 "/vagrant/maplexer.c" #define INITIAL 0 #define URL_VARIABLE 1 @@ -2781,7 +2799,7 @@ YY_DECL break; } -#line 2785 "maplexer.c" +#line 2803 "/vagrant/maplexer.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2808,13 +2826,13 @@ YY_DECL while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1953 ) + if ( yy_current_state >= 1975 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 1952 ); + while ( yy_current_state != 1974 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -3018,1391 +3036,1411 @@ YY_RULE_SETUP case 37: YY_RULE_SETUP #line 214 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_JAVASCRIPT); } +{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_CENTERLINE); } YY_BREAK case 38: YY_RULE_SETUP -#line 216 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_INTERSECTS); } +#line 215 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_DENSIFY); } YY_BREAK case 39: YY_RULE_SETUP -#line 217 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_DISJOINT); } +#line 216 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_OUTER); } YY_BREAK case 40: YY_RULE_SETUP -#line 218 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_TOUCHES); } +#line 217 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_INNER); } YY_BREAK case 41: YY_RULE_SETUP -#line 219 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_OVERLAPS); } +#line 218 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_JAVASCRIPT); } YY_BREAK case 42: YY_RULE_SETUP #line 220 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_CROSSES); } +{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_INTERSECTS); } YY_BREAK case 43: YY_RULE_SETUP #line 221 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_WITHIN); } +{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_DISJOINT); } YY_BREAK case 44: YY_RULE_SETUP #line 222 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_CONTAINS); } +{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_TOUCHES); } YY_BREAK case 45: YY_RULE_SETUP #line 223 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_EQUALS); } +{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_OVERLAPS); } YY_BREAK case 46: YY_RULE_SETUP #line 224 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_BEYOND); } +{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_CROSSES); } YY_BREAK case 47: YY_RULE_SETUP #line 225 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_DWITHIN); } +{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_WITHIN); } YY_BREAK case 48: YY_RULE_SETUP -#line 227 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_FROMTEXT); } +#line 226 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_CONTAINS); } YY_BREAK case 49: YY_RULE_SETUP -#line 229 "maplexer.l" -{ msyynumber=MS_TRUE; return(MS_TOKEN_LITERAL_BOOLEAN); } +#line 227 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_EQUALS); } YY_BREAK case 50: YY_RULE_SETUP -#line 230 "maplexer.l" -{ msyynumber=MS_FALSE; return(MS_TOKEN_LITERAL_BOOLEAN); } +#line 228 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_BEYOND); } YY_BREAK case 51: YY_RULE_SETUP -#line 232 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(COLORRANGE); } +#line 229 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_DWITHIN); } YY_BREAK case 52: YY_RULE_SETUP -#line 233 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(DATARANGE); } +#line 231 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_FROMTEXT); } YY_BREAK case 53: YY_RULE_SETUP -#line 234 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(RANGEITEM); } +#line 233 "maplexer.l" +{ msyynumber=MS_TRUE; return(MS_TOKEN_LITERAL_BOOLEAN); } YY_BREAK case 54: YY_RULE_SETUP -#line 236 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(ALIGN); } +#line 234 "maplexer.l" +{ msyynumber=MS_FALSE; return(MS_TOKEN_LITERAL_BOOLEAN); } YY_BREAK case 55: YY_RULE_SETUP -#line 237 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(ANCHORPOINT); } +#line 236 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(COLORRANGE); } YY_BREAK case 56: YY_RULE_SETUP -#line 238 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(ANGLE); } +#line 237 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(DATARANGE); } YY_BREAK case 57: YY_RULE_SETUP -#line 239 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(ANTIALIAS); } +#line 238 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(RANGEITEM); } YY_BREAK case 58: YY_RULE_SETUP #line 240 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(BACKGROUNDCOLOR); } +{ MS_LEXER_RETURN_TOKEN(ALIGN); } YY_BREAK case 59: YY_RULE_SETUP #line 241 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(BANDSITEM); } +{ MS_LEXER_RETURN_TOKEN(ANCHORPOINT); } YY_BREAK case 60: YY_RULE_SETUP #line 242 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(BINDVALS); } +{ MS_LEXER_RETURN_TOKEN(ANGLE); } YY_BREAK case 61: YY_RULE_SETUP #line 243 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(BOM); } +{ MS_LEXER_RETURN_TOKEN(ANTIALIAS); } YY_BREAK case 62: YY_RULE_SETUP #line 244 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(BROWSEFORMAT); } +{ MS_LEXER_RETURN_TOKEN(BACKGROUNDCOLOR); } YY_BREAK case 63: YY_RULE_SETUP #line 245 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(BUFFER); } +{ MS_LEXER_RETURN_TOKEN(BANDSITEM); } YY_BREAK case 64: YY_RULE_SETUP #line 246 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(CHARACTER); } +{ MS_LEXER_RETURN_TOKEN(BINDVALS); } YY_BREAK case 65: YY_RULE_SETUP #line 247 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(CLASS); } +{ MS_LEXER_RETURN_TOKEN(BOM); } YY_BREAK case 66: YY_RULE_SETUP #line 248 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(CLASSITEM); } +{ MS_LEXER_RETURN_TOKEN(BROWSEFORMAT); } YY_BREAK case 67: YY_RULE_SETUP #line 249 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(CLASSGROUP); } +{ MS_LEXER_RETURN_TOKEN(BUFFER); } YY_BREAK case 68: YY_RULE_SETUP #line 250 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(CLUSTER); } +{ MS_LEXER_RETURN_TOKEN(CHARACTER); } YY_BREAK case 69: YY_RULE_SETUP #line 251 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(COLOR); } +{ MS_LEXER_RETURN_TOKEN(CLASS); } YY_BREAK case 70: YY_RULE_SETUP #line 252 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(COMPFILTER); } +{ MS_LEXER_RETURN_TOKEN(CLASSITEM); } YY_BREAK case 71: YY_RULE_SETUP #line 253 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(COMPOSITE); } +{ MS_LEXER_RETURN_TOKEN(CLASSGROUP); } YY_BREAK case 72: YY_RULE_SETUP #line 254 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(COMPOP); } +{ MS_LEXER_RETURN_TOKEN(CLUSTER); } YY_BREAK case 73: YY_RULE_SETUP #line 255 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(CONFIG); } +{ MS_LEXER_RETURN_TOKEN(COLOR); } YY_BREAK case 74: YY_RULE_SETUP #line 256 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(CONNECTION); } +{ MS_LEXER_RETURN_TOKEN(COMPFILTER); } YY_BREAK case 75: YY_RULE_SETUP #line 257 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(CONNECTIONTYPE); } +{ MS_LEXER_RETURN_TOKEN(COMPOSITE); } YY_BREAK case 76: YY_RULE_SETUP #line 258 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(DATA); } +{ MS_LEXER_RETURN_TOKEN(COMPOP); } YY_BREAK case 77: YY_RULE_SETUP #line 259 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(DATAPATTERN); } +{ MS_LEXER_RETURN_TOKEN(CONFIG); } YY_BREAK case 78: YY_RULE_SETUP #line 260 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(DEBUG); } +{ MS_LEXER_RETURN_TOKEN(CONNECTION); } YY_BREAK case 79: YY_RULE_SETUP #line 261 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(DRIVER); } +{ MS_LEXER_RETURN_TOKEN(CONNECTIONTYPE); } YY_BREAK case 80: YY_RULE_SETUP #line 262 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(EMPTY); } +{ MS_LEXER_RETURN_TOKEN(DATA); } YY_BREAK case 81: YY_RULE_SETUP #line 263 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(ENCODING); } +{ MS_LEXER_RETURN_TOKEN(DATAPATTERN); } YY_BREAK case 82: YY_RULE_SETUP #line 264 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(END); } +{ MS_LEXER_RETURN_TOKEN(DEBUG); } YY_BREAK case 83: YY_RULE_SETUP #line 265 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(ERROR); } +{ MS_LEXER_RETURN_TOKEN(DRIVER); } YY_BREAK case 84: YY_RULE_SETUP #line 266 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(EXPRESSION); } +{ MS_LEXER_RETURN_TOKEN(EMPTY); } YY_BREAK case 85: YY_RULE_SETUP #line 267 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(EXTENT); } +{ MS_LEXER_RETURN_TOKEN(ENCODING); } YY_BREAK case 86: YY_RULE_SETUP #line 268 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(EXTENSION); } +{ MS_LEXER_RETURN_TOKEN(END); } YY_BREAK case 87: YY_RULE_SETUP #line 269 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(FEATURE); } +{ MS_LEXER_RETURN_TOKEN(ERROR); } YY_BREAK case 88: YY_RULE_SETUP #line 270 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(FILLED); } +{ MS_LEXER_RETURN_TOKEN(EXPRESSION); } YY_BREAK case 89: YY_RULE_SETUP #line 271 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(FILTER); } +{ MS_LEXER_RETURN_TOKEN(EXTENT); } YY_BREAK case 90: YY_RULE_SETUP #line 272 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(FILTERITEM); } +{ MS_LEXER_RETURN_TOKEN(EXTENSION); } YY_BREAK case 91: YY_RULE_SETUP #line 273 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(FOOTER); } +{ MS_LEXER_RETURN_TOKEN(FEATURE); } YY_BREAK case 92: YY_RULE_SETUP #line 274 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(FONT); } +{ MS_LEXER_RETURN_TOKEN(FILLED); } YY_BREAK case 93: YY_RULE_SETUP #line 275 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(FONTSET); } +{ MS_LEXER_RETURN_TOKEN(FILTER); } YY_BREAK case 94: YY_RULE_SETUP #line 276 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(FORCE); } +{ MS_LEXER_RETURN_TOKEN(FILTERITEM); } YY_BREAK case 95: YY_RULE_SETUP #line 277 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(FORMATOPTION); } +{ MS_LEXER_RETURN_TOKEN(FOOTER); } YY_BREAK case 96: YY_RULE_SETUP #line 278 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(FROM); } +{ MS_LEXER_RETURN_TOKEN(FONT); } YY_BREAK case 97: YY_RULE_SETUP #line 279 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(GAP); } +{ MS_LEXER_RETURN_TOKEN(FONTSET); } YY_BREAK case 98: YY_RULE_SETUP #line 280 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(GEOMTRANSFORM); } +{ MS_LEXER_RETURN_TOKEN(FORCE); } YY_BREAK case 99: YY_RULE_SETUP #line 281 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(GRID); } +{ MS_LEXER_RETURN_TOKEN(FORMATOPTION); } YY_BREAK case 100: YY_RULE_SETUP #line 282 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(GRIDSTEP); } +{ MS_LEXER_RETURN_TOKEN(FROM); } YY_BREAK case 101: YY_RULE_SETUP #line 283 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(GRATICULE); } +{ MS_LEXER_RETURN_TOKEN(GAP); } YY_BREAK case 102: YY_RULE_SETUP #line 284 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(GROUP); } +{ MS_LEXER_RETURN_TOKEN(GEOMTRANSFORM); } YY_BREAK case 103: YY_RULE_SETUP #line 285 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(HEADER); } +{ MS_LEXER_RETURN_TOKEN(GRID); } YY_BREAK case 104: YY_RULE_SETUP #line 286 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(IMAGE); } +{ MS_LEXER_RETURN_TOKEN(GRIDSTEP); } YY_BREAK case 105: YY_RULE_SETUP #line 287 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(IMAGECOLOR); } +{ MS_LEXER_RETURN_TOKEN(GRATICULE); } YY_BREAK case 106: YY_RULE_SETUP #line 288 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(IMAGETYPE); } +{ MS_LEXER_RETURN_TOKEN(GROUP); } YY_BREAK case 107: YY_RULE_SETUP #line 289 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(IMAGEMODE); } +{ MS_LEXER_RETURN_TOKEN(HEADER); } YY_BREAK case 108: YY_RULE_SETUP #line 290 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(IMAGEPATH); } +{ MS_LEXER_RETURN_TOKEN(IMAGE); } YY_BREAK case 109: YY_RULE_SETUP #line 291 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(TEMPPATH); } +{ MS_LEXER_RETURN_TOKEN(IMAGECOLOR); } YY_BREAK case 110: YY_RULE_SETUP #line 292 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(IMAGEURL); } +{ MS_LEXER_RETURN_TOKEN(IMAGETYPE); } YY_BREAK case 111: YY_RULE_SETUP #line 293 "maplexer.l" -{ BEGIN(INCLUDE); } +{ MS_LEXER_RETURN_TOKEN(IMAGEMODE); } YY_BREAK case 112: YY_RULE_SETUP #line 294 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(INDEX); } +{ MS_LEXER_RETURN_TOKEN(IMAGEPATH); } YY_BREAK case 113: YY_RULE_SETUP #line 295 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(INITIALGAP); } +{ MS_LEXER_RETURN_TOKEN(TEMPPATH); } YY_BREAK case 114: YY_RULE_SETUP #line 296 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(INTERVALS); } +{ MS_LEXER_RETURN_TOKEN(IMAGEURL); } YY_BREAK case 115: YY_RULE_SETUP #line 297 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(JOIN); } +{ BEGIN(INCLUDE); } YY_BREAK case 116: YY_RULE_SETUP #line 298 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(KEYIMAGE); } +{ MS_LEXER_RETURN_TOKEN(INDEX); } YY_BREAK case 117: YY_RULE_SETUP #line 299 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(KEYSIZE); } +{ MS_LEXER_RETURN_TOKEN(INITIALGAP); } YY_BREAK case 118: YY_RULE_SETUP #line 300 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(KEYSPACING); } +{ MS_LEXER_RETURN_TOKEN(INTERVALS); } YY_BREAK case 119: YY_RULE_SETUP #line 301 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(LABEL); } +{ MS_LEXER_RETURN_TOKEN(JOIN); } YY_BREAK case 120: YY_RULE_SETUP #line 302 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(LABELCACHE); } +{ MS_LEXER_RETURN_TOKEN(KEYIMAGE); } YY_BREAK case 121: YY_RULE_SETUP #line 303 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(LABELFORMAT); } +{ MS_LEXER_RETURN_TOKEN(KEYSIZE); } YY_BREAK case 122: YY_RULE_SETUP #line 304 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(LABELITEM); } +{ MS_LEXER_RETURN_TOKEN(KEYSPACING); } YY_BREAK case 123: YY_RULE_SETUP #line 305 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(LABELMAXSCALE); } +{ MS_LEXER_RETURN_TOKEN(LABEL); } YY_BREAK case 124: YY_RULE_SETUP #line 306 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(LABELMAXSCALEDENOM); } +{ MS_LEXER_RETURN_TOKEN(LABELCACHE); } YY_BREAK case 125: YY_RULE_SETUP #line 307 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(LABELMINSCALE); } +{ MS_LEXER_RETURN_TOKEN(LABELFORMAT); } YY_BREAK case 126: YY_RULE_SETUP #line 308 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(LABELMINSCALEDENOM); } +{ MS_LEXER_RETURN_TOKEN(LABELITEM); } YY_BREAK case 127: YY_RULE_SETUP #line 309 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(LABELREQUIRES); } +{ MS_LEXER_RETURN_TOKEN(LABELMAXSCALE); } YY_BREAK case 128: YY_RULE_SETUP #line 310 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(LATLON); } +{ MS_LEXER_RETURN_TOKEN(LABELMAXSCALEDENOM); } YY_BREAK case 129: YY_RULE_SETUP #line 311 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(LAYER); } +{ MS_LEXER_RETURN_TOKEN(LABELMINSCALE); } YY_BREAK case 130: YY_RULE_SETUP #line 312 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(LEADER); } +{ MS_LEXER_RETURN_TOKEN(LABELMINSCALEDENOM); } YY_BREAK case 131: YY_RULE_SETUP #line 313 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(LEGEND); } +{ MS_LEXER_RETURN_TOKEN(LABELREQUIRES); } YY_BREAK case 132: YY_RULE_SETUP #line 314 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(LEGENDFORMAT); } +{ MS_LEXER_RETURN_TOKEN(LATLON); } YY_BREAK case 133: YY_RULE_SETUP #line 315 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(LINECAP); } +{ MS_LEXER_RETURN_TOKEN(LAYER); } YY_BREAK case 134: YY_RULE_SETUP #line 316 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(LINEJOIN); } +{ MS_LEXER_RETURN_TOKEN(LEADER); } YY_BREAK case 135: YY_RULE_SETUP #line 317 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(LINEJOINMAXSIZE); } +{ MS_LEXER_RETURN_TOKEN(LEGEND); } YY_BREAK case 136: YY_RULE_SETUP #line 318 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MAP); } +{ MS_LEXER_RETURN_TOKEN(LEGENDFORMAT); } YY_BREAK case 137: YY_RULE_SETUP #line 319 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MARKER); } +{ MS_LEXER_RETURN_TOKEN(LINECAP); } YY_BREAK case 138: YY_RULE_SETUP #line 320 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MARKERSIZE); } +{ MS_LEXER_RETURN_TOKEN(LINEJOIN); } YY_BREAK case 139: YY_RULE_SETUP #line 321 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MASK); } +{ MS_LEXER_RETURN_TOKEN(LINEJOINMAXSIZE); } YY_BREAK case 140: YY_RULE_SETUP #line 322 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MAXARCS); } +{ MS_LEXER_RETURN_TOKEN(MAP); } YY_BREAK case 141: YY_RULE_SETUP #line 323 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MAXBOXSIZE); } +{ MS_LEXER_RETURN_TOKEN(MARKER); } YY_BREAK case 142: YY_RULE_SETUP #line 324 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MAXDISTANCE); } +{ MS_LEXER_RETURN_TOKEN(MARKERSIZE); } YY_BREAK case 143: YY_RULE_SETUP #line 325 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MAXFEATURES); } +{ MS_LEXER_RETURN_TOKEN(MASK); } YY_BREAK case 144: YY_RULE_SETUP #line 326 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MAXINTERVAL); } +{ MS_LEXER_RETURN_TOKEN(MAXARCS); } YY_BREAK case 145: YY_RULE_SETUP #line 327 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MAXSCALE); } +{ MS_LEXER_RETURN_TOKEN(MAXBOXSIZE); } YY_BREAK case 146: YY_RULE_SETUP #line 328 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MAXSCALEDENOM); } +{ MS_LEXER_RETURN_TOKEN(MAXDISTANCE); } YY_BREAK case 147: YY_RULE_SETUP #line 329 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MAXGEOWIDTH); } +{ MS_LEXER_RETURN_TOKEN(MAXFEATURES); } YY_BREAK case 148: YY_RULE_SETUP #line 330 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MAXLENGTH); } +{ MS_LEXER_RETURN_TOKEN(MAXINTERVAL); } YY_BREAK case 149: YY_RULE_SETUP #line 331 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MAXSIZE); } +{ MS_LEXER_RETURN_TOKEN(MAXSCALE); } YY_BREAK case 150: YY_RULE_SETUP #line 332 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MAXSUBDIVIDE); } +{ MS_LEXER_RETURN_TOKEN(MAXSCALEDENOM); } YY_BREAK case 151: YY_RULE_SETUP #line 333 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MAXTEMPLATE); } +{ MS_LEXER_RETURN_TOKEN(MAXGEOWIDTH); } YY_BREAK case 152: YY_RULE_SETUP #line 334 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MAXWIDTH); } +{ MS_LEXER_RETURN_TOKEN(MAXLENGTH); } YY_BREAK case 153: YY_RULE_SETUP #line 335 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(METADATA); } +{ MS_LEXER_RETURN_TOKEN(MAXSIZE); } YY_BREAK case 154: YY_RULE_SETUP #line 336 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MIMETYPE); } +{ MS_LEXER_RETURN_TOKEN(MAXSUBDIVIDE); } YY_BREAK case 155: YY_RULE_SETUP #line 337 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MINARCS); } +{ MS_LEXER_RETURN_TOKEN(MAXTEMPLATE); } YY_BREAK case 156: YY_RULE_SETUP #line 338 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MINBOXSIZE); } +{ MS_LEXER_RETURN_TOKEN(MAXWIDTH); } YY_BREAK case 157: YY_RULE_SETUP #line 339 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MINDISTANCE); } +{ MS_LEXER_RETURN_TOKEN(METADATA); } YY_BREAK case 158: YY_RULE_SETUP #line 340 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(REPEATDISTANCE); } +{ MS_LEXER_RETURN_TOKEN(MIMETYPE); } YY_BREAK case 159: YY_RULE_SETUP #line 341 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MAXOVERLAPANGLE); } +{ MS_LEXER_RETURN_TOKEN(MINARCS); } YY_BREAK case 160: YY_RULE_SETUP #line 342 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MINFEATURESIZE); } +{ MS_LEXER_RETURN_TOKEN(MINBOXSIZE); } YY_BREAK case 161: YY_RULE_SETUP #line 343 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MININTERVAL); } +{ MS_LEXER_RETURN_TOKEN(MINDISTANCE); } YY_BREAK case 162: YY_RULE_SETUP #line 344 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MINSCALE); } +{ MS_LEXER_RETURN_TOKEN(REPEATDISTANCE); } YY_BREAK case 163: YY_RULE_SETUP #line 345 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MINSCALEDENOM); } +{ MS_LEXER_RETURN_TOKEN(MAXOVERLAPANGLE); } YY_BREAK case 164: YY_RULE_SETUP #line 346 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MINGEOWIDTH); } +{ MS_LEXER_RETURN_TOKEN(MINFEATURESIZE); } YY_BREAK case 165: YY_RULE_SETUP #line 347 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MINLENGTH); } +{ MS_LEXER_RETURN_TOKEN(MININTERVAL); } YY_BREAK case 166: YY_RULE_SETUP #line 348 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MINSIZE); } +{ MS_LEXER_RETURN_TOKEN(MINSCALE); } YY_BREAK case 167: YY_RULE_SETUP #line 349 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MINSUBDIVIDE); } +{ MS_LEXER_RETURN_TOKEN(MINSCALEDENOM); } YY_BREAK case 168: YY_RULE_SETUP #line 350 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MINTEMPLATE); } +{ MS_LEXER_RETURN_TOKEN(MINGEOWIDTH); } YY_BREAK case 169: YY_RULE_SETUP #line 351 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MINWIDTH); } +{ MS_LEXER_RETURN_TOKEN(MINLENGTH); } YY_BREAK case 170: YY_RULE_SETUP #line 352 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(NAME); } +{ MS_LEXER_RETURN_TOKEN(MINSIZE); } YY_BREAK case 171: YY_RULE_SETUP #line 353 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(OFFSET); } +{ MS_LEXER_RETURN_TOKEN(MINSUBDIVIDE); } YY_BREAK case 172: YY_RULE_SETUP #line 354 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(OFFSITE); } +{ MS_LEXER_RETURN_TOKEN(MINTEMPLATE); } YY_BREAK case 173: YY_RULE_SETUP #line 355 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(OPACITY); } +{ MS_LEXER_RETURN_TOKEN(MINWIDTH); } YY_BREAK case 174: YY_RULE_SETUP #line 356 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(CONNECTIONOPTIONS); } +{ MS_LEXER_RETURN_TOKEN(NAME); } YY_BREAK case 175: YY_RULE_SETUP #line 357 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(OUTLINECOLOR); } +{ MS_LEXER_RETURN_TOKEN(OFFSET); } YY_BREAK case 176: YY_RULE_SETUP #line 358 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(OUTLINEWIDTH); } +{ MS_LEXER_RETURN_TOKEN(OFFSITE); } YY_BREAK case 177: YY_RULE_SETUP #line 359 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(OUTPUTFORMAT); } +{ MS_LEXER_RETURN_TOKEN(OPACITY); } YY_BREAK case 178: YY_RULE_SETUP #line 360 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(PARTIALS); } +{ MS_LEXER_RETURN_TOKEN(CONNECTIONOPTIONS); } YY_BREAK case 179: YY_RULE_SETUP #line 361 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(PATTERN); } +{ MS_LEXER_RETURN_TOKEN(OUTLINECOLOR); } YY_BREAK case 180: YY_RULE_SETUP #line 362 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(POINTS); } +{ MS_LEXER_RETURN_TOKEN(OUTLINEWIDTH); } YY_BREAK case 181: YY_RULE_SETUP #line 363 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(ITEMS); } +{ MS_LEXER_RETURN_TOKEN(OUTPUTFORMAT); } YY_BREAK case 182: YY_RULE_SETUP #line 364 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(POSITION); } +{ MS_LEXER_RETURN_TOKEN(PARTIALS); } YY_BREAK case 183: YY_RULE_SETUP #line 365 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(POSTLABELCACHE); } +{ MS_LEXER_RETURN_TOKEN(PATTERN); } YY_BREAK case 184: YY_RULE_SETUP #line 366 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(PRIORITY); } +{ MS_LEXER_RETURN_TOKEN(POINTS); } YY_BREAK case 185: YY_RULE_SETUP #line 367 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(PROCESSING); } +{ MS_LEXER_RETURN_TOKEN(ITEMS); } YY_BREAK case 186: YY_RULE_SETUP #line 368 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(PROJECTION); } +{ MS_LEXER_RETURN_TOKEN(POSITION); } YY_BREAK case 187: YY_RULE_SETUP #line 369 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(QUERYFORMAT); } +{ MS_LEXER_RETURN_TOKEN(POSTLABELCACHE); } YY_BREAK case 188: YY_RULE_SETUP #line 370 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(QUERYMAP); } +{ MS_LEXER_RETURN_TOKEN(PRIORITY); } YY_BREAK case 189: YY_RULE_SETUP #line 371 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(REFERENCE); } +{ MS_LEXER_RETURN_TOKEN(PROCESSING); } YY_BREAK case 190: YY_RULE_SETUP #line 372 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(REGION); } +{ MS_LEXER_RETURN_TOKEN(PROJECTION); } YY_BREAK case 191: YY_RULE_SETUP #line 373 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(RELATIVETO); } +{ MS_LEXER_RETURN_TOKEN(QUERYFORMAT); } YY_BREAK case 192: YY_RULE_SETUP #line 374 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(REQUIRES); } +{ MS_LEXER_RETURN_TOKEN(QUERYMAP); } YY_BREAK case 193: YY_RULE_SETUP #line 375 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(RESOLUTION); } +{ MS_LEXER_RETURN_TOKEN(REFERENCE); } YY_BREAK case 194: YY_RULE_SETUP #line 376 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(DEFRESOLUTION); } +{ MS_LEXER_RETURN_TOKEN(REGION); } YY_BREAK case 195: YY_RULE_SETUP #line 377 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(SCALE); } +{ MS_LEXER_RETURN_TOKEN(RELATIVETO); } YY_BREAK case 196: YY_RULE_SETUP #line 378 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(SCALEDENOM); } +{ MS_LEXER_RETURN_TOKEN(REQUIRES); } YY_BREAK case 197: YY_RULE_SETUP #line 379 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(SCALEBAR); } +{ MS_LEXER_RETURN_TOKEN(RESOLUTION); } YY_BREAK case 198: YY_RULE_SETUP #line 380 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(SCALETOKEN); } +{ MS_LEXER_RETURN_TOKEN(DEFRESOLUTION); } YY_BREAK case 199: YY_RULE_SETUP #line 381 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(SHADOWCOLOR); } +{ MS_LEXER_RETURN_TOKEN(SCALE); } YY_BREAK case 200: YY_RULE_SETUP #line 382 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(SHADOWSIZE); } +{ MS_LEXER_RETURN_TOKEN(SCALEDENOM); } YY_BREAK case 201: YY_RULE_SETUP #line 383 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(SHAPEPATH); } +{ MS_LEXER_RETURN_TOKEN(SCALEBAR); } YY_BREAK case 202: YY_RULE_SETUP #line 384 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(SIZE); } +{ MS_LEXER_RETURN_TOKEN(SCALETOKEN); } YY_BREAK case 203: YY_RULE_SETUP #line 385 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(SIZEUNITS); } +{ MS_LEXER_RETURN_TOKEN(SHADOWCOLOR); } YY_BREAK case 204: YY_RULE_SETUP #line 386 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(STATUS); } +{ MS_LEXER_RETURN_TOKEN(SHADOWSIZE); } YY_BREAK case 205: YY_RULE_SETUP #line 387 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(STYLE); } +{ MS_LEXER_RETURN_TOKEN(SHAPEPATH); } YY_BREAK case 206: YY_RULE_SETUP #line 388 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(STYLEITEM); } +{ MS_LEXER_RETURN_TOKEN(SIZE); } YY_BREAK case 207: YY_RULE_SETUP #line 389 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(SYMBOL); } +{ MS_LEXER_RETURN_TOKEN(SIZEUNITS); } YY_BREAK case 208: YY_RULE_SETUP #line 390 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(SYMBOLSCALE); } +{ MS_LEXER_RETURN_TOKEN(STATUS); } YY_BREAK case 209: YY_RULE_SETUP #line 391 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(SYMBOLSCALEDENOM); } +{ MS_LEXER_RETURN_TOKEN(STYLE); } YY_BREAK case 210: YY_RULE_SETUP #line 392 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(SYMBOLSET); } +{ MS_LEXER_RETURN_TOKEN(STYLEITEM); } YY_BREAK case 211: YY_RULE_SETUP #line 393 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(TABLE); } +{ MS_LEXER_RETURN_TOKEN(SYMBOL); } YY_BREAK case 212: YY_RULE_SETUP #line 394 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(TEMPLATE); } +{ MS_LEXER_RETURN_TOKEN(SYMBOLSCALE); } YY_BREAK case 213: YY_RULE_SETUP #line 395 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(TEMPLATEPATTERN); } +{ MS_LEXER_RETURN_TOKEN(SYMBOLSCALEDENOM); } YY_BREAK case 214: YY_RULE_SETUP #line 396 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(TEXT); } +{ MS_LEXER_RETURN_TOKEN(SYMBOLSET); } YY_BREAK case 215: YY_RULE_SETUP #line 397 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(TILEINDEX); } +{ MS_LEXER_RETURN_TOKEN(TABLE); } YY_BREAK case 216: YY_RULE_SETUP #line 398 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(TILEITEM); } +{ MS_LEXER_RETURN_TOKEN(TEMPLATE); } YY_BREAK case 217: YY_RULE_SETUP #line 399 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(TILESRS); } +{ MS_LEXER_RETURN_TOKEN(TEMPLATEPATTERN); } YY_BREAK case 218: YY_RULE_SETUP #line 400 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(TITLE); } +{ MS_LEXER_RETURN_TOKEN(TEXT); } YY_BREAK case 219: YY_RULE_SETUP #line 401 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(TO); } +{ MS_LEXER_RETURN_TOKEN(TILEINDEX); } YY_BREAK case 220: YY_RULE_SETUP #line 402 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(TOLERANCE); } +{ MS_LEXER_RETURN_TOKEN(TILEITEM); } YY_BREAK case 221: YY_RULE_SETUP #line 403 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(TOLERANCEUNITS); } +{ MS_LEXER_RETURN_TOKEN(TILESRS); } YY_BREAK case 222: YY_RULE_SETUP #line 404 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(TRANSPARENT); } +{ MS_LEXER_RETURN_TOKEN(TITLE); } YY_BREAK case 223: YY_RULE_SETUP #line 405 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(TRANSFORM); } +{ MS_LEXER_RETURN_TOKEN(TO); } YY_BREAK case 224: YY_RULE_SETUP #line 406 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(TYPE); } +{ MS_LEXER_RETURN_TOKEN(TOLERANCE); } YY_BREAK case 225: YY_RULE_SETUP #line 407 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(UNITS); } +{ MS_LEXER_RETURN_TOKEN(TOLERANCEUNITS); } YY_BREAK case 226: YY_RULE_SETUP #line 408 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(UTFDATA); } +{ MS_LEXER_RETURN_TOKEN(TRANSPARENT); } YY_BREAK case 227: YY_RULE_SETUP #line 409 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(UTFITEM); } +{ MS_LEXER_RETURN_TOKEN(TRANSFORM); } YY_BREAK case 228: YY_RULE_SETUP #line 410 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(VALIDATION); } +{ MS_LEXER_RETURN_TOKEN(TYPE); } YY_BREAK case 229: YY_RULE_SETUP #line 411 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(VALUES); } +{ MS_LEXER_RETURN_TOKEN(UNITS); } YY_BREAK case 230: YY_RULE_SETUP #line 412 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(WEB); } +{ MS_LEXER_RETURN_TOKEN(UTFDATA); } YY_BREAK case 231: YY_RULE_SETUP #line 413 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(WIDTH); } +{ MS_LEXER_RETURN_TOKEN(UTFITEM); } YY_BREAK case 232: YY_RULE_SETUP #line 414 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(WKT); } +{ MS_LEXER_RETURN_TOKEN(VALIDATION); } YY_BREAK case 233: YY_RULE_SETUP #line 415 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(WRAP); } +{ MS_LEXER_RETURN_TOKEN(VALUES); } YY_BREAK case 234: YY_RULE_SETUP -#line 417 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_LAYER_ANNOTATION); } +#line 416 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(WEB); } YY_BREAK case 235: YY_RULE_SETUP -#line 418 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_AUTO); } +#line 417 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(WIDTH); } YY_BREAK case 236: YY_RULE_SETUP -#line 419 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_AUTO2); } +#line 418 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(WKT); } YY_BREAK case 237: YY_RULE_SETUP -#line 420 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_CJC_BEVEL); } +#line 419 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(WRAP); } YY_BREAK case 238: YY_RULE_SETUP #line 421 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_BITMAP); } +{ MS_LEXER_RETURN_TOKEN(MS_LAYER_ANNOTATION); } YY_BREAK case 239: YY_RULE_SETUP #line 422 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_CJC_BUTT); } +{ MS_LEXER_RETURN_TOKEN(MS_AUTO); } YY_BREAK case 240: YY_RULE_SETUP #line 423 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_CC); } +{ MS_LEXER_RETURN_TOKEN(MS_AUTO2); } YY_BREAK case 241: YY_RULE_SETUP #line 424 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_ALIGN_CENTER); } +{ MS_LEXER_RETURN_TOKEN(MS_CJC_BEVEL); } YY_BREAK case 242: YY_RULE_SETUP #line 425 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_LAYER_CHART); } +{ MS_LEXER_RETURN_TOKEN(MS_BITMAP); } YY_BREAK case 243: YY_RULE_SETUP #line 426 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_LAYER_CIRCLE); } +{ MS_LEXER_RETURN_TOKEN(MS_CJC_BUTT); } YY_BREAK case 244: YY_RULE_SETUP #line 427 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_CL); } +{ MS_LEXER_RETURN_TOKEN(MS_CC); } YY_BREAK case 245: YY_RULE_SETUP #line 428 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_CR); } +{ MS_LEXER_RETURN_TOKEN(MS_ALIGN_CENTER); } YY_BREAK case 246: YY_RULE_SETUP #line 429 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_DB_CSV); } +{ MS_LEXER_RETURN_TOKEN(MS_LAYER_CHART); } YY_BREAK case 247: YY_RULE_SETUP #line 430 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_DB_POSTGRES); } +{ MS_LEXER_RETURN_TOKEN(MS_LAYER_CIRCLE); } YY_BREAK case 248: YY_RULE_SETUP #line 431 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_DB_MYSQL); } +{ MS_LEXER_RETURN_TOKEN(MS_CL); } YY_BREAK case 249: YY_RULE_SETUP #line 432 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_DEFAULT); } +{ MS_LEXER_RETURN_TOKEN(MS_CR); } YY_BREAK case 250: YY_RULE_SETUP #line 433 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_DD); } +{ MS_LEXER_RETURN_TOKEN(MS_DB_CSV); } YY_BREAK case 251: YY_RULE_SETUP #line 434 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_SYMBOL_ELLIPSE); } +{ MS_LEXER_RETURN_TOKEN(MS_DB_POSTGRES); } YY_BREAK case 252: YY_RULE_SETUP #line 435 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_EMBED); } +{ MS_LEXER_RETURN_TOKEN(MS_DB_MYSQL); } YY_BREAK case 253: YY_RULE_SETUP #line 436 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_FALSE); } +{ MS_LEXER_RETURN_TOKEN(MS_DEFAULT); } YY_BREAK case 254: YY_RULE_SETUP #line 437 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_FEET); } +{ MS_LEXER_RETURN_TOKEN(MS_DD); } YY_BREAK case 255: YY_RULE_SETUP #line 438 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_FOLLOW); } +{ MS_LEXER_RETURN_TOKEN(MS_SYMBOL_ELLIPSE); } YY_BREAK case 256: YY_RULE_SETUP #line 439 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_GIANT); } +{ MS_LEXER_RETURN_TOKEN(MS_EMBED); } YY_BREAK case 257: YY_RULE_SETUP #line 440 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_SYMBOL_HATCH); } +{ MS_LEXER_RETURN_TOKEN(MS_FALSE); } YY_BREAK case 258: YY_RULE_SETUP #line 441 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_KERNELDENSITY); } +{ MS_LEXER_RETURN_TOKEN(MS_FEET); } YY_BREAK case 259: YY_RULE_SETUP #line 442 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_IDW); } +{ MS_LEXER_RETURN_TOKEN(MS_FOLLOW); } YY_BREAK case 260: YY_RULE_SETUP #line 443 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_HILITE); } +{ MS_LEXER_RETURN_TOKEN(MS_GIANT); } YY_BREAK case 261: YY_RULE_SETUP #line 444 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_INCHES); } +{ MS_LEXER_RETURN_TOKEN(MS_SYMBOL_HATCH); } YY_BREAK case 262: YY_RULE_SETUP #line 445 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_KILOMETERS); } +{ MS_LEXER_RETURN_TOKEN(MS_KERNELDENSITY); } YY_BREAK case 263: YY_RULE_SETUP #line 446 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_LARGE); } +{ MS_LEXER_RETURN_TOKEN(MS_IDW); } YY_BREAK case 264: YY_RULE_SETUP #line 447 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_LC); } +{ MS_LEXER_RETURN_TOKEN(MS_HILITE); } YY_BREAK case 265: YY_RULE_SETUP #line 448 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_ALIGN_LEFT); } +{ MS_LEXER_RETURN_TOKEN(MS_INCHES); } YY_BREAK case 266: YY_RULE_SETUP #line 449 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_LAYER_LINE); } +{ MS_LEXER_RETURN_TOKEN(MS_KILOMETERS); } YY_BREAK case 267: YY_RULE_SETUP #line 450 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_LL); } +{ MS_LEXER_RETURN_TOKEN(MS_LARGE); } YY_BREAK case 268: YY_RULE_SETUP #line 451 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_LR); } +{ MS_LEXER_RETURN_TOKEN(MS_LC); } YY_BREAK case 269: YY_RULE_SETUP #line 452 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_MEDIUM); } +{ MS_LEXER_RETURN_TOKEN(MS_ALIGN_LEFT); } YY_BREAK case 270: YY_RULE_SETUP #line 453 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_METERS); } +{ MS_LEXER_RETURN_TOKEN(MS_LAYER_LINE); } YY_BREAK case 271: YY_RULE_SETUP #line 454 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_NAUTICALMILES); } +{ MS_LEXER_RETURN_TOKEN(MS_LL); } YY_BREAK case 272: YY_RULE_SETUP #line 455 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_MILES); } +{ MS_LEXER_RETURN_TOKEN(MS_LR); } YY_BREAK case 273: YY_RULE_SETUP #line 456 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_CJC_MITER); } +{ MS_LEXER_RETURN_TOKEN(MS_MEDIUM); } YY_BREAK case 274: YY_RULE_SETUP #line 457 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_MULTIPLE); } +{ MS_LEXER_RETURN_TOKEN(MS_METERS); } YY_BREAK case 275: YY_RULE_SETUP #line 458 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_CJC_NONE); } +{ MS_LEXER_RETURN_TOKEN(MS_NAUTICALMILES); } YY_BREAK case 276: YY_RULE_SETUP #line 459 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_NORMAL); } +{ MS_LEXER_RETURN_TOKEN(MS_MILES); } YY_BREAK case 277: YY_RULE_SETUP #line 460 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_OFF); } +{ MS_LEXER_RETURN_TOKEN(MS_CJC_MITER); } YY_BREAK case 278: YY_RULE_SETUP #line 461 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_OGR); } +{ MS_LEXER_RETURN_TOKEN(MS_MULTIPLE); } YY_BREAK case 279: YY_RULE_SETUP #line 462 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_ON); } +{ MS_LEXER_RETURN_TOKEN(MS_CJC_NONE); } YY_BREAK case 280: YY_RULE_SETUP #line 463 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_JOIN_ONE_TO_ONE); } +{ MS_LEXER_RETURN_TOKEN(MS_NORMAL); } YY_BREAK case 281: YY_RULE_SETUP #line 464 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_JOIN_ONE_TO_MANY); } +{ MS_LEXER_RETURN_TOKEN(MS_OFF); } YY_BREAK case 282: YY_RULE_SETUP #line 465 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_ORACLESPATIAL); } +{ MS_LEXER_RETURN_TOKEN(MS_OGR); } YY_BREAK case 283: YY_RULE_SETUP #line 466 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_PERCENTAGES); } +{ MS_LEXER_RETURN_TOKEN(MS_ON); } YY_BREAK case 284: YY_RULE_SETUP #line 467 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_SYMBOL_PIXMAP); } +{ MS_LEXER_RETURN_TOKEN(MS_JOIN_ONE_TO_ONE); } YY_BREAK case 285: YY_RULE_SETUP #line 468 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_PIXELS); } +{ MS_LEXER_RETURN_TOKEN(MS_JOIN_ONE_TO_MANY); } YY_BREAK case 286: YY_RULE_SETUP #line 469 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_LAYER_POINT); } +{ MS_LEXER_RETURN_TOKEN(MS_ORACLESPATIAL); } YY_BREAK case 287: YY_RULE_SETUP #line 470 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_LAYER_POLYGON); } +{ MS_LEXER_RETURN_TOKEN(MS_PERCENTAGES); } YY_BREAK case 288: YY_RULE_SETUP #line 471 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_POSTGIS); } +{ MS_LEXER_RETURN_TOKEN(MS_SYMBOL_PIXMAP); } YY_BREAK case 289: YY_RULE_SETUP #line 472 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_PLUGIN); } +{ MS_LEXER_RETURN_TOKEN(MS_PIXELS); } YY_BREAK case 290: YY_RULE_SETUP #line 473 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_LAYER_QUERY); } +{ MS_LEXER_RETURN_TOKEN(MS_LAYER_POINT); } YY_BREAK case 291: YY_RULE_SETUP #line 474 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_LAYER_RASTER); } +{ MS_LEXER_RETURN_TOKEN(MS_LAYER_POLYGON); } YY_BREAK case 292: YY_RULE_SETUP #line 475 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_ALIGN_RIGHT); } +{ MS_LEXER_RETURN_TOKEN(MS_POSTGIS); } YY_BREAK case 293: YY_RULE_SETUP #line 476 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_CJC_ROUND); } +{ MS_LEXER_RETURN_TOKEN(MS_PLUGIN); } YY_BREAK case 294: YY_RULE_SETUP #line 477 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_SELECTED); } +{ MS_LEXER_RETURN_TOKEN(MS_LAYER_QUERY); } YY_BREAK case 295: YY_RULE_SETUP #line 478 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_SYMBOL_SIMPLE); } +{ MS_LEXER_RETURN_TOKEN(MS_LAYER_RASTER); } YY_BREAK case 296: YY_RULE_SETUP #line 479 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_SINGLE); } +{ MS_LEXER_RETURN_TOKEN(MS_ALIGN_RIGHT); } YY_BREAK case 297: YY_RULE_SETUP #line 480 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_SMALL); } +{ MS_LEXER_RETURN_TOKEN(MS_CJC_ROUND); } YY_BREAK case 298: YY_RULE_SETUP #line 481 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_CJC_SQUARE); } +{ MS_LEXER_RETURN_TOKEN(MS_SELECTED); } YY_BREAK case 299: YY_RULE_SETUP #line 482 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_SYMBOL_SVG); } +{ MS_LEXER_RETURN_TOKEN(MS_SYMBOL_SIMPLE); } YY_BREAK case 300: YY_RULE_SETUP #line 483 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(POLAROFFSET); } +{ MS_LEXER_RETURN_TOKEN(MS_SINGLE); } YY_BREAK case 301: YY_RULE_SETUP #line 484 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_TINY); } +{ MS_LEXER_RETURN_TOKEN(MS_SMALL); } YY_BREAK case 302: YY_RULE_SETUP #line 485 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_CJC_TRIANGLE); } +{ MS_LEXER_RETURN_TOKEN(MS_CJC_SQUARE); } YY_BREAK case 303: YY_RULE_SETUP #line 486 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_TRUE); } +{ MS_LEXER_RETURN_TOKEN(MS_SYMBOL_SVG); } YY_BREAK case 304: YY_RULE_SETUP #line 487 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_TRUETYPE); } +{ MS_LEXER_RETURN_TOKEN(POLAROFFSET); } YY_BREAK case 305: YY_RULE_SETUP #line 488 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_UC); } +{ MS_LEXER_RETURN_TOKEN(MS_TINY); } YY_BREAK case 306: YY_RULE_SETUP #line 489 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_UL); } +{ MS_LEXER_RETURN_TOKEN(MS_CJC_TRIANGLE); } YY_BREAK case 307: YY_RULE_SETUP #line 490 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_UR); } +{ MS_LEXER_RETURN_TOKEN(MS_TRUE); } YY_BREAK case 308: YY_RULE_SETUP #line 491 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_UNION); } +{ MS_LEXER_RETURN_TOKEN(MS_TRUETYPE); } YY_BREAK case 309: YY_RULE_SETUP #line 492 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_UVRASTER); } +{ MS_LEXER_RETURN_TOKEN(MS_UC); } YY_BREAK case 310: YY_RULE_SETUP #line 493 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_CONTOUR); } +{ MS_LEXER_RETURN_TOKEN(MS_UL); } YY_BREAK case 311: YY_RULE_SETUP #line 494 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_SYMBOL_VECTOR); } +{ MS_LEXER_RETURN_TOKEN(MS_UR); } YY_BREAK case 312: YY_RULE_SETUP #line 495 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_WFS); } +{ MS_LEXER_RETURN_TOKEN(MS_UNION); } YY_BREAK case 313: YY_RULE_SETUP #line 496 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(MS_WMS); } +{ MS_LEXER_RETURN_TOKEN(MS_UVRASTER); } YY_BREAK case 314: YY_RULE_SETUP +#line 497 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(MS_CONTOUR); } + YY_BREAK +case 315: +YY_RULE_SETUP #line 498 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(MS_SYMBOL_VECTOR); } + YY_BREAK +case 316: +YY_RULE_SETUP +#line 499 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(MS_WFS); } + YY_BREAK +case 317: +YY_RULE_SETUP +#line 500 "maplexer.l" +{ MS_LEXER_RETURN_TOKEN(MS_WMS); } + YY_BREAK +case 318: +YY_RULE_SETUP +#line 502 "maplexer.l" { msyytext++; msyytext[strlen(msyytext)-1] = '\0'; @@ -4412,9 +4450,9 @@ YY_RULE_SETUP return(MS_STRING); } YY_BREAK -case 315: +case 319: YY_RULE_SETUP -#line 506 "maplexer.l" +#line 510 "maplexer.l" { msyytext++; msyytext[strlen(msyytext)-1] = '\0'; @@ -4425,10 +4463,10 @@ YY_RULE_SETUP return(MS_NUMBER); } YY_BREAK -case 316: -/* rule 316 can match eol */ +case 320: +/* rule 320 can match eol */ YY_RULE_SETUP -#line 516 "maplexer.l" +#line 520 "maplexer.l" { msyytext++; msyytext[strlen(msyytext)-1] = '\0'; @@ -4438,34 +4476,34 @@ YY_RULE_SETUP return(MS_BINDING); } YY_BREAK -case 317: +case 321: YY_RULE_SETUP -#line 525 "maplexer.l" +#line 529 "maplexer.l" { /* attribute binding - shape (fixed value) */ return(MS_TOKEN_BINDING_SHAPE); } YY_BREAK -case 318: +case 322: YY_RULE_SETUP -#line 529 "maplexer.l" +#line 533 "maplexer.l" { /* attribute binding - map cellsize */ return(MS_TOKEN_BINDING_MAP_CELLSIZE); } YY_BREAK -case 319: +case 323: YY_RULE_SETUP -#line 533 "maplexer.l" +#line 537 "maplexer.l" { /* attribute binding - data cellsize */ return(MS_TOKEN_BINDING_DATA_CELLSIZE); } YY_BREAK -case 320: -/* rule 320 can match eol */ +case 324: +/* rule 324 can match eol */ YY_RULE_SETUP -#line 537 "maplexer.l" +#line 541 "maplexer.l" { /* attribute binding - numeric (no quotes) */ msyytext++; @@ -4476,10 +4514,10 @@ YY_RULE_SETUP return(MS_TOKEN_BINDING_DOUBLE); } YY_BREAK -case 321: -/* rule 321 can match eol */ +case 325: +/* rule 325 can match eol */ YY_RULE_SETUP -#line 546 "maplexer.l" +#line 550 "maplexer.l" { /* attribute binding - string (single or double quotes) */ msyytext+=2; @@ -4490,10 +4528,10 @@ YY_RULE_SETUP return(MS_TOKEN_BINDING_STRING); } YY_BREAK -case 322: -/* rule 322 can match eol */ +case 326: +/* rule 326 can match eol */ YY_RULE_SETUP -#line 555 "maplexer.l" +#line 559 "maplexer.l" { /* attribute binding - time */ msyytext+=2; @@ -4504,9 +4542,9 @@ YY_RULE_SETUP return(MS_TOKEN_BINDING_TIME); } YY_BREAK -case 323: +case 327: YY_RULE_SETUP -#line 565 "maplexer.l" +#line 569 "maplexer.l" { MS_LEXER_STRING_REALLOC(msyystring_buffer, strlen(msyytext), msyystring_buffer_size, msyystring_buffer_ptr); @@ -4515,9 +4553,9 @@ YY_RULE_SETUP return(MS_NUMBER); } YY_BREAK -case 324: +case 328: YY_RULE_SETUP -#line 573 "maplexer.l" +#line 577 "maplexer.l" { MS_LEXER_STRING_REALLOC(msyystring_buffer, strlen(msyytext), msyystring_buffer_size, msyystring_buffer_ptr); @@ -4526,10 +4564,10 @@ YY_RULE_SETUP return(MS_TOKEN_LITERAL_NUMBER); } YY_BREAK -case 325: -/* rule 325 can match eol */ +case 329: +/* rule 329 can match eol */ YY_RULE_SETUP -#line 581 "maplexer.l" +#line 585 "maplexer.l" { msyytext++; msyytext[strlen(msyytext)-1] = '\0'; @@ -4539,10 +4577,10 @@ YY_RULE_SETUP return(MS_TOKEN_LITERAL_TIME); } YY_BREAK -case 326: -/* rule 326 can match eol */ +case 330: +/* rule 330 can match eol */ YY_RULE_SETUP -#line 590 "maplexer.l" +#line 594 "maplexer.l" { msyytext++; msyytext[strlen(msyytext)-2] = '\0'; @@ -4552,10 +4590,10 @@ YY_RULE_SETUP return(MS_IREGEX); } YY_BREAK -case 327: -/* rule 327 can match eol */ +case 331: +/* rule 331 can match eol */ YY_RULE_SETUP -#line 599 "maplexer.l" +#line 603 "maplexer.l" { msyytext++; msyytext[strlen(msyytext)-1] = '\0'; @@ -4565,9 +4603,9 @@ YY_RULE_SETUP return(MS_REGEX); } YY_BREAK -case 328: +case 332: YY_RULE_SETUP -#line 608 "maplexer.l" +#line 612 "maplexer.l" { msyytext++; msyytext[strlen(msyytext)-1] = '\0'; @@ -4577,9 +4615,9 @@ YY_RULE_SETUP return(MS_EXPRESSION); } YY_BREAK -case 329: +case 333: YY_RULE_SETUP -#line 617 "maplexer.l" +#line 621 "maplexer.l" { msyytext++; msyytext[strlen(msyytext)-1] = '\0'; @@ -4589,9 +4627,9 @@ YY_RULE_SETUP return(MS_LIST); } YY_BREAK -case 330: +case 334: YY_RULE_SETUP -#line 626 "maplexer.l" +#line 630 "maplexer.l" { msyystring_return_state = MS_STRING; msyystring_begin = msyytext[0]; @@ -4600,9 +4638,9 @@ YY_RULE_SETUP BEGIN(MSSTRING); } YY_BREAK -case 331: +case 335: YY_RULE_SETUP -#line 634 "maplexer.l" +#line 638 "maplexer.l" { MS_LEXER_STRING_REALLOC(msyystring_buffer, msyystring_size, msyystring_buffer_size, msyystring_buffer_ptr); @@ -4633,9 +4671,9 @@ YY_RULE_SETUP } } YY_BREAK -case 332: +case 336: YY_RULE_SETUP -#line 664 "maplexer.l" +#line 668 "maplexer.l" { MS_LEXER_STRING_REALLOC(msyystring_buffer, msyystring_size, msyystring_buffer_size, msyystring_buffer_ptr); @@ -4647,10 +4685,10 @@ YY_RULE_SETUP *msyystring_buffer_ptr++ = msyytext[0]; } YY_BREAK -case 333: -/* rule 333 can match eol */ +case 337: +/* rule 337 can match eol */ YY_RULE_SETUP -#line 675 "maplexer.l" +#line 679 "maplexer.l" { char *yptr = msyytext; while ( *yptr ) { @@ -4661,10 +4699,10 @@ YY_RULE_SETUP } } YY_BREAK -case 334: -/* rule 334 can match eol */ +case 338: +/* rule 338 can match eol */ YY_RULE_SETUP -#line 685 "maplexer.l" +#line 689 "maplexer.l" { msyytext++; msyytext[strlen(msyytext)-1] = '\0'; @@ -4691,9 +4729,9 @@ YY_RULE_SETUP BEGIN(INITIAL); } YY_BREAK -case 335: +case 339: YY_RULE_SETUP -#line 711 "maplexer.l" +#line 715 "maplexer.l" { msyystring_return_state = MS_TOKEN_LITERAL_STRING; msyystring_begin = msyytext[0]; @@ -4702,9 +4740,9 @@ YY_RULE_SETUP BEGIN(MSSTRING); } YY_BREAK -case 336: +case 340: YY_RULE_SETUP -#line 719 "maplexer.l" +#line 723 "maplexer.l" { MS_LEXER_STRING_REALLOC(msyystring_buffer, strlen(msyytext), msyystring_buffer_size, msyystring_buffer_ptr); @@ -4712,14 +4750,14 @@ YY_RULE_SETUP return(MS_STRING); } YY_BREAK -case 337: -/* rule 337 can match eol */ +case 341: +/* rule 341 can match eol */ YY_RULE_SETUP -#line 726 "maplexer.l" +#line 730 "maplexer.l" { msyylineno++; } YY_BREAK case YY_STATE_EOF(INITIAL): -#line 728 "maplexer.l" +#line 732 "maplexer.l" { if( --include_stack_ptr < 0 ) return(EOF); /* end of main file */ @@ -4731,17 +4769,17 @@ case YY_STATE_EOF(INITIAL): } } YY_BREAK -case 338: -/* rule 338 can match eol */ +case 342: +/* rule 342 can match eol */ YY_RULE_SETUP -#line 739 "maplexer.l" +#line 743 "maplexer.l" { return(0); } YY_BREAK -case 339: +case 343: YY_RULE_SETUP -#line 743 "maplexer.l" +#line 747 "maplexer.l" { MS_LEXER_STRING_REALLOC(msyystring_buffer, strlen(msyytext), msyystring_buffer_size, msyystring_buffer_ptr); @@ -4749,17 +4787,17 @@ YY_RULE_SETUP return(0); } YY_BREAK -case 340: +case 344: YY_RULE_SETUP -#line 749 "maplexer.l" +#line 753 "maplexer.l" { return(msyytext[0]); } YY_BREAK -case 341: +case 345: YY_RULE_SETUP -#line 750 "maplexer.l" +#line 754 "maplexer.l" ECHO; YY_BREAK -#line 4763 "maplexer.c" +#line 4801 "/vagrant/maplexer.c" case YY_STATE_EOF(URL_VARIABLE): case YY_STATE_EOF(URL_STRING): case YY_STATE_EOF(EXPRESSION_STRING): @@ -5062,7 +5100,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1953 ) + if ( yy_current_state >= 1975 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5090,11 +5128,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1953 ) + if ( yy_current_state >= 1975 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1952); + yy_is_jam = (yy_current_state == 1974); return yy_is_jam ? 0 : yy_current_state; } @@ -5770,7 +5808,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 750 "maplexer.l" +#line 754 "maplexer.l" /* diff --git a/maplexer.l b/maplexer.l index 6a636d04ea..e21ac81301 100644 --- a/maplexer.l +++ b/maplexer.l @@ -210,6 +210,10 @@ char path[MS_MAXPATHLEN]; simplifypt { MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_SIMPLIFYPT); } generalize { MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_GENERALIZE); } smoothsia { MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_SMOOTHSIA); } +centerline { MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_CENTERLINE); } +densify { MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_DENSIFY); } +outer { MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_OUTER); } +inner { MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_INNER); } javascript { MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_JAVASCRIPT); } intersects { MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_INTERSECTS); } diff --git a/mapparser.c b/mapparser.c index 3892dbd363..60265f96ae 100644 --- a/mapparser.c +++ b/mapparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.2. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.2" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -80,7 +80,7 @@ int yylex(YYSTYPE *, parseObj *); /* prototype functions, defined after the grammar */ int yyerror(parseObj *, const char *); -#line 84 "mapparser.c" /* yacc.c:339 */ +#line 84 "/vagrant/mapparser.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -100,8 +100,8 @@ int yyerror(parseObj *, const char *); /* In a future release of Bison, this section will be replaced by #include "mapparser.h". */ -#ifndef YY_YY_MAPPARSER_H_INCLUDED -# define YY_YY_MAPPARSER_H_INCLUDED +#ifndef YY_YY_VAGRANT_MAPPARSER_H_INCLUDED +# define YY_YY_VAGRANT_MAPPARSER_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -153,13 +153,17 @@ extern int yydebug; FIRSTCAP = 293, TOSTRING = 294, YYBUFFER = 295, - DIFFERENCE = 296, - SIMPLIFY = 297, - SIMPLIFYPT = 298, - GENERALIZE = 299, - SMOOTHSIA = 300, - JAVASCRIPT = 301, - NEG = 302 + INNER = 296, + OUTER = 297, + DIFFERENCE = 298, + DENSIFY = 299, + SIMPLIFY = 300, + SIMPLIFYPT = 301, + GENERALIZE = 302, + SMOOTHSIA = 303, + CENTERLINE = 304, + JAVASCRIPT = 305, + NEG = 306 }; #endif /* Tokens. */ @@ -201,17 +205,21 @@ extern int yydebug; #define FIRSTCAP 293 #define TOSTRING 294 #define YYBUFFER 295 -#define DIFFERENCE 296 -#define SIMPLIFY 297 -#define SIMPLIFYPT 298 -#define GENERALIZE 299 -#define SMOOTHSIA 300 -#define JAVASCRIPT 301 -#define NEG 302 +#define INNER 296 +#define OUTER 297 +#define DIFFERENCE 298 +#define DENSIFY 299 +#define SIMPLIFY 300 +#define SIMPLIFYPT 301 +#define GENERALIZE 302 +#define SMOOTHSIA 303 +#define CENTERLINE 304 +#define JAVASCRIPT 305 +#define NEG 306 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE YYSTYPE; + union YYSTYPE { #line 30 "mapparser.y" /* yacc.c:355 */ @@ -222,8 +230,10 @@ union YYSTYPE struct tm tmval; shapeObj *shpval; -#line 226 "mapparser.c" /* yacc.c:355 */ +#line 234 "/vagrant/mapparser.c" /* yacc.c:355 */ }; + +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif @@ -232,11 +242,11 @@ union YYSTYPE int yyparse (parseObj *p); -#endif /* !YY_YY_MAPPARSER_H_INCLUDED */ +#endif /* !YY_YY_VAGRANT_MAPPARSER_H_INCLUDED */ /* Copy the second part of user declarations. */ -#line 240 "mapparser.c" /* yacc.c:358 */ +#line 250 "/vagrant/mapparser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -476,23 +486,23 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 78 +#define YYFINAL 86 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 511 +#define YYLAST 540 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 57 +#define YYNTOKENS 61 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 7 /* YYNRULES -- Number of rules. */ -#define YYNRULES 98 +#define YYNRULES 102 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 288 +#define YYNSTATES 306 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 302 +#define YYMAXUTOK 306 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -504,13 +514,13 @@ static const yytype_uint8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 51, 2, 2, - 54, 55, 49, 47, 56, 48, 2, 50, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 55, 2, 2, + 58, 59, 53, 51, 60, 52, 2, 54, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 53, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 57, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -531,7 +541,7 @@ static const yytype_uint8 yytranslate[] = 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 52 + 45, 46, 47, 48, 49, 50, 56 }; #if YYDEBUG @@ -542,12 +552,13 @@ static const yytype_uint16 yyrline[] = 126, 134, 143, 151, 160, 168, 177, 185, 194, 195, 196, 216, 236, 242, 248, 254, 260, 266, 272, 280, 288, 296, 304, 312, 320, 326, 332, 338, 344, 350, - 356, 377, 397, 403, 411, 417, 428, 439, 450, 461, - 472, 483, 494, 505, 516, 527, 538, 549, 560, 571, - 582, 593, 603, 615, 616, 617, 618, 619, 620, 621, - 628, 629, 630, 631, 639, 640, 643, 644, 645, 655, - 665, 675, 685, 695, 705, 715, 725, 736, 754, 755, - 756, 760, 765, 769, 773, 777, 781, 787, 788 + 356, 377, 397, 403, 411, 417, 434, 451, 468, 485, + 502, 519, 536, 553, 570, 587, 604, 621, 638, 655, + 672, 689, 705, 723, 724, 725, 726, 727, 728, 729, + 736, 737, 738, 739, 750, 751, 754, 755, 756, 770, + 784, 798, 812, 826, 840, 854, 868, 882, 896, 910, + 924, 939, 961, 962, 963, 967, 972, 976, 980, 984, + 988, 994, 995 }; #endif @@ -561,10 +572,11 @@ static const char *const yytname[] = "IN", "IEQ", "IRE", "INTERSECTS", "DISJOINT", "TOUCHES", "OVERLAPS", "CROSSES", "WITHIN", "CONTAINS", "EQUALS", "BEYOND", "DWITHIN", "AREA", "LENGTH", "COMMIFY", "ROUND", "UPPER", "LOWER", "INITCAP", "FIRSTCAP", - "TOSTRING", "YYBUFFER", "DIFFERENCE", "SIMPLIFY", "SIMPLIFYPT", - "GENERALIZE", "SMOOTHSIA", "JAVASCRIPT", "'+'", "'-'", "'*'", "'/'", - "'%'", "NEG", "'^'", "'('", "')'", "','", "$accept", "input", - "logical_exp", "math_exp", "shape_exp", "string_exp", "time_exp", YY_NULLPTR + "TOSTRING", "YYBUFFER", "INNER", "OUTER", "DIFFERENCE", "DENSIFY", + "SIMPLIFY", "SIMPLIFYPT", "GENERALIZE", "SMOOTHSIA", "CENTERLINE", + "JAVASCRIPT", "'+'", "'-'", "'*'", "'/'", "'%'", "NEG", "'^'", "'('", + "')'", "','", "$accept", "input", "logical_exp", "math_exp", "shape_exp", + "string_exp", "time_exp", YY_NULLPTR }; #endif @@ -577,15 +589,16 @@ static const yytype_uint16 yytoknum[] = 265, 266, 267, 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, 43, 45, 42, - 47, 37, 302, 94, 40, 41, 44 + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 43, 45, 42, 47, 37, 306, 94, 40, 41, + 44 }; # endif -#define YYPACT_NINF -44 +#define YYPACT_NINF -56 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-44))) + (!!((Yystate) == (-56))) #define YYTABLE_NINF -1 @@ -596,35 +609,37 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 276, -44, -44, -44, -44, -44, 276, -3, -2, 1, - 12, 19, 32, 33, 34, 35, 37, 47, 48, 49, - 50, 51, 64, 65, 66, 67, 69, 81, 83, 110, - 123, 125, 126, -1, 276, 45, 6, 325, 58, 244, - 193, 42, 388, 58, 244, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 117, 117, 4, 4, -1, 4, - 4, 4, 4, -1, 117, 117, 117, 117, 117, 117, - 117, -1, 79, 8, 173, 219, 379, 9, -44, 276, - 276, 276, 276, 276, -1, -1, -1, -1, -1, -1, - 4, -1, -1, -1, -1, -1, -1, -1, 117, 117, - 117, 117, 117, 117, 117, 117, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, -4, -4, -4, - -4, -4, -4, -4, 117, 16, 137, 155, 176, 183, - 209, 210, 213, 214, 215, 179, 4, -28, -11, -43, - -9, 118, 129, 178, 361, 216, 222, 231, 232, 233, - -7, 239, 372, -44, -44, -44, -44, -44, 23, 336, - 42, 388, -44, 325, 23, 336, 42, 388, 458, 458, - 458, 458, 458, 458, 189, 458, 18, 18, 79, 79, - 79, 79, -44, -44, -44, -44, -44, -44, -44, -44, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - -44, -4, -44, -44, -44, -44, -44, -44, -44, 268, - 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - -44, 180, -44, -44, -44, -1, -44, -44, -44, -44, - 4, -1, 117, -1, -1, -1, -44, -1, 4, 270, - 273, 274, 277, 280, 291, 292, 301, 302, 275, 313, - 395, 182, 404, 303, 413, 422, 431, 78, 220, -44, - -44, -44, -44, -44, -44, -44, -44, -1, -1, -44, - -44, -44, -44, -44, -44, -44, -44, -1, -44, 440, - 449, 119, -44, -44, -44, 4, 221, -44 + 355, -56, -56, -56, -56, -56, 355, -55, -48, -35, + -33, 1, 19, 39, 48, 53, 54, 71, 72, 74, + 116, 128, 130, 131, 132, 133, 134, 135, 157, 158, + 159, 160, 173, 182, 183, 197, 198, -3, 355, 51, + 119, 211, 69, 56, 521, 44, 412, 69, 56, 203, + 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, + 4, 4, -3, 4, 4, 4, 4, -3, 203, 203, + 203, 203, 203, 203, 203, 203, 203, 203, 203, -3, + 102, -1, 154, -6, 403, 304, -56, 355, 355, 355, + 355, 355, -3, -3, -3, -3, -3, -3, 4, -3, + -3, -3, -3, -3, -3, -3, 203, 203, 203, 203, + 203, 203, 203, 203, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, -4, -4, -4, -4, -4, + -4, -4, 203, 152, 161, 199, 200, 209, 225, 228, + 230, 242, 244, 247, 4, -46, -37, 101, -27, -25, + -24, 106, 381, 248, 255, 263, 264, 265, 266, 267, + 268, 50, 270, 272, 316, -56, -56, -56, -56, -56, + 21, 258, 44, 412, -56, 211, 21, 258, 44, 412, + -7, -7, -7, -7, -7, -7, 6, -7, 25, 25, + 102, 102, 102, 102, -56, -56, -56, -56, -56, -56, + -56, -56, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, -56, -4, -56, -56, -56, -56, -56, -56, + -56, 274, 203, 203, 203, 203, 203, 203, 203, 203, + 203, 203, -56, 163, -56, -56, -56, -3, -56, -56, + -56, -56, 4, -3, -56, -56, 203, -3, -3, -3, + -3, -56, -3, -56, 4, 280, 285, 286, 287, 288, + 305, 307, 315, 347, 348, 349, 391, 240, 419, 351, + 428, 437, 446, 455, 227, 241, -56, -56, -56, -56, + -56, -56, -56, -56, -3, -3, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -3, -56, 464, 473, 283, + -56, -56, -56, 4, 246, -56 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -632,47 +647,49 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 2, 7, 63, 88, 97, 76, 0, 0, 0, 0, + 2, 7, 63, 92, 101, 76, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3, 4, 6, 5, - 0, 18, 19, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 6, 5, 0, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 70, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 70, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 8, 64, 77, 89, 98, 10, 12, - 11, 13, 9, 0, 14, 16, 15, 17, 22, 23, - 25, 24, 27, 26, 41, 42, 65, 66, 67, 69, - 68, 71, 45, 48, 50, 52, 54, 56, 58, 60, - 20, 28, 29, 31, 30, 33, 32, 40, 43, 21, - 90, 0, 34, 35, 37, 36, 39, 38, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 73, 0, 72, 92, 75, 0, 93, 94, 95, 96, - 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, + 0, 0, 0, 0, 0, 8, 64, 77, 93, 102, + 10, 12, 11, 13, 9, 0, 14, 16, 15, 17, + 22, 23, 25, 24, 27, 26, 41, 42, 65, 66, + 67, 69, 68, 71, 45, 48, 50, 52, 54, 56, + 58, 60, 20, 28, 29, 31, 30, 33, 32, 40, + 43, 21, 94, 0, 34, 35, 37, 36, 39, 38, + 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 73, 0, 72, 96, 75, 0, 97, 98, + 99, 100, 0, 0, 79, 80, 0, 0, 0, 0, + 0, 87, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, - 49, 51, 53, 55, 57, 59, 46, 0, 0, 74, - 91, 78, 79, 80, 81, 82, 84, 0, 87, 0, - 0, 0, 62, 61, 85, 0, 0, 86 + 0, 0, 0, 0, 0, 0, 47, 49, 51, 53, + 55, 57, 59, 46, 0, 0, 74, 95, 78, 82, + 83, 84, 85, 86, 88, 0, 91, 0, 0, 0, + 62, 61, 89, 0, 0, 90 }; /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = +static const yytype_int8 yypgoto[] = { - -44, -44, -5, 59, 149, 0, -23 + -56, -56, -2, 46, 126, 0, -26 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { - -1, 35, 36, 37, 43, 44, 40 + -1, 39, 40, 41, 47, 48, 44 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -680,114 +697,120 @@ static const yytype_int8 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 39, 41, 4, 2, 92, 93, 94, 95, 96, 3, - 97, 77, 224, 225, 79, 80, 79, 80, 81, 116, - 81, 117, 118, 119, 120, 121, 122, 222, 123, 73, - 17, 18, 80, 20, 76, 81, 116, 19, 116, 21, - 22, 23, 24, 25, 223, 78, 226, 33, 236, 237, - 201, 45, 46, 71, 81, 47, 137, 138, 136, 140, - 141, 142, 143, 153, 157, 42, 48, 94, 95, 96, - 98, 97, 210, 49, 158, 160, 162, 164, 166, 99, - 100, 101, 102, 103, 104, 105, 50, 51, 52, 53, - 174, 54, 72, 74, 202, 203, 204, 205, 206, 207, - 208, 55, 56, 57, 58, 59, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 139, 60, 61, - 62, 63, 144, 64, 5, 92, 93, 94, 95, 96, - 152, 97, 97, 276, 277, 65, 221, 66, 159, 161, - 163, 165, 167, 168, 169, 170, 171, 172, 173, 38, - 175, 176, 177, 178, 179, 180, 181, 26, 27, 28, - 29, 30, 31, 32, 67, 116, 92, 93, 94, 95, - 96, 124, 97, 227, 284, 285, 116, 68, 239, 69, - 70, 82, 83, 75, 228, 84, 85, 86, 87, 88, - 89, 90, 91, 211, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 117, 118, 119, 120, 121, - 122, 212, 123, 145, 146, 147, 148, 149, 150, 151, - 92, 93, 94, 95, 96, 116, 97, 116, 154, 116, - 251, 98, 213, 229, 220, 156, 116, 270, 258, 214, - 99, 100, 101, 102, 103, 104, 105, 182, 183, 184, - 185, 186, 187, 188, 189, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 215, 216, 116, 116, 217, - 218, 219, 231, 209, 155, 278, 287, 0, 232, 1, - 2, 3, 4, 5, 250, 286, 6, 233, 234, 235, - 252, 116, 254, 255, 256, 238, 257, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 155, 33, 157, 279, 280, 259, 260, - 34, 267, 261, 82, 83, 262, 281, 84, 85, 86, - 87, 88, 89, 90, 91, 83, 263, 264, 84, 85, - 86, 87, 88, 89, 90, 91, 265, 266, 272, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 268, - 0, 0, 92, 93, 94, 95, 96, 0, 97, 0, - 0, 253, 0, 92, 93, 94, 95, 96, 0, 97, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 0, 97, 0, 0, 230, 0, 92, - 93, 94, 95, 96, 0, 97, 116, 154, 0, 0, - 0, 0, 0, 0, 156, 92, 93, 94, 95, 96, - 0, 97, 92, 93, 94, 95, 96, 0, 97, 0, - 269, 92, 93, 94, 95, 96, 0, 97, 0, 271, - 92, 93, 94, 95, 96, 0, 97, 0, 273, 92, - 93, 94, 95, 96, 0, 97, 0, 274, 92, 93, - 94, 95, 96, 0, 97, 0, 275, 92, 93, 94, - 95, 96, 0, 97, 0, 282, 92, 93, 94, 95, - 96, 0, 97, 0, 283, 92, 93, 94, 95, 96, - 0, 97 + 43, 2, 4, 49, 45, 124, 106, 87, 88, 3, + 50, 89, 85, 234, 124, 107, 108, 109, 110, 111, + 112, 113, 235, 51, 124, 52, 124, 124, 17, 18, + 88, 20, 238, 89, 239, 240, 81, 19, 84, 21, + 22, 23, 24, 25, 100, 101, 102, 103, 104, 37, + 105, 86, 46, 167, 213, 79, 89, 124, 165, 53, + 145, 146, 144, 148, 149, 150, 151, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 54, 102, 103, + 104, 106, 105, 80, 82, 170, 172, 174, 176, 178, + 107, 108, 109, 110, 111, 112, 113, 55, 186, 214, + 215, 216, 217, 218, 219, 220, 56, 124, 147, 251, + 252, 57, 58, 152, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 164, 42, 87, 88, 59, + 60, 89, 61, 171, 173, 175, 177, 179, 180, 181, + 182, 183, 184, 185, 233, 187, 188, 189, 190, 191, + 192, 193, 100, 101, 102, 103, 104, 124, 105, 105, + 236, 237, 90, 91, 83, 241, 92, 93, 94, 95, + 96, 97, 98, 99, 62, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 63, 255, 64, 65, + 66, 67, 68, 69, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 100, 101, 102, 103, 104, + 5, 105, 222, 166, 124, 70, 71, 72, 73, 90, + 91, 223, 168, 92, 93, 94, 95, 96, 97, 98, + 99, 74, 194, 195, 196, 197, 198, 199, 200, 201, + 75, 76, 267, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 275, 77, 78, 0, 221, 224, + 225, 132, 100, 101, 102, 103, 104, 91, 105, 226, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 266, 105, 227, 294, 295, 228, 268, + 229, 124, 124, 270, 271, 272, 273, 124, 274, 287, + 296, 0, 230, 304, 231, 305, 232, 0, 243, 100, + 101, 102, 103, 104, 244, 105, 125, 126, 127, 128, + 129, 130, 245, 131, 246, 247, 248, 249, 250, 253, + 297, 298, 254, 167, 100, 101, 102, 103, 104, 169, + 105, 299, 302, 303, 276, 277, 278, 279, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 1, 2, + 3, 4, 5, 169, 280, 6, 281, 100, 101, 102, + 103, 104, 269, 105, 282, 166, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 283, 37, 284, 285, + 289, 0, 0, 38, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 0, 105, 0, + 0, 242, 100, 101, 102, 103, 104, 0, 105, 0, + 286, 0, 0, 0, 124, 0, 0, 0, 0, 0, + 0, 0, 168, 100, 101, 102, 103, 104, 0, 105, + 100, 101, 102, 103, 104, 0, 105, 0, 288, 100, + 101, 102, 103, 104, 0, 105, 0, 290, 100, 101, + 102, 103, 104, 0, 105, 0, 291, 100, 101, 102, + 103, 104, 0, 105, 0, 292, 100, 101, 102, 103, + 104, 0, 105, 0, 293, 100, 101, 102, 103, 104, + 0, 105, 0, 300, 100, 101, 102, 103, 104, 0, + 105, 0, 301, 125, 126, 127, 128, 129, 130, 0, + 131 }; static const yytype_int16 yycheck[] = { - 0, 6, 6, 4, 47, 48, 49, 50, 51, 5, - 53, 34, 55, 56, 8, 9, 8, 9, 12, 47, - 12, 12, 13, 14, 15, 16, 17, 55, 19, 34, - 31, 32, 9, 34, 34, 12, 47, 33, 47, 35, - 36, 37, 38, 39, 55, 0, 55, 48, 55, 56, - 54, 54, 54, 54, 12, 54, 56, 57, 54, 59, - 60, 61, 62, 55, 55, 6, 54, 49, 50, 51, - 12, 53, 56, 54, 79, 80, 81, 82, 83, 21, - 22, 23, 24, 25, 26, 27, 54, 54, 54, 54, - 90, 54, 33, 34, 117, 118, 119, 120, 121, 122, - 123, 54, 54, 54, 54, 54, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 58, 54, 54, - 54, 54, 63, 54, 7, 47, 48, 49, 50, 51, - 71, 53, 53, 55, 56, 54, 136, 54, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 0, - 91, 92, 93, 94, 95, 96, 97, 40, 41, 42, - 43, 44, 45, 46, 54, 47, 47, 48, 49, 50, - 51, 54, 53, 55, 55, 56, 47, 54, 201, 54, - 54, 8, 9, 34, 55, 12, 13, 14, 15, 16, - 17, 18, 19, 56, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 12, 13, 14, 15, 16, - 17, 56, 19, 64, 65, 66, 67, 68, 69, 70, - 47, 48, 49, 50, 51, 47, 53, 47, 55, 47, - 230, 12, 56, 55, 55, 55, 47, 55, 238, 56, - 21, 22, 23, 24, 25, 26, 27, 98, 99, 100, - 101, 102, 103, 104, 105, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 56, 56, 47, 47, 56, - 56, 56, 56, 124, 55, 55, 55, -1, 56, 3, - 4, 5, 6, 7, 225, 285, 10, 56, 56, 56, - 231, 47, 233, 234, 235, 56, 237, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 55, 48, 55, 267, 268, 55, 55, - 54, 56, 55, 8, 9, 55, 277, 12, 13, 14, - 15, 16, 17, 18, 19, 9, 55, 55, 12, 13, - 14, 15, 16, 17, 18, 19, 55, 55, 55, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 56, - -1, -1, 47, 48, 49, 50, 51, -1, 53, -1, - -1, 232, -1, 47, 48, 49, 50, 51, -1, 53, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 12, 13, 14, 15, 16, 17, 18, 19, 47, 48, - 49, 50, 51, -1, 53, -1, -1, 56, -1, 47, - 48, 49, 50, 51, -1, 53, 47, 55, -1, -1, - -1, -1, -1, -1, 55, 47, 48, 49, 50, 51, - -1, 53, 47, 48, 49, 50, 51, -1, 53, -1, - 55, 47, 48, 49, 50, 51, -1, 53, -1, 55, - 47, 48, 49, 50, 51, -1, 53, -1, 55, 47, - 48, 49, 50, 51, -1, 53, -1, 55, 47, 48, - 49, 50, 51, -1, 53, -1, 55, 47, 48, 49, - 50, 51, -1, 53, -1, 55, 47, 48, 49, 50, - 51, -1, 53, -1, 55, 47, 48, 49, 50, 51, - -1, 53 + 0, 4, 6, 58, 6, 51, 12, 8, 9, 5, + 58, 12, 38, 59, 51, 21, 22, 23, 24, 25, + 26, 27, 59, 58, 51, 58, 51, 51, 31, 32, + 9, 34, 59, 12, 59, 59, 38, 33, 38, 35, + 36, 37, 38, 39, 51, 52, 53, 54, 55, 52, + 57, 0, 6, 59, 58, 58, 12, 51, 59, 58, + 60, 61, 58, 63, 64, 65, 66, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 58, 53, 54, + 55, 12, 57, 37, 38, 87, 88, 89, 90, 91, + 21, 22, 23, 24, 25, 26, 27, 58, 98, 125, + 126, 127, 128, 129, 130, 131, 58, 51, 62, 59, + 60, 58, 58, 67, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 79, 0, 8, 9, 58, + 58, 12, 58, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 144, 99, 100, 101, 102, 103, + 104, 105, 51, 52, 53, 54, 55, 51, 57, 57, + 59, 60, 8, 9, 38, 59, 12, 13, 14, 15, + 16, 17, 18, 19, 58, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 58, 213, 58, 58, + 58, 58, 58, 58, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 51, 52, 53, 54, 55, + 7, 57, 60, 59, 51, 58, 58, 58, 58, 8, + 9, 60, 59, 12, 13, 14, 15, 16, 17, 18, + 19, 58, 106, 107, 108, 109, 110, 111, 112, 113, + 58, 58, 242, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 254, 58, 58, -1, 132, 60, + 60, 58, 51, 52, 53, 54, 55, 9, 57, 60, + 12, 13, 14, 15, 16, 17, 18, 19, 51, 52, + 53, 54, 55, 237, 57, 60, 59, 60, 60, 243, + 60, 51, 51, 247, 248, 249, 250, 51, 252, 59, + 59, -1, 60, 303, 60, 59, 59, -1, 60, 51, + 52, 53, 54, 55, 59, 57, 12, 13, 14, 15, + 16, 17, 59, 19, 60, 60, 60, 60, 60, 59, + 284, 285, 60, 59, 51, 52, 53, 54, 55, 59, + 57, 295, 59, 60, 59, 59, 59, 59, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 3, 4, + 5, 6, 7, 59, 59, 10, 59, 51, 52, 53, + 54, 55, 246, 57, 59, 59, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 59, 52, 60, 60, + 59, -1, -1, 58, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 12, 13, 14, 15, 16, 17, + 18, 19, 51, 52, 53, 54, 55, -1, 57, -1, + -1, 60, 51, 52, 53, 54, 55, -1, 57, -1, + 59, -1, -1, -1, 51, -1, -1, -1, -1, -1, + -1, -1, 59, 51, 52, 53, 54, 55, -1, 57, + 51, 52, 53, 54, 55, -1, 57, -1, 59, 51, + 52, 53, 54, 55, -1, 57, -1, 59, 51, 52, + 53, 54, 55, -1, 57, -1, 59, 51, 52, 53, + 54, 55, -1, 57, -1, 59, 51, 52, 53, 54, + 55, -1, 57, -1, 59, 51, 52, 53, 54, 55, + -1, 57, -1, 59, 51, 52, 53, 54, 55, -1, + 57, -1, 59, 12, 13, 14, 15, 16, 17, -1, + 19 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -797,47 +820,50 @@ static const yytype_uint8 yystos[] = 0, 3, 4, 5, 6, 7, 10, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 48, 54, 58, 59, 60, 61, 62, - 63, 59, 60, 61, 62, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 60, 59, 60, 61, 62, 63, 0, 8, - 9, 12, 8, 9, 12, 13, 14, 15, 16, 17, - 18, 19, 47, 48, 49, 50, 51, 53, 12, 21, - 22, 23, 24, 25, 26, 27, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 47, 12, 13, 14, - 15, 16, 17, 19, 54, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 54, 62, 62, 60, - 62, 62, 62, 62, 60, 61, 61, 61, 61, 61, - 61, 61, 60, 55, 55, 55, 55, 55, 59, 60, - 59, 60, 59, 60, 59, 60, 59, 60, 60, 60, - 60, 60, 60, 60, 62, 60, 60, 60, 60, 60, - 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 54, 63, 63, 63, 63, 63, 63, 63, 61, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 55, 62, 55, 55, 55, 56, 55, 55, 55, 55, - 56, 56, 56, 56, 56, 56, 55, 56, 56, 63, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 60, 62, 60, 61, 60, 60, 60, 60, 62, 55, - 55, 55, 55, 55, 55, 55, 55, 56, 56, 55, - 55, 55, 55, 55, 55, 55, 55, 56, 55, 60, - 60, 60, 55, 55, 55, 56, 62, 55 + 44, 45, 46, 47, 48, 49, 50, 52, 58, 62, + 63, 64, 65, 66, 67, 63, 64, 65, 66, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 64, 63, 64, 65, 66, 67, 0, 8, 9, 12, + 8, 9, 12, 13, 14, 15, 16, 17, 18, 19, + 51, 52, 53, 54, 55, 57, 12, 21, 22, 23, + 24, 25, 26, 27, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 51, 12, 13, 14, 15, 16, + 17, 19, 58, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 58, 66, 66, 64, 66, 66, + 66, 66, 64, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 64, 59, 59, 59, 59, 59, + 63, 64, 63, 64, 63, 64, 63, 64, 63, 64, + 64, 64, 64, 64, 64, 64, 66, 64, 64, 64, + 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, + 65, 65, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 58, 67, 67, 67, 67, 67, 67, + 67, 65, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 59, 66, 59, 59, 59, 60, 59, 59, + 59, 59, 60, 60, 59, 59, 60, 60, 60, 60, + 60, 59, 60, 59, 60, 67, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 64, 66, 64, 65, + 64, 64, 64, 64, 64, 66, 59, 59, 59, 59, + 59, 59, 59, 59, 60, 60, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 60, 59, 64, 64, 64, + 59, 59, 59, 60, 66, 59 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 57, 58, 58, 58, 58, 58, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 63, 63 + 0, 61, 62, 62, 62, 62, 62, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 67, 67 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -850,9 +876,10 @@ static const yytype_uint8 yyr2[] = 3, 3, 3, 3, 3, 3, 6, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 8, 8, 1, 3, 3, 3, 3, 3, 3, - 2, 3, 4, 4, 6, 4, 1, 3, 6, 6, - 6, 6, 6, 4, 6, 8, 10, 6, 1, 3, - 3, 6, 4, 4, 4, 4, 4, 1, 3 + 2, 3, 4, 4, 6, 4, 1, 3, 6, 4, + 4, 4, 6, 6, 6, 6, 6, 4, 6, 8, + 10, 6, 1, 3, 3, 6, 4, 4, 4, 4, + 4, 1, 3 }; @@ -1549,7 +1576,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; } } -#line 1553 "mapparser.c" /* yacc.c:1646 */ +#line 1580 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 4: @@ -1568,7 +1595,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; } } -#line 1572 "mapparser.c" /* yacc.c:1646 */ +#line 1599 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 5: @@ -1587,7 +1614,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; } } -#line 1591 "mapparser.c" /* yacc.c:1646 */ +#line 1618 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 6: @@ -1600,13 +1627,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; } } -#line 1604 "mapparser.c" /* yacc.c:1646 */ +#line 1631 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 8: #line 121 "mapparser.y" /* yacc.c:1646 */ { (yyval.intval) = (yyvsp[-1].intval); } -#line 1610 "mapparser.c" /* yacc.c:1646 */ +#line 1637 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 9: @@ -1615,7 +1642,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.intval) = MS_FALSE; if((yyvsp[-2].intval) == (yyvsp[0].intval)) (yyval.intval) = MS_TRUE; } -#line 1619 "mapparser.c" /* yacc.c:1646 */ +#line 1646 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 10: @@ -1628,7 +1655,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 1632 "mapparser.c" /* yacc.c:1646 */ +#line 1659 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 11: @@ -1642,7 +1669,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.intval) = MS_FALSE; } -#line 1646 "mapparser.c" /* yacc.c:1646 */ +#line 1673 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 12: @@ -1655,7 +1682,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 1659 "mapparser.c" /* yacc.c:1646 */ +#line 1686 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 13: @@ -1669,7 +1696,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.intval) = MS_FALSE; } -#line 1673 "mapparser.c" /* yacc.c:1646 */ +#line 1700 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 14: @@ -1682,7 +1709,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 1686 "mapparser.c" /* yacc.c:1646 */ +#line 1713 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 15: @@ -1696,7 +1723,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.intval) = MS_FALSE; } -#line 1700 "mapparser.c" /* yacc.c:1646 */ +#line 1727 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 16: @@ -1709,7 +1736,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 1713 "mapparser.c" /* yacc.c:1646 */ +#line 1740 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 17: @@ -1723,19 +1750,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.intval) = MS_FALSE; } -#line 1727 "mapparser.c" /* yacc.c:1646 */ +#line 1754 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 18: #line 194 "mapparser.y" /* yacc.c:1646 */ { (yyval.intval) = !(yyvsp[0].intval); } -#line 1733 "mapparser.c" /* yacc.c:1646 */ +#line 1760 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 19: #line 195 "mapparser.y" /* yacc.c:1646 */ { (yyval.intval) = !(yyvsp[0].dblval); } -#line 1739 "mapparser.c" /* yacc.c:1646 */ +#line 1766 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 20: @@ -1760,7 +1787,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); free((yyvsp[-2].strval)); free((yyvsp[0].strval)); } -#line 1764 "mapparser.c" /* yacc.c:1646 */ +#line 1791 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 21: @@ -1785,7 +1812,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); free((yyvsp[-2].strval)); free((yyvsp[0].strval)); } -#line 1789 "mapparser.c" /* yacc.c:1646 */ +#line 1816 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 22: @@ -1796,7 +1823,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 1800 "mapparser.c" /* yacc.c:1646 */ +#line 1827 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 23: @@ -1807,7 +1834,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 1811 "mapparser.c" /* yacc.c:1646 */ +#line 1838 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 24: @@ -1818,7 +1845,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 1822 "mapparser.c" /* yacc.c:1646 */ +#line 1849 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 25: @@ -1829,7 +1856,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 1833 "mapparser.c" /* yacc.c:1646 */ +#line 1860 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 26: @@ -1840,7 +1867,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 1844 "mapparser.c" /* yacc.c:1646 */ +#line 1871 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 27: @@ -1851,7 +1878,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 1855 "mapparser.c" /* yacc.c:1646 */ +#line 1882 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 28: @@ -1864,7 +1891,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); free((yyvsp[-2].strval)); free((yyvsp[0].strval)); } -#line 1868 "mapparser.c" /* yacc.c:1646 */ +#line 1895 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 29: @@ -1877,7 +1904,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); free((yyvsp[-2].strval)); free((yyvsp[0].strval)); } -#line 1881 "mapparser.c" /* yacc.c:1646 */ +#line 1908 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 30: @@ -1890,7 +1917,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); free((yyvsp[-2].strval)); free((yyvsp[0].strval)); } -#line 1894 "mapparser.c" /* yacc.c:1646 */ +#line 1921 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 31: @@ -1903,7 +1930,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); free((yyvsp[-2].strval)); free((yyvsp[0].strval)); } -#line 1907 "mapparser.c" /* yacc.c:1646 */ +#line 1934 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 32: @@ -1916,7 +1943,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); free((yyvsp[-2].strval)); free((yyvsp[0].strval)); } -#line 1920 "mapparser.c" /* yacc.c:1646 */ +#line 1947 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 33: @@ -1929,7 +1956,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); free((yyvsp[-2].strval)); free((yyvsp[0].strval)); } -#line 1933 "mapparser.c" /* yacc.c:1646 */ +#line 1960 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 34: @@ -1940,7 +1967,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 1944 "mapparser.c" /* yacc.c:1646 */ +#line 1971 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 35: @@ -1951,7 +1978,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 1955 "mapparser.c" /* yacc.c:1646 */ +#line 1982 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 36: @@ -1962,7 +1989,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 1966 "mapparser.c" /* yacc.c:1646 */ +#line 1993 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 37: @@ -1973,7 +2000,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 1977 "mapparser.c" /* yacc.c:1646 */ +#line 2004 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 38: @@ -1984,7 +2011,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 1988 "mapparser.c" /* yacc.c:1646 */ +#line 2015 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 39: @@ -1995,7 +2022,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 1999 "mapparser.c" /* yacc.c:1646 */ +#line 2026 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 40: @@ -2021,7 +2048,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); free((yyvsp[-2].strval)); free((yyvsp[0].strval)); } -#line 2025 "mapparser.c" /* yacc.c:1646 */ +#line 2052 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 41: @@ -2046,7 +2073,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.intval) = MS_TRUE; free((yyvsp[0].strval)); } -#line 2050 "mapparser.c" /* yacc.c:1646 */ +#line 2077 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 42: @@ -2057,7 +2084,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 2061 "mapparser.c" /* yacc.c:1646 */ +#line 2088 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 43: @@ -2070,7 +2097,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); free((yyvsp[-2].strval)); free((yyvsp[0].strval)); } -#line 2074 "mapparser.c" /* yacc.c:1646 */ +#line 2101 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 44: @@ -2081,7 +2108,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.intval) = MS_FALSE; } -#line 2085 "mapparser.c" /* yacc.c:1646 */ +#line 2112 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 45: @@ -2089,319 +2116,427 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { int rval; rval = msGEOSEquals((yyvsp[-2].shpval), (yyvsp[0].shpval)); - if((yyvsp[-2].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-2].shpval)); - if((yyvsp[0].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[0].shpval)); + if((yyvsp[-2].shpval) && (yyvsp[-2].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-2].shpval)); + free((yyvsp[-2].shpval)); + } + if((yyvsp[0].shpval) && (yyvsp[0].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[0].shpval)); + free((yyvsp[0].shpval)); + } if(rval == -1) { yyerror(p, "Equals (EQ or ==) operator failed."); return(-1); } else (yyval.intval) = rval; } -#line 2101 "mapparser.c" /* yacc.c:1646 */ +#line 2134 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 46: -#line 428 "mapparser.y" /* yacc.c:1646 */ +#line 434 "mapparser.y" /* yacc.c:1646 */ { int rval; rval = msGEOSEquals((yyvsp[-3].shpval), (yyvsp[-1].shpval)); - if((yyvsp[-3].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-3].shpval)); - if((yyvsp[-1].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-1].shpval)); + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } + if((yyvsp[-1].shpval) && (yyvsp[-1].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-1].shpval)); + free((yyvsp[-1].shpval)); + } if(rval == -1) { yyerror(p, "Equals function failed."); return(-1); } else (yyval.intval) = rval; } -#line 2117 "mapparser.c" /* yacc.c:1646 */ +#line 2156 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 47: -#line 439 "mapparser.y" /* yacc.c:1646 */ +#line 451 "mapparser.y" /* yacc.c:1646 */ { int rval; rval = msGEOSIntersects((yyvsp[-3].shpval), (yyvsp[-1].shpval)); - if((yyvsp[-3].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-3].shpval)); - if((yyvsp[-1].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-1].shpval)); + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } + if((yyvsp[-1].shpval) && (yyvsp[-1].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-1].shpval)); + free((yyvsp[-1].shpval)); + } if(rval == -1) { yyerror(p, "Intersects function failed."); return(-1); } else (yyval.intval) = rval; } -#line 2133 "mapparser.c" /* yacc.c:1646 */ +#line 2178 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 48: -#line 450 "mapparser.y" /* yacc.c:1646 */ +#line 468 "mapparser.y" /* yacc.c:1646 */ { int rval; rval = msGEOSIntersects((yyvsp[-2].shpval), (yyvsp[0].shpval)); - if((yyvsp[-2].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-2].shpval)); - if((yyvsp[0].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[0].shpval)); + if((yyvsp[-2].shpval) && (yyvsp[-2].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-2].shpval)); + free((yyvsp[-2].shpval)); + } + if((yyvsp[0].shpval) && (yyvsp[0].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[0].shpval)); + free((yyvsp[0].shpval)); + } if(rval == -1) { yyerror(p, "Intersects operator failed."); return(-1); } else (yyval.intval) = rval; } -#line 2149 "mapparser.c" /* yacc.c:1646 */ +#line 2200 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 49: -#line 461 "mapparser.y" /* yacc.c:1646 */ +#line 485 "mapparser.y" /* yacc.c:1646 */ { int rval; rval = msGEOSDisjoint((yyvsp[-3].shpval), (yyvsp[-1].shpval)); - if((yyvsp[-3].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-3].shpval)); - if((yyvsp[-1].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-1].shpval)); + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } + if((yyvsp[-1].shpval) && (yyvsp[-1].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-1].shpval)); + free((yyvsp[-1].shpval)); + } if(rval == -1) { yyerror(p, "Disjoint function failed."); return(-1); } else (yyval.intval) = rval; } -#line 2165 "mapparser.c" /* yacc.c:1646 */ +#line 2222 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 50: -#line 472 "mapparser.y" /* yacc.c:1646 */ +#line 502 "mapparser.y" /* yacc.c:1646 */ { int rval; rval = msGEOSDisjoint((yyvsp[-2].shpval), (yyvsp[0].shpval)); - if((yyvsp[-2].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-2].shpval)); - if((yyvsp[0].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[0].shpval)); + if((yyvsp[-2].shpval) && (yyvsp[-2].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-2].shpval)); + free((yyvsp[-2].shpval)); + } + if((yyvsp[0].shpval) && (yyvsp[0].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[0].shpval)); + free((yyvsp[0].shpval)); + } if(rval == -1) { yyerror(p, "Disjoint operator failed."); return(-1); } else (yyval.intval) = rval; } -#line 2181 "mapparser.c" /* yacc.c:1646 */ +#line 2244 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 51: -#line 483 "mapparser.y" /* yacc.c:1646 */ +#line 519 "mapparser.y" /* yacc.c:1646 */ { int rval; rval = msGEOSTouches((yyvsp[-3].shpval), (yyvsp[-1].shpval)); - if((yyvsp[-3].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-3].shpval)); - if((yyvsp[-1].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-1].shpval)); + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } + if((yyvsp[-1].shpval) && (yyvsp[-1].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-1].shpval)); + free((yyvsp[-1].shpval)); + } if(rval == -1) { yyerror(p, "Touches function failed."); return(-1); } else (yyval.intval) = rval; } -#line 2197 "mapparser.c" /* yacc.c:1646 */ +#line 2266 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 52: -#line 494 "mapparser.y" /* yacc.c:1646 */ +#line 536 "mapparser.y" /* yacc.c:1646 */ { int rval; rval = msGEOSTouches((yyvsp[-2].shpval), (yyvsp[0].shpval)); - if((yyvsp[-2].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-2].shpval)); - if((yyvsp[0].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[0].shpval)); + if((yyvsp[-2].shpval) && (yyvsp[-2].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-2].shpval)); + free((yyvsp[-2].shpval)); + } + if((yyvsp[0].shpval) && (yyvsp[0].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[0].shpval)); + free((yyvsp[0].shpval)); + } if(rval == -1) { yyerror(p, "Touches operator failed."); return(-1); } else (yyval.intval) = rval; } -#line 2213 "mapparser.c" /* yacc.c:1646 */ +#line 2288 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 53: -#line 505 "mapparser.y" /* yacc.c:1646 */ +#line 553 "mapparser.y" /* yacc.c:1646 */ { int rval; rval = msGEOSOverlaps((yyvsp[-3].shpval), (yyvsp[-1].shpval)); - if((yyvsp[-3].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-3].shpval)); - if((yyvsp[-1].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-1].shpval)); + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } + if((yyvsp[-1].shpval) && (yyvsp[-1].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-1].shpval)); + free((yyvsp[-1].shpval)); + } if(rval == -1) { yyerror(p, "Overlaps function failed."); return(-1); } else (yyval.intval) = rval; } -#line 2229 "mapparser.c" /* yacc.c:1646 */ +#line 2310 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 54: -#line 516 "mapparser.y" /* yacc.c:1646 */ +#line 570 "mapparser.y" /* yacc.c:1646 */ { int rval; rval = msGEOSOverlaps((yyvsp[-2].shpval), (yyvsp[0].shpval)); - if((yyvsp[-2].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-2].shpval)); - if((yyvsp[0].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[0].shpval)); + if((yyvsp[-2].shpval) && (yyvsp[-2].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-2].shpval)); + free((yyvsp[-2].shpval)); + } + if((yyvsp[0].shpval) && (yyvsp[0].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[0].shpval)); + free((yyvsp[0].shpval)); + } if(rval == -1) { yyerror(p, "Overlaps operator failed."); return(-1); } else (yyval.intval) = rval; } -#line 2245 "mapparser.c" /* yacc.c:1646 */ +#line 2332 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 55: -#line 527 "mapparser.y" /* yacc.c:1646 */ +#line 587 "mapparser.y" /* yacc.c:1646 */ { int rval; rval = msGEOSCrosses((yyvsp[-3].shpval), (yyvsp[-1].shpval)); - if((yyvsp[-3].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-3].shpval)); - if((yyvsp[-1].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-1].shpval)); + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } + if((yyvsp[-1].shpval) && (yyvsp[-1].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-1].shpval)); + free((yyvsp[-1].shpval)); + } if(rval == -1) { yyerror(p, "Crosses function failed."); return(-1); } else (yyval.intval) = rval; } -#line 2261 "mapparser.c" /* yacc.c:1646 */ +#line 2354 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 56: -#line 538 "mapparser.y" /* yacc.c:1646 */ +#line 604 "mapparser.y" /* yacc.c:1646 */ { int rval; rval = msGEOSCrosses((yyvsp[-2].shpval), (yyvsp[0].shpval)); - if((yyvsp[-2].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-2].shpval)); - if((yyvsp[0].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[0].shpval)); + if((yyvsp[-2].shpval) && (yyvsp[-2].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-2].shpval)); + free((yyvsp[-2].shpval)); + } + if((yyvsp[0].shpval) && (yyvsp[0].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[0].shpval)); + free((yyvsp[0].shpval)); + } if(rval == -1) { yyerror(p, "Crosses operator failed."); return(-1); } else (yyval.intval) = rval; } -#line 2277 "mapparser.c" /* yacc.c:1646 */ +#line 2376 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 57: -#line 549 "mapparser.y" /* yacc.c:1646 */ +#line 621 "mapparser.y" /* yacc.c:1646 */ { int rval; rval = msGEOSWithin((yyvsp[-3].shpval), (yyvsp[-1].shpval)); - if((yyvsp[-3].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-3].shpval)); - if((yyvsp[-1].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-1].shpval)); + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } + if((yyvsp[-1].shpval) && (yyvsp[-1].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-1].shpval)); + free((yyvsp[-1].shpval)); + } if(rval == -1) { yyerror(p, "Within function failed."); return(-1); } else (yyval.intval) = rval; } -#line 2293 "mapparser.c" /* yacc.c:1646 */ +#line 2398 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 58: -#line 560 "mapparser.y" /* yacc.c:1646 */ +#line 638 "mapparser.y" /* yacc.c:1646 */ { int rval; rval = msGEOSWithin((yyvsp[-2].shpval), (yyvsp[0].shpval)); - if((yyvsp[-2].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-2].shpval)); - if((yyvsp[0].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[0].shpval)); + if((yyvsp[-2].shpval) && (yyvsp[-2].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-2].shpval)); + free((yyvsp[-2].shpval)); + } + if((yyvsp[0].shpval) && (yyvsp[0].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[0].shpval)); + free((yyvsp[0].shpval)); + } if(rval == -1) { yyerror(p, "Within operator failed."); return(-1); } else (yyval.intval) = rval; } -#line 2309 "mapparser.c" /* yacc.c:1646 */ +#line 2420 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 59: -#line 571 "mapparser.y" /* yacc.c:1646 */ +#line 655 "mapparser.y" /* yacc.c:1646 */ { int rval; rval = msGEOSContains((yyvsp[-3].shpval), (yyvsp[-1].shpval)); - if((yyvsp[-3].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-3].shpval)); - if((yyvsp[-1].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-1].shpval)); + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } + if((yyvsp[-1].shpval) && (yyvsp[-1].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-1].shpval)); + free((yyvsp[-1].shpval)); + } if(rval == -1) { yyerror(p, "Contains function failed."); return(-1); } else (yyval.intval) = rval; } -#line 2325 "mapparser.c" /* yacc.c:1646 */ +#line 2442 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 60: -#line 582 "mapparser.y" /* yacc.c:1646 */ +#line 672 "mapparser.y" /* yacc.c:1646 */ { int rval; rval = msGEOSContains((yyvsp[-2].shpval), (yyvsp[0].shpval)); - if((yyvsp[-2].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-2].shpval)); - if((yyvsp[0].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[0].shpval)); + if((yyvsp[-2].shpval) && (yyvsp[-2].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-2].shpval)); + free((yyvsp[-2].shpval)); + } + if((yyvsp[0].shpval) && (yyvsp[0].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[0].shpval)); + free((yyvsp[0].shpval)); + } if(rval == -1) { yyerror(p, "Contains operator failed."); return(-1); } else (yyval.intval) = rval; } -#line 2341 "mapparser.c" /* yacc.c:1646 */ +#line 2464 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 61: -#line 593 "mapparser.y" /* yacc.c:1646 */ +#line 689 "mapparser.y" /* yacc.c:1646 */ { double d; - d = msGEOSDistance((yyvsp[-5].shpval), (yyvsp[-3].shpval)); - if((yyvsp[-5].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-5].shpval)); - if((yyvsp[-3].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-3].shpval)); + d = msGEOSDistance((yyvsp[-5].shpval), (yyvsp[-3].shpval)); + if((yyvsp[-5].shpval) && (yyvsp[-5].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-5].shpval)); + free((yyvsp[-5].shpval)); + } + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } if(d <= (yyvsp[-1].dblval)) (yyval.intval) = MS_TRUE; else (yyval.intval) = MS_FALSE; } -#line 2356 "mapparser.c" /* yacc.c:1646 */ +#line 2485 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 62: -#line 603 "mapparser.y" /* yacc.c:1646 */ +#line 705 "mapparser.y" /* yacc.c:1646 */ { double d; d = msGEOSDistance((yyvsp[-5].shpval), (yyvsp[-3].shpval)); - if((yyvsp[-5].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-5].shpval)); - if((yyvsp[-3].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-3].shpval)); + if((yyvsp[-5].shpval) && (yyvsp[-5].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-5].shpval)); + free((yyvsp[-5].shpval)); + } + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } if(d > (yyvsp[-1].dblval)) (yyval.intval) = MS_TRUE; else (yyval.intval) = MS_FALSE; } -#line 2371 "mapparser.c" /* yacc.c:1646 */ +#line 2506 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 64: -#line 616 "mapparser.y" /* yacc.c:1646 */ +#line 724 "mapparser.y" /* yacc.c:1646 */ { (yyval.dblval) = (yyvsp[-1].dblval); } -#line 2377 "mapparser.c" /* yacc.c:1646 */ +#line 2512 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 65: -#line 617 "mapparser.y" /* yacc.c:1646 */ +#line 725 "mapparser.y" /* yacc.c:1646 */ { (yyval.dblval) = (yyvsp[-2].dblval) + (yyvsp[0].dblval); } -#line 2383 "mapparser.c" /* yacc.c:1646 */ +#line 2518 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 66: -#line 618 "mapparser.y" /* yacc.c:1646 */ +#line 726 "mapparser.y" /* yacc.c:1646 */ { (yyval.dblval) = (yyvsp[-2].dblval) - (yyvsp[0].dblval); } -#line 2389 "mapparser.c" /* yacc.c:1646 */ +#line 2524 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 67: -#line 619 "mapparser.y" /* yacc.c:1646 */ +#line 727 "mapparser.y" /* yacc.c:1646 */ { (yyval.dblval) = (yyvsp[-2].dblval) * (yyvsp[0].dblval); } -#line 2395 "mapparser.c" /* yacc.c:1646 */ +#line 2530 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 68: -#line 620 "mapparser.y" /* yacc.c:1646 */ +#line 728 "mapparser.y" /* yacc.c:1646 */ { (yyval.dblval) = (int)(yyvsp[-2].dblval) % (int)(yyvsp[0].dblval); } -#line 2401 "mapparser.c" /* yacc.c:1646 */ +#line 2536 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 69: -#line 621 "mapparser.y" /* yacc.c:1646 */ +#line 729 "mapparser.y" /* yacc.c:1646 */ { if((yyvsp[0].dblval) == 0.0) { yyerror(p, "Division by zero."); @@ -2409,63 +2544,70 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.dblval) = (yyvsp[-2].dblval) / (yyvsp[0].dblval); } -#line 2413 "mapparser.c" /* yacc.c:1646 */ +#line 2548 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 70: -#line 628 "mapparser.y" /* yacc.c:1646 */ +#line 736 "mapparser.y" /* yacc.c:1646 */ { (yyval.dblval) = (yyvsp[0].dblval); } -#line 2419 "mapparser.c" /* yacc.c:1646 */ +#line 2554 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 71: -#line 629 "mapparser.y" /* yacc.c:1646 */ +#line 737 "mapparser.y" /* yacc.c:1646 */ { (yyval.dblval) = pow((yyvsp[-2].dblval), (yyvsp[0].dblval)); } -#line 2425 "mapparser.c" /* yacc.c:1646 */ +#line 2560 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 72: -#line 630 "mapparser.y" /* yacc.c:1646 */ +#line 738 "mapparser.y" /* yacc.c:1646 */ { (yyval.dblval) = strlen((yyvsp[-1].strval)); } -#line 2431 "mapparser.c" /* yacc.c:1646 */ +#line 2566 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 73: -#line 631 "mapparser.y" /* yacc.c:1646 */ +#line 739 "mapparser.y" /* yacc.c:1646 */ { if((yyvsp[-1].shpval)->type != MS_SHAPE_POLYGON) { yyerror(p, "Area can only be computed for polygon shapes."); return(-1); } (yyval.dblval) = msGetPolygonArea((yyvsp[-1].shpval)); - if((yyvsp[-1].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[-1].shpval)); + if((yyvsp[-1].shpval) && (yyvsp[-1].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-1].shpval)); + free((yyvsp[-1].shpval)); + } } -#line 2444 "mapparser.c" /* yacc.c:1646 */ +#line 2582 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 74: -#line 639 "mapparser.y" /* yacc.c:1646 */ +#line 750 "mapparser.y" /* yacc.c:1646 */ { (yyval.dblval) = (MS_NINT((yyvsp[-3].dblval)/(yyvsp[-1].dblval)))*(yyvsp[-1].dblval); } -#line 2450 "mapparser.c" /* yacc.c:1646 */ +#line 2588 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 75: -#line 640 "mapparser.y" /* yacc.c:1646 */ +#line 751 "mapparser.y" /* yacc.c:1646 */ { (yyval.dblval) = (MS_NINT((yyvsp[-1].dblval))); } -#line 2456 "mapparser.c" /* yacc.c:1646 */ +#line 2594 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 77: -#line 644 "mapparser.y" /* yacc.c:1646 */ +#line 755 "mapparser.y" /* yacc.c:1646 */ { (yyval.shpval) = (yyvsp[-1].shpval); } -#line 2462 "mapparser.c" /* yacc.c:1646 */ +#line 2600 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 78: -#line 645 "mapparser.y" /* yacc.c:1646 */ +#line 756 "mapparser.y" /* yacc.c:1646 */ { shapeObj *s; s = msGEOSBuffer((yyvsp[-3].shpval), (yyvsp[-1].dblval)); + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } if(!s) { yyerror(p, "Executing buffer failed."); return(-1); @@ -2473,14 +2615,75 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); s->scratch = MS_TRUE; (yyval.shpval) = s; } -#line 2477 "mapparser.c" /* yacc.c:1646 */ +#line 2619 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; case 79: -#line 655 "mapparser.y" /* yacc.c:1646 */ +#line 770 "mapparser.y" /* yacc.c:1646 */ + { + shapeObj *s; + s = msRings2Shape((yyvsp[-1].shpval), MS_FALSE); + if((yyvsp[-1].shpval) && (yyvsp[-1].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-1].shpval)); + free((yyvsp[-1].shpval)); + } + if(!s) { + yyerror(p, "Executing inner failed."); + return(-1); + } + s->scratch = MS_TRUE; + (yyval.shpval) = s; + } +#line 2638 "/vagrant/mapparser.c" /* yacc.c:1646 */ + break; + + case 80: +#line 784 "mapparser.y" /* yacc.c:1646 */ + { + shapeObj *s; + s = msRings2Shape((yyvsp[-1].shpval), MS_TRUE); + if((yyvsp[-1].shpval) && (yyvsp[-1].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-1].shpval)); + free((yyvsp[-1].shpval)); + } + if(!s) { + yyerror(p, "Executing outer failed."); + return(-1); + } + s->scratch = MS_TRUE; + (yyval.shpval) = s; + } +#line 2657 "/vagrant/mapparser.c" /* yacc.c:1646 */ + break; + + case 81: +#line 798 "mapparser.y" /* yacc.c:1646 */ + { + shapeObj *s; + s = msGEOSCenterline((yyvsp[-1].shpval)); + if((yyvsp[-1].shpval) && (yyvsp[-1].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-1].shpval)); + free((yyvsp[-1].shpval)); + } + if(!s) { + yyerror(p, "Executing centerline failed."); + return(-1); + } + s->scratch = MS_TRUE; + (yyval.shpval) = s; + } +#line 2676 "/vagrant/mapparser.c" /* yacc.c:1646 */ + break; + + case 82: +#line 812 "mapparser.y" /* yacc.c:1646 */ { shapeObj *s; s = msGEOSDifference((yyvsp[-3].shpval), (yyvsp[-1].shpval)); + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } if(!s) { yyerror(p, "Executing difference failed."); return(-1); @@ -2488,14 +2691,37 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); s->scratch = MS_TRUE; (yyval.shpval) = s; } -#line 2492 "mapparser.c" /* yacc.c:1646 */ +#line 2695 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; - case 80: -#line 665 "mapparser.y" /* yacc.c:1646 */ + case 83: +#line 826 "mapparser.y" /* yacc.c:1646 */ + { + shapeObj *s; + s = msDensify((yyvsp[-3].shpval), (yyvsp[-1].dblval)); + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } + if(!s) { + yyerror(p, "Executing densify failed."); + return(-1); + } + s->scratch = MS_TRUE; + (yyval.shpval) = s; + } +#line 2714 "/vagrant/mapparser.c" /* yacc.c:1646 */ + break; + + case 84: +#line 840 "mapparser.y" /* yacc.c:1646 */ { shapeObj *s; s = msGEOSSimplify((yyvsp[-3].shpval), (yyvsp[-1].dblval)); + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } if(!s) { yyerror(p, "Executing simplify failed."); return(-1); @@ -2503,14 +2729,18 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); s->scratch = MS_TRUE; (yyval.shpval) = s; } -#line 2507 "mapparser.c" /* yacc.c:1646 */ +#line 2733 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; - case 81: -#line 675 "mapparser.y" /* yacc.c:1646 */ + case 85: +#line 854 "mapparser.y" /* yacc.c:1646 */ { shapeObj *s; s = msGEOSTopologyPreservingSimplify((yyvsp[-3].shpval), (yyvsp[-1].dblval)); + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } if(!s) { yyerror(p, "Executing simplifypt failed."); return(-1); @@ -2518,14 +2748,18 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); s->scratch = MS_TRUE; (yyval.shpval) = s; } -#line 2522 "mapparser.c" /* yacc.c:1646 */ +#line 2752 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; - case 82: -#line 685 "mapparser.y" /* yacc.c:1646 */ + case 86: +#line 868 "mapparser.y" /* yacc.c:1646 */ { shapeObj *s; s = msGeneralize((yyvsp[-3].shpval), (yyvsp[-1].dblval)); + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } if(!s) { yyerror(p, "Executing generalize failed."); return(-1); @@ -2533,14 +2767,18 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); s->scratch = MS_TRUE; (yyval.shpval) = s; } -#line 2537 "mapparser.c" /* yacc.c:1646 */ +#line 2771 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; - case 83: -#line 695 "mapparser.y" /* yacc.c:1646 */ + case 87: +#line 882 "mapparser.y" /* yacc.c:1646 */ { shapeObj *s; s = msSmoothShapeSIA((yyvsp[-1].shpval), 3, 1, NULL); + if((yyvsp[-1].shpval) && (yyvsp[-1].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-1].shpval)); + free((yyvsp[-1].shpval)); + } if(!s) { yyerror(p, "Executing smoothsia failed."); return(-1); @@ -2548,14 +2786,18 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); s->scratch = MS_TRUE; (yyval.shpval) = s; } -#line 2552 "mapparser.c" /* yacc.c:1646 */ +#line 2790 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; - case 84: -#line 705 "mapparser.y" /* yacc.c:1646 */ + case 88: +#line 896 "mapparser.y" /* yacc.c:1646 */ { shapeObj *s; s = msSmoothShapeSIA((yyvsp[-3].shpval), (yyvsp[-1].dblval), 1, NULL); + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } if(!s) { yyerror(p, "Executing smoothsia failed."); return(-1); @@ -2563,14 +2805,18 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); s->scratch = MS_TRUE; (yyval.shpval) = s; } -#line 2567 "mapparser.c" /* yacc.c:1646 */ +#line 2809 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; - case 85: -#line 715 "mapparser.y" /* yacc.c:1646 */ + case 89: +#line 910 "mapparser.y" /* yacc.c:1646 */ { shapeObj *s; s = msSmoothShapeSIA((yyvsp[-5].shpval), (yyvsp[-3].dblval), (yyvsp[-1].dblval), NULL); + if((yyvsp[-5].shpval) && (yyvsp[-5].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-5].shpval)); + free((yyvsp[-5].shpval)); + } if(!s) { yyerror(p, "Executing smoothsia failed."); return(-1); @@ -2578,14 +2824,18 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); s->scratch = MS_TRUE; (yyval.shpval) = s; } -#line 2582 "mapparser.c" /* yacc.c:1646 */ +#line 2828 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; - case 86: -#line 725 "mapparser.y" /* yacc.c:1646 */ + case 90: +#line 924 "mapparser.y" /* yacc.c:1646 */ { shapeObj *s; s = msSmoothShapeSIA((yyvsp[-7].shpval), (yyvsp[-5].dblval), (yyvsp[-3].dblval), (yyvsp[-1].strval)); + if((yyvsp[-7].shpval) && (yyvsp[-7].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-7].shpval)); + free((yyvsp[-7].shpval)); + } free((yyvsp[-1].strval)); if(!s) { yyerror(p, "Executing smoothsia failed."); @@ -2594,15 +2844,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); s->scratch = MS_TRUE; (yyval.shpval) = s; } -#line 2598 "mapparser.c" /* yacc.c:1646 */ +#line 2848 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; - case 87: -#line 736 "mapparser.y" /* yacc.c:1646 */ + case 91: +#line 939 "mapparser.y" /* yacc.c:1646 */ { #ifdef USE_V8_MAPSCRIPT shapeObj *s; s = msV8TransformShape((yyvsp[-3].shpval), (yyvsp[-1].strval)); + if((yyvsp[-3].shpval) && (yyvsp[-3].shpval)->scratch == MS_TRUE) { + msFreeShape((yyvsp[-3].shpval)); + free((yyvsp[-3].shpval)); + } free((yyvsp[-1].strval)); if(!s) { yyerror(p, "Executing javascript failed."); @@ -2615,87 +2869,87 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); return(-1); #endif } -#line 2619 "mapparser.c" /* yacc.c:1646 */ +#line 2873 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; - case 89: -#line 755 "mapparser.y" /* yacc.c:1646 */ + case 93: +#line 962 "mapparser.y" /* yacc.c:1646 */ { (yyval.strval) = (yyvsp[-1].strval); } -#line 2625 "mapparser.c" /* yacc.c:1646 */ +#line 2879 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; - case 90: -#line 756 "mapparser.y" /* yacc.c:1646 */ + case 94: +#line 963 "mapparser.y" /* yacc.c:1646 */ { (yyval.strval) = (char *)malloc(strlen((yyvsp[-2].strval)) + strlen((yyvsp[0].strval)) + 1); sprintf((yyval.strval), "%s%s", (yyvsp[-2].strval), (yyvsp[0].strval)); free((yyvsp[-2].strval)); free((yyvsp[0].strval)); } -#line 2634 "mapparser.c" /* yacc.c:1646 */ +#line 2888 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; - case 91: -#line 760 "mapparser.y" /* yacc.c:1646 */ + case 95: +#line 967 "mapparser.y" /* yacc.c:1646 */ { (yyval.strval) = (char *) malloc(strlen((yyvsp[-1].strval)) + 64); /* Plenty big? Should use snprintf below... */ sprintf((yyval.strval), (yyvsp[-1].strval), (yyvsp[-3].dblval)); free((yyvsp[-1].strval)); } -#line 2644 "mapparser.c" /* yacc.c:1646 */ +#line 2898 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; - case 92: -#line 765 "mapparser.y" /* yacc.c:1646 */ + case 96: +#line 972 "mapparser.y" /* yacc.c:1646 */ { (yyvsp[-1].strval) = msCommifyString((yyvsp[-1].strval)); (yyval.strval) = (yyvsp[-1].strval); } -#line 2653 "mapparser.c" /* yacc.c:1646 */ +#line 2907 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; - case 93: -#line 769 "mapparser.y" /* yacc.c:1646 */ + case 97: +#line 976 "mapparser.y" /* yacc.c:1646 */ { msStringToUpper((yyvsp[-1].strval)); (yyval.strval) = (yyvsp[-1].strval); } -#line 2662 "mapparser.c" /* yacc.c:1646 */ +#line 2916 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; - case 94: -#line 773 "mapparser.y" /* yacc.c:1646 */ + case 98: +#line 980 "mapparser.y" /* yacc.c:1646 */ { msStringToLower((yyvsp[-1].strval)); (yyval.strval) = (yyvsp[-1].strval); } -#line 2671 "mapparser.c" /* yacc.c:1646 */ +#line 2925 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; - case 95: -#line 777 "mapparser.y" /* yacc.c:1646 */ + case 99: +#line 984 "mapparser.y" /* yacc.c:1646 */ { msStringInitCap((yyvsp[-1].strval)); (yyval.strval) = (yyvsp[-1].strval); } -#line 2680 "mapparser.c" /* yacc.c:1646 */ +#line 2934 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; - case 96: -#line 781 "mapparser.y" /* yacc.c:1646 */ + case 100: +#line 988 "mapparser.y" /* yacc.c:1646 */ { msStringFirstCap((yyvsp[-1].strval)); (yyval.strval) = (yyvsp[-1].strval); } -#line 2689 "mapparser.c" /* yacc.c:1646 */ +#line 2943 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; - case 98: -#line 788 "mapparser.y" /* yacc.c:1646 */ + case 102: +#line 995 "mapparser.y" /* yacc.c:1646 */ { (yyval.tmval) = (yyvsp[-1].tmval); } -#line 2695 "mapparser.c" /* yacc.c:1646 */ +#line 2949 "/vagrant/mapparser.c" /* yacc.c:1646 */ break; -#line 2699 "mapparser.c" /* yacc.c:1646 */ +#line 2953 "/vagrant/mapparser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2923,7 +3177,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #endif return yyresult; } -#line 791 "mapparser.y" /* yacc.c:1906 */ +#line 998 "mapparser.y" /* yacc.c:1906 */ /* @@ -3074,6 +3328,10 @@ int yylex(YYSTYPE *lvalp, parseObj *p) case MS_TOKEN_FUNCTION_SIMPLIFYPT: token = SIMPLIFYPT; break; case MS_TOKEN_FUNCTION_GENERALIZE: token = GENERALIZE; break; case MS_TOKEN_FUNCTION_SMOOTHSIA: token = SMOOTHSIA; break; + case MS_TOKEN_FUNCTION_CENTERLINE: token = CENTERLINE; break; + case MS_TOKEN_FUNCTION_DENSIFY: token = DENSIFY; break; + case MS_TOKEN_FUNCTION_INNER: token = INNER; break; + case MS_TOKEN_FUNCTION_OUTER: token = OUTER; break; case MS_TOKEN_FUNCTION_JAVASCRIPT: token = JAVASCRIPT; break; default: diff --git a/mapparser.h b/mapparser.h index c650052da3..15c3cf8ee0 100644 --- a/mapparser.h +++ b/mapparser.h @@ -30,8 +30,8 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -#ifndef YY_YY_MAPPARSER_H_INCLUDED -# define YY_YY_MAPPARSER_H_INCLUDED +#ifndef YY_YY_VAGRANT_MAPPARSER_H_INCLUDED +# define YY_YY_VAGRANT_MAPPARSER_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -83,13 +83,17 @@ extern int yydebug; FIRSTCAP = 293, TOSTRING = 294, YYBUFFER = 295, - DIFFERENCE = 296, - SIMPLIFY = 297, - SIMPLIFYPT = 298, - GENERALIZE = 299, - SMOOTHSIA = 300, - JAVASCRIPT = 301, - NEG = 302 + INNER = 296, + OUTER = 297, + DIFFERENCE = 298, + DENSIFY = 299, + SIMPLIFY = 300, + SIMPLIFYPT = 301, + GENERALIZE = 302, + SMOOTHSIA = 303, + CENTERLINE = 304, + JAVASCRIPT = 305, + NEG = 306 }; #endif /* Tokens. */ @@ -131,13 +135,17 @@ extern int yydebug; #define FIRSTCAP 293 #define TOSTRING 294 #define YYBUFFER 295 -#define DIFFERENCE 296 -#define SIMPLIFY 297 -#define SIMPLIFYPT 298 -#define GENERALIZE 299 -#define SMOOTHSIA 300 -#define JAVASCRIPT 301 -#define NEG 302 +#define INNER 296 +#define OUTER 297 +#define DIFFERENCE 298 +#define DENSIFY 299 +#define SIMPLIFY 300 +#define SIMPLIFYPT 301 +#define GENERALIZE 302 +#define SMOOTHSIA 303 +#define CENTERLINE 304 +#define JAVASCRIPT 305 +#define NEG 306 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -152,7 +160,7 @@ union YYSTYPE struct tm tmval; shapeObj *shpval; -#line 156 "mapparser.h" /* yacc.c:1909 */ +#line 164 "/vagrant/mapparser.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; @@ -164,4 +172,4 @@ typedef union YYSTYPE YYSTYPE; int yyparse (parseObj *p); -#endif /* !YY_YY_MAPPARSER_H_INCLUDED */ +#endif /* !YY_YY_VAGRANT_MAPPARSER_H_INCLUDED */ diff --git a/mapparser.y b/mapparser.y index 11df36f917..eb180abfd6 100644 --- a/mapparser.y +++ b/mapparser.y @@ -49,7 +49,7 @@ int yyerror(parseObj *, const char *); %left AREA LENGTH COMMIFY ROUND %left UPPER LOWER INITCAP FIRSTCAP %left TOSTRING -%left YYBUFFER DIFFERENCE SIMPLIFY SIMPLIFYPT GENERALIZE SMOOTHSIA JAVASCRIPT +%left YYBUFFER INNER OUTER DIFFERENCE DENSIFY SIMPLIFY SIMPLIFYPT GENERALIZE SMOOTHSIA CENTERLINE JAVASCRIPT %left '+' '-' %left '*' '/' '%' %left NEG @@ -417,8 +417,14 @@ logical_exp: BOOLEAN | shape_exp EQ shape_exp { int rval; rval = msGEOSEquals($1, $3); - if($1->scratch == MS_TRUE) msFreeShape($1); - if($3->scratch == MS_TRUE) msFreeShape($3); + if($1 && $1->scratch == MS_TRUE) { + msFreeShape($1); + free($1); + } + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } if(rval == -1) { yyerror(p, "Equals (EQ or ==) operator failed."); return(-1); @@ -428,8 +434,14 @@ logical_exp: BOOLEAN | EQUALS '(' shape_exp ',' shape_exp ')' { int rval; rval = msGEOSEquals($3, $5); - if($3->scratch == MS_TRUE) msFreeShape($3); - if($5->scratch == MS_TRUE) msFreeShape($5); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } + if($5 && $5->scratch == MS_TRUE) { + msFreeShape($5); + free($5); + } if(rval == -1) { yyerror(p, "Equals function failed."); return(-1); @@ -439,8 +451,14 @@ logical_exp: BOOLEAN | INTERSECTS '(' shape_exp ',' shape_exp ')' { int rval; rval = msGEOSIntersects($3, $5); - if($3->scratch == MS_TRUE) msFreeShape($3); - if($5->scratch == MS_TRUE) msFreeShape($5); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } + if($5 && $5->scratch == MS_TRUE) { + msFreeShape($5); + free($5); + } if(rval == -1) { yyerror(p, "Intersects function failed."); return(-1); @@ -450,8 +468,14 @@ logical_exp: BOOLEAN | shape_exp INTERSECTS shape_exp { int rval; rval = msGEOSIntersects($1, $3); - if($1->scratch == MS_TRUE) msFreeShape($1); - if($3->scratch == MS_TRUE) msFreeShape($3); + if($1 && $1->scratch == MS_TRUE) { + msFreeShape($1); + free($1); + } + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } if(rval == -1) { yyerror(p, "Intersects operator failed."); return(-1); @@ -461,8 +485,14 @@ logical_exp: BOOLEAN | DISJOINT '(' shape_exp ',' shape_exp ')' { int rval; rval = msGEOSDisjoint($3, $5); - if($3->scratch == MS_TRUE) msFreeShape($3); - if($5->scratch == MS_TRUE) msFreeShape($5); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } + if($5 && $5->scratch == MS_TRUE) { + msFreeShape($5); + free($5); + } if(rval == -1) { yyerror(p, "Disjoint function failed."); return(-1); @@ -472,8 +502,14 @@ logical_exp: BOOLEAN | shape_exp DISJOINT shape_exp { int rval; rval = msGEOSDisjoint($1, $3); - if($1->scratch == MS_TRUE) msFreeShape($1); - if($3->scratch == MS_TRUE) msFreeShape($3); + if($1 && $1->scratch == MS_TRUE) { + msFreeShape($1); + free($1); + } + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } if(rval == -1) { yyerror(p, "Disjoint operator failed."); return(-1); @@ -483,8 +519,14 @@ logical_exp: BOOLEAN | TOUCHES '(' shape_exp ',' shape_exp ')' { int rval; rval = msGEOSTouches($3, $5); - if($3->scratch == MS_TRUE) msFreeShape($3); - if($5->scratch == MS_TRUE) msFreeShape($5); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } + if($5 && $5->scratch == MS_TRUE) { + msFreeShape($5); + free($5); + } if(rval == -1) { yyerror(p, "Touches function failed."); return(-1); @@ -494,8 +536,14 @@ logical_exp: BOOLEAN | shape_exp TOUCHES shape_exp { int rval; rval = msGEOSTouches($1, $3); - if($1->scratch == MS_TRUE) msFreeShape($1); - if($3->scratch == MS_TRUE) msFreeShape($3); + if($1 && $1->scratch == MS_TRUE) { + msFreeShape($1); + free($1); + } + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } if(rval == -1) { yyerror(p, "Touches operator failed."); return(-1); @@ -505,8 +553,14 @@ logical_exp: BOOLEAN | OVERLAPS '(' shape_exp ',' shape_exp ')' { int rval; rval = msGEOSOverlaps($3, $5); - if($3->scratch == MS_TRUE) msFreeShape($3); - if($5->scratch == MS_TRUE) msFreeShape($5); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } + if($5 && $5->scratch == MS_TRUE) { + msFreeShape($5); + free($5); + } if(rval == -1) { yyerror(p, "Overlaps function failed."); return(-1); @@ -516,8 +570,14 @@ logical_exp: BOOLEAN | shape_exp OVERLAPS shape_exp { int rval; rval = msGEOSOverlaps($1, $3); - if($1->scratch == MS_TRUE) msFreeShape($1); - if($3->scratch == MS_TRUE) msFreeShape($3); + if($1 && $1->scratch == MS_TRUE) { + msFreeShape($1); + free($1); + } + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } if(rval == -1) { yyerror(p, "Overlaps operator failed."); return(-1); @@ -527,8 +587,14 @@ logical_exp: BOOLEAN | CROSSES '(' shape_exp ',' shape_exp ')' { int rval; rval = msGEOSCrosses($3, $5); - if($3->scratch == MS_TRUE) msFreeShape($3); - if($5->scratch == MS_TRUE) msFreeShape($5); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } + if($5 && $5->scratch == MS_TRUE) { + msFreeShape($5); + free($5); + } if(rval == -1) { yyerror(p, "Crosses function failed."); return(-1); @@ -538,8 +604,14 @@ logical_exp: BOOLEAN | shape_exp CROSSES shape_exp { int rval; rval = msGEOSCrosses($1, $3); - if($1->scratch == MS_TRUE) msFreeShape($1); - if($3->scratch == MS_TRUE) msFreeShape($3); + if($1 && $1->scratch == MS_TRUE) { + msFreeShape($1); + free($1); + } + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } if(rval == -1) { yyerror(p, "Crosses operator failed."); return(-1); @@ -549,8 +621,14 @@ logical_exp: BOOLEAN | WITHIN '(' shape_exp ',' shape_exp ')' { int rval; rval = msGEOSWithin($3, $5); - if($3->scratch == MS_TRUE) msFreeShape($3); - if($5->scratch == MS_TRUE) msFreeShape($5); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } + if($5 && $5->scratch == MS_TRUE) { + msFreeShape($5); + free($5); + } if(rval == -1) { yyerror(p, "Within function failed."); return(-1); @@ -560,8 +638,14 @@ logical_exp: BOOLEAN | shape_exp WITHIN shape_exp { int rval; rval = msGEOSWithin($1, $3); - if($1->scratch == MS_TRUE) msFreeShape($1); - if($3->scratch == MS_TRUE) msFreeShape($3); + if($1 && $1->scratch == MS_TRUE) { + msFreeShape($1); + free($1); + } + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } if(rval == -1) { yyerror(p, "Within operator failed."); return(-1); @@ -571,8 +655,14 @@ logical_exp: BOOLEAN | CONTAINS '(' shape_exp ',' shape_exp ')' { int rval; rval = msGEOSContains($3, $5); - if($3->scratch == MS_TRUE) msFreeShape($3); - if($5->scratch == MS_TRUE) msFreeShape($5); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } + if($5 && $5->scratch == MS_TRUE) { + msFreeShape($5); + free($5); + } if(rval == -1) { yyerror(p, "Contains function failed."); return(-1); @@ -582,8 +672,14 @@ logical_exp: BOOLEAN | shape_exp CONTAINS shape_exp { int rval; rval = msGEOSContains($1, $3); - if($1->scratch == MS_TRUE) msFreeShape($1); - if($3->scratch == MS_TRUE) msFreeShape($3); + if($1 && $1->scratch == MS_TRUE) { + msFreeShape($1); + free($1); + } + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } if(rval == -1) { yyerror(p, "Contains operator failed."); return(-1); @@ -592,9 +688,15 @@ logical_exp: BOOLEAN } | DWITHIN '(' shape_exp ',' shape_exp ',' math_exp ')' { double d; - d = msGEOSDistance($3, $5); - if($3->scratch == MS_TRUE) msFreeShape($3); - if($5->scratch == MS_TRUE) msFreeShape($5); + d = msGEOSDistance($3, $5); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } + if($5 && $5->scratch == MS_TRUE) { + msFreeShape($5); + free($5); + } if(d <= $7) $$ = MS_TRUE; else @@ -603,8 +705,14 @@ logical_exp: BOOLEAN | BEYOND '(' shape_exp ',' shape_exp ',' math_exp ')' { double d; d = msGEOSDistance($3, $5); - if($3->scratch == MS_TRUE) msFreeShape($3); - if($5->scratch == MS_TRUE) msFreeShape($5); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } + if($5 && $5->scratch == MS_TRUE) { + msFreeShape($5); + free($5); + } if(d > $7) $$ = MS_TRUE; else @@ -634,7 +742,10 @@ math_exp: NUMBER return(-1); } $$ = msGetPolygonArea($3); - if($3->scratch == MS_TRUE) msFreeShape($3); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } } | ROUND '(' math_exp ',' math_exp ')' { $$ = (MS_NINT($3/$5))*$5; } | ROUND '(' math_exp ')' { $$ = (MS_NINT($3)); } @@ -645,6 +756,10 @@ shape_exp: SHAPE | YYBUFFER '(' shape_exp ',' math_exp ')' { shapeObj *s; s = msGEOSBuffer($3, $5); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } if(!s) { yyerror(p, "Executing buffer failed."); return(-1); @@ -652,9 +767,55 @@ shape_exp: SHAPE s->scratch = MS_TRUE; $$ = s; } + | INNER '(' shape_exp ')' { + shapeObj *s; + s = msRings2Shape($3, MS_FALSE); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } + if(!s) { + yyerror(p, "Executing inner failed."); + return(-1); + } + s->scratch = MS_TRUE; + $$ = s; + } + | OUTER '(' shape_exp ')' { + shapeObj *s; + s = msRings2Shape($3, MS_TRUE); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } + if(!s) { + yyerror(p, "Executing outer failed."); + return(-1); + } + s->scratch = MS_TRUE; + $$ = s; + } + | CENTERLINE '(' shape_exp ')' { + shapeObj *s; + s = msGEOSCenterline($3); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } + if(!s) { + yyerror(p, "Executing centerline failed."); + return(-1); + } + s->scratch = MS_TRUE; + $$ = s; + } | DIFFERENCE '(' shape_exp ',' shape_exp ')' { shapeObj *s; s = msGEOSDifference($3, $5); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } if(!s) { yyerror(p, "Executing difference failed."); return(-1); @@ -662,9 +823,27 @@ shape_exp: SHAPE s->scratch = MS_TRUE; $$ = s; } + | DENSIFY '(' shape_exp ',' math_exp ')' { + shapeObj *s; + s = msDensify($3, $5); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } + if(!s) { + yyerror(p, "Executing densify failed."); + return(-1); + } + s->scratch = MS_TRUE; + $$ = s; + } | SIMPLIFY '(' shape_exp ',' math_exp ')' { shapeObj *s; s = msGEOSSimplify($3, $5); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } if(!s) { yyerror(p, "Executing simplify failed."); return(-1); @@ -675,6 +854,10 @@ shape_exp: SHAPE | SIMPLIFYPT '(' shape_exp ',' math_exp ')' { shapeObj *s; s = msGEOSTopologyPreservingSimplify($3, $5); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } if(!s) { yyerror(p, "Executing simplifypt failed."); return(-1); @@ -685,6 +868,10 @@ shape_exp: SHAPE | GENERALIZE '(' shape_exp ',' math_exp ')' { shapeObj *s; s = msGeneralize($3, $5); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } if(!s) { yyerror(p, "Executing generalize failed."); return(-1); @@ -695,6 +882,10 @@ shape_exp: SHAPE | SMOOTHSIA '(' shape_exp ')' { shapeObj *s; s = msSmoothShapeSIA($3, 3, 1, NULL); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } if(!s) { yyerror(p, "Executing smoothsia failed."); return(-1); @@ -705,6 +896,10 @@ shape_exp: SHAPE | SMOOTHSIA '(' shape_exp ',' math_exp ')' { shapeObj *s; s = msSmoothShapeSIA($3, $5, 1, NULL); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } if(!s) { yyerror(p, "Executing smoothsia failed."); return(-1); @@ -715,6 +910,10 @@ shape_exp: SHAPE | SMOOTHSIA '(' shape_exp ',' math_exp ',' math_exp ')' { shapeObj *s; s = msSmoothShapeSIA($3, $5, $7, NULL); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } if(!s) { yyerror(p, "Executing smoothsia failed."); return(-1); @@ -725,6 +924,10 @@ shape_exp: SHAPE | SMOOTHSIA '(' shape_exp ',' math_exp ',' math_exp ',' string_exp ')' { shapeObj *s; s = msSmoothShapeSIA($3, $5, $7, $9); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } free($9); if(!s) { yyerror(p, "Executing smoothsia failed."); @@ -737,6 +940,10 @@ shape_exp: SHAPE #ifdef USE_V8_MAPSCRIPT shapeObj *s; s = msV8TransformShape($3, $5); + if($3 && $3->scratch == MS_TRUE) { + msFreeShape($3); + free($3); + } free($5); if(!s) { yyerror(p, "Executing javascript failed."); @@ -938,6 +1145,10 @@ int yylex(YYSTYPE *lvalp, parseObj *p) case MS_TOKEN_FUNCTION_SIMPLIFYPT: token = SIMPLIFYPT; break; case MS_TOKEN_FUNCTION_GENERALIZE: token = GENERALIZE; break; case MS_TOKEN_FUNCTION_SMOOTHSIA: token = SMOOTHSIA; break; + case MS_TOKEN_FUNCTION_CENTERLINE: token = CENTERLINE; break; + case MS_TOKEN_FUNCTION_DENSIFY: token = DENSIFY; break; + case MS_TOKEN_FUNCTION_INNER: token = INNER; break; + case MS_TOKEN_FUNCTION_OUTER: token = OUTER; break; case MS_TOKEN_FUNCTION_JAVASCRIPT: token = JAVASCRIPT; break; default: diff --git a/mapprimitive.c b/mapprimitive.c index 5bdd92688c..024696d28d 100644 --- a/mapprimitive.c +++ b/mapprimitive.c @@ -2338,3 +2338,86 @@ int msIsDegenerateShape(shapeObj *shape) return( non_degenerate_parts == 0 ); } +shapeObj *msRings2Shape(shapeObj *shape, int outer) { + shapeObj *shape2; + int i, rv, *outerList=NULL; + + if(!shape) return NULL; + if(shape->type != MS_SHAPE_POLYGON) return NULL; + + shape2 = (shapeObj *) malloc(sizeof(shapeObj)); + MS_CHECK_ALLOC(shape2, sizeof(shapeObj), NULL); + msInitShape(shape2); + shape2->type = shape->type; + + outerList = msGetOuterList(shape); + if(!outerList) { + msFreeShape(shape2); + free(shape2); + return NULL; + } + + for(i=0; inumlines; i++) { + if(outerList[i] == outer) { // else inner + rv = msAddLine(shape2, &(shape->line[i])); + if(rv != MS_SUCCESS) { + msFreeShape(shape2); + free(shape2); + free(outerList); + return NULL; + } + } + } + + free(outerList); // clean up + return shape2; +} + +shapeObj *msDensify(shapeObj *shape, double tolerance) { + int i, j, k, l; // counters + int n; + shapeObj *shape2; + lineObj line; + double distance, length, c; + + if(!shape) return NULL; + if(shape->type != MS_SHAPE_POLYGON && shape->type != MS_SHAPE_LINE) return NULL; + + shape2 = (shapeObj *) malloc(sizeof(shapeObj)); + MS_CHECK_ALLOC(shape2, sizeof(shapeObj), NULL); + msInitShape(shape2); + shape2->type = shape->type; // POLGYON or LINE + + for(i=0; inumlines; i++) { + + line.numpoints = shape->line[i].numpoints; + line.point = (pointObj *) malloc(sizeof(pointObj)*line.numpoints); // best case we don't have to add any points + MS_CHECK_ALLOC(line.point, sizeof(pointObj)*line.numpoints, NULL); + + for(j=0, l=0; jline[i].numpoints-1; j++, l++) { + line.point[l] = shape->line[i].point[j]; + + distance = msDistancePointToPoint(&(shape->line[i].point[j]), &(shape->line[i].point[j+1])); + if(distance > tolerance) { + n = (int) floor(distance/tolerance); // number of new points, n+1 is the number of new segments + length = distance/(n+1); // segment length + + line.numpoints += n; + line.point = (pointObj *) realloc(line.point, sizeof(pointObj)*line.numpoints); + MS_CHECK_ALLOC(line.point, sizeof(pointObj)*line.numpoints, NULL); + + for(k=0; kline[i].point[j].x + c*(shape->line[i].point[j+1].x - shape->line[i].point[j].x); + line.point[l].y = shape->line[i].point[j].y + c*(shape->line[i].point[j+1].y - shape->line[i].point[j].y); + } + } + } + line.point[l] = shape->line[i].point[j]; + + msAddLineDirectly(shape2, &line); + } + + return shape2; +} diff --git a/mapserver.h b/mapserver.h index 22b0848566..383615ddcf 100755 --- a/mapserver.h +++ b/mapserver.h @@ -719,10 +719,11 @@ extern "C" { }; enum MS_TOKEN_FUNCTION_ENUM { MS_TOKEN_FUNCTION_LENGTH=350, MS_TOKEN_FUNCTION_TOSTRING, MS_TOKEN_FUNCTION_COMMIFY, MS_TOKEN_FUNCTION_AREA, MS_TOKEN_FUNCTION_ROUND, MS_TOKEN_FUNCTION_FROMTEXT, - MS_TOKEN_FUNCTION_BUFFER, MS_TOKEN_FUNCTION_DIFFERENCE, MS_TOKEN_FUNCTION_SIMPLIFY, MS_TOKEN_FUNCTION_SIMPLIFYPT, MS_TOKEN_FUNCTION_GENERALIZE, MS_TOKEN_FUNCTION_SMOOTHSIA, MS_TOKEN_FUNCTION_JAVASCRIPT, - MS_TOKEN_FUNCTION_UPPER, MS_TOKEN_FUNCTION_LOWER, MS_TOKEN_FUNCTION_INITCAP, MS_TOKEN_FUNCTION_FIRSTCAP + MS_TOKEN_FUNCTION_BUFFER, MS_TOKEN_FUNCTION_DIFFERENCE, MS_TOKEN_FUNCTION_SIMPLIFY, MS_TOKEN_FUNCTION_SIMPLIFYPT, MS_TOKEN_FUNCTION_GENERALIZE, MS_TOKEN_FUNCTION_SMOOTHSIA, + MS_TOKEN_FUNCTION_CENTERLINE, MS_TOKEN_FUNCTION_DENSIFY, MS_TOKEN_FUNCTION_OUTER, MS_TOKEN_FUNCTION_INNER, + MS_TOKEN_FUNCTION_JAVASCRIPT, MS_TOKEN_FUNCTION_UPPER, MS_TOKEN_FUNCTION_LOWER, MS_TOKEN_FUNCTION_INITCAP, MS_TOKEN_FUNCTION_FIRSTCAP }; - enum MS_TOKEN_BINDING_ENUM { MS_TOKEN_BINDING_DOUBLE=370, MS_TOKEN_BINDING_INTEGER, MS_TOKEN_BINDING_STRING, MS_TOKEN_BINDING_TIME, MS_TOKEN_BINDING_SHAPE, MS_TOKEN_BINDING_MAP_CELLSIZE, MS_TOKEN_BINDING_DATA_CELLSIZE }; + enum MS_TOKEN_BINDING_ENUM { MS_TOKEN_BINDING_DOUBLE=380, MS_TOKEN_BINDING_INTEGER, MS_TOKEN_BINDING_STRING, MS_TOKEN_BINDING_TIME, MS_TOKEN_BINDING_SHAPE, MS_TOKEN_BINDING_MAP_CELLSIZE, MS_TOKEN_BINDING_DATA_CELLSIZE }; enum MS_PARSE_TYPE_ENUM { MS_PARSE_TYPE_BOOLEAN, MS_PARSE_TYPE_STRING, MS_PARSE_TYPE_SHAPE, MS_PARSE_TYPE_SLD }; #ifndef SWIG @@ -2452,6 +2453,9 @@ extern "C" { MS_DLL_EXPORT void msTransformShapeToPixelRound(shapeObj *shape, rectObj extent, double cellsize); MS_DLL_EXPORT void msTransformShapeToPixelDoublePrecision(shapeObj *shape, rectObj extent, double cellsize); + MS_DLL_EXPORT shapeObj *msDensify(shapeObj *shape, double tolerance); + MS_DLL_EXPORT shapeObj *msRings2Shape(shapeObj *shape, int outer); + #ifndef SWIG struct line_lengths { @@ -2959,6 +2963,8 @@ extern "C" { MS_DLL_EXPORT shapeObj *msGEOSDifference(shapeObj *shape1, shapeObj *shape2); MS_DLL_EXPORT shapeObj *msGEOSSymDifference(shapeObj *shape1, shapeObj *shape2); MS_DLL_EXPORT shapeObj *msGEOSOffsetCurve(shapeObj *p, double offset); + MS_DLL_EXPORT shapeObj *msGEOSVoronoiDiagram(shapeObj *shape, double tolerance, int onlyEdges); + MS_DLL_EXPORT shapeObj *msGEOSCenterline(shapeObj *shape); MS_DLL_EXPORT int msGEOSContains(shapeObj *shape1, shapeObj *shape2); MS_DLL_EXPORT int msGEOSOverlaps(shapeObj *shape1, shapeObj *shape2); diff --git a/mapsmoothing.c b/mapsmoothing.c index f291696044..98283133f1 100644 --- a/mapsmoothing.c +++ b/mapsmoothing.c @@ -197,6 +197,7 @@ shapeObj* msSmoothShapeSIA(shapeObj *shape, int ss, int si, char *preprocessing) newShape = (shapeObj *) msSmallMalloc(sizeof (shapeObj)); msInitShape(newShape); + newShape->type = shape->type; // preserve the type if (ss < 3) ss = 3; @@ -305,6 +306,6 @@ shapeObj* msSmoothShapeSIA(shapeObj *shape, int ss, int si, char *preprocessing) free(p); free(coeff); - + return newShape; } diff --git a/msautotest/misc/centerline.map b/msautotest/misc/centerline.map new file mode 100644 index 0000000000..17267c6fa0 --- /dev/null +++ b/msautotest/misc/centerline.map @@ -0,0 +1,214 @@ +# +# Tests the centerline, inner and outer GEOMTRANSFORM functions. +# +# REQUIRES: INPUT=SHAPE OUTPUT=PNG +# +# RUN_PARMS: centerline1.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&mode=map&layer=centerline1" > [RESULT_DEMIME] +# RUN_PARMS: centerline2.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&mode=map&layer=centerline2" > [RESULT_DEMIME] +# RUN_PARMS: centerline3_exception.txt [MAPSERV] QUERY_STRING="map=[MAPFILE]&mode=map&layer=centerline3" > [RESULT_DEVERSION] +# RUN_PARMS: centerline4_exception.txt [MAPSERV] QUERY_STRING="map=[MAPFILE]&mode=map&layer=centerline4" > [RESULT_DEVERSION] +# +MAP + NAME "centerline" + STATUS ON + # EXTENT -125.549477 -69.508628 101.670954 15.840339 + # EXTENT -131.343925 -41.285156 170.097978 115.727752 + EXTENT -135.620276 -69.508628 173.802333 104.769497 + SIZE 400 300 + FONTSET "fonts.lst" + IMAGETYPE png24 + + SHAPEPATH "../renderers/data" + + # CONFIG MS_ERRORFILE "stderr" + + SYMBOL NAME 'vertex' TYPE ELLIPSE POINTS 1 1 END FILLED TRUE END + + LAYER + NAME 'base' + TYPE POLYGON + STATUS DEFAULT + DATA 'world_testpoly' + CLASS + STYLE + COLOR 181 181 181 + OUTLINECOLOR 51 51 51 + END + END + END + + LAYER + NAME 'outer' + TYPE LINE + STATUS DEFAULT + DATA 'world_testpoly' + GEOMTRANSFORM (outer([shape])) + CLASS + STYLE + COLOR 0 0 0 + WIDTH 2 + END + END + END + + LAYER + NAME 'inner' + TYPE LINE + STATUS DEFAULT + DATA 'world_testpoly' + GEOMTRANSFORM (inner([shape])) + CLASS + STYLE + COLOR 255 0 0 + WIDTH 2 + END + END + END + + LAYER + NAME 'centerline1' + TYPE LINE + STATUS OFF + DATA 'world_testpoly' + GEOMTRANSFORM (centerline(densify([shape], 5))) + CLASS + LABEL + TEXT 'sample label' + TYPE TRUETYPE + FONT 'lucida' + COLOR 0 0 0 + OUTLINECOLOR 255 255 255 + SIZE 8 + MAXOVERLAPANGLE 50 + ANGLE FOLLOW + END + STYLE + COLOR 0 0 0 + WIDTH 1 + PATTERN 5 5 END + END + STYLE + GEOMTRANSFORM VERTICES + SYMBOL 'vertex' + COLOR 0 0 255 + SIZE 3 + END + STYLE + GEOMTRANSFORM START + SYMBOL 'vertex' + COLOR 255 0 0 + SIZE 5 + END + STYLE + GEOMTRANSFORM "END" + SYMBOL 'vertex' + COLOR 0 255 0 + SIZE 5 + END + END + END + + LAYER + NAME 'centerline2' + TYPE LINE + STATUS OFF + DATA 'world_testpoly' + GEOMTRANSFORM (smoothsia(centerline(densify([shape], 5)))) + CLASS + LABEL + TEXT 'sample label' + TYPE TRUETYPE + FONT 'lucida' + COLOR 0 0 0 + OUTLINECOLOR 255 255 255 + SIZE 8 + MAXOVERLAPANGLE 50 + ANGLE FOLLOW + END + STYLE + COLOR 0 0 0 + WIDTH 1 + PATTERN 5 5 END + END + STYLE + GEOMTRANSFORM VERTICES + SYMBOL 'vertex' + COLOR 0 0 255 + SIZE 3 + END + STYLE + GEOMTRANSFORM START + SYMBOL 'vertex' + COLOR 255 0 0 + SIZE 5 + END + STYLE + GEOMTRANSFORM "END" + SYMBOL 'vertex' + COLOR 0 255 0 + SIZE 5 + END + END + END + + # should error, shapes are too simple and need to be densified + LAYER + NAME 'centerline3' + TYPE LINE + STATUS OFF + DATA 'world_testpoly' + GEOMTRANSFORM (centerline([shape])) + CLASS + LABEL + TEXT 'sample label' + TYPE TRUETYPE + FONT 'lucida' + COLOR 0 0 0 + OUTLINECOLOR 255 255 255 + SIZE 8 + MAXOVERLAPANGLE 50 + ANGLE FOLLOW + END + STYLE + COLOR 0 0 0 + WIDTH 1 + PATTERN 5 5 END + END + STYLE + GEOMTRANSFORM VERTICES + SYMBOL 'vertex' + COLOR 0 0 255 + SIZE 3 + END + STYLE + GEOMTRANSFORM START + SYMBOL 'vertex' + COLOR 255 0 0 + SIZE 5 + END + STYLE + GEOMTRANSFORM "END" + SYMBOL 'vertex' + COLOR 0 255 0 + SIZE 5 + END + END + END + + # should error, centerline() requires polygon input + LAYER + NAME 'centerline4' + TYPE LINE + STATUS OFF + DATA 'world_testlines' + GEOMTRANSFORM (centerline([shape])) + CLASS + STYLE + COLOR 0 0 0 + WIDTH 2 + PATTERN 5 5 END + END + END + END + +END diff --git a/msautotest/misc/expected/centerline1.png b/msautotest/misc/expected/centerline1.png new file mode 100644 index 0000000000..85793e48f1 Binary files /dev/null and b/msautotest/misc/expected/centerline1.png differ diff --git a/msautotest/misc/expected/centerline2.png b/msautotest/misc/expected/centerline2.png new file mode 100644 index 0000000000..910c78f203 Binary files /dev/null and b/msautotest/misc/expected/centerline2.png differ diff --git a/msautotest/misc/expected/centerline3_exception.txt b/msautotest/misc/expected/centerline3_exception.txt new file mode 100644 index 0000000000..9e4125733b --- /dev/null +++ b/msautotest/misc/expected/centerline3_exception.txt @@ -0,0 +1,9 @@ +Content-Type: text/html + + +MapServer Message +msDrawMap(): Image handling error. Failed to draw layer named 'centerline3'. +msGeomTransformShape(): Expression parser error. Failed to process shape expression: centerline([shape]) +yyparse(): Expression parser error. Executing centerline failed. +msGEOSCenterline(): GEOS library error. Centerline generation failed, try densifying the shapes. + \ No newline at end of file diff --git a/msautotest/misc/expected/centerline4_exception.txt b/msautotest/misc/expected/centerline4_exception.txt new file mode 100644 index 0000000000..be33b4f23f --- /dev/null +++ b/msautotest/misc/expected/centerline4_exception.txt @@ -0,0 +1,9 @@ +Content-Type: text/html + + +MapServer Message +msDrawMap(): Image handling error. Failed to draw layer named 'centerline4'. +msGeomTransformShape(): Expression parser error. Failed to process shape expression: centerline([shape]) +yyparse(): Expression parser error. Executing centerline failed. +msGEOSCenterline(): GEOS library error. Centerlines can only be computed for polygon shapes. + \ No newline at end of file