Kudos for Bus Trips ACT by Molson Chengalath
--- /dev/null
+++ b/.gitignore
@@ -1,1 +1,9 @@
+/labs/tiles/12
+/labs/tiles/13
+/labs/tiles/14
+/labs/tiles/15
+/labs/tiles/16
+/labs/tiles/17
+/labs/tiles/19
+/nbproject/private/
--- /dev/null
+++ b/Boxfile
@@ -1,1 +1,7 @@
+web1:
+ php_extensions:
+ - pgsql
+ - pdo
+ - pdo_pgsql
+ - curl
--- a/about.php
+++ b/about.php
@@ -1,31 +1,57 @@
<?php
+/*
+ * Copyright 2010,2011 Alexander Sadleir
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
include ('include/common.inc.php');
include_header("About", "about")
?>
<p>
-Busness Time - An ACT bus timetable webapp<br />
-Based on the maxious-canberra-transit-feed (<a
-href="http://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip">download</a>,
-last updated <?php
-echo date("F d Y.", @filemtime('cbrfeed.zip')); ?>)<br />
-Source code for the <a
-href="https://github.com/maxious/ACTBus-data">transit
-feed</a> and <a href="https://github.com/maxious/ACTBus-ui">this
-site</a> available from github.<br />
-Uses jQuery Mobile, PHP, Ruby, Python, Google Transit Feed Specification tools, OpenTripPlanner, OpenLayers, OpenStreetMap, Cloudmade Geocoder and Tile Service<br />
-<br />
-Feedback encouraged; contact maxious@lambdacomplex.org<br />
+ Busness Time - An ACT bus timetable webapp<br />
+ Based on the maxious-canberra-transit-feed (<a
+ href="http://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip">download</a>,
+ last updated <?php echo date("F d Y.", @filemtime('cbrfeed.zip')); ?>)<br />
+ Source code for the <a
+ href="https://github.com/maxious/ACTBus-data">transit
+ feed</a> and <a href="https://github.com/maxious/ACTBus-ui">this
+ site</a> available from github.<br />
+ Uses jQuery Mobile, PHP, PostgreSQL, OpenTripPlanner, OpenLayers, OpenStreetMap, Cloudmade Geocoder and Tile Service<br />
+ Suburb Geocoding Based on <A href="http://www.abs.gov.au/AUSSTATS/abs@.nsf/Lookup/1270.0.55.003Main+Features1July%202011?OpenDocument">Australian Bureau of Statistics data.</a><br />
+ Street geocoding based on work by OpenStreetMap contributors<br>
<br />
-Some icons by Joseph Wain / glyphish.com<br />
-<br />
-<small>Disclaimer: The content of this website is of a general and informative nature. Please check with printed timetables or those available on http://action.act.gov.au before your trip.
-Whilst every effort has been made to ensure the high quality and accuracy of the Site, the Author makes no warranty,
-express or implied concerning the topicality, correctness, completeness or quality of the information, which is provided
-"as is". The Author expressly disclaims all warranties, including but not limited to warranties of fitness for a particular purpose and warranties of merchantability.
-All offers are not binding and without obligation. The Author expressly reserves the right, in his discretion, to suspend,
-change, modify, add or remove portions of the Site and to restrict or terminate the use and accessibility of the Site
-without prior notice. </small>
-<?
-include_footer();
-?>
+ Feedback encouraged; contact maxious@lambdacomplex.org<br />
+ <br />
+ Some icons by Joseph Wain / glyphish.com<br />
+ Native clients also available for iPhone(<a href="http://itunes.apple.com/au/app/cbrtimetable/id444287349?mt=8">cbrTimetable by Sandor Kolotenko</a>
+ , <a href="http://itunes.apple.com/au/app/act-buses/id376634797?mt=8">ACT Buses by David Sullivan</a>, <a href="http://itunes.apple.com/app/bus-trips-act/id489146525?mt=8">Bus Trips ACT by Molson Chengalath</a>)
+ , Android (<a href="https://market.android.com/details?id=com.action">MyBus 2.0 by Imagine Team</a>, <A href="https://market.android.com/details?id=GetMe2CanberraFree.source">GetMe2 Canberra by
+Colin Thompson </a>)
+ and Windows Phone 7 (<a href="http://www.windowsphone.com/en-AU/apps/d840375e-429c-4aa4-a358-80eec6ea9e66">TransHub Canberra by Soul Solutions</a>) Other web clients include <a href="http://canberra.itranzit.com/option.html">iTranzit</a>.
+ <br />
+ GTFS-realtime API:
+ Alerts and Trip Updates (but only Cancelled or Stop Skipped)
+ Default format binary Protocol Buffer but can get JSON by adding ?ascii=yes
+ <br />
+ <br />
+ <small>Disclaimer: The content of this website is of a general and informative nature. Please check with printed timetables or those available on http://action.act.gov.au before your trip.
+ Whilst every effort has been made to ensure the high quality and accuracy of the Site, the Author makes no warranty,
+ express or implied concerning the topicality, correctness, completeness or quality of the information, which is provided
+ "as is". The Author expressly disclaims all warranties, including but not limited to warranties of fitness for a particular purpose and warranties of merchantability.
+ All offers are not binding and without obligation. The Author expressly reserves the right, in his discretion, to suspend,
+ change, modify, add or remove portions of the Site and to restrict or terminate the use and accessibility of the Site
+ without prior notice. </small>
+ <?php
+ include_footer();
+ ?>
--- a/aws/awsStartup.sh
+++ b/aws/awsStartup.sh
@@ -1,28 +1,13 @@
#!/bin/bash
-#this script should be run from a fresh git checkout from http://maxious.lambdacomplex.org
+#this script should be run from a fresh git checkout from github
#ami base must have yum install lighttpd-fastcgi, git, tomcat6
-#screen php-cli php-gd tomcat6-webapps tomcat6-admin-webapps svn maven2
+#php-cli php-gd tomcat6-webapps tomcat6-admin-webapps svn maven2
+#postgres postgres-server php-pg
#http://www.how2forge.org/installing-lighttpd-with-php5-and-mysql-support-on-fedora-12
-cp /root/aws.php /tmp/
-chcon -h system_u:object_r:httpd_sys_content_t /var/www
-chcon -R -h root:object_r:httpd_sys_content_t /var/www/*
-chcon -R -t httpd_sys_content_rw_t /var/www/lib/staticmaplite/cache
-chmod -R 777 /var/www/lib/staticmaplite/cache
-wget http://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip \
--O /var/www/cbrfeed.zip
-easy_install transitfeed
-easy_install simplejson
-screen -S viewsh -X quit
-screen -S viewsh -d -m /var/www/view.sh
-
-wget http://s3-ap-southeast-1.amazonaws.com/busresources/Graph.obj \
--O /tmp/Graph.obj
-rm -rfv /usr/share/tomcat6/webapps/opentripplanner*
-wget http://s3-ap-southeast-1.amazonaws.com/busresources/opentripplanner-webapp.war \
--O /usr/share/tomcat6/webapps/opentripplanner-webapp.war
-wget http://s3-ap-southeast-1.amazonaws.com/busresources/opentripplanner-api-webapp.war \
--O /usr/share/tomcat6/webapps/opentripplanner-api-webapp.war
-/etc/init.d/tomcat6 restart
+sh busuiphp.sh
+sh busuidb.sh
+sh busuiotp.sh
+
--- /dev/null
+++ b/aws/busuidb.sh
@@ -1,1 +1,17 @@
-
+createdb transitdata
+createlang -d transitdata plpgsql
+psql -d transitdata -f /var/www/lib/postgis.sql
+# curl https://github.com/maxious/ACTBus-ui/raw/master/transitdata.cbrfeed.sql.gz -o transitdata.cbrfeed.sql.gz
+#made with pg_dump transitdata | gzip -c > transitdata.cbrfeed.sql.gz
+gunzip /var/www/transitdata.cbrfeed.sql.gz
+psql -d transitdata -f /var/www/transitdata.cbrfeed.sql
+#createuser transitdata -SDRP
+#password transitdata
+#psql -d transitdata -c "GRANT SELECT ON TABLE agency,calendar,calendar_dates,routes,stop_times,stops,trips TO transitdata;"
+#psql -d transitdata -c "GRANT SELECT,INSERT ON TABLE myway_observations,myway_routes,myway_stops,myway_timingdeltas TO transitdata;"
+#psql -d transitdata -c "GRANT SELECT,INSERT,UPDATE ON TABLE myway_routes,myway_stops TO transitdata;"
+##psql -d transitdata -c "GRANT SELECT ON ALL TABLES IN SCHEMA public TO transitdata;"
+## INSERT INTO geometry_columns(f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, "type")
+##SELECT '', 'public', 'shapes', 'shape_pt', ST_CoordDim(shape_pt), ST_SRID(shape_pt), GeometryType(shape_pt)
+##FROM shapes LIMIT 1;
+php /var/www/updatedb.php
--- /dev/null
+++ b/aws/busuiotp.sh
@@ -1,1 +1,10 @@
+wget http://s3-ap-southeast-1.amazonaws.com/busresources/Graph.obj \
+-O /tmp/Graph.obj
+/etc/init.d/tomcat6 stop
+rm -rfv /usr/share/tomcat6/webapps/opentripplanner*
+wget http://s3-ap-southeast-1.amazonaws.com/busresources/opentripplanner-webapp.war \
+-O /usr/share/tomcat6/webapps/opentripplanner-webapp.war
+wget http://s3-ap-southeast-1.amazonaws.com/busresources/opentripplanner-api-webapp.war \
+-O /usr/share/tomcat6/webapps/opentripplanner-api-webapp.war
+/etc/init.d/tomcat6 restart
--- /dev/null
+++ b/aws/busuiotp.testing.sh
@@ -1,1 +1,10 @@
+wget http://s3-ap-southeast-1.amazonaws.com/busresources/testing/Graph.obj \
+-O /tmp/Graph.obj
+/etc/init.d/tomcat6 stop
+rm -rfv /usr/share/tomcat6/webapps/opentripplanner*
+wget http://s3-ap-southeast-1.amazonaws.com/busresources/testing/opentripplanner-webapp.war \
+-O /usr/share/tomcat6/webapps/opentripplanner-webapp.war
+wget http://s3-ap-southeast-1.amazonaws.com/busresources/testing/opentripplanner-api-webapp.war \
+-O /usr/share/tomcat6/webapps/opentripplanner-api-webapp.war
+/etc/init.d/tomcat6 restart
--- /dev/null
+++ b/aws/busuiphp.sh
@@ -1,1 +1,12 @@
+cp /root/aws.php /tmp/
+chmod 777 /var/cache/lighttpd/compress/
+chcon -h system_u:object_r:httpd_sys_content_t /var/www
+chcon -R -h root:object_r:httpd_sys_content_t /var/www/*
+
+chcon -R -t httpd_sys_content_rw_t /var/www/labs/tiles
+chmod -R 777 /var/www/labs/tiles
+
+wget http://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip \
+-O /var/www/cbrfeed.zip
+
--- /dev/null
+++ b/aws/data-sources.xml
@@ -1,1 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+ <!-- Single graph -->
+ <import resource="classpath:org/opentripplanner/api/application-context.xml" />
+
+ <bean id="graphBundle" class="org.opentripplanner.model.GraphBundle">
+ <property name="path" value="/tmp/" />
+ </bean>
+
+</beans>
+
--- /dev/null
+++ b/aws/pg_hba.conf
@@ -1,1 +1,77 @@
+# PostgreSQL Client Authentication Configuration File
+# ===================================================
+#
+# Refer to the "Client Authentication" section in the
+# PostgreSQL documentation for a complete description
+# of this file. A short synopsis follows.
+#
+# This file controls: which hosts are allowed to connect, how clients
+# are authenticated, which PostgreSQL user names they can use, which
+# databases they can access. Records take one of these forms:
+#
+# local DATABASE USER METHOD [OPTIONS]
+# host DATABASE USER CIDR-ADDRESS METHOD [OPTIONS]
+# hostssl DATABASE USER CIDR-ADDRESS METHOD [OPTIONS]
+# hostnossl DATABASE USER CIDR-ADDRESS METHOD [OPTIONS]
+#
+# (The uppercase items must be replaced by actual values.)
+#
+# The first field is the connection type: "local" is a Unix-domain socket,
+# "host" is either a plain or SSL-encrypted TCP/IP socket, "hostssl" is an
+# SSL-encrypted TCP/IP socket, and "hostnossl" is a plain TCP/IP socket.
+#
+# DATABASE can be "all", "sameuser", "samerole", a database name, or
+# a comma-separated list thereof.
+#
+# USER can be "all", a user name, a group name prefixed with "+", or
+# a comma-separated list thereof. In both the DATABASE and USER fields
+# you can also write a file name prefixed with "@" to include names from
+# a separate file.
+#
+# CIDR-ADDRESS specifies the set of hosts the record matches.
+# It is made up of an IP address and a CIDR mask that is an integer
+# (between 0 and 32 (IPv4) or 128 (IPv6) inclusive) that specifies
+# the number of significant bits in the mask. Alternatively, you can write
+# an IP address and netmask in separate columns to specify the set of hosts.
+#
+# METHOD can be "trust", "reject", "md5", "password", "gss", "sspi", "krb5",
+# "ident", "pam", "ldap" or "cert". Note that "password" sends passwords
+# in clear text; "md5" is preferred since it sends encrypted passwords.
+#
+# OPTIONS are a set of options for the authentication in the format
+# NAME=VALUE. The available options depend on the different authentication
+# methods - refer to the "Client Authentication" section in the documentation
+# for a list of which options are available for which authentication methods.
+#
+# Database and user names containing spaces, commas, quotes and other special
+# characters must be quoted. Quoting one of the keywords "all", "sameuser" or
+# "samerole" makes the name lose its special character, and just match a
+# database or username with that name.
+#
+# This file is read on server startup and when the postmaster receives
+# a SIGHUP signal. If you edit the file on a running system, you have
+# to SIGHUP the postmaster for the changes to take effect. You can use
+# "pg_ctl reload" to do that.
+# Put your actual configuration here
+# ----------------------------------
+#
+# If you want to allow non-local connections, you need to add more
+# "host" records. In that case you will also need to make PostgreSQL listen
+# on a non-local interface via the listen_addresses configuration parameter,
+# or via the -i or -h command line switches.
+#
+
+
+
+# TYPE DATABASE USER CIDR-ADDRESS METHOD
+
+# "local" is for Unix domain socket connections only
+local all all trust
+# IPv4 local connections:
+host all all 127.0.0.1/32 trust
+# IPv6 local connections:
+host all all ::1/128 trust
+#Allow any IP to connect, with a password:
+host all all 0.0.0.0 0.0.0.0 md5
+
--- /dev/null
+++ b/aws/postgresql.conf
@@ -1,1 +1,502 @@
-
+# -----------------------------
+# PostgreSQL configuration file
+# -----------------------------
+#
+# This file consists of lines of the form:
+#
+# name = value
+#
+# (The "=" is optional.) Whitespace may be used. Comments are introduced with
+# "#" anywhere on a line. The complete list of parameter names and allowed
+# values can be found in the PostgreSQL documentation.
+#
+# The commented-out settings shown in this file represent the default values.
+# Re-commenting a setting is NOT sufficient to revert it to the default value;
+# you need to reload the server.
+#
+# This file is read on server startup and when the server receives a SIGHUP
+# signal. If you edit the file on a running system, you have to SIGHUP the
+# server for the changes to take effect, or use "pg_ctl reload". Some
+# parameters, which are marked below, require a server shutdown and restart to
+# take effect.
+#
+# Any parameter can also be given as a command-line option to the server, e.g.,
+# "postgres -c log_connections=on". Some parameters can be changed at run time
+# with the "SET" SQL command.
+#
+# Memory units: kB = kilobytes Time units: ms = milliseconds
+# MB = megabytes s = seconds
+# GB = gigabytes min = minutes
+# h = hours
+# d = days
+
+
+#------------------------------------------------------------------------------
+# FILE LOCATIONS
+#------------------------------------------------------------------------------
+
+# The default values of these variables are driven from the -D command-line
+# option or PGDATA environment variable, represented here as ConfigDir.
+
+#data_directory = 'ConfigDir' # use data in another directory
+ # (change requires restart)
+#hba_file = 'ConfigDir/pg_hba.conf' # host-based authentication file
+ # (change requires restart)
+#ident_file = 'ConfigDir/pg_ident.conf' # ident configuration file
+ # (change requires restart)
+
+# If external_pid_file is not explicitly set, no extra PID file is written.
+#external_pid_file = '(none)' # write an extra PID file
+ # (change requires restart)
+
+
+#------------------------------------------------------------------------------
+# CONNECTIONS AND AUTHENTICATION
+#------------------------------------------------------------------------------
+
+# - Connection Settings -
+
+listen_addresses = '*' # what IP address(es) to listen on;
+ # comma-separated list of addresses;
+ # defaults to 'localhost', '*' = all
+ # (change requires restart)
+#port = 5432 # (change requires restart)
+max_connections = 100 # (change requires restart)
+# Note: Increasing max_connections costs ~400 bytes of shared memory per
+# connection slot, plus lock space (see max_locks_per_transaction).
+#superuser_reserved_connections = 3 # (change requires restart)
+#unix_socket_directory = '' # (change requires restart)
+#unix_socket_group = '' # (change requires restart)
+#unix_socket_permissions = 0777 # begin with 0 to use octal notation
+ # (change requires restart)
+#bonjour_name = '' # defaults to the computer name
+ # (change requires restart)
+
+# - Security and Authentication -
+
+#authentication_timeout = 1min # 1s-600s
+#ssl = off # (change requires restart)
+#ssl_ciphers = 'ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH' # allowed SSL ciphers
+ # (change requires restart)
+#ssl_renegotiation_limit = 512MB # amount of data between renegotiations
+#password_encryption = on
+#db_user_namespace = off
+
+# Kerberos and GSSAPI
+#krb_server_keyfile = ''
+#krb_srvname = 'postgres' # (Kerberos only)
+#krb_caseins_users = off
+
+# - TCP Keepalives -
+# see "man 7 tcp" for details
+
+#tcp_keepalives_idle = 0 # TCP_KEEPIDLE, in seconds;
+ # 0 selects the system default
+#tcp_keepalives_interval = 0 # TCP_KEEPINTVL, in seconds;
+ # 0 selects the system default
+#tcp_keepalives_count = 0 # TCP_KEEPCNT;
+ # 0 selects the system default
+
+
+#------------------------------------------------------------------------------
+# RESOURCE USAGE (except WAL)
+#------------------------------------------------------------------------------
+
+# - Memory -
+
+shared_buffers = 32MB # min 128kB
+ # (change requires restart)
+#temp_buffers = 8MB # min 800kB
+#max_prepared_transactions = 0 # zero disables the feature
+ # (change requires restart)
+# Note: Increasing max_prepared_transactions costs ~600 bytes of shared memory
+# per transaction slot, plus lock space (see max_locks_per_transaction).
+# It is not advisable to set max_prepared_transactions nonzero unless you
+# actively intend to use prepared transactions.
+#work_mem = 1MB # min 64kB
+#maintenance_work_mem = 16MB # min 1MB
+#max_stack_depth = 2MB # min 100kB
+
+# - Kernel Resource Usage -
+
+#max_files_per_process = 1000 # min 25
+ # (change requires restart)
+#shared_preload_libraries = '' # (change requires restart)
+
+# - Cost-Based Vacuum Delay -
+
+#vacuum_cost_delay = 0ms # 0-100 milliseconds
+#vacuum_cost_page_hit = 1 # 0-10000 credits
+#vacuum_cost_page_miss = 10 # 0-10000 credits
+#vacuum_cost_page_dirty = 20 # 0-10000 credits
+#vacuum_cost_limit = 200 # 1-10000 credits
+
+# - Background Writer -
+
+#bgwriter_delay = 200ms # 10-10000ms between rounds
+#bgwriter_lru_maxpages = 100 # 0-1000 max buffers written/round
+#bgwriter_lru_multiplier = 2.0 # 0-10.0 multipler on buffers scanned/round
+
+# - Asynchronous Behavior -
+
+#effective_io_concurrency = 1 # 1-1000. 0 disables prefetching
+
+
+#------------------------------------------------------------------------------
+# WRITE AHEAD LOG
+#------------------------------------------------------------------------------
+
+# - Settings -
+
+#fsync = on # turns forced synchronization on or off
+#synchronous_commit = on # immediate fsync at commit
+#wal_sync_method = fsync # the default is the first option
+ # supported by the operating system:
+ # open_datasync
+ # fdatasync
+ # fsync
+ # fsync_writethrough
+ # open_sync
+#full_page_writes = on # recover from partial page writes
+#wal_buffers = 64kB # min 32kB
+ # (change requires restart)
+#wal_writer_delay = 200ms # 1-10000 milliseconds
+
+#commit_delay = 0 # range 0-100000, in microseconds
+#commit_siblings = 5 # range 1-1000
+
+# - Checkpoints -
+
+#checkpoint_segments = 3 # in logfile segments, min 1, 16MB each
+#checkpoint_timeout = 5min # range 30s-1h
+#checkpoint_completion_target = 0.5 # checkpoint target duration, 0.0 - 1.0
+#checkpoint_warning = 30s # 0 disables
+
+# - Archiving -
+
+#archive_mode = off # allows archiving to be done
+ # (change requires restart)
+#archive_command = '' # command to use to archive a logfile segment
+#archive_timeout = 0 # force a logfile segment switch after this
+ # number of seconds; 0 disables
+
+
+#------------------------------------------------------------------------------
+# QUERY TUNING
+#------------------------------------------------------------------------------
+
+# - Planner Method Configuration -
+
+#enable_bitmapscan = on
+#enable_hashagg = on
+#enable_hashjoin = on
+#enable_indexscan = on
+#enable_mergejoin = on
+#enable_nestloop = on
+#enable_seqscan = on
+#enable_sort = on
+#enable_tidscan = on
+
+# - Planner Cost Constants -
+
+#seq_page_cost = 1.0 # measured on an arbitrary scale
+#random_page_cost = 4.0 # same scale as above
+#cpu_tuple_cost = 0.01 # same scale as above
+#cpu_index_tuple_cost = 0.005 # same scale as above
+#cpu_operator_cost = 0.0025 # same scale as above
+#effective_cache_size = 128MB
+
+# - Genetic Query Optimizer -
+
+#geqo = on
+#geqo_threshold = 12
+#geqo_effort = 5 # range 1-10
+#geqo_pool_size = 0 # selects default based on effort
+#geqo_generations = 0 # selects default based on effort
+#geqo_selection_bias = 2.0 # range 1.5-2.0
+
+# - Other Planner Options -
+
+#default_statistics_target = 100 # range 1-10000
+#constraint_exclusion = partition # on, off, or partition
+#cursor_tuple_fraction = 0.1 # range 0.0-1.0
+#from_collapse_limit = 8
+#join_collapse_limit = 8 # 1 disables collapsing of explicit
+ # JOIN clauses
+
+
+#------------------------------------------------------------------------------
+# ERROR REPORTING AND LOGGING
+#------------------------------------------------------------------------------
+
+# - Where to Log -
+
+#log_destination = 'stderr' # Valid values are combinations of
+ # stderr, csvlog, syslog and eventlog,
+ # depending on platform. csvlog
+ # requires logging_collector to be on.
+
+# This is used when logging to stderr:
+logging_collector = on # Enable capturing of stderr and csvlog
+ # into log files. Required to be on for
+ # csvlogs.
+ # (change requires restart)
+
+# These are only used if logging_collector is on:
+log_directory = 'pg_log' # directory where log files are written,
+ # can be absolute or relative to PGDATA
+log_filename = 'postgresql-%a.log' # log file name pattern,
+ # can include strftime() escapes
+log_truncate_on_rotation = on # If on, an existing log file of the
+ # same name as the new log file will be
+ # truncated rather than appended to.
+ # But such truncation only occurs on
+ # time-driven rotation, not on restarts
+ # or size-driven rotation. Default is
+ # off, meaning append to existing files
+ # in all cases.
+log_rotation_age = 1d # Automatic rotation of logfiles will
+ # happen after that time. 0 disables.
+log_rotation_size = 0 # Automatic rotation of logfiles will
+ # happen after that much log output.
+ # 0 disables.
+
+# These are relevant when logging to syslog:
+#syslog_facility = 'LOCAL0'
+#syslog_ident = 'postgres'
+
+#silent_mode = off # Run server silently.
+ # DO NOT USE without syslog or
+ # logging_collector
+ # (change requires restart)
+
+
+# - When to Log -
+
+#client_min_messages = notice # values in order of decreasing detail:
+ # debug5
+ # debug4
+ # debug3
+ # debug2
+ # debug1
+ # log
+ # notice
+ # warning
+ # error
+
+#log_min_messages = warning # values in order of decreasing detail:
+ # debug5
+ # debug4
+ # debug3
+ # debug2
+ # debug1
+ # info
+ # notice
+ # warning
+ # error
+ # log
+ # fatal
+ # panic
+
+#log_error_verbosity = default # terse, default, or verbose messages
+
+#log_min_error_statement = error # values in order of decreasing detail:
+ # debug5
+ # debug4
+ # debug3
+ # debug2
+ # debug1
+ # info
+ # notice
+ # warning
+ # error
+ # log
+ # fatal
+ # panic (effectively off)
+
+#log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements
+ # and their durations, > 0 logs only
+ # statements running at least this number
+ # of milliseconds
+
+
+# - What to Log -
+
+#debug_print_parse = off
+#debug_print_rewritten = off
+#debug_print_plan = off
+#debug_pretty_print = on
+#log_checkpoints = off
+#log_connections = off
+#log_disconnections = off
+#log_duration = off
+#log_hostname = off
+#log_line_prefix = '' # special values:
+ # %u = user name
+ # %d = database name
+ # %r = remote host and port
+ # %h = remote host
+ # %p = process ID
+ # %t = timestamp without milliseconds
+ # %m = timestamp with milliseconds
+ # %i = command tag
+ # %c = session ID
+ # %l = session line number
+ # %s = session start timestamp
+ # %v = virtual transaction ID
+ # %x = transaction ID (0 if none)
+ # %q = stop here in non-session
+ # processes
+ # %% = '%'
+ # e.g. '<%u%%%d> '
+#log_lock_waits = off # log lock waits >= deadlock_timeout
+#log_statement = 'none' # none, ddl, mod, all
+#log_temp_files = -1 # log temporary files equal or larger
+ # than the specified size in kilobytes;
+ # -1 disables, 0 logs all temp files
+#log_timezone = unknown # actually, defaults to TZ environment
+ # setting
+
+
+#------------------------------------------------------------------------------
+# RUNTIME STATISTICS
+#------------------------------------------------------------------------------
+
+# - Query/Index Statistics Collector -
+
+#track_activities = on
+#track_counts = on
+#track_functions = none # none, pl, all
+#track_activity_query_size = 1024
+#update_process_title = on
+#stats_temp_directory = 'pg_stat_tmp'
+
+
+# - Statistics Monitoring -
+
+#log_parser_stats = off
+#log_planner_stats = off
+#log_executor_stats = off
+#log_statement_stats = off
+
+
+#------------------------------------------------------------------------------
+# AUTOVACUUM PARAMETERS
+#------------------------------------------------------------------------------
+
+#autovacuum = on # Enable autovacuum subprocess? 'on'
+ # requires track_counts to also be on.
+#log_autovacuum_min_duration = -1 # -1 disables, 0 logs all actions and
+ # their durations, > 0 logs only
+ # actions running at least this number
+ # of milliseconds.
+#autovacuum_max_workers = 3 # max number of autovacuum subprocesses
+#autovacuum_naptime = 1min # time between autovacuum runs
+#autovacuum_vacuum_threshold = 50 # min number of row updates before
+ # vacuum
+#autovacuum_analyze_threshold = 50 # min number of row updates before
+ # analyze
+#autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum
+#autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze
+#autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum
+ # (change requires restart)
+#autovacuum_vacuum_cost_delay = 20ms # default vacuum cost delay for
+ # autovacuum, in milliseconds;
+ # -1 means use vacuum_cost_delay
+#autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for
+ # autovacuum, -1 means use
+ # vacuum_cost_limit
+
+
+#------------------------------------------------------------------------------
+# CLIENT CONNECTION DEFAULTS
+#------------------------------------------------------------------------------
+
+# - Statement Behavior -
+
+#search_path = '"$user",public' # schema names
+#default_tablespace = '' # a tablespace name, '' uses the default
+#temp_tablespaces = '' # a list of tablespace names, '' uses
+ # only default tablespace
+#check_function_bodies = on
+#default_transaction_isolation = 'read committed'
+#default_transaction_read_only = off
+#session_replication_role = 'origin'
+#statement_timeout = 0 # in milliseconds, 0 is disabled
+#vacuum_freeze_min_age = 50000000
+#vacuum_freeze_table_age = 150000000
+#xmlbinary = 'base64'
+#xmloption = 'content'
+
+# - Locale and Formatting -
+
+datestyle = 'iso, mdy'
+#intervalstyle = 'postgres'
+#timezone = unknown # actually, defaults to TZ environment
+ # setting
+#timezone_abbreviations = 'Default' # Select the set of available time zone
+ # abbreviations. Currently, there are
+ # Default
+ # Australia
+ # India
+ # You can create your own file in
+ # share/timezonesets/.
+#extra_float_digits = 0 # min -15, max 2
+#client_encoding = sql_ascii # actually, defaults to database
+ # encoding
+
+# These settings are initialized by initdb, but they can be changed.
+lc_messages = 'en_US.UTF-8' # locale for system error message
+ # strings
+lc_monetary = 'en_US.UTF-8' # locale for monetary formatting
+lc_numeric = 'en_US.UTF-8' # locale for number formatting
+lc_time = 'en_US.UTF-8' # locale for time formatting
+
+# default configuration for text search
+default_text_search_config = 'pg_catalog.english'
+
+# - Other Defaults -
+
+#dynamic_library_path = '$libdir'
+#local_preload_libraries = ''
+
+
+#------------------------------------------------------------------------------
+# LOCK MANAGEMENT
+#------------------------------------------------------------------------------
+
+#deadlock_timeout = 1s
+#max_locks_per_transaction = 64 # min 10
+ # (change requires restart)
+# Note: Each lock table slot uses ~270 bytes of shared memory, and there are
+# max_locks_per_transaction * (max_connections + max_prepared_transactions)
+# lock table slots.
+
+
+#------------------------------------------------------------------------------
+# VERSION/PLATFORM COMPATIBILITY
+#------------------------------------------------------------------------------
+
+# - Previous PostgreSQL Versions -
+
+#add_missing_from = off
+#array_nulls = on
+#backslash_quote = safe_encoding # on, off, or safe_encoding
+#default_with_oids = off
+#escape_string_warning = on
+#regex_flavor = advanced # advanced, extended, or basic
+#sql_inheritance = on
+#standard_conforming_strings = off
+#synchronize_seqscans = on
+
+# - Other Platforms and Clients -
+
+#transform_null_equals = off
+
+
+#------------------------------------------------------------------------------
+# CUSTOMIZED OPTIONS
+#------------------------------------------------------------------------------
+
+#custom_variable_classes = '' # list of custom variable class names
+
--- /dev/null
+++ b/aws/transitdata.sql
@@ -1,1 +1,13723 @@
-
+--
+-- PostgreSQL database dump
+--
+
+-- Dumped from database version 9.0.4
+-- Dumped by pg_dump version 9.0.4
+-- Started on 2011-10-11 23:16:11
+
+SET statement_timeout = 0;
+SET client_encoding = 'UTF8';
+SET standard_conforming_strings = off;
+SET check_function_bodies = false;
+SET client_min_messages = warning;
+SET escape_string_warning = off;
+
+--
+-- TOC entry 1168 (class 2612 OID 11574)
+-- Name: plpgsql; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: postgres
+--
+
+CREATE OR REPLACE PROCEDURAL LANGUAGE plpgsql;
+
+
+ALTER PROCEDURAL LANGUAGE plpgsql OWNER TO postgres;
+
+SET search_path = public, pg_catalog;
+
+--
+-- TOC entry 1088 (class 0 OID 0)
+-- Name: box2d; Type: SHELL TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE box2d;
+
+
+--
+-- TOC entry 15 (class 1255 OID 18351)
+-- Dependencies: 6 1088
+-- Name: box2d_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION box2d_in(cstring) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_in';
+
+
+ALTER FUNCTION public.box2d_in(cstring) OWNER TO postgres;
+
+--
+-- TOC entry 19 (class 1255 OID 18352)
+-- Dependencies: 6 1088
+-- Name: box2d_out(box2d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION box2d_out(box2d) RETURNS cstring
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_out';
+
+
+ALTER FUNCTION public.box2d_out(box2d) OWNER TO postgres;
+
+--
+-- TOC entry 1087 (class 1247 OID 18350)
+-- Dependencies: 6 15 19
+-- Name: box2d; Type: TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE box2d (
+ INTERNALLENGTH = 16,
+ INPUT = box2d_in,
+ OUTPUT = box2d_out,
+ ALIGNMENT = int4,
+ STORAGE = plain
+);
+
+
+ALTER TYPE public.box2d OWNER TO postgres;
+
+--
+-- TOC entry 1091 (class 0 OID 0)
+-- Name: box3d; Type: SHELL TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE box3d;
+
+
+--
+-- TOC entry 20 (class 1255 OID 18355)
+-- Dependencies: 6 1091
+-- Name: box3d_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION box3d_in(cstring) RETURNS box3d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_in';
+
+
+ALTER FUNCTION public.box3d_in(cstring) OWNER TO postgres;
+
+--
+-- TOC entry 21 (class 1255 OID 18356)
+-- Dependencies: 6 1091
+-- Name: box3d_out(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION box3d_out(box3d) RETURNS cstring
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_out';
+
+
+ALTER FUNCTION public.box3d_out(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 1090 (class 1247 OID 18354)
+-- Dependencies: 6 21 20
+-- Name: box3d; Type: TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE box3d (
+ INTERNALLENGTH = 48,
+ INPUT = box3d_in,
+ OUTPUT = box3d_out,
+ ALIGNMENT = double,
+ STORAGE = plain
+);
+
+
+ALTER TYPE public.box3d OWNER TO postgres;
+
+--
+-- TOC entry 1094 (class 0 OID 0)
+-- Name: box3d_extent; Type: SHELL TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE box3d_extent;
+
+
+--
+-- TOC entry 22 (class 1255 OID 18359)
+-- Dependencies: 6 1094
+-- Name: box3d_extent_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION box3d_extent_in(cstring) RETURNS box3d_extent
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_in';
+
+
+ALTER FUNCTION public.box3d_extent_in(cstring) OWNER TO postgres;
+
+--
+-- TOC entry 23 (class 1255 OID 18360)
+-- Dependencies: 6 1094
+-- Name: box3d_extent_out(box3d_extent); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION box3d_extent_out(box3d_extent) RETURNS cstring
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_extent_out';
+
+
+ALTER FUNCTION public.box3d_extent_out(box3d_extent) OWNER TO postgres;
+
+--
+-- TOC entry 1093 (class 1247 OID 18358)
+-- Dependencies: 6 23 22
+-- Name: box3d_extent; Type: TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE box3d_extent (
+ INTERNALLENGTH = 48,
+ INPUT = box3d_extent_in,
+ OUTPUT = box3d_extent_out,
+ ALIGNMENT = double,
+ STORAGE = plain
+);
+
+
+ALTER TYPE public.box3d_extent OWNER TO postgres;
+
+--
+-- TOC entry 1097 (class 0 OID 0)
+-- Name: chip; Type: SHELL TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE chip;
+
+
+--
+-- TOC entry 24 (class 1255 OID 18363)
+-- Dependencies: 6 1097
+-- Name: chip_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION chip_in(cstring) RETURNS chip
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_in';
+
+
+ALTER FUNCTION public.chip_in(cstring) OWNER TO postgres;
+
+--
+-- TOC entry 25 (class 1255 OID 18364)
+-- Dependencies: 6 1097
+-- Name: chip_out(chip); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION chip_out(chip) RETURNS cstring
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_out';
+
+
+ALTER FUNCTION public.chip_out(chip) OWNER TO postgres;
+
+--
+-- TOC entry 1096 (class 1247 OID 18362)
+-- Dependencies: 6 25 24
+-- Name: chip; Type: TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE chip (
+ INTERNALLENGTH = variable,
+ INPUT = chip_in,
+ OUTPUT = chip_out,
+ ALIGNMENT = double,
+ STORAGE = extended
+);
+
+
+ALTER TYPE public.chip OWNER TO postgres;
+
+--
+-- TOC entry 1100 (class 0 OID 0)
+-- Name: geography; Type: SHELL TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE geography;
+
+
+--
+-- TOC entry 26 (class 1255 OID 18367)
+-- Dependencies: 6
+-- Name: geography_analyze(internal); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_analyze(internal) RETURNS boolean
+ LANGUAGE c STRICT
+ AS '$libdir/postgis-1.5', 'geography_analyze';
+
+
+ALTER FUNCTION public.geography_analyze(internal) OWNER TO postgres;
+
+--
+-- TOC entry 27 (class 1255 OID 18368)
+-- Dependencies: 6 1100
+-- Name: geography_in(cstring, oid, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_in(cstring, oid, integer) RETURNS geography
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_in';
+
+
+ALTER FUNCTION public.geography_in(cstring, oid, integer) OWNER TO postgres;
+
+--
+-- TOC entry 28 (class 1255 OID 18369)
+-- Dependencies: 6 1100
+-- Name: geography_out(geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_out(geography) RETURNS cstring
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_out';
+
+
+ALTER FUNCTION public.geography_out(geography) OWNER TO postgres;
+
+--
+-- TOC entry 29 (class 1255 OID 18370)
+-- Dependencies: 6
+-- Name: geography_typmod_in(cstring[]); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_typmod_in(cstring[]) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_typmod_in';
+
+
+ALTER FUNCTION public.geography_typmod_in(cstring[]) OWNER TO postgres;
+
+--
+-- TOC entry 30 (class 1255 OID 18371)
+-- Dependencies: 6
+-- Name: geography_typmod_out(integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_typmod_out(integer) RETURNS cstring
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_typmod_out';
+
+
+ALTER FUNCTION public.geography_typmod_out(integer) OWNER TO postgres;
+
+--
+-- TOC entry 1099 (class 1247 OID 18366)
+-- Dependencies: 26 6 27 28 29 30
+-- Name: geography; Type: TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE geography (
+ INTERNALLENGTH = variable,
+ INPUT = geography_in,
+ OUTPUT = geography_out,
+ TYPMOD_IN = geography_typmod_in,
+ TYPMOD_OUT = geography_typmod_out,
+ ANALYZE = geography_analyze,
+ ALIGNMENT = double,
+ STORAGE = main
+);
+
+
+ALTER TYPE public.geography OWNER TO postgres;
+
+--
+-- TOC entry 1103 (class 0 OID 0)
+-- Name: geometry; Type: SHELL TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE geometry;
+
+
+--
+-- TOC entry 31 (class 1255 OID 18374)
+-- Dependencies: 6
+-- Name: geometry_analyze(internal); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_analyze(internal) RETURNS boolean
+ LANGUAGE c STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_analyze';
+
+
+ALTER FUNCTION public.geometry_analyze(internal) OWNER TO postgres;
+
+--
+-- TOC entry 32 (class 1255 OID 18375)
+-- Dependencies: 6 1103
+-- Name: geometry_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_in(cstring) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_in';
+
+
+ALTER FUNCTION public.geometry_in(cstring) OWNER TO postgres;
+
+--
+-- TOC entry 33 (class 1255 OID 18376)
+-- Dependencies: 6 1103
+-- Name: geometry_out(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_out(geometry) RETURNS cstring
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_out';
+
+
+ALTER FUNCTION public.geometry_out(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 34 (class 1255 OID 18377)
+-- Dependencies: 6 1103
+-- Name: geometry_recv(internal); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_recv(internal) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_recv';
+
+
+ALTER FUNCTION public.geometry_recv(internal) OWNER TO postgres;
+
+--
+-- TOC entry 35 (class 1255 OID 18378)
+-- Dependencies: 6 1103
+-- Name: geometry_send(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_send(geometry) RETURNS bytea
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_send';
+
+
+ALTER FUNCTION public.geometry_send(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1102 (class 1247 OID 18373)
+-- Dependencies: 33 34 35 31 6 32
+-- Name: geometry; Type: TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE geometry (
+ INTERNALLENGTH = variable,
+ INPUT = geometry_in,
+ OUTPUT = geometry_out,
+ RECEIVE = geometry_recv,
+ SEND = geometry_send,
+ ANALYZE = geometry_analyze,
+ DELIMITER = ':',
+ ALIGNMENT = int4,
+ STORAGE = main
+);
+
+
+ALTER TYPE public.geometry OWNER TO postgres;
+
+--
+-- TOC entry 1105 (class 1247 OID 18382)
+-- Dependencies: 6 2408
+-- Name: geometry_dump; Type: TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE geometry_dump AS (
+ path integer[],
+ geom geometry
+);
+
+
+ALTER TYPE public.geometry_dump OWNER TO postgres;
+
+--
+-- TOC entry 1108 (class 0 OID 0)
+-- Name: gidx; Type: SHELL TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE gidx;
+
+
+--
+-- TOC entry 36 (class 1255 OID 18384)
+-- Dependencies: 6 1108
+-- Name: gidx_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION gidx_in(cstring) RETURNS gidx
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'gidx_in';
+
+
+ALTER FUNCTION public.gidx_in(cstring) OWNER TO postgres;
+
+--
+-- TOC entry 37 (class 1255 OID 18385)
+-- Dependencies: 6 1108
+-- Name: gidx_out(gidx); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION gidx_out(gidx) RETURNS cstring
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'gidx_out';
+
+
+ALTER FUNCTION public.gidx_out(gidx) OWNER TO postgres;
+
+--
+-- TOC entry 1107 (class 1247 OID 18383)
+-- Dependencies: 37 36 6
+-- Name: gidx; Type: TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE gidx (
+ INTERNALLENGTH = variable,
+ INPUT = gidx_in,
+ OUTPUT = gidx_out,
+ ALIGNMENT = double,
+ STORAGE = plain
+);
+
+
+ALTER TYPE public.gidx OWNER TO postgres;
+
+--
+-- TOC entry 1111 (class 0 OID 0)
+-- Name: pgis_abs; Type: SHELL TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE pgis_abs;
+
+
+--
+-- TOC entry 38 (class 1255 OID 18388)
+-- Dependencies: 6 1111
+-- Name: pgis_abs_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION pgis_abs_in(cstring) RETURNS pgis_abs
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'pgis_abs_in';
+
+
+ALTER FUNCTION public.pgis_abs_in(cstring) OWNER TO postgres;
+
+--
+-- TOC entry 39 (class 1255 OID 18389)
+-- Dependencies: 6 1111
+-- Name: pgis_abs_out(pgis_abs); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION pgis_abs_out(pgis_abs) RETURNS cstring
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'pgis_abs_out';
+
+
+ALTER FUNCTION public.pgis_abs_out(pgis_abs) OWNER TO postgres;
+
+--
+-- TOC entry 1110 (class 1247 OID 18387)
+-- Dependencies: 38 6 39
+-- Name: pgis_abs; Type: TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE pgis_abs (
+ INTERNALLENGTH = 8,
+ INPUT = pgis_abs_in,
+ OUTPUT = pgis_abs_out,
+ ALIGNMENT = double,
+ STORAGE = plain
+);
+
+
+ALTER TYPE public.pgis_abs OWNER TO postgres;
+
+--
+-- TOC entry 1114 (class 0 OID 0)
+-- Name: spheroid; Type: SHELL TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE spheroid;
+
+
+--
+-- TOC entry 40 (class 1255 OID 18392)
+-- Dependencies: 6 1114
+-- Name: spheroid_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION spheroid_in(cstring) RETURNS spheroid
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'ellipsoid_in';
+
+
+ALTER FUNCTION public.spheroid_in(cstring) OWNER TO postgres;
+
+--
+-- TOC entry 41 (class 1255 OID 18393)
+-- Dependencies: 6 1114
+-- Name: spheroid_out(spheroid); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION spheroid_out(spheroid) RETURNS cstring
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'ellipsoid_out';
+
+
+ALTER FUNCTION public.spheroid_out(spheroid) OWNER TO postgres;
+
+--
+-- TOC entry 1113 (class 1247 OID 18391)
+-- Dependencies: 41 6 40
+-- Name: spheroid; Type: TYPE; Schema: public; Owner: postgres
+--
+
+CREATE TYPE spheroid (
+ INTERNALLENGTH = 65,
+ INPUT = spheroid_in,
+ OUTPUT = spheroid_out,
+ ALIGNMENT = double,
+ STORAGE = plain
+);
+
+
+ALTER TYPE public.spheroid OWNER TO postgres;
+
+--
+-- TOC entry 42 (class 1255 OID 18395)
+-- Dependencies: 6 1102
+-- Name: _st_asgeojson(integer, geometry, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_asgeojson(integer, geometry, integer, integer) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_asGeoJson';
+
+
+ALTER FUNCTION public._st_asgeojson(integer, geometry, integer, integer) OWNER TO postgres;
+
+--
+-- TOC entry 43 (class 1255 OID 18396)
+-- Dependencies: 6 1099
+-- Name: _st_asgeojson(integer, geography, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_asgeojson(integer, geography, integer, integer) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_as_geojson';
+
+
+ALTER FUNCTION public._st_asgeojson(integer, geography, integer, integer) OWNER TO postgres;
+
+--
+-- TOC entry 44 (class 1255 OID 18397)
+-- Dependencies: 6 1102
+-- Name: _st_asgml(integer, geometry, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_asgml(integer, geometry, integer, integer) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_asGML';
+
+
+ALTER FUNCTION public._st_asgml(integer, geometry, integer, integer) OWNER TO postgres;
+
+--
+-- TOC entry 45 (class 1255 OID 18398)
+-- Dependencies: 6 1099
+-- Name: _st_asgml(integer, geography, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_asgml(integer, geography, integer, integer) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_as_gml';
+
+
+ALTER FUNCTION public._st_asgml(integer, geography, integer, integer) OWNER TO postgres;
+
+--
+-- TOC entry 46 (class 1255 OID 18399)
+-- Dependencies: 1102 6
+-- Name: _st_askml(integer, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_askml(integer, geometry, integer) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_asKML';
+
+
+ALTER FUNCTION public._st_askml(integer, geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 47 (class 1255 OID 18400)
+-- Dependencies: 6 1099
+-- Name: _st_askml(integer, geography, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_askml(integer, geography, integer) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_as_kml';
+
+
+ALTER FUNCTION public._st_askml(integer, geography, integer) OWNER TO postgres;
+
+--
+-- TOC entry 49 (class 1255 OID 18402)
+-- Dependencies: 1099 6
+-- Name: _st_bestsrid(geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_bestsrid(geography) RETURNS integer
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_BestSRID($1,$1)$_$;
+
+
+ALTER FUNCTION public._st_bestsrid(geography) OWNER TO postgres;
+
+--
+-- TOC entry 48 (class 1255 OID 18401)
+-- Dependencies: 6 1099 1099
+-- Name: _st_bestsrid(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_bestsrid(geography, geography) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_bestsrid';
+
+
+ALTER FUNCTION public._st_bestsrid(geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 50 (class 1255 OID 18403)
+-- Dependencies: 1102 6 1102
+-- Name: _st_buffer(geometry, double precision, cstring); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_buffer(geometry, double precision, cstring) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'buffer';
+
+
+ALTER FUNCTION public._st_buffer(geometry, double precision, cstring) OWNER TO postgres;
+
+--
+-- TOC entry 51 (class 1255 OID 18404)
+-- Dependencies: 6 1102 1102
+-- Name: _st_contains(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_contains(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'contains';
+
+
+ALTER FUNCTION public._st_contains(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 52 (class 1255 OID 18405)
+-- Dependencies: 6 1102 1102
+-- Name: _st_containsproperly(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_containsproperly(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'containsproperly';
+
+
+ALTER FUNCTION public._st_containsproperly(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 53 (class 1255 OID 18406)
+-- Dependencies: 6 1102 1102
+-- Name: _st_coveredby(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_coveredby(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'coveredby';
+
+
+ALTER FUNCTION public._st_coveredby(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 54 (class 1255 OID 18407)
+-- Dependencies: 1102 1102 6
+-- Name: _st_covers(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_covers(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'covers';
+
+
+ALTER FUNCTION public._st_covers(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 55 (class 1255 OID 18408)
+-- Dependencies: 1099 1099 6
+-- Name: _st_covers(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_covers(geography, geography) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'geography_covers';
+
+
+ALTER FUNCTION public._st_covers(geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 56 (class 1255 OID 18409)
+-- Dependencies: 1102 1102 6
+-- Name: _st_crosses(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_crosses(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'crosses';
+
+
+ALTER FUNCTION public._st_crosses(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 57 (class 1255 OID 18410)
+-- Dependencies: 1102 6 1102
+-- Name: _st_dfullywithin(geometry, geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_dfullywithin(geometry, geometry, double precision) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_dfullywithin';
+
+
+ALTER FUNCTION public._st_dfullywithin(geometry, geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 58 (class 1255 OID 18411)
+-- Dependencies: 1099 6 1099
+-- Name: _st_distance(geography, geography, double precision, boolean); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_distance(geography, geography, double precision, boolean) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'geography_distance';
+
+
+ALTER FUNCTION public._st_distance(geography, geography, double precision, boolean) OWNER TO postgres;
+
+--
+-- TOC entry 59 (class 1255 OID 18412)
+-- Dependencies: 6 1168 1105 1102
+-- Name: _st_dumppoints(geometry, integer[]); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_dumppoints(the_geom geometry, cur_path integer[]) RETURNS SETOF geometry_dump
+ LANGUAGE plpgsql
+ AS $$
+DECLARE
+ tmp geometry_dump;
+ tmp2 geometry_dump;
+ nb_points integer;
+ nb_geom integer;
+ i integer;
+ j integer;
+ g geometry;
+
+BEGIN
+
+ RAISE DEBUG '%,%', cur_path, ST_GeometryType(the_geom);
+
+ -- Special case (MULTI* OR GEOMETRYCOLLECTION) : iterate and return the DumpPoints of the geometries
+ SELECT ST_NumGeometries(the_geom) INTO nb_geom;
+
+ IF (nb_geom IS NOT NULL) THEN
+
+ i = 1;
+ FOR tmp2 IN SELECT (ST_Dump(the_geom)).* LOOP
+
+ FOR tmp IN SELECT * FROM _ST_DumpPoints(tmp2.geom, cur_path || tmp2.path) LOOP
+ RETURN NEXT tmp;
+ END LOOP;
+ i = i + 1;
+
+ END LOOP;
+
+ RETURN;
+ END IF;
+
+
+ -- Special case (POLYGON) : return the points of the rings of a polygon
+ IF (ST_GeometryType(the_geom) = 'ST_Polygon') THEN
+
+ FOR tmp IN SELECT * FROM _ST_DumpPoints(ST_ExteriorRing(the_geom), cur_path || ARRAY[1]) LOOP
+ RETURN NEXT tmp;
+ END LOOP;
+
+ j := ST_NumInteriorRings(the_geom);
+ FOR i IN 1..j LOOP
+ FOR tmp IN SELECT * FROM _ST_DumpPoints(ST_InteriorRingN(the_geom, i), cur_path || ARRAY[i+1]) LOOP
+ RETURN NEXT tmp;
+ END LOOP;
+ END LOOP;
+
+ RETURN;
+ END IF;
+
+
+ -- Special case (POINT) : return the point
+ IF (ST_GeometryType(the_geom) = 'ST_Point') THEN
+
+ tmp.path = cur_path || ARRAY[1];
+ tmp.geom = the_geom;
+
+ RETURN NEXT tmp;
+ RETURN;
+
+ END IF;
+
+
+ -- Use ST_NumPoints rather than ST_NPoints to have a NULL value if the_geom isn't
+ -- a LINESTRING or CIRCULARSTRING.
+ SELECT ST_NumPoints(the_geom) INTO nb_points;
+
+ -- This should never happen
+ IF (nb_points IS NULL) THEN
+ RAISE EXCEPTION 'Unexpected error while dumping geometry %', ST_AsText(the_geom);
+ END IF;
+
+ FOR i IN 1..nb_points LOOP
+ tmp.path = cur_path || ARRAY[i];
+ tmp.geom := ST_PointN(the_geom, i);
+ RETURN NEXT tmp;
+ END LOOP;
+
+END
+$$;
+
+
+ALTER FUNCTION public._st_dumppoints(the_geom geometry, cur_path integer[]) OWNER TO postgres;
+
+--
+-- TOC entry 60 (class 1255 OID 18413)
+-- Dependencies: 1102 6 1102
+-- Name: _st_dwithin(geometry, geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_dwithin(geometry, geometry, double precision) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'LWGEOM_dwithin';
+
+
+ALTER FUNCTION public._st_dwithin(geometry, geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 61 (class 1255 OID 18414)
+-- Dependencies: 1099 6 1099
+-- Name: _st_dwithin(geography, geography, double precision, boolean); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_dwithin(geography, geography, double precision, boolean) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'geography_dwithin';
+
+
+ALTER FUNCTION public._st_dwithin(geography, geography, double precision, boolean) OWNER TO postgres;
+
+--
+-- TOC entry 62 (class 1255 OID 18415)
+-- Dependencies: 1102 6 1102
+-- Name: _st_equals(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_equals(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'geomequals';
+
+
+ALTER FUNCTION public._st_equals(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 63 (class 1255 OID 18416)
+-- Dependencies: 1099 1099 6
+-- Name: _st_expand(geography, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_expand(geography, double precision) RETURNS geography
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_expand';
+
+
+ALTER FUNCTION public._st_expand(geography, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 64 (class 1255 OID 18417)
+-- Dependencies: 6 1102 1102
+-- Name: _st_intersects(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_intersects(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'intersects';
+
+
+ALTER FUNCTION public._st_intersects(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 65 (class 1255 OID 18418)
+-- Dependencies: 6 1102 1102
+-- Name: _st_linecrossingdirection(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_linecrossingdirection(geometry, geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'ST_LineCrossingDirection';
+
+
+ALTER FUNCTION public._st_linecrossingdirection(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 66 (class 1255 OID 18419)
+-- Dependencies: 1102 1102 1102 6
+-- Name: _st_longestline(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_longestline(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_longestline2d';
+
+
+ALTER FUNCTION public._st_longestline(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 67 (class 1255 OID 18420)
+-- Dependencies: 6 1102 1102
+-- Name: _st_maxdistance(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_maxdistance(geometry, geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_maxdistance2d_linestring';
+
+
+ALTER FUNCTION public._st_maxdistance(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 68 (class 1255 OID 18421)
+-- Dependencies: 6 1102 1102
+-- Name: _st_orderingequals(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_orderingequals(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'LWGEOM_same';
+
+
+ALTER FUNCTION public._st_orderingequals(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 69 (class 1255 OID 18422)
+-- Dependencies: 1102 1102 6
+-- Name: _st_overlaps(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_overlaps(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'overlaps';
+
+
+ALTER FUNCTION public._st_overlaps(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 70 (class 1255 OID 18423)
+-- Dependencies: 6 1099 1099
+-- Name: _st_pointoutside(geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_pointoutside(geography) RETURNS geography
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_point_outside';
+
+
+ALTER FUNCTION public._st_pointoutside(geography) OWNER TO postgres;
+
+--
+-- TOC entry 71 (class 1255 OID 18424)
+-- Dependencies: 6 1102 1102
+-- Name: _st_touches(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_touches(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'touches';
+
+
+ALTER FUNCTION public._st_touches(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 72 (class 1255 OID 18425)
+-- Dependencies: 6 1102 1102
+-- Name: _st_within(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION _st_within(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'within';
+
+
+ALTER FUNCTION public._st_within(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 73 (class 1255 OID 18426)
+-- Dependencies: 6 1168
+-- Name: addauth(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION addauth(text) RETURNS boolean
+ LANGUAGE plpgsql
+ AS $_$
+DECLARE
+ lockid alias for $1;
+ okay boolean;
+ myrec record;
+BEGIN
+ -- check to see if table exists
+ -- if not, CREATE TEMP TABLE mylock (transid xid, lockcode text)
+ okay := 'f';
+ FOR myrec IN SELECT * FROM pg_class WHERE relname = 'temp_lock_have_table' LOOP
+ okay := 't';
+ END LOOP;
+ IF (okay <> 't') THEN
+ CREATE TEMP TABLE temp_lock_have_table (transid xid, lockcode text);
+ -- this will only work from pgsql7.4 up
+ -- ON COMMIT DELETE ROWS;
+ END IF;
+
+ -- INSERT INTO mylock VALUES ( $1)
+-- EXECUTE 'INSERT INTO temp_lock_have_table VALUES ( '||
+-- quote_literal(getTransactionID()) || ',' ||
+-- quote_literal(lockid) ||')';
+
+ INSERT INTO temp_lock_have_table VALUES (getTransactionID(), lockid);
+
+ RETURN true::boolean;
+END;
+$_$;
+
+
+ALTER FUNCTION public.addauth(text) OWNER TO postgres;
+
+--
+-- TOC entry 74 (class 1255 OID 18427)
+-- Dependencies: 6 1102 1102
+-- Name: addbbox(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION addbbox(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_addBBOX';
+
+
+ALTER FUNCTION public.addbbox(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 79 (class 1255 OID 18430)
+-- Dependencies: 6 1168
+-- Name: addgeometrycolumn(character varying, character varying, integer, character varying, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION addgeometrycolumn(character varying, character varying, integer, character varying, integer) RETURNS text
+ LANGUAGE plpgsql STRICT
+ AS $_$
+DECLARE
+ ret text;
+BEGIN
+ SELECT AddGeometryColumn('','',$1,$2,$3,$4,$5) into ret;
+ RETURN ret;
+END;
+$_$;
+
+
+ALTER FUNCTION public.addgeometrycolumn(character varying, character varying, integer, character varying, integer) OWNER TO postgres;
+
+--
+-- TOC entry 78 (class 1255 OID 18429)
+-- Dependencies: 6 1168
+-- Name: addgeometrycolumn(character varying, character varying, character varying, integer, character varying, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION addgeometrycolumn(character varying, character varying, character varying, integer, character varying, integer) RETURNS text
+ LANGUAGE plpgsql STABLE STRICT
+ AS $_$
+DECLARE
+ ret text;
+BEGIN
+ SELECT AddGeometryColumn('',$1,$2,$3,$4,$5,$6) into ret;
+ RETURN ret;
+END;
+$_$;
+
+
+ALTER FUNCTION public.addgeometrycolumn(character varying, character varying, character varying, integer, character varying, integer) OWNER TO postgres;
+
+--
+-- TOC entry 77 (class 1255 OID 18428)
+-- Dependencies: 6 1168
+-- Name: addgeometrycolumn(character varying, character varying, character varying, character varying, integer, character varying, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION addgeometrycolumn(character varying, character varying, character varying, character varying, integer, character varying, integer) RETURNS text
+ LANGUAGE plpgsql STRICT
+ AS $_$
+DECLARE
+ catalog_name alias for $1;
+ schema_name alias for $2;
+ table_name alias for $3;
+ column_name alias for $4;
+ new_srid alias for $5;
+ new_type alias for $6;
+ new_dim alias for $7;
+ rec RECORD;
+ sr varchar;
+ real_schema name;
+ sql text;
+
+BEGIN
+
+ -- Verify geometry type
+ IF ( NOT ( (new_type = 'GEOMETRY') OR
+ (new_type = 'GEOMETRYCOLLECTION') OR
+ (new_type = 'POINT') OR
+ (new_type = 'MULTIPOINT') OR
+ (new_type = 'POLYGON') OR
+ (new_type = 'MULTIPOLYGON') OR
+ (new_type = 'LINESTRING') OR
+ (new_type = 'MULTILINESTRING') OR
+ (new_type = 'GEOMETRYCOLLECTIONM') OR
+ (new_type = 'POINTM') OR
+ (new_type = 'MULTIPOINTM') OR
+ (new_type = 'POLYGONM') OR
+ (new_type = 'MULTIPOLYGONM') OR
+ (new_type = 'LINESTRINGM') OR
+ (new_type = 'MULTILINESTRINGM') OR
+ (new_type = 'CIRCULARSTRING') OR
+ (new_type = 'CIRCULARSTRINGM') OR
+ (new_type = 'COMPOUNDCURVE') OR
+ (new_type = 'COMPOUNDCURVEM') OR
+ (new_type = 'CURVEPOLYGON') OR
+ (new_type = 'CURVEPOLYGONM') OR
+ (new_type = 'MULTICURVE') OR
+ (new_type = 'MULTICURVEM') OR
+ (new_type = 'MULTISURFACE') OR
+ (new_type = 'MULTISURFACEM')) )
+ THEN
+ RAISE EXCEPTION 'Invalid type name - valid ones are:
+ POINT, MULTIPOINT,
+ LINESTRING, MULTILINESTRING,
+ POLYGON, MULTIPOLYGON,
+ CIRCULARSTRING, COMPOUNDCURVE, MULTICURVE,
+ CURVEPOLYGON, MULTISURFACE,
+ GEOMETRY, GEOMETRYCOLLECTION,
+ POINTM, MULTIPOINTM,
+ LINESTRINGM, MULTILINESTRINGM,
+ POLYGONM, MULTIPOLYGONM,
+ CIRCULARSTRINGM, COMPOUNDCURVEM, MULTICURVEM
+ CURVEPOLYGONM, MULTISURFACEM,
+ or GEOMETRYCOLLECTIONM';
+ RETURN 'fail';
+ END IF;
+
+
+ -- Verify dimension
+ IF ( (new_dim >4) OR (new_dim <0) ) THEN
+ RAISE EXCEPTION 'invalid dimension';
+ RETURN 'fail';
+ END IF;
+
+ IF ( (new_type LIKE '%M') AND (new_dim!=3) ) THEN
+ RAISE EXCEPTION 'TypeM needs 3 dimensions';
+ RETURN 'fail';
+ END IF;
+
+
+ -- Verify SRID
+ IF ( new_srid != -1 ) THEN
+ SELECT SRID INTO sr FROM spatial_ref_sys WHERE SRID = new_srid;
+ IF NOT FOUND THEN
+ RAISE EXCEPTION 'AddGeometryColumns() - invalid SRID';
+ RETURN 'fail';
+ END IF;
+ END IF;
+
+
+ -- Verify schema
+ IF ( schema_name IS NOT NULL AND schema_name != '' ) THEN
+ sql := 'SELECT nspname FROM pg_namespace ' ||
+ 'WHERE text(nspname) = ' || quote_literal(schema_name) ||
+ 'LIMIT 1';
+ RAISE DEBUG '%', sql;
+ EXECUTE sql INTO real_schema;
+
+ IF ( real_schema IS NULL ) THEN
+ RAISE EXCEPTION 'Schema % is not a valid schemaname', quote_literal(schema_name);
+ RETURN 'fail';
+ END IF;
+ END IF;
+
+ IF ( real_schema IS NULL ) THEN
+ RAISE DEBUG 'Detecting schema';
+ sql := 'SELECT n.nspname AS schemaname ' ||
+ 'FROM pg_catalog.pg_class c ' ||
+ 'JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace ' ||
+ 'WHERE c.relkind = ' || quote_literal('r') ||
+ ' AND n.nspname NOT IN (' || quote_literal('pg_catalog') || ', ' || quote_literal('pg_toast') || ')' ||
+ ' AND pg_catalog.pg_table_is_visible(c.oid)' ||
+ ' AND c.relname = ' || quote_literal(table_name);
+ RAISE DEBUG '%', sql;
+ EXECUTE sql INTO real_schema;
+
+ IF ( real_schema IS NULL ) THEN
+ RAISE EXCEPTION 'Table % does not occur in the search_path', quote_literal(table_name);
+ RETURN 'fail';
+ END IF;
+ END IF;
+
+
+ -- Add geometry column to table
+ sql := 'ALTER TABLE ' ||
+ quote_ident(real_schema) || '.' || quote_ident(table_name)
+ || ' ADD COLUMN ' || quote_ident(column_name) ||
+ ' geometry ';
+ RAISE DEBUG '%', sql;
+ EXECUTE sql;
+
+
+ -- Delete stale record in geometry_columns (if any)
+ sql := 'DELETE FROM geometry_columns WHERE
+ f_table_catalog = ' || quote_literal('') ||
+ ' AND f_table_schema = ' ||
+ quote_literal(real_schema) ||
+ ' AND f_table_name = ' || quote_literal(table_name) ||
+ ' AND f_geometry_column = ' || quote_literal(column_name);
+ RAISE DEBUG '%', sql;
+ EXECUTE sql;
+
+
+ -- Add record in geometry_columns
+ sql := 'INSERT INTO geometry_columns (f_table_catalog,f_table_schema,f_table_name,' ||
+ 'f_geometry_column,coord_dimension,srid,type)' ||
+ ' VALUES (' ||
+ quote_literal('') || ',' ||
+ quote_literal(real_schema) || ',' ||
+ quote_literal(table_name) || ',' ||
+ quote_literal(column_name) || ',' ||
+ new_dim::text || ',' ||
+ new_srid::text || ',' ||
+ quote_literal(new_type) || ')';
+ RAISE DEBUG '%', sql;
+ EXECUTE sql;
+
+
+ -- Add table CHECKs
+ sql := 'ALTER TABLE ' ||
+ quote_ident(real_schema) || '.' || quote_ident(table_name)
+ || ' ADD CONSTRAINT '
+ || quote_ident('enforce_srid_' || column_name)
+ || ' CHECK (ST_SRID(' || quote_ident(column_name) ||
+ ') = ' || new_srid::text || ')' ;
+ RAISE DEBUG '%', sql;
+ EXECUTE sql;
+
+ sql := 'ALTER TABLE ' ||
+ quote_ident(real_schema) || '.' || quote_ident(table_name)
+ || ' ADD CONSTRAINT '
+ || quote_ident('enforce_dims_' || column_name)
+ || ' CHECK (ST_NDims(' || quote_ident(column_name) ||
+ ') = ' || new_dim::text || ')' ;
+ RAISE DEBUG '%', sql;
+ EXECUTE sql;
+
+ IF ( NOT (new_type = 'GEOMETRY')) THEN
+ sql := 'ALTER TABLE ' ||
+ quote_ident(real_schema) || '.' || quote_ident(table_name) || ' ADD CONSTRAINT ' ||
+ quote_ident('enforce_geotype_' || column_name) ||
+ ' CHECK (GeometryType(' ||
+ quote_ident(column_name) || ')=' ||
+ quote_literal(new_type) || ' OR (' ||
+ quote_ident(column_name) || ') is null)';
+ RAISE DEBUG '%', sql;
+ EXECUTE sql;
+ END IF;
+
+ RETURN
+ real_schema || '.' ||
+ table_name || '.' || column_name ||
+ ' SRID:' || new_srid::text ||
+ ' TYPE:' || new_type ||
+ ' DIMS:' || new_dim::text || ' ';
+END;
+$_$;
+
+
+ALTER FUNCTION public.addgeometrycolumn(character varying, character varying, character varying, character varying, integer, character varying, integer) OWNER TO postgres;
+
+--
+-- TOC entry 80 (class 1255 OID 18431)
+-- Dependencies: 6 1102 1102 1102
+-- Name: addpoint(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION addpoint(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_addpoint';
+
+
+ALTER FUNCTION public.addpoint(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 81 (class 1255 OID 18432)
+-- Dependencies: 6 1102 1102 1102
+-- Name: addpoint(geometry, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION addpoint(geometry, geometry, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_addpoint';
+
+
+ALTER FUNCTION public.addpoint(geometry, geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 83 (class 1255 OID 18434)
+-- Dependencies: 1102 6 1102
+-- Name: affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT affine($1, $2, $3, 0, $4, $5, 0, 0, 0, 1, $6, $7, 0)$_$;
+
+
+ALTER FUNCTION public.affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 82 (class 1255 OID 18433)
+-- Dependencies: 1102 1102 6
+-- Name: affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_affine';
+
+
+ALTER FUNCTION public.affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 84 (class 1255 OID 18435)
+-- Dependencies: 1102 6
+-- Name: area(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION area(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_area_polygon';
+
+
+ALTER FUNCTION public.area(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 85 (class 1255 OID 18436)
+-- Dependencies: 1102 6
+-- Name: area2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION area2d(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_area_polygon';
+
+
+ALTER FUNCTION public.area2d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 86 (class 1255 OID 18437)
+-- Dependencies: 1102 6
+-- Name: asbinary(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION asbinary(geometry) RETURNS bytea
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_asBinary';
+
+
+ALTER FUNCTION public.asbinary(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 87 (class 1255 OID 18438)
+-- Dependencies: 1102 6
+-- Name: asbinary(geometry, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION asbinary(geometry, text) RETURNS bytea
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_asBinary';
+
+
+ALTER FUNCTION public.asbinary(geometry, text) OWNER TO postgres;
+
+--
+-- TOC entry 88 (class 1255 OID 18439)
+-- Dependencies: 6 1102
+-- Name: asewkb(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION asewkb(geometry) RETURNS bytea
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'WKBFromLWGEOM';
+
+
+ALTER FUNCTION public.asewkb(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 89 (class 1255 OID 18440)
+-- Dependencies: 1102 6
+-- Name: asewkb(geometry, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION asewkb(geometry, text) RETURNS bytea
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'WKBFromLWGEOM';
+
+
+ALTER FUNCTION public.asewkb(geometry, text) OWNER TO postgres;
+
+--
+-- TOC entry 90 (class 1255 OID 18441)
+-- Dependencies: 1102 6
+-- Name: asewkt(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION asewkt(geometry) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_asEWKT';
+
+
+ALTER FUNCTION public.asewkt(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 92 (class 1255 OID 18443)
+-- Dependencies: 6 1102
+-- Name: asgml(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION asgml(geometry) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGML(2, $1, 15, 0)$_$;
+
+
+ALTER FUNCTION public.asgml(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 91 (class 1255 OID 18442)
+-- Dependencies: 1102 6
+-- Name: asgml(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION asgml(geometry, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGML(2, $1, $2, 0)$_$;
+
+
+ALTER FUNCTION public.asgml(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 93 (class 1255 OID 18444)
+-- Dependencies: 6 1102
+-- Name: ashexewkb(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION ashexewkb(geometry) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_asHEXEWKB';
+
+
+ALTER FUNCTION public.ashexewkb(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 94 (class 1255 OID 18445)
+-- Dependencies: 1102 6
+-- Name: ashexewkb(geometry, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION ashexewkb(geometry, text) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_asHEXEWKB';
+
+
+ALTER FUNCTION public.ashexewkb(geometry, text) OWNER TO postgres;
+
+--
+-- TOC entry 96 (class 1255 OID 18447)
+-- Dependencies: 1102 6
+-- Name: askml(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION askml(geometry) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsKML(2, transform($1,4326), 15)$_$;
+
+
+ALTER FUNCTION public.askml(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 95 (class 1255 OID 18446)
+-- Dependencies: 1102 6
+-- Name: askml(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION askml(geometry, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsKML(2, transform($1,4326), $2)$_$;
+
+
+ALTER FUNCTION public.askml(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 97 (class 1255 OID 18448)
+-- Dependencies: 6 1102
+-- Name: askml(integer, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION askml(integer, geometry, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsKML($1, transform($2,4326), $3)$_$;
+
+
+ALTER FUNCTION public.askml(integer, geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 100 (class 1255 OID 18451)
+-- Dependencies: 6 1102
+-- Name: assvg(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION assvg(geometry) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'assvg_geometry';
+
+
+ALTER FUNCTION public.assvg(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 99 (class 1255 OID 18450)
+-- Dependencies: 6 1102
+-- Name: assvg(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION assvg(geometry, integer) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'assvg_geometry';
+
+
+ALTER FUNCTION public.assvg(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 98 (class 1255 OID 18449)
+-- Dependencies: 6 1102
+-- Name: assvg(geometry, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION assvg(geometry, integer, integer) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'assvg_geometry';
+
+
+ALTER FUNCTION public.assvg(geometry, integer, integer) OWNER TO postgres;
+
+--
+-- TOC entry 101 (class 1255 OID 18452)
+-- Dependencies: 1102 6
+-- Name: astext(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION astext(geometry) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_asText';
+
+
+ALTER FUNCTION public.astext(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 102 (class 1255 OID 18453)
+-- Dependencies: 6 1102 1102
+-- Name: azimuth(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION azimuth(geometry, geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_azimuth';
+
+
+ALTER FUNCTION public.azimuth(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 103 (class 1255 OID 18454)
+-- Dependencies: 1102 1168 6
+-- Name: bdmpolyfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION bdmpolyfromtext(text, integer) RETURNS geometry
+ LANGUAGE plpgsql IMMUTABLE STRICT
+ AS $_$
+DECLARE
+ geomtext alias for $1;
+ srid alias for $2;
+ mline geometry;
+ geom geometry;
+BEGIN
+ mline := MultiLineStringFromText(geomtext, srid);
+
+ IF mline IS NULL
+ THEN
+ RAISE EXCEPTION 'Input is not a MultiLinestring';
+ END IF;
+
+ geom := multi(BuildArea(mline));
+
+ RETURN geom;
+END;
+$_$;
+
+
+ALTER FUNCTION public.bdmpolyfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 75 (class 1255 OID 18455)
+-- Dependencies: 6 1168 1102
+-- Name: bdpolyfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION bdpolyfromtext(text, integer) RETURNS geometry
+ LANGUAGE plpgsql IMMUTABLE STRICT
+ AS $_$
+DECLARE
+ geomtext alias for $1;
+ srid alias for $2;
+ mline geometry;
+ geom geometry;
+BEGIN
+ mline := MultiLineStringFromText(geomtext, srid);
+
+ IF mline IS NULL
+ THEN
+ RAISE EXCEPTION 'Input is not a MultiLinestring';
+ END IF;
+
+ geom := BuildArea(mline);
+
+ IF GeometryType(geom) != 'POLYGON'
+ THEN
+ RAISE EXCEPTION 'Input returns more then a single polygon, try using BdMPolyFromText instead';
+ END IF;
+
+ RETURN geom;
+END;
+$_$;
+
+
+ALTER FUNCTION public.bdpolyfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 76 (class 1255 OID 18456)
+-- Dependencies: 6 1102 1102
+-- Name: boundary(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION boundary(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'boundary';
+
+
+ALTER FUNCTION public.boundary(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 104 (class 1255 OID 18457)
+-- Dependencies: 6 1102
+-- Name: box(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION box(geometry) RETURNS box
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_to_BOX';
+
+
+ALTER FUNCTION public.box(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 105 (class 1255 OID 18458)
+-- Dependencies: 6 1090
+-- Name: box(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION box(box3d) RETURNS box
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_to_BOX';
+
+
+ALTER FUNCTION public.box(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 106 (class 1255 OID 18459)
+-- Dependencies: 6 1087 1093
+-- Name: box2d(box3d_extent); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION box2d(box3d_extent) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_to_BOX2DFLOAT4';
+
+
+ALTER FUNCTION public.box2d(box3d_extent) OWNER TO postgres;
+
+--
+-- TOC entry 107 (class 1255 OID 18460)
+-- Dependencies: 6 1087 1102
+-- Name: box2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION box2d(geometry) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_to_BOX2DFLOAT4';
+
+
+ALTER FUNCTION public.box2d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 108 (class 1255 OID 18461)
+-- Dependencies: 1087 1090 6
+-- Name: box2d(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION box2d(box3d) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_to_BOX2DFLOAT4';
+
+
+ALTER FUNCTION public.box2d(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 109 (class 1255 OID 18462)
+-- Dependencies: 6 1090 1102
+-- Name: box3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION box3d(geometry) RETURNS box3d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_to_BOX3D';
+
+
+ALTER FUNCTION public.box3d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 110 (class 1255 OID 18463)
+-- Dependencies: 6 1090 1087
+-- Name: box3d(box2d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION box3d(box2d) RETURNS box3d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_to_BOX3D';
+
+
+ALTER FUNCTION public.box3d(box2d) OWNER TO postgres;
+
+--
+-- TOC entry 111 (class 1255 OID 18464)
+-- Dependencies: 6 1090 1093
+-- Name: box3d_extent(box3d_extent); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION box3d_extent(box3d_extent) RETURNS box3d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_extent_to_BOX3D';
+
+
+ALTER FUNCTION public.box3d_extent(box3d_extent) OWNER TO postgres;
+
+--
+-- TOC entry 112 (class 1255 OID 18465)
+-- Dependencies: 6 1090
+-- Name: box3dtobox(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION box3dtobox(box3d) RETURNS box
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT box($1)$_$;
+
+
+ALTER FUNCTION public.box3dtobox(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 113 (class 1255 OID 18466)
+-- Dependencies: 6 1102 1102
+-- Name: buffer(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION buffer(geometry, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'buffer';
+
+
+ALTER FUNCTION public.buffer(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 114 (class 1255 OID 18467)
+-- Dependencies: 6 1102 1102
+-- Name: buffer(geometry, double precision, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION buffer(geometry, double precision, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT ST_Buffer($1, $2, $3)$_$;
+
+
+ALTER FUNCTION public.buffer(geometry, double precision, integer) OWNER TO postgres;
+
+--
+-- TOC entry 115 (class 1255 OID 18468)
+-- Dependencies: 6 1102 1102
+-- Name: buildarea(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION buildarea(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'LWGEOM_buildarea';
+
+
+ALTER FUNCTION public.buildarea(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 116 (class 1255 OID 18469)
+-- Dependencies: 6 1102
+-- Name: bytea(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION bytea(geometry) RETURNS bytea
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_to_bytea';
+
+
+ALTER FUNCTION public.bytea(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 117 (class 1255 OID 18470)
+-- Dependencies: 6 1102 1102
+-- Name: centroid(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION centroid(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'centroid';
+
+
+ALTER FUNCTION public.centroid(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 119 (class 1255 OID 18472)
+-- Dependencies: 6
+-- Name: checkauth(text, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION checkauth(text, text) RETURNS integer
+ LANGUAGE sql
+ AS $_$ SELECT CheckAuth('', $1, $2) $_$;
+
+
+ALTER FUNCTION public.checkauth(text, text) OWNER TO postgres;
+
+--
+-- TOC entry 118 (class 1255 OID 18471)
+-- Dependencies: 6 1168
+-- Name: checkauth(text, text, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION checkauth(text, text, text) RETURNS integer
+ LANGUAGE plpgsql
+ AS $_$
+DECLARE
+ schema text;
+BEGIN
+ IF NOT LongTransactionsEnabled() THEN
+ RAISE EXCEPTION 'Long transaction support disabled, use EnableLongTransaction() to enable.';
+ END IF;
+
+ if ( $1 != '' ) THEN
+ schema = $1;
+ ELSE
+ SELECT current_schema() into schema;
+ END IF;
+
+ -- TODO: check for an already existing trigger ?
+
+ EXECUTE 'CREATE TRIGGER check_auth BEFORE UPDATE OR DELETE ON '
+ || quote_ident(schema) || '.' || quote_ident($2)
+ ||' FOR EACH ROW EXECUTE PROCEDURE CheckAuthTrigger('
+ || quote_literal($3) || ')';
+
+ RETURN 0;
+END;
+$_$;
+
+
+ALTER FUNCTION public.checkauth(text, text, text) OWNER TO postgres;
+
+--
+-- TOC entry 120 (class 1255 OID 18473)
+-- Dependencies: 6
+-- Name: checkauthtrigger(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION checkauthtrigger() RETURNS trigger
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'check_authorization';
+
+
+ALTER FUNCTION public.checkauthtrigger() OWNER TO postgres;
+
+--
+-- TOC entry 121 (class 1255 OID 18474)
+-- Dependencies: 6 1102 1102 1102
+-- Name: collect(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION collect(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE
+ AS '$libdir/postgis-1.5', 'LWGEOM_collect';
+
+
+ALTER FUNCTION public.collect(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 122 (class 1255 OID 18475)
+-- Dependencies: 6 1087 1087 1102
+-- Name: combine_bbox(box2d, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION combine_bbox(box2d, geometry) RETURNS box2d
+ LANGUAGE c IMMUTABLE
+ AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_combine';
+
+
+ALTER FUNCTION public.combine_bbox(box2d, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 123 (class 1255 OID 18476)
+-- Dependencies: 6 1093 1093 1102
+-- Name: combine_bbox(box3d_extent, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION combine_bbox(box3d_extent, geometry) RETURNS box3d_extent
+ LANGUAGE c IMMUTABLE
+ AS '$libdir/postgis-1.5', 'BOX3D_combine';
+
+
+ALTER FUNCTION public.combine_bbox(box3d_extent, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 124 (class 1255 OID 18477)
+-- Dependencies: 6 1090 1090 1102
+-- Name: combine_bbox(box3d, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION combine_bbox(box3d, geometry) RETURNS box3d
+ LANGUAGE c IMMUTABLE
+ AS '$libdir/postgis-1.5', 'BOX3D_combine';
+
+
+ALTER FUNCTION public.combine_bbox(box3d, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 125 (class 1255 OID 18478)
+-- Dependencies: 6 1096
+-- Name: compression(chip); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION compression(chip) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_getCompression';
+
+
+ALTER FUNCTION public.compression(chip) OWNER TO postgres;
+
+--
+-- TOC entry 126 (class 1255 OID 18479)
+-- Dependencies: 6 1102 1102
+-- Name: contains(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION contains(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'contains';
+
+
+ALTER FUNCTION public.contains(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 127 (class 1255 OID 18480)
+-- Dependencies: 6 1102 1102
+-- Name: convexhull(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION convexhull(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'convexhull';
+
+
+ALTER FUNCTION public.convexhull(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 128 (class 1255 OID 18481)
+-- Dependencies: 6 1102 1102
+-- Name: crosses(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION crosses(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'crosses';
+
+
+ALTER FUNCTION public.crosses(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 129 (class 1255 OID 18482)
+-- Dependencies: 6 1096
+-- Name: datatype(chip); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION datatype(chip) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_getDatatype';
+
+
+ALTER FUNCTION public.datatype(chip) OWNER TO postgres;
+
+--
+-- TOC entry 130 (class 1255 OID 18483)
+-- Dependencies: 6 1102 1102 1102
+-- Name: difference(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION difference(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'difference';
+
+
+ALTER FUNCTION public.difference(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 131 (class 1255 OID 18484)
+-- Dependencies: 6 1102
+-- Name: dimension(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION dimension(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_dimension';
+
+
+ALTER FUNCTION public.dimension(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 132 (class 1255 OID 18485)
+-- Dependencies: 6 1168
+-- Name: disablelongtransactions(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION disablelongtransactions() RETURNS text
+ LANGUAGE plpgsql
+ AS $$
+DECLARE
+ rec RECORD;
+
+BEGIN
+
+ --
+ -- Drop all triggers applied by CheckAuth()
+ --
+ FOR rec IN
+ SELECT c.relname, t.tgname, t.tgargs FROM pg_trigger t, pg_class c, pg_proc p
+ WHERE p.proname = 'checkauthtrigger' and t.tgfoid = p.oid and t.tgrelid = c.oid
+ LOOP
+ EXECUTE 'DROP TRIGGER ' || quote_ident(rec.tgname) ||
+ ' ON ' || quote_ident(rec.relname);
+ END LOOP;
+
+ --
+ -- Drop the authorization_table table
+ --
+ FOR rec IN SELECT * FROM pg_class WHERE relname = 'authorization_table' LOOP
+ DROP TABLE authorization_table;
+ END LOOP;
+
+ --
+ -- Drop the authorized_tables view
+ --
+ FOR rec IN SELECT * FROM pg_class WHERE relname = 'authorized_tables' LOOP
+ DROP VIEW authorized_tables;
+ END LOOP;
+
+ RETURN 'Long transactions support disabled';
+END;
+$$;
+
+
+ALTER FUNCTION public.disablelongtransactions() OWNER TO postgres;
+
+--
+-- TOC entry 133 (class 1255 OID 18486)
+-- Dependencies: 6 1102 1102
+-- Name: disjoint(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION disjoint(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'disjoint';
+
+
+ALTER FUNCTION public.disjoint(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 134 (class 1255 OID 18487)
+-- Dependencies: 6 1102 1102
+-- Name: distance(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION distance(geometry, geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'LWGEOM_mindistance2d';
+
+
+ALTER FUNCTION public.distance(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 135 (class 1255 OID 18488)
+-- Dependencies: 6 1102 1102
+-- Name: distance_sphere(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION distance_sphere(geometry, geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'LWGEOM_distance_sphere';
+
+
+ALTER FUNCTION public.distance_sphere(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 136 (class 1255 OID 18489)
+-- Dependencies: 6 1102 1102 1113
+-- Name: distance_spheroid(geometry, geometry, spheroid); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION distance_spheroid(geometry, geometry, spheroid) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'LWGEOM_distance_ellipsoid';
+
+
+ALTER FUNCTION public.distance_spheroid(geometry, geometry, spheroid) OWNER TO postgres;
+
+--
+-- TOC entry 137 (class 1255 OID 18490)
+-- Dependencies: 6 1102 1102
+-- Name: dropbbox(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION dropbbox(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_dropBBOX';
+
+
+ALTER FUNCTION public.dropbbox(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 140 (class 1255 OID 18493)
+-- Dependencies: 6 1168
+-- Name: dropgeometrycolumn(character varying, character varying); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION dropgeometrycolumn(character varying, character varying) RETURNS text
+ LANGUAGE plpgsql STRICT
+ AS $_$
+DECLARE
+ ret text;
+BEGIN
+ SELECT DropGeometryColumn('','',$1,$2) into ret;
+ RETURN ret;
+END;
+$_$;
+
+
+ALTER FUNCTION public.dropgeometrycolumn(character varying, character varying) OWNER TO postgres;
+
+--
+-- TOC entry 139 (class 1255 OID 18492)
+-- Dependencies: 6 1168
+-- Name: dropgeometrycolumn(character varying, character varying, character varying); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION dropgeometrycolumn(character varying, character varying, character varying) RETURNS text
+ LANGUAGE plpgsql STRICT
+ AS $_$
+DECLARE
+ ret text;
+BEGIN
+ SELECT DropGeometryColumn('',$1,$2,$3) into ret;
+ RETURN ret;
+END;
+$_$;
+
+
+ALTER FUNCTION public.dropgeometrycolumn(character varying, character varying, character varying) OWNER TO postgres;
+
+--
+-- TOC entry 138 (class 1255 OID 18491)
+-- Dependencies: 6 1168
+-- Name: dropgeometrycolumn(character varying, character varying, character varying, character varying); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION dropgeometrycolumn(character varying, character varying, character varying, character varying) RETURNS text
+ LANGUAGE plpgsql STRICT
+ AS $_$
+DECLARE
+ catalog_name alias for $1;
+ schema_name alias for $2;
+ table_name alias for $3;
+ column_name alias for $4;
+ myrec RECORD;
+ okay boolean;
+ real_schema name;
+
+BEGIN
+
+
+ -- Find, check or fix schema_name
+ IF ( schema_name != '' ) THEN
+ okay = 'f';
+
+ FOR myrec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP
+ okay := 't';
+ END LOOP;
+
+ IF ( okay <> 't' ) THEN
+ RAISE NOTICE 'Invalid schema name - using current_schema()';
+ SELECT current_schema() into real_schema;
+ ELSE
+ real_schema = schema_name;
+ END IF;
+ ELSE
+ SELECT current_schema() into real_schema;
+ END IF;
+
+ -- Find out if the column is in the geometry_columns table
+ okay = 'f';
+ FOR myrec IN SELECT * from geometry_columns where f_table_schema = text(real_schema) and f_table_name = table_name and f_geometry_column = column_name LOOP
+ okay := 't';
+ END LOOP;
+ IF (okay <> 't') THEN
+ RAISE EXCEPTION 'column not found in geometry_columns table';
+ RETURN 'f';
+ END IF;
+
+ -- Remove ref from geometry_columns table
+ EXECUTE 'delete from geometry_columns where f_table_schema = ' ||
+ quote_literal(real_schema) || ' and f_table_name = ' ||
+ quote_literal(table_name) || ' and f_geometry_column = ' ||
+ quote_literal(column_name);
+
+ -- Remove table column
+ EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) || '.' ||
+ quote_ident(table_name) || ' DROP COLUMN ' ||
+ quote_ident(column_name);
+
+ RETURN real_schema || '.' || table_name || '.' || column_name ||' effectively removed.';
+
+END;
+$_$;
+
+
+ALTER FUNCTION public.dropgeometrycolumn(character varying, character varying, character varying, character varying) OWNER TO postgres;
+
+--
+-- TOC entry 143 (class 1255 OID 18496)
+-- Dependencies: 6
+-- Name: dropgeometrytable(character varying); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION dropgeometrytable(character varying) RETURNS text
+ LANGUAGE sql STRICT
+ AS $_$ SELECT DropGeometryTable('','',$1) $_$;
+
+
+ALTER FUNCTION public.dropgeometrytable(character varying) OWNER TO postgres;
+
+--
+-- TOC entry 142 (class 1255 OID 18495)
+-- Dependencies: 6
+-- Name: dropgeometrytable(character varying, character varying); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION dropgeometrytable(character varying, character varying) RETURNS text
+ LANGUAGE sql STRICT
+ AS $_$ SELECT DropGeometryTable('',$1,$2) $_$;
+
+
+ALTER FUNCTION public.dropgeometrytable(character varying, character varying) OWNER TO postgres;
+
+--
+-- TOC entry 141 (class 1255 OID 18494)
+-- Dependencies: 6 1168
+-- Name: dropgeometrytable(character varying, character varying, character varying); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION dropgeometrytable(character varying, character varying, character varying) RETURNS text
+ LANGUAGE plpgsql STRICT
+ AS $_$
+DECLARE
+ catalog_name alias for $1;
+ schema_name alias for $2;
+ table_name alias for $3;
+ real_schema name;
+
+BEGIN
+
+ IF ( schema_name = '' ) THEN
+ SELECT current_schema() into real_schema;
+ ELSE
+ real_schema = schema_name;
+ END IF;
+
+ -- Remove refs from geometry_columns table
+ EXECUTE 'DELETE FROM geometry_columns WHERE ' ||
+ 'f_table_schema = ' || quote_literal(real_schema) ||
+ ' AND ' ||
+ ' f_table_name = ' || quote_literal(table_name);
+
+ -- Remove table
+ EXECUTE 'DROP TABLE '
+ || quote_ident(real_schema) || '.' ||
+ quote_ident(table_name);
+
+ RETURN
+ real_schema || '.' ||
+ table_name ||' dropped.';
+
+END;
+$_$;
+
+
+ALTER FUNCTION public.dropgeometrytable(character varying, character varying, character varying) OWNER TO postgres;
+
+--
+-- TOC entry 144 (class 1255 OID 18497)
+-- Dependencies: 6 1105 1102
+-- Name: dump(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION dump(geometry) RETURNS SETOF geometry_dump
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_dump';
+
+
+ALTER FUNCTION public.dump(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 145 (class 1255 OID 18498)
+-- Dependencies: 6 1105 1102
+-- Name: dumprings(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION dumprings(geometry) RETURNS SETOF geometry_dump
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_dump_rings';
+
+
+ALTER FUNCTION public.dumprings(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 146 (class 1255 OID 18499)
+-- Dependencies: 6 1168
+-- Name: enablelongtransactions(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION enablelongtransactions() RETURNS text
+ LANGUAGE plpgsql
+ AS $$
+DECLARE
+ "query" text;
+ exists bool;
+ rec RECORD;
+
+BEGIN
+
+ exists = 'f';
+ FOR rec IN SELECT * FROM pg_class WHERE relname = 'authorization_table'
+ LOOP
+ exists = 't';
+ END LOOP;
+
+ IF NOT exists
+ THEN
+ "query" = 'CREATE TABLE authorization_table (
+ toid oid, -- table oid
+ rid text, -- row id
+ expires timestamp,
+ authid text
+ )';
+ EXECUTE "query";
+ END IF;
+
+ exists = 'f';
+ FOR rec IN SELECT * FROM pg_class WHERE relname = 'authorized_tables'
+ LOOP
+ exists = 't';
+ END LOOP;
+
+ IF NOT exists THEN
+ "query" = 'CREATE VIEW authorized_tables AS ' ||
+ 'SELECT ' ||
+ 'n.nspname as schema, ' ||
+ 'c.relname as table, trim(' ||
+ quote_literal(chr(92) || '000') ||
+ ' from t.tgargs) as id_column ' ||
+ 'FROM pg_trigger t, pg_class c, pg_proc p ' ||
+ ', pg_namespace n ' ||
+ 'WHERE p.proname = ' || quote_literal('checkauthtrigger') ||
+ ' AND c.relnamespace = n.oid' ||
+ ' AND t.tgfoid = p.oid and t.tgrelid = c.oid';
+ EXECUTE "query";
+ END IF;
+
+ RETURN 'Long transactions support enabled';
+END;
+$$;
+
+
+ALTER FUNCTION public.enablelongtransactions() OWNER TO postgres;
+
+--
+-- TOC entry 147 (class 1255 OID 18500)
+-- Dependencies: 6 1102 1102
+-- Name: endpoint(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION endpoint(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_endpoint_linestring';
+
+
+ALTER FUNCTION public.endpoint(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 148 (class 1255 OID 18501)
+-- Dependencies: 6 1102 1102
+-- Name: envelope(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION envelope(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_envelope';
+
+
+ALTER FUNCTION public.envelope(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 149 (class 1255 OID 18502)
+-- Dependencies: 6 1102 1102
+-- Name: equals(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION equals(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geomequals';
+
+
+ALTER FUNCTION public.equals(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 151 (class 1255 OID 18504)
+-- Dependencies: 6 1087
+-- Name: estimated_extent(text, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION estimated_extent(text, text) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT SECURITY DEFINER
+ AS '$libdir/postgis-1.5', 'LWGEOM_estimated_extent';
+
+
+ALTER FUNCTION public.estimated_extent(text, text) OWNER TO postgres;
+
+--
+-- TOC entry 150 (class 1255 OID 18503)
+-- Dependencies: 6 1087
+-- Name: estimated_extent(text, text, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION estimated_extent(text, text, text) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT SECURITY DEFINER
+ AS '$libdir/postgis-1.5', 'LWGEOM_estimated_extent';
+
+
+ALTER FUNCTION public.estimated_extent(text, text, text) OWNER TO postgres;
+
+--
+-- TOC entry 152 (class 1255 OID 18505)
+-- Dependencies: 6 1090 1090
+-- Name: expand(box3d, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION expand(box3d, double precision) RETURNS box3d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_expand';
+
+
+ALTER FUNCTION public.expand(box3d, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 153 (class 1255 OID 18506)
+-- Dependencies: 6 1087 1087
+-- Name: expand(box2d, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION expand(box2d, double precision) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_expand';
+
+
+ALTER FUNCTION public.expand(box2d, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 154 (class 1255 OID 18507)
+-- Dependencies: 6 1102 1102
+-- Name: expand(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION expand(geometry, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_expand';
+
+
+ALTER FUNCTION public.expand(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 155 (class 1255 OID 18508)
+-- Dependencies: 6 1102 1102
+-- Name: exteriorring(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION exteriorring(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_exteriorring_polygon';
+
+
+ALTER FUNCTION public.exteriorring(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 156 (class 1255 OID 18509)
+-- Dependencies: 6 1096
+-- Name: factor(chip); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION factor(chip) RETURNS real
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_getFactor';
+
+
+ALTER FUNCTION public.factor(chip) OWNER TO postgres;
+
+--
+-- TOC entry 158 (class 1255 OID 18511)
+-- Dependencies: 6 1168 1087
+-- Name: find_extent(text, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION find_extent(text, text) RETURNS box2d
+ LANGUAGE plpgsql IMMUTABLE STRICT
+ AS $_$
+DECLARE
+ tablename alias for $1;
+ columnname alias for $2;
+ myrec RECORD;
+
+BEGIN
+ FOR myrec IN EXECUTE 'SELECT extent("' || columnname || '") FROM "' || tablename || '"' LOOP
+ return myrec.extent;
+ END LOOP;
+END;
+$_$;
+
+
+ALTER FUNCTION public.find_extent(text, text) OWNER TO postgres;
+
+--
+-- TOC entry 157 (class 1255 OID 18510)
+-- Dependencies: 6 1168 1087
+-- Name: find_extent(text, text, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION find_extent(text, text, text) RETURNS box2d
+ LANGUAGE plpgsql IMMUTABLE STRICT
+ AS $_$
+DECLARE
+ schemaname alias for $1;
+ tablename alias for $2;
+ columnname alias for $3;
+ myrec RECORD;
+
+BEGIN
+ FOR myrec IN EXECUTE 'SELECT extent("' || columnname || '") FROM "' || schemaname || '"."' || tablename || '"' LOOP
+ return myrec.extent;
+ END LOOP;
+END;
+$_$;
+
+
+ALTER FUNCTION public.find_extent(text, text, text) OWNER TO postgres;
+
+--
+-- TOC entry 159 (class 1255 OID 18512)
+-- Dependencies: 6 1168
+-- Name: find_srid(character varying, character varying, character varying); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION find_srid(character varying, character varying, character varying) RETURNS integer
+ LANGUAGE plpgsql IMMUTABLE STRICT
+ AS $_$
+DECLARE
+ schem text;
+ tabl text;
+ sr int4;
+BEGIN
+ IF $1 IS NULL THEN
+ RAISE EXCEPTION 'find_srid() - schema is NULL!';
+ END IF;
+ IF $2 IS NULL THEN
+ RAISE EXCEPTION 'find_srid() - table name is NULL!';
+ END IF;
+ IF $3 IS NULL THEN
+ RAISE EXCEPTION 'find_srid() - column name is NULL!';
+ END IF;
+ schem = $1;
+ tabl = $2;
+-- if the table contains a . and the schema is empty
+-- split the table into a schema and a table
+-- otherwise drop through to default behavior
+ IF ( schem = '' and tabl LIKE '%.%' ) THEN
+ schem = substr(tabl,1,strpos(tabl,'.')-1);
+ tabl = substr(tabl,length(schem)+2);
+ ELSE
+ schem = schem || '%';
+ END IF;
+
+ select SRID into sr from geometry_columns where f_table_schema like schem and f_table_name = tabl and f_geometry_column = $3;
+ IF NOT FOUND THEN
+ RAISE EXCEPTION 'find_srid() - couldnt find the corresponding SRID - is the geometry registered in the GEOMETRY_COLUMNS table? Is there an uppercase/lowercase missmatch?';
+ END IF;
+ return sr;
+END;
+$_$;
+
+
+ALTER FUNCTION public.find_srid(character varying, character varying, character varying) OWNER TO postgres;
+
+--
+-- TOC entry 160 (class 1255 OID 18513)
+-- Dependencies: 6 1168
+-- Name: fix_geometry_columns(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION fix_geometry_columns() RETURNS text
+ LANGUAGE plpgsql
+ AS $$
+DECLARE
+ mislinked record;
+ result text;
+ linked integer;
+ deleted integer;
+ foundschema integer;
+BEGIN
+
+ -- Since 7.3 schema support has been added.
+ -- Previous postgis versions used to put the database name in
+ -- the schema column. This needs to be fixed, so we try to
+ -- set the correct schema for each geometry_colums record
+ -- looking at table, column, type and srid.
+ UPDATE geometry_columns SET f_table_schema = n.nspname
+ FROM pg_namespace n, pg_class c, pg_attribute a,
+ pg_constraint sridcheck, pg_constraint typecheck
+ WHERE ( f_table_schema is NULL
+ OR f_table_schema = ''
+ OR f_table_schema NOT IN (
+ SELECT nspname::varchar
+ FROM pg_namespace nn, pg_class cc, pg_attribute aa
+ WHERE cc.relnamespace = nn.oid
+ AND cc.relname = f_table_name::name
+ AND aa.attrelid = cc.oid
+ AND aa.attname = f_geometry_column::name))
+ AND f_table_name::name = c.relname
+ AND c.oid = a.attrelid
+ AND c.relnamespace = n.oid
+ AND f_geometry_column::name = a.attname
+
+ AND sridcheck.conrelid = c.oid
+ AND sridcheck.consrc LIKE '(srid(% = %)'
+ AND sridcheck.consrc ~ textcat(' = ', srid::text)
+
+ AND typecheck.conrelid = c.oid
+ AND typecheck.consrc LIKE
+ '((geometrytype(%) = ''%''::text) OR (% IS NULL))'
+ AND typecheck.consrc ~ textcat(' = ''', type::text)
+
+ AND NOT EXISTS (
+ SELECT oid FROM geometry_columns gc
+ WHERE c.relname::varchar = gc.f_table_name
+ AND n.nspname::varchar = gc.f_table_schema
+ AND a.attname::varchar = gc.f_geometry_column
+ );
+
+ GET DIAGNOSTICS foundschema = ROW_COUNT;
+
+ -- no linkage to system table needed
+ return 'fixed:'||foundschema::text;
+
+END;
+$$;
+
+
+ALTER FUNCTION public.fix_geometry_columns() OWNER TO postgres;
+
+--
+-- TOC entry 161 (class 1255 OID 18514)
+-- Dependencies: 6 1102 1102
+-- Name: force_2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION force_2d(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_force_2d';
+
+
+ALTER FUNCTION public.force_2d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 162 (class 1255 OID 18515)
+-- Dependencies: 6 1102 1102
+-- Name: force_3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION force_3d(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_force_3dz';
+
+
+ALTER FUNCTION public.force_3d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 163 (class 1255 OID 18516)
+-- Dependencies: 6 1102 1102
+-- Name: force_3dm(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION force_3dm(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_force_3dm';
+
+
+ALTER FUNCTION public.force_3dm(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 164 (class 1255 OID 18517)
+-- Dependencies: 6 1102 1102
+-- Name: force_3dz(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION force_3dz(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_force_3dz';
+
+
+ALTER FUNCTION public.force_3dz(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 165 (class 1255 OID 18518)
+-- Dependencies: 6 1102 1102
+-- Name: force_4d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION force_4d(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_force_4d';
+
+
+ALTER FUNCTION public.force_4d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 166 (class 1255 OID 18519)
+-- Dependencies: 6 1102 1102
+-- Name: force_collection(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION force_collection(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_force_collection';
+
+
+ALTER FUNCTION public.force_collection(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 167 (class 1255 OID 18520)
+-- Dependencies: 6 1102 1102
+-- Name: forcerhr(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION forcerhr(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_forceRHR_poly';
+
+
+ALTER FUNCTION public.forcerhr(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 169 (class 1255 OID 18522)
+-- Dependencies: 6 1099 1102
+-- Name: geography(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography(geometry) RETURNS geography
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_from_geometry';
+
+
+ALTER FUNCTION public.geography(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 168 (class 1255 OID 18521)
+-- Dependencies: 6 1099 1099
+-- Name: geography(geography, integer, boolean); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography(geography, integer, boolean) RETURNS geography
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_enforce_typmod';
+
+
+ALTER FUNCTION public.geography(geography, integer, boolean) OWNER TO postgres;
+
+--
+-- TOC entry 170 (class 1255 OID 18523)
+-- Dependencies: 6 1099 1099
+-- Name: geography_cmp(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_cmp(geography, geography) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_cmp';
+
+
+ALTER FUNCTION public.geography_cmp(geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 171 (class 1255 OID 18524)
+-- Dependencies: 6 1099 1099
+-- Name: geography_eq(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_eq(geography, geography) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_eq';
+
+
+ALTER FUNCTION public.geography_eq(geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 172 (class 1255 OID 18525)
+-- Dependencies: 6 1099 1099
+-- Name: geography_ge(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_ge(geography, geography) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_ge';
+
+
+ALTER FUNCTION public.geography_ge(geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 173 (class 1255 OID 18526)
+-- Dependencies: 6
+-- Name: geography_gist_compress(internal); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_gist_compress(internal) RETURNS internal
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'geography_gist_compress';
+
+
+ALTER FUNCTION public.geography_gist_compress(internal) OWNER TO postgres;
+
+--
+-- TOC entry 174 (class 1255 OID 18527)
+-- Dependencies: 6 1102
+-- Name: geography_gist_consistent(internal, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_gist_consistent(internal, geometry, integer) RETURNS boolean
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'geography_gist_consistent';
+
+
+ALTER FUNCTION public.geography_gist_consistent(internal, geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 175 (class 1255 OID 18528)
+-- Dependencies: 6
+-- Name: geography_gist_decompress(internal); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_gist_decompress(internal) RETURNS internal
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'geography_gist_decompress';
+
+
+ALTER FUNCTION public.geography_gist_decompress(internal) OWNER TO postgres;
+
+--
+-- TOC entry 176 (class 1255 OID 18529)
+-- Dependencies: 6
+-- Name: geography_gist_join_selectivity(internal, oid, internal, smallint); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_gist_join_selectivity(internal, oid, internal, smallint) RETURNS double precision
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'geography_gist_join_selectivity';
+
+
+ALTER FUNCTION public.geography_gist_join_selectivity(internal, oid, internal, smallint) OWNER TO postgres;
+
+--
+-- TOC entry 177 (class 1255 OID 18530)
+-- Dependencies: 6
+-- Name: geography_gist_penalty(internal, internal, internal); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_gist_penalty(internal, internal, internal) RETURNS internal
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'geography_gist_penalty';
+
+
+ALTER FUNCTION public.geography_gist_penalty(internal, internal, internal) OWNER TO postgres;
+
+--
+-- TOC entry 178 (class 1255 OID 18531)
+-- Dependencies: 6
+-- Name: geography_gist_picksplit(internal, internal); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_gist_picksplit(internal, internal) RETURNS internal
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'geography_gist_picksplit';
+
+
+ALTER FUNCTION public.geography_gist_picksplit(internal, internal) OWNER TO postgres;
+
+--
+-- TOC entry 179 (class 1255 OID 18532)
+-- Dependencies: 6 1087 1087
+-- Name: geography_gist_same(box2d, box2d, internal); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_gist_same(box2d, box2d, internal) RETURNS internal
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'geography_gist_same';
+
+
+ALTER FUNCTION public.geography_gist_same(box2d, box2d, internal) OWNER TO postgres;
+
+--
+-- TOC entry 180 (class 1255 OID 18533)
+-- Dependencies: 6
+-- Name: geography_gist_selectivity(internal, oid, internal, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_gist_selectivity(internal, oid, internal, integer) RETURNS double precision
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'geography_gist_selectivity';
+
+
+ALTER FUNCTION public.geography_gist_selectivity(internal, oid, internal, integer) OWNER TO postgres;
+
+--
+-- TOC entry 181 (class 1255 OID 18534)
+-- Dependencies: 6
+-- Name: geography_gist_union(bytea, internal); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_gist_union(bytea, internal) RETURNS internal
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'geography_gist_union';
+
+
+ALTER FUNCTION public.geography_gist_union(bytea, internal) OWNER TO postgres;
+
+--
+-- TOC entry 182 (class 1255 OID 18535)
+-- Dependencies: 6 1099 1099
+-- Name: geography_gt(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_gt(geography, geography) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_gt';
+
+
+ALTER FUNCTION public.geography_gt(geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 183 (class 1255 OID 18536)
+-- Dependencies: 6 1099 1099
+-- Name: geography_le(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_le(geography, geography) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_le';
+
+
+ALTER FUNCTION public.geography_le(geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 184 (class 1255 OID 18537)
+-- Dependencies: 6 1099 1099
+-- Name: geography_lt(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_lt(geography, geography) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_lt';
+
+
+ALTER FUNCTION public.geography_lt(geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 185 (class 1255 OID 18538)
+-- Dependencies: 6 1099 1099
+-- Name: geography_overlaps(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_overlaps(geography, geography) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_overlaps';
+
+
+ALTER FUNCTION public.geography_overlaps(geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 186 (class 1255 OID 18539)
+-- Dependencies: 6
+-- Name: geography_typmod_dims(integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_typmod_dims(integer) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_typmod_dims';
+
+
+ALTER FUNCTION public.geography_typmod_dims(integer) OWNER TO postgres;
+
+--
+-- TOC entry 187 (class 1255 OID 18540)
+-- Dependencies: 6
+-- Name: geography_typmod_srid(integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_typmod_srid(integer) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_typmod_srid';
+
+
+ALTER FUNCTION public.geography_typmod_srid(integer) OWNER TO postgres;
+
+--
+-- TOC entry 188 (class 1255 OID 18541)
+-- Dependencies: 6
+-- Name: geography_typmod_type(integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geography_typmod_type(integer) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_typmod_type';
+
+
+ALTER FUNCTION public.geography_typmod_type(integer) OWNER TO postgres;
+
+--
+-- TOC entry 190 (class 1255 OID 18543)
+-- Dependencies: 6 1102
+-- Name: geomcollfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geomcollfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE
+ WHEN geometrytype(GeomFromText($1)) = 'GEOMETRYCOLLECTION'
+ THEN GeomFromText($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.geomcollfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 189 (class 1255 OID 18542)
+-- Dependencies: 6 1102
+-- Name: geomcollfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geomcollfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE
+ WHEN geometrytype(GeomFromText($1, $2)) = 'GEOMETRYCOLLECTION'
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.geomcollfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 192 (class 1255 OID 18545)
+-- Dependencies: 6 1102
+-- Name: geomcollfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geomcollfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE
+ WHEN geometrytype(GeomFromWKB($1)) = 'GEOMETRYCOLLECTION'
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.geomcollfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 191 (class 1255 OID 18544)
+-- Dependencies: 6 1102
+-- Name: geomcollfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geomcollfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE
+ WHEN geometrytype(GeomFromWKB($1, $2)) = 'GEOMETRYCOLLECTION'
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.geomcollfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 193 (class 1255 OID 18546)
+-- Dependencies: 6 1102 1093
+-- Name: geometry(box3d_extent); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry(box3d_extent) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_to_LWGEOM';
+
+
+ALTER FUNCTION public.geometry(box3d_extent) OWNER TO postgres;
+
+--
+-- TOC entry 194 (class 1255 OID 18547)
+-- Dependencies: 6 1102 1087
+-- Name: geometry(box2d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry(box2d) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_to_LWGEOM';
+
+
+ALTER FUNCTION public.geometry(box2d) OWNER TO postgres;
+
+--
+-- TOC entry 195 (class 1255 OID 18548)
+-- Dependencies: 6 1102 1090
+-- Name: geometry(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry(box3d) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_to_LWGEOM';
+
+
+ALTER FUNCTION public.geometry(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 196 (class 1255 OID 18549)
+-- Dependencies: 6 1102
+-- Name: geometry(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry(text) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'parse_WKT_lwgeom';
+
+
+ALTER FUNCTION public.geometry(text) OWNER TO postgres;
+
+--
+-- TOC entry 197 (class 1255 OID 18550)
+-- Dependencies: 6 1102 1096
+-- Name: geometry(chip); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry(chip) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_to_LWGEOM';
+
+
+ALTER FUNCTION public.geometry(chip) OWNER TO postgres;
+
+--
+-- TOC entry 198 (class 1255 OID 18551)
+-- Dependencies: 6 1102
+-- Name: geometry(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry(bytea) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_from_bytea';
+
+
+ALTER FUNCTION public.geometry(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 199 (class 1255 OID 18552)
+-- Dependencies: 6 1102 1099
+-- Name: geometry(geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry(geography) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geometry_from_geography';
+
+
+ALTER FUNCTION public.geometry(geography) OWNER TO postgres;
+
+--
+-- TOC entry 200 (class 1255 OID 18553)
+-- Dependencies: 6 1102 1102
+-- Name: geometry_above(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_above(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_above';
+
+
+ALTER FUNCTION public.geometry_above(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 201 (class 1255 OID 18554)
+-- Dependencies: 6 1102 1102
+-- Name: geometry_below(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_below(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_below';
+
+
+ALTER FUNCTION public.geometry_below(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 202 (class 1255 OID 18555)
+-- Dependencies: 6 1102 1102
+-- Name: geometry_cmp(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_cmp(geometry, geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'lwgeom_cmp';
+
+
+ALTER FUNCTION public.geometry_cmp(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 203 (class 1255 OID 18556)
+-- Dependencies: 6 1102 1102
+-- Name: geometry_contain(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_contain(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_contain';
+
+
+ALTER FUNCTION public.geometry_contain(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 204 (class 1255 OID 18557)
+-- Dependencies: 6 1102 1102
+-- Name: geometry_contained(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_contained(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_contained';
+
+
+ALTER FUNCTION public.geometry_contained(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 205 (class 1255 OID 18558)
+-- Dependencies: 6 1102 1102
+-- Name: geometry_eq(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_eq(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'lwgeom_eq';
+
+
+ALTER FUNCTION public.geometry_eq(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 206 (class 1255 OID 18559)
+-- Dependencies: 6 1102 1102
+-- Name: geometry_ge(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_ge(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'lwgeom_ge';
+
+
+ALTER FUNCTION public.geometry_ge(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 207 (class 1255 OID 18560)
+-- Dependencies: 6
+-- Name: geometry_gist_joinsel(internal, oid, internal, smallint); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_gist_joinsel(internal, oid, internal, smallint) RETURNS double precision
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'LWGEOM_gist_joinsel';
+
+
+ALTER FUNCTION public.geometry_gist_joinsel(internal, oid, internal, smallint) OWNER TO postgres;
+
+--
+-- TOC entry 208 (class 1255 OID 18561)
+-- Dependencies: 6
+-- Name: geometry_gist_sel(internal, oid, internal, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_gist_sel(internal, oid, internal, integer) RETURNS double precision
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'LWGEOM_gist_sel';
+
+
+ALTER FUNCTION public.geometry_gist_sel(internal, oid, internal, integer) OWNER TO postgres;
+
+--
+-- TOC entry 209 (class 1255 OID 18562)
+-- Dependencies: 1102 6 1102
+-- Name: geometry_gt(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_gt(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'lwgeom_gt';
+
+
+ALTER FUNCTION public.geometry_gt(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 210 (class 1255 OID 18563)
+-- Dependencies: 1102 6 1102
+-- Name: geometry_le(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_le(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'lwgeom_le';
+
+
+ALTER FUNCTION public.geometry_le(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 211 (class 1255 OID 18564)
+-- Dependencies: 1102 6 1102
+-- Name: geometry_left(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_left(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_left';
+
+
+ALTER FUNCTION public.geometry_left(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 212 (class 1255 OID 18565)
+-- Dependencies: 1102 6 1102
+-- Name: geometry_lt(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_lt(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'lwgeom_lt';
+
+
+ALTER FUNCTION public.geometry_lt(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 213 (class 1255 OID 18566)
+-- Dependencies: 1102 6 1102
+-- Name: geometry_overabove(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_overabove(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_overabove';
+
+
+ALTER FUNCTION public.geometry_overabove(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 214 (class 1255 OID 18567)
+-- Dependencies: 1102 6 1102
+-- Name: geometry_overbelow(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_overbelow(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_overbelow';
+
+
+ALTER FUNCTION public.geometry_overbelow(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 215 (class 1255 OID 18568)
+-- Dependencies: 1102 6 1102
+-- Name: geometry_overlap(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_overlap(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_overlap';
+
+
+ALTER FUNCTION public.geometry_overlap(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 216 (class 1255 OID 18569)
+-- Dependencies: 1102 6 1102
+-- Name: geometry_overleft(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_overleft(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_overleft';
+
+
+ALTER FUNCTION public.geometry_overleft(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 217 (class 1255 OID 18570)
+-- Dependencies: 1102 6 1102
+-- Name: geometry_overright(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_overright(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_overright';
+
+
+ALTER FUNCTION public.geometry_overright(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 218 (class 1255 OID 18571)
+-- Dependencies: 1102 6 1102
+-- Name: geometry_right(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_right(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_right';
+
+
+ALTER FUNCTION public.geometry_right(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 219 (class 1255 OID 18572)
+-- Dependencies: 1102 6 1102
+-- Name: geometry_same(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_same(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_samebox';
+
+
+ALTER FUNCTION public.geometry_same(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 220 (class 1255 OID 18573)
+-- Dependencies: 1102 6 1102
+-- Name: geometry_samebox(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometry_samebox(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_samebox';
+
+
+ALTER FUNCTION public.geometry_samebox(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 221 (class 1255 OID 18574)
+-- Dependencies: 6 1102
+-- Name: geometryfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometryfromtext(text) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_from_text';
+
+
+ALTER FUNCTION public.geometryfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 222 (class 1255 OID 18575)
+-- Dependencies: 1102 6
+-- Name: geometryfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometryfromtext(text, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_from_text';
+
+
+ALTER FUNCTION public.geometryfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 223 (class 1255 OID 18576)
+-- Dependencies: 6 1102 1102
+-- Name: geometryn(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometryn(geometry, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_geometryn_collection';
+
+
+ALTER FUNCTION public.geometryn(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 224 (class 1255 OID 18577)
+-- Dependencies: 1102 6
+-- Name: geometrytype(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geometrytype(geometry) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_getTYPE';
+
+
+ALTER FUNCTION public.geometrytype(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 225 (class 1255 OID 18578)
+-- Dependencies: 6 1102
+-- Name: geomfromewkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geomfromewkb(bytea) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOMFromWKB';
+
+
+ALTER FUNCTION public.geomfromewkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 226 (class 1255 OID 18579)
+-- Dependencies: 6 1102
+-- Name: geomfromewkt(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geomfromewkt(text) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'parse_WKT_lwgeom';
+
+
+ALTER FUNCTION public.geomfromewkt(text) OWNER TO postgres;
+
+--
+-- TOC entry 227 (class 1255 OID 18580)
+-- Dependencies: 6 1102
+-- Name: geomfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geomfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT geometryfromtext($1)$_$;
+
+
+ALTER FUNCTION public.geomfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 228 (class 1255 OID 18581)
+-- Dependencies: 6 1102
+-- Name: geomfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geomfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT geometryfromtext($1, $2)$_$;
+
+
+ALTER FUNCTION public.geomfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 229 (class 1255 OID 18582)
+-- Dependencies: 6 1102
+-- Name: geomfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geomfromwkb(bytea) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_from_WKB';
+
+
+ALTER FUNCTION public.geomfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 230 (class 1255 OID 18583)
+-- Dependencies: 6 1102
+-- Name: geomfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geomfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT setSRID(GeomFromWKB($1), $2)$_$;
+
+
+ALTER FUNCTION public.geomfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 231 (class 1255 OID 18584)
+-- Dependencies: 1102 6 1102 1102
+-- Name: geomunion(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION geomunion(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geomunion';
+
+
+ALTER FUNCTION public.geomunion(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 232 (class 1255 OID 18585)
+-- Dependencies: 6 1168
+-- Name: get_proj4_from_srid(integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION get_proj4_from_srid(integer) RETURNS text
+ LANGUAGE plpgsql IMMUTABLE STRICT
+ AS $_$
+BEGIN
+ RETURN proj4text::text FROM spatial_ref_sys WHERE srid= $1;
+END;
+$_$;
+
+
+ALTER FUNCTION public.get_proj4_from_srid(integer) OWNER TO postgres;
+
+--
+-- TOC entry 233 (class 1255 OID 18586)
+-- Dependencies: 1087 6 1102
+-- Name: getbbox(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION getbbox(geometry) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_to_BOX2DFLOAT4';
+
+
+ALTER FUNCTION public.getbbox(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 234 (class 1255 OID 18587)
+-- Dependencies: 1102 6
+-- Name: getsrid(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION getsrid(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_getSRID';
+
+
+ALTER FUNCTION public.getsrid(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 235 (class 1255 OID 18588)
+-- Dependencies: 6
+-- Name: gettransactionid(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION gettransactionid() RETURNS xid
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'getTransactionID';
+
+
+ALTER FUNCTION public.gettransactionid() OWNER TO postgres;
+
+--
+-- TOC entry 236 (class 1255 OID 18589)
+-- Dependencies: 1102 6
+-- Name: hasbbox(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION hasbbox(geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_hasBBOX';
+
+
+ALTER FUNCTION public.hasbbox(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 237 (class 1255 OID 18590)
+-- Dependencies: 6 1096
+-- Name: height(chip); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION height(chip) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_getHeight';
+
+
+ALTER FUNCTION public.height(chip) OWNER TO postgres;
+
+--
+-- TOC entry 238 (class 1255 OID 18591)
+-- Dependencies: 1102 1102 6
+-- Name: interiorringn(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION interiorringn(geometry, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_interiorringn_polygon';
+
+
+ALTER FUNCTION public.interiorringn(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 239 (class 1255 OID 18592)
+-- Dependencies: 1102 6 1102 1102
+-- Name: intersection(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION intersection(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'intersection';
+
+
+ALTER FUNCTION public.intersection(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 240 (class 1255 OID 18593)
+-- Dependencies: 1102 6 1102
+-- Name: intersects(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION intersects(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'intersects';
+
+
+ALTER FUNCTION public.intersects(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 241 (class 1255 OID 18594)
+-- Dependencies: 6 1102
+-- Name: isclosed(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION isclosed(geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_isclosed_linestring';
+
+
+ALTER FUNCTION public.isclosed(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 242 (class 1255 OID 18595)
+-- Dependencies: 6 1102
+-- Name: isempty(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION isempty(geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_isempty';
+
+
+ALTER FUNCTION public.isempty(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 243 (class 1255 OID 18596)
+-- Dependencies: 1102 6
+-- Name: isring(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION isring(geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'isring';
+
+
+ALTER FUNCTION public.isring(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 244 (class 1255 OID 18597)
+-- Dependencies: 6 1102
+-- Name: issimple(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION issimple(geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'issimple';
+
+
+ALTER FUNCTION public.issimple(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 245 (class 1255 OID 18598)
+-- Dependencies: 6 1102
+-- Name: isvalid(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION isvalid(geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'isvalid';
+
+
+ALTER FUNCTION public.isvalid(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 246 (class 1255 OID 18599)
+-- Dependencies: 1102 6
+-- Name: length(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION length(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_length_linestring';
+
+
+ALTER FUNCTION public.length(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 247 (class 1255 OID 18600)
+-- Dependencies: 6 1102
+-- Name: length2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION length2d(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_length2d_linestring';
+
+
+ALTER FUNCTION public.length2d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 248 (class 1255 OID 18601)
+-- Dependencies: 1102 6 1113
+-- Name: length2d_spheroid(geometry, spheroid); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION length2d_spheroid(geometry, spheroid) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'LWGEOM_length2d_ellipsoid';
+
+
+ALTER FUNCTION public.length2d_spheroid(geometry, spheroid) OWNER TO postgres;
+
+--
+-- TOC entry 249 (class 1255 OID 18602)
+-- Dependencies: 1102 6
+-- Name: length3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION length3d(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_length_linestring';
+
+
+ALTER FUNCTION public.length3d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 250 (class 1255 OID 18603)
+-- Dependencies: 6 1102 1113
+-- Name: length3d_spheroid(geometry, spheroid); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION length3d_spheroid(geometry, spheroid) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_length_ellipsoid_linestring';
+
+
+ALTER FUNCTION public.length3d_spheroid(geometry, spheroid) OWNER TO postgres;
+
+--
+-- TOC entry 251 (class 1255 OID 18604)
+-- Dependencies: 1113 6 1102
+-- Name: length_spheroid(geometry, spheroid); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION length_spheroid(geometry, spheroid) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'LWGEOM_length_ellipsoid_linestring';
+
+
+ALTER FUNCTION public.length_spheroid(geometry, spheroid) OWNER TO postgres;
+
+--
+-- TOC entry 252 (class 1255 OID 18605)
+-- Dependencies: 6 1102 1102
+-- Name: line_interpolate_point(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION line_interpolate_point(geometry, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_line_interpolate_point';
+
+
+ALTER FUNCTION public.line_interpolate_point(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 253 (class 1255 OID 18606)
+-- Dependencies: 6 1102 1102
+-- Name: line_locate_point(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION line_locate_point(geometry, geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_line_locate_point';
+
+
+ALTER FUNCTION public.line_locate_point(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 254 (class 1255 OID 18607)
+-- Dependencies: 6 1102 1102
+-- Name: line_substring(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION line_substring(geometry, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_line_substring';
+
+
+ALTER FUNCTION public.line_substring(geometry, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 255 (class 1255 OID 18608)
+-- Dependencies: 6 1102 1102
+-- Name: linefrommultipoint(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION linefrommultipoint(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_line_from_mpoint';
+
+
+ALTER FUNCTION public.linefrommultipoint(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 256 (class 1255 OID 18609)
+-- Dependencies: 6 1102
+-- Name: linefromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION linefromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = 'LINESTRING'
+ THEN GeomFromText($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.linefromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 257 (class 1255 OID 18610)
+-- Dependencies: 6 1102
+-- Name: linefromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION linefromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = 'LINESTRING'
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.linefromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 259 (class 1255 OID 18612)
+-- Dependencies: 6 1102
+-- Name: linefromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION linefromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'LINESTRING'
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.linefromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 258 (class 1255 OID 18611)
+-- Dependencies: 6 1102
+-- Name: linefromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION linefromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'LINESTRING'
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.linefromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 260 (class 1255 OID 18613)
+-- Dependencies: 6 1102 1102
+-- Name: linemerge(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION linemerge(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'linemerge';
+
+
+ALTER FUNCTION public.linemerge(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 261 (class 1255 OID 18614)
+-- Dependencies: 6 1102
+-- Name: linestringfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION linestringfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT LineFromText($1)$_$;
+
+
+ALTER FUNCTION public.linestringfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 262 (class 1255 OID 18615)
+-- Dependencies: 6 1102
+-- Name: linestringfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION linestringfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT LineFromText($1, $2)$_$;
+
+
+ALTER FUNCTION public.linestringfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 264 (class 1255 OID 18617)
+-- Dependencies: 6 1102
+-- Name: linestringfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION linestringfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'LINESTRING'
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.linestringfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 263 (class 1255 OID 18616)
+-- Dependencies: 6 1102
+-- Name: linestringfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION linestringfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'LINESTRING'
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.linestringfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 265 (class 1255 OID 18618)
+-- Dependencies: 6 1102 1102
+-- Name: locate_along_measure(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION locate_along_measure(geometry, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT locate_between_measures($1, $2, $2) $_$;
+
+
+ALTER FUNCTION public.locate_along_measure(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 266 (class 1255 OID 18619)
+-- Dependencies: 1102 1102 6
+-- Name: locate_between_measures(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION locate_between_measures(geometry, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_locate_between_m';
+
+
+ALTER FUNCTION public.locate_between_measures(geometry, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 269 (class 1255 OID 18622)
+-- Dependencies: 6
+-- Name: lockrow(text, text, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION lockrow(text, text, text) RETURNS integer
+ LANGUAGE sql STRICT
+ AS $_$ SELECT LockRow(current_schema(), $1, $2, $3, now()::timestamp+'1:00'); $_$;
+
+
+ALTER FUNCTION public.lockrow(text, text, text) OWNER TO postgres;
+
+--
+-- TOC entry 268 (class 1255 OID 18621)
+-- Dependencies: 6
+-- Name: lockrow(text, text, text, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION lockrow(text, text, text, text) RETURNS integer
+ LANGUAGE sql STRICT
+ AS $_$ SELECT LockRow($1, $2, $3, $4, now()::timestamp+'1:00'); $_$;
+
+
+ALTER FUNCTION public.lockrow(text, text, text, text) OWNER TO postgres;
+
+--
+-- TOC entry 270 (class 1255 OID 18623)
+-- Dependencies: 6
+-- Name: lockrow(text, text, text, timestamp without time zone); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION lockrow(text, text, text, timestamp without time zone) RETURNS integer
+ LANGUAGE sql STRICT
+ AS $_$ SELECT LockRow(current_schema(), $1, $2, $3, $4); $_$;
+
+
+ALTER FUNCTION public.lockrow(text, text, text, timestamp without time zone) OWNER TO postgres;
+
+--
+-- TOC entry 267 (class 1255 OID 18620)
+-- Dependencies: 6 1168
+-- Name: lockrow(text, text, text, text, timestamp without time zone); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION lockrow(text, text, text, text, timestamp without time zone) RETURNS integer
+ LANGUAGE plpgsql STRICT
+ AS $_$
+DECLARE
+ myschema alias for $1;
+ mytable alias for $2;
+ myrid alias for $3;
+ authid alias for $4;
+ expires alias for $5;
+ ret int;
+ mytoid oid;
+ myrec RECORD;
+
+BEGIN
+
+ IF NOT LongTransactionsEnabled() THEN
+ RAISE EXCEPTION 'Long transaction support disabled, use EnableLongTransaction() to enable.';
+ END IF;
+
+ EXECUTE 'DELETE FROM authorization_table WHERE expires < now()';
+
+ SELECT c.oid INTO mytoid FROM pg_class c, pg_namespace n
+ WHERE c.relname = mytable
+ AND c.relnamespace = n.oid
+ AND n.nspname = myschema;
+
+ -- RAISE NOTICE 'toid: %', mytoid;
+
+ FOR myrec IN SELECT * FROM authorization_table WHERE
+ toid = mytoid AND rid = myrid
+ LOOP
+ IF myrec.authid != authid THEN
+ RETURN 0;
+ ELSE
+ RETURN 1;
+ END IF;
+ END LOOP;
+
+ EXECUTE 'INSERT INTO authorization_table VALUES ('||
+ quote_literal(mytoid::text)||','||quote_literal(myrid)||
+ ','||quote_literal(expires::text)||
+ ','||quote_literal(authid) ||')';
+
+ GET DIAGNOSTICS ret = ROW_COUNT;
+
+ RETURN ret;
+END;
+$_$;
+
+
+ALTER FUNCTION public.lockrow(text, text, text, text, timestamp without time zone) OWNER TO postgres;
+
+--
+-- TOC entry 271 (class 1255 OID 18624)
+-- Dependencies: 1168 6
+-- Name: longtransactionsenabled(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION longtransactionsenabled() RETURNS boolean
+ LANGUAGE plpgsql
+ AS $$
+DECLARE
+ rec RECORD;
+BEGIN
+ FOR rec IN SELECT oid FROM pg_class WHERE relname = 'authorized_tables'
+ LOOP
+ return 't';
+ END LOOP;
+ return 'f';
+END;
+$$;
+
+
+ALTER FUNCTION public.longtransactionsenabled() OWNER TO postgres;
+
+--
+-- TOC entry 272 (class 1255 OID 18625)
+-- Dependencies: 6
+-- Name: lwgeom_gist_compress(internal); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION lwgeom_gist_compress(internal) RETURNS internal
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'LWGEOM_gist_compress';
+
+
+ALTER FUNCTION public.lwgeom_gist_compress(internal) OWNER TO postgres;
+
+--
+-- TOC entry 273 (class 1255 OID 18626)
+-- Dependencies: 6 1102
+-- Name: lwgeom_gist_consistent(internal, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION lwgeom_gist_consistent(internal, geometry, integer) RETURNS boolean
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'LWGEOM_gist_consistent';
+
+
+ALTER FUNCTION public.lwgeom_gist_consistent(internal, geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 274 (class 1255 OID 18627)
+-- Dependencies: 6
+-- Name: lwgeom_gist_decompress(internal); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION lwgeom_gist_decompress(internal) RETURNS internal
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'LWGEOM_gist_decompress';
+
+
+ALTER FUNCTION public.lwgeom_gist_decompress(internal) OWNER TO postgres;
+
+--
+-- TOC entry 275 (class 1255 OID 18628)
+-- Dependencies: 6
+-- Name: lwgeom_gist_penalty(internal, internal, internal); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION lwgeom_gist_penalty(internal, internal, internal) RETURNS internal
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'LWGEOM_gist_penalty';
+
+
+ALTER FUNCTION public.lwgeom_gist_penalty(internal, internal, internal) OWNER TO postgres;
+
+--
+-- TOC entry 276 (class 1255 OID 18629)
+-- Dependencies: 6
+-- Name: lwgeom_gist_picksplit(internal, internal); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION lwgeom_gist_picksplit(internal, internal) RETURNS internal
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'LWGEOM_gist_picksplit';
+
+
+ALTER FUNCTION public.lwgeom_gist_picksplit(internal, internal) OWNER TO postgres;
+
+--
+-- TOC entry 277 (class 1255 OID 18630)
+-- Dependencies: 6 1087 1087
+-- Name: lwgeom_gist_same(box2d, box2d, internal); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION lwgeom_gist_same(box2d, box2d, internal) RETURNS internal
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'LWGEOM_gist_same';
+
+
+ALTER FUNCTION public.lwgeom_gist_same(box2d, box2d, internal) OWNER TO postgres;
+
+--
+-- TOC entry 278 (class 1255 OID 18631)
+-- Dependencies: 6
+-- Name: lwgeom_gist_union(bytea, internal); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION lwgeom_gist_union(bytea, internal) RETURNS internal
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'LWGEOM_gist_union';
+
+
+ALTER FUNCTION public.lwgeom_gist_union(bytea, internal) OWNER TO postgres;
+
+--
+-- TOC entry 279 (class 1255 OID 18632)
+-- Dependencies: 6 1102
+-- Name: m(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION m(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_m_point';
+
+
+ALTER FUNCTION public.m(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 280 (class 1255 OID 18633)
+-- Dependencies: 1102 6 1087 1102
+-- Name: makebox2d(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION makebox2d(geometry, geometry) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_construct';
+
+
+ALTER FUNCTION public.makebox2d(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 281 (class 1255 OID 18634)
+-- Dependencies: 1090 6 1102 1102
+-- Name: makebox3d(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION makebox3d(geometry, geometry) RETURNS box3d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_construct';
+
+
+ALTER FUNCTION public.makebox3d(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 282 (class 1255 OID 18635)
+-- Dependencies: 6 1102 1102 1102
+-- Name: makeline(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION makeline(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makeline';
+
+
+ALTER FUNCTION public.makeline(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 283 (class 1255 OID 18636)
+-- Dependencies: 6 1102 1104
+-- Name: makeline_garray(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION makeline_garray(geometry[]) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makeline_garray';
+
+
+ALTER FUNCTION public.makeline_garray(geometry[]) OWNER TO postgres;
+
+--
+-- TOC entry 284 (class 1255 OID 18637)
+-- Dependencies: 6 1102
+-- Name: makepoint(double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION makepoint(double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makepoint';
+
+
+ALTER FUNCTION public.makepoint(double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 285 (class 1255 OID 18638)
+-- Dependencies: 6 1102
+-- Name: makepoint(double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION makepoint(double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makepoint';
+
+
+ALTER FUNCTION public.makepoint(double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 286 (class 1255 OID 18639)
+-- Dependencies: 6 1102
+-- Name: makepoint(double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION makepoint(double precision, double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makepoint';
+
+
+ALTER FUNCTION public.makepoint(double precision, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 287 (class 1255 OID 18640)
+-- Dependencies: 6 1102
+-- Name: makepointm(double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION makepointm(double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makepoint3dm';
+
+
+ALTER FUNCTION public.makepointm(double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 289 (class 1255 OID 18642)
+-- Dependencies: 6 1102 1102
+-- Name: makepolygon(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION makepolygon(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makepoly';
+
+
+ALTER FUNCTION public.makepolygon(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 288 (class 1255 OID 18641)
+-- Dependencies: 1104 6 1102 1102
+-- Name: makepolygon(geometry, geometry[]); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION makepolygon(geometry, geometry[]) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makepoly';
+
+
+ALTER FUNCTION public.makepolygon(geometry, geometry[]) OWNER TO postgres;
+
+--
+-- TOC entry 290 (class 1255 OID 18643)
+-- Dependencies: 1102 1102 6
+-- Name: max_distance(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION max_distance(geometry, geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_maxdistance2d_linestring';
+
+
+ALTER FUNCTION public.max_distance(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 291 (class 1255 OID 18644)
+-- Dependencies: 6 1102
+-- Name: mem_size(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION mem_size(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_mem_size';
+
+
+ALTER FUNCTION public.mem_size(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 293 (class 1255 OID 18646)
+-- Dependencies: 6 1102
+-- Name: mlinefromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION mlinefromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = 'MULTILINESTRING'
+ THEN GeomFromText($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.mlinefromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 292 (class 1255 OID 18645)
+-- Dependencies: 6 1102
+-- Name: mlinefromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION mlinefromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE
+ WHEN geometrytype(GeomFromText($1, $2)) = 'MULTILINESTRING'
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.mlinefromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 295 (class 1255 OID 18648)
+-- Dependencies: 6 1102
+-- Name: mlinefromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION mlinefromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'MULTILINESTRING'
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.mlinefromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 294 (class 1255 OID 18647)
+-- Dependencies: 1102 6
+-- Name: mlinefromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION mlinefromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'MULTILINESTRING'
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.mlinefromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 297 (class 1255 OID 18650)
+-- Dependencies: 6 1102
+-- Name: mpointfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION mpointfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = 'MULTIPOINT'
+ THEN GeomFromText($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.mpointfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 296 (class 1255 OID 18649)
+-- Dependencies: 6 1102
+-- Name: mpointfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION mpointfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromText($1,$2)) = 'MULTIPOINT'
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.mpointfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 299 (class 1255 OID 18652)
+-- Dependencies: 6 1102
+-- Name: mpointfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION mpointfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'MULTIPOINT'
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.mpointfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 298 (class 1255 OID 18651)
+-- Dependencies: 6 1102
+-- Name: mpointfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION mpointfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = 'MULTIPOINT'
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.mpointfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 301 (class 1255 OID 18654)
+-- Dependencies: 6 1102
+-- Name: mpolyfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION mpolyfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = 'MULTIPOLYGON'
+ THEN GeomFromText($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.mpolyfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 300 (class 1255 OID 18653)
+-- Dependencies: 1102 6
+-- Name: mpolyfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION mpolyfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = 'MULTIPOLYGON'
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.mpolyfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 303 (class 1255 OID 18656)
+-- Dependencies: 1102 6
+-- Name: mpolyfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION mpolyfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'MULTIPOLYGON'
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.mpolyfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 302 (class 1255 OID 18655)
+-- Dependencies: 1102 6
+-- Name: mpolyfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION mpolyfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'MULTIPOLYGON'
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.mpolyfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 304 (class 1255 OID 18657)
+-- Dependencies: 1102 6 1102
+-- Name: multi(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION multi(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_force_multi';
+
+
+ALTER FUNCTION public.multi(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 306 (class 1255 OID 18659)
+-- Dependencies: 1102 6
+-- Name: multilinefromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION multilinefromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'MULTILINESTRING'
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.multilinefromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 305 (class 1255 OID 18658)
+-- Dependencies: 1102 6
+-- Name: multilinefromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION multilinefromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'MULTILINESTRING'
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.multilinefromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 307 (class 1255 OID 18660)
+-- Dependencies: 1102 6
+-- Name: multilinestringfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION multilinestringfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT ST_MLineFromText($1)$_$;
+
+
+ALTER FUNCTION public.multilinestringfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 308 (class 1255 OID 18661)
+-- Dependencies: 1102 6
+-- Name: multilinestringfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION multilinestringfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT MLineFromText($1, $2)$_$;
+
+
+ALTER FUNCTION public.multilinestringfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 310 (class 1255 OID 18663)
+-- Dependencies: 1102 6
+-- Name: multipointfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION multipointfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT MPointFromText($1)$_$;
+
+
+ALTER FUNCTION public.multipointfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 309 (class 1255 OID 18662)
+-- Dependencies: 1102 6
+-- Name: multipointfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION multipointfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT MPointFromText($1, $2)$_$;
+
+
+ALTER FUNCTION public.multipointfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 312 (class 1255 OID 18665)
+-- Dependencies: 1102 6
+-- Name: multipointfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION multipointfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'MULTIPOINT'
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.multipointfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 311 (class 1255 OID 18664)
+-- Dependencies: 6 1102
+-- Name: multipointfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION multipointfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = 'MULTIPOINT'
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.multipointfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 314 (class 1255 OID 18667)
+-- Dependencies: 6 1102
+-- Name: multipolyfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION multipolyfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'MULTIPOLYGON'
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.multipolyfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 313 (class 1255 OID 18666)
+-- Dependencies: 6 1102
+-- Name: multipolyfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION multipolyfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'MULTIPOLYGON'
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.multipolyfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 316 (class 1255 OID 18669)
+-- Dependencies: 1102 6
+-- Name: multipolygonfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION multipolygonfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT MPolyFromText($1)$_$;
+
+
+ALTER FUNCTION public.multipolygonfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 315 (class 1255 OID 18668)
+-- Dependencies: 6 1102
+-- Name: multipolygonfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION multipolygonfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT MPolyFromText($1, $2)$_$;
+
+
+ALTER FUNCTION public.multipolygonfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 317 (class 1255 OID 18670)
+-- Dependencies: 6 1102
+-- Name: ndims(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION ndims(geometry) RETURNS smallint
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_ndims';
+
+
+ALTER FUNCTION public.ndims(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 318 (class 1255 OID 18671)
+-- Dependencies: 6 1102 1102
+-- Name: noop(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION noop(geometry) RETURNS geometry
+ LANGUAGE c STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_noop';
+
+
+ALTER FUNCTION public.noop(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 319 (class 1255 OID 18672)
+-- Dependencies: 6 1102
+-- Name: npoints(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION npoints(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_npoints';
+
+
+ALTER FUNCTION public.npoints(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 320 (class 1255 OID 18673)
+-- Dependencies: 6 1102
+-- Name: nrings(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION nrings(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_nrings';
+
+
+ALTER FUNCTION public.nrings(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 321 (class 1255 OID 18674)
+-- Dependencies: 6 1102
+-- Name: numgeometries(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION numgeometries(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_numgeometries_collection';
+
+
+ALTER FUNCTION public.numgeometries(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 322 (class 1255 OID 18675)
+-- Dependencies: 6 1102
+-- Name: numinteriorring(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION numinteriorring(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_numinteriorrings_polygon';
+
+
+ALTER FUNCTION public.numinteriorring(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 323 (class 1255 OID 18676)
+-- Dependencies: 6 1102
+-- Name: numinteriorrings(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION numinteriorrings(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_numinteriorrings_polygon';
+
+
+ALTER FUNCTION public.numinteriorrings(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 324 (class 1255 OID 18677)
+-- Dependencies: 6 1102
+-- Name: numpoints(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION numpoints(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_numpoints_linestring';
+
+
+ALTER FUNCTION public.numpoints(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 325 (class 1255 OID 18678)
+-- Dependencies: 6 1102 1102
+-- Name: overlaps(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION "overlaps"(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'overlaps';
+
+
+ALTER FUNCTION public."overlaps"(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 326 (class 1255 OID 18679)
+-- Dependencies: 6 1102
+-- Name: perimeter(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION perimeter(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_perimeter_poly';
+
+
+ALTER FUNCTION public.perimeter(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 327 (class 1255 OID 18680)
+-- Dependencies: 1102 6
+-- Name: perimeter2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION perimeter2d(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_perimeter2d_poly';
+
+
+ALTER FUNCTION public.perimeter2d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 328 (class 1255 OID 18681)
+-- Dependencies: 6 1102
+-- Name: perimeter3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION perimeter3d(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_perimeter_poly';
+
+
+ALTER FUNCTION public.perimeter3d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 329 (class 1255 OID 18682)
+-- Dependencies: 1104 6 1110
+-- Name: pgis_geometry_accum_finalfn(pgis_abs); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION pgis_geometry_accum_finalfn(pgis_abs) RETURNS geometry[]
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'pgis_geometry_accum_finalfn';
+
+
+ALTER FUNCTION public.pgis_geometry_accum_finalfn(pgis_abs) OWNER TO postgres;
+
+--
+-- TOC entry 330 (class 1255 OID 18683)
+-- Dependencies: 1110 6 1110 1102
+-- Name: pgis_geometry_accum_transfn(pgis_abs, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION pgis_geometry_accum_transfn(pgis_abs, geometry) RETURNS pgis_abs
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'pgis_geometry_accum_transfn';
+
+
+ALTER FUNCTION public.pgis_geometry_accum_transfn(pgis_abs, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 331 (class 1255 OID 18684)
+-- Dependencies: 1102 6 1110
+-- Name: pgis_geometry_collect_finalfn(pgis_abs); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION pgis_geometry_collect_finalfn(pgis_abs) RETURNS geometry
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'pgis_geometry_collect_finalfn';
+
+
+ALTER FUNCTION public.pgis_geometry_collect_finalfn(pgis_abs) OWNER TO postgres;
+
+--
+-- TOC entry 332 (class 1255 OID 18685)
+-- Dependencies: 1102 6 1110
+-- Name: pgis_geometry_makeline_finalfn(pgis_abs); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION pgis_geometry_makeline_finalfn(pgis_abs) RETURNS geometry
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'pgis_geometry_makeline_finalfn';
+
+
+ALTER FUNCTION public.pgis_geometry_makeline_finalfn(pgis_abs) OWNER TO postgres;
+
+--
+-- TOC entry 333 (class 1255 OID 18686)
+-- Dependencies: 1110 6 1102
+-- Name: pgis_geometry_polygonize_finalfn(pgis_abs); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION pgis_geometry_polygonize_finalfn(pgis_abs) RETURNS geometry
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'pgis_geometry_polygonize_finalfn';
+
+
+ALTER FUNCTION public.pgis_geometry_polygonize_finalfn(pgis_abs) OWNER TO postgres;
+
+--
+-- TOC entry 334 (class 1255 OID 18687)
+-- Dependencies: 1110 1102 6
+-- Name: pgis_geometry_union_finalfn(pgis_abs); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION pgis_geometry_union_finalfn(pgis_abs) RETURNS geometry
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'pgis_geometry_union_finalfn';
+
+
+ALTER FUNCTION public.pgis_geometry_union_finalfn(pgis_abs) OWNER TO postgres;
+
+--
+-- TOC entry 335 (class 1255 OID 18688)
+-- Dependencies: 1102 6
+-- Name: point_inside_circle(geometry, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION point_inside_circle(geometry, double precision, double precision, double precision) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_inside_circle_point';
+
+
+ALTER FUNCTION public.point_inside_circle(geometry, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 336 (class 1255 OID 18689)
+-- Dependencies: 6 1102
+-- Name: pointfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION pointfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = 'POINT'
+ THEN GeomFromText($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.pointfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 337 (class 1255 OID 18690)
+-- Dependencies: 6 1102
+-- Name: pointfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION pointfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = 'POINT'
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.pointfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 339 (class 1255 OID 18692)
+-- Dependencies: 6 1102
+-- Name: pointfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION pointfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'POINT'
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.pointfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 338 (class 1255 OID 18691)
+-- Dependencies: 1102 6
+-- Name: pointfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION pointfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'POINT'
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.pointfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 340 (class 1255 OID 18693)
+-- Dependencies: 6 1102 1102
+-- Name: pointn(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION pointn(geometry, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_pointn_linestring';
+
+
+ALTER FUNCTION public.pointn(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 341 (class 1255 OID 18694)
+-- Dependencies: 6 1102 1102
+-- Name: pointonsurface(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION pointonsurface(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'pointonsurface';
+
+
+ALTER FUNCTION public.pointonsurface(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 342 (class 1255 OID 18695)
+-- Dependencies: 6 1102
+-- Name: polyfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION polyfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromText($1)) = 'POLYGON'
+ THEN GeomFromText($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.polyfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 343 (class 1255 OID 18696)
+-- Dependencies: 6 1102
+-- Name: polyfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION polyfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = 'POLYGON'
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.polyfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 345 (class 1255 OID 18698)
+-- Dependencies: 6 1102
+-- Name: polyfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION polyfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'POLYGON'
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.polyfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 344 (class 1255 OID 18697)
+-- Dependencies: 1102 6
+-- Name: polyfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION polyfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'POLYGON'
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.polyfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 347 (class 1255 OID 18700)
+-- Dependencies: 6 1102
+-- Name: polygonfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION polygonfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT PolyFromText($1)$_$;
+
+
+ALTER FUNCTION public.polygonfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 346 (class 1255 OID 18699)
+-- Dependencies: 6 1102
+-- Name: polygonfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION polygonfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT PolyFromText($1, $2)$_$;
+
+
+ALTER FUNCTION public.polygonfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 349 (class 1255 OID 18702)
+-- Dependencies: 1102 6
+-- Name: polygonfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION polygonfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'POLYGON'
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.polygonfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 348 (class 1255 OID 18701)
+-- Dependencies: 6 1102
+-- Name: polygonfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION polygonfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1,$2)) = 'POLYGON'
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.polygonfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 350 (class 1255 OID 18703)
+-- Dependencies: 6 1102 1104
+-- Name: polygonize_garray(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION polygonize_garray(geometry[]) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'polygonize_garray';
+
+
+ALTER FUNCTION public.polygonize_garray(geometry[]) OWNER TO postgres;
+
+--
+-- TOC entry 351 (class 1255 OID 18704)
+-- Dependencies: 6 1168
+-- Name: populate_geometry_columns(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION populate_geometry_columns() RETURNS text
+ LANGUAGE plpgsql
+ AS $$
+DECLARE
+ inserted integer;
+ oldcount integer;
+ probed integer;
+ stale integer;
+ gcs RECORD;
+ gc RECORD;
+ gsrid integer;
+ gndims integer;
+ gtype text;
+ query text;
+ gc_is_valid boolean;
+
+BEGIN
+ SELECT count(*) INTO oldcount FROM geometry_columns;
+ inserted := 0;
+
+ EXECUTE 'TRUNCATE geometry_columns';
+
+ -- Count the number of geometry columns in all tables and views
+ SELECT count(DISTINCT c.oid) INTO probed
+ FROM pg_class c,
+ pg_attribute a,
+ pg_type t,
+ pg_namespace n
+ WHERE (c.relkind = 'r' OR c.relkind = 'v')
+ AND t.typname = 'geometry'
+ AND a.attisdropped = false
+ AND a.atttypid = t.oid
+ AND a.attrelid = c.oid
+ AND c.relnamespace = n.oid
+ AND n.nspname NOT ILIKE 'pg_temp%';
+
+ -- Iterate through all non-dropped geometry columns
+ RAISE DEBUG 'Processing Tables.....';
+
+ FOR gcs IN
+ SELECT DISTINCT ON (c.oid) c.oid, n.nspname, c.relname
+ FROM pg_class c,
+ pg_attribute a,
+ pg_type t,
+ pg_namespace n
+ WHERE c.relkind = 'r'
+ AND t.typname = 'geometry'
+ AND a.attisdropped = false
+ AND a.atttypid = t.oid
+ AND a.attrelid = c.oid
+ AND c.relnamespace = n.oid
+ AND n.nspname NOT ILIKE 'pg_temp%'
+ LOOP
+
+ inserted := inserted + populate_geometry_columns(gcs.oid);
+ END LOOP;
+
+ -- Add views to geometry columns table
+ RAISE DEBUG 'Processing Views.....';
+ FOR gcs IN
+ SELECT DISTINCT ON (c.oid) c.oid, n.nspname, c.relname
+ FROM pg_class c,
+ pg_attribute a,
+ pg_type t,
+ pg_namespace n
+ WHERE c.relkind = 'v'
+ AND t.typname = 'geometry'
+ AND a.attisdropped = false
+ AND a.atttypid = t.oid
+ AND a.attrelid = c.oid
+ AND c.relnamespace = n.oid
+ LOOP
+
+ inserted := inserted + populate_geometry_columns(gcs.oid);
+ END LOOP;
+
+ IF oldcount > inserted THEN
+ stale = oldcount-inserted;
+ ELSE
+ stale = 0;
+ END IF;
+
+ RETURN 'probed:' ||probed|| ' inserted:'||inserted|| ' conflicts:'||probed-inserted|| ' deleted:'||stale;
+END
+
+$$;
+
+
+ALTER FUNCTION public.populate_geometry_columns() OWNER TO postgres;
+
+--
+-- TOC entry 352 (class 1255 OID 18705)
+-- Dependencies: 6 1168
+-- Name: populate_geometry_columns(oid); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION populate_geometry_columns(tbl_oid oid) RETURNS integer
+ LANGUAGE plpgsql
+ AS $$
+DECLARE
+ gcs RECORD;
+ gc RECORD;
+ gsrid integer;
+ gndims integer;
+ gtype text;
+ query text;
+ gc_is_valid boolean;
+ inserted integer;
+
+BEGIN
+ inserted := 0;
+
+ -- Iterate through all geometry columns in this table
+ FOR gcs IN
+ SELECT n.nspname, c.relname, a.attname
+ FROM pg_class c,
+ pg_attribute a,
+ pg_type t,
+ pg_namespace n
+ WHERE c.relkind = 'r'
+ AND t.typname = 'geometry'
+ AND a.attisdropped = false
+ AND a.atttypid = t.oid
+ AND a.attrelid = c.oid
+ AND c.relnamespace = n.oid
+ AND n.nspname NOT ILIKE 'pg_temp%'
+ AND c.oid = tbl_oid
+ LOOP
+
+ RAISE DEBUG 'Processing table %.%.%', gcs.nspname, gcs.relname, gcs.attname;
+
+ DELETE FROM geometry_columns
+ WHERE f_table_schema = quote_ident(gcs.nspname)
+ AND f_table_name = quote_ident(gcs.relname)
+ AND f_geometry_column = quote_ident(gcs.attname);
+
+ gc_is_valid := true;
+
+ -- Try to find srid check from system tables (pg_constraint)
+ gsrid :=
+ (SELECT replace(replace(split_part(s.consrc, ' = ', 2), ')', ''), '(', '')
+ FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
+ WHERE n.nspname = gcs.nspname
+ AND c.relname = gcs.relname
+ AND a.attname = gcs.attname
+ AND a.attrelid = c.oid
+ AND s.connamespace = n.oid
+ AND s.conrelid = c.oid
+ AND a.attnum = ANY (s.conkey)
+ AND s.consrc LIKE '%srid(% = %');
+ IF (gsrid IS NULL) THEN
+ -- Try to find srid from the geometry itself
+ EXECUTE 'SELECT srid(' || quote_ident(gcs.attname) || ')
+ FROM ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || '
+ WHERE ' || quote_ident(gcs.attname) || ' IS NOT NULL LIMIT 1'
+ INTO gc;
+ gsrid := gc.srid;
+
+ -- Try to apply srid check to column
+ IF (gsrid IS NOT NULL) THEN
+ BEGIN
+ EXECUTE 'ALTER TABLE ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || '
+ ADD CONSTRAINT ' || quote_ident('enforce_srid_' || gcs.attname) || '
+ CHECK (srid(' || quote_ident(gcs.attname) || ') = ' || gsrid || ')';
+ EXCEPTION
+ WHEN check_violation THEN
+ RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not apply constraint CHECK (srid(%) = %)', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname), quote_ident(gcs.attname), gsrid;
+ gc_is_valid := false;
+ END;
+ END IF;
+ END IF;
+
+ -- Try to find ndims check from system tables (pg_constraint)
+ gndims :=
+ (SELECT replace(split_part(s.consrc, ' = ', 2), ')', '')
+ FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
+ WHERE n.nspname = gcs.nspname
+ AND c.relname = gcs.relname
+ AND a.attname = gcs.attname
+ AND a.attrelid = c.oid
+ AND s.connamespace = n.oid
+ AND s.conrelid = c.oid
+ AND a.attnum = ANY (s.conkey)
+ AND s.consrc LIKE '%ndims(% = %');
+ IF (gndims IS NULL) THEN
+ -- Try to find ndims from the geometry itself
+ EXECUTE 'SELECT ndims(' || quote_ident(gcs.attname) || ')
+ FROM ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || '
+ WHERE ' || quote_ident(gcs.attname) || ' IS NOT NULL LIMIT 1'
+ INTO gc;
+ gndims := gc.ndims;
+
+ -- Try to apply ndims check to column
+ IF (gndims IS NOT NULL) THEN
+ BEGIN
+ EXECUTE 'ALTER TABLE ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || '
+ ADD CONSTRAINT ' || quote_ident('enforce_dims_' || gcs.attname) || '
+ CHECK (ndims(' || quote_ident(gcs.attname) || ') = '||gndims||')';
+ EXCEPTION
+ WHEN check_violation THEN
+ RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not apply constraint CHECK (ndims(%) = %)', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname), quote_ident(gcs.attname), gndims;
+ gc_is_valid := false;
+ END;
+ END IF;
+ END IF;
+
+ -- Try to find geotype check from system tables (pg_constraint)
+ gtype :=
+ (SELECT replace(split_part(s.consrc, '''', 2), ')', '')
+ FROM pg_class c, pg_namespace n, pg_attribute a, pg_constraint s
+ WHERE n.nspname = gcs.nspname
+ AND c.relname = gcs.relname
+ AND a.attname = gcs.attname
+ AND a.attrelid = c.oid
+ AND s.connamespace = n.oid
+ AND s.conrelid = c.oid
+ AND a.attnum = ANY (s.conkey)
+ AND s.consrc LIKE '%geometrytype(% = %');
+ IF (gtype IS NULL) THEN
+ -- Try to find geotype from the geometry itself
+ EXECUTE 'SELECT geometrytype(' || quote_ident(gcs.attname) || ')
+ FROM ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || '
+ WHERE ' || quote_ident(gcs.attname) || ' IS NOT NULL LIMIT 1'
+ INTO gc;
+ gtype := gc.geometrytype;
+ --IF (gtype IS NULL) THEN
+ -- gtype := 'GEOMETRY';
+ --END IF;
+
+ -- Try to apply geometrytype check to column
+ IF (gtype IS NOT NULL) THEN
+ BEGIN
+ EXECUTE 'ALTER TABLE ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || '
+ ADD CONSTRAINT ' || quote_ident('enforce_geotype_' || gcs.attname) || '
+ CHECK ((geometrytype(' || quote_ident(gcs.attname) || ') = ' || quote_literal(gtype) || ') OR (' || quote_ident(gcs.attname) || ' IS NULL))';
+ EXCEPTION
+ WHEN check_violation THEN
+ -- No geometry check can be applied. This column contains a number of geometry types.
+ RAISE WARNING 'Could not add geometry type check (%) to table column: %.%.%', gtype, quote_ident(gcs.nspname),quote_ident(gcs.relname),quote_ident(gcs.attname);
+ END;
+ END IF;
+ END IF;
+
+ IF (gsrid IS NULL) THEN
+ RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not determine the srid', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname);
+ ELSIF (gndims IS NULL) THEN
+ RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not determine the number of dimensions', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname);
+ ELSIF (gtype IS NULL) THEN
+ RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not determine the geometry type', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname);
+ ELSE
+ -- Only insert into geometry_columns if table constraints could be applied.
+ IF (gc_is_valid) THEN
+ INSERT INTO geometry_columns (f_table_catalog,f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
+ VALUES ('', gcs.nspname, gcs.relname, gcs.attname, gndims, gsrid, gtype);
+ inserted := inserted + 1;
+ END IF;
+ END IF;
+ END LOOP;
+
+ -- Add views to geometry columns table
+ FOR gcs IN
+ SELECT n.nspname, c.relname, a.attname
+ FROM pg_class c,
+ pg_attribute a,
+ pg_type t,
+ pg_namespace n
+ WHERE c.relkind = 'v'
+ AND t.typname = 'geometry'
+ AND a.attisdropped = false
+ AND a.atttypid = t.oid
+ AND a.attrelid = c.oid
+ AND c.relnamespace = n.oid
+ AND n.nspname NOT ILIKE 'pg_temp%'
+ AND c.oid = tbl_oid
+ LOOP
+ RAISE DEBUG 'Processing view %.%.%', gcs.nspname, gcs.relname, gcs.attname;
+
+ EXECUTE 'SELECT ndims(' || quote_ident(gcs.attname) || ')
+ FROM ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || '
+ WHERE ' || quote_ident(gcs.attname) || ' IS NOT NULL LIMIT 1'
+ INTO gc;
+ gndims := gc.ndims;
+
+ EXECUTE 'SELECT srid(' || quote_ident(gcs.attname) || ')
+ FROM ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || '
+ WHERE ' || quote_ident(gcs.attname) || ' IS NOT NULL LIMIT 1'
+ INTO gc;
+ gsrid := gc.srid;
+
+ EXECUTE 'SELECT geometrytype(' || quote_ident(gcs.attname) || ')
+ FROM ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || '
+ WHERE ' || quote_ident(gcs.attname) || ' IS NOT NULL LIMIT 1'
+ INTO gc;
+ gtype := gc.geometrytype;
+
+ IF (gndims IS NULL) THEN
+ RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not determine ndims', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname);
+ ELSIF (gsrid IS NULL) THEN
+ RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not determine srid', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname);
+ ELSIF (gtype IS NULL) THEN
+ RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not determine gtype', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname);
+ ELSE
+ query := 'INSERT INTO geometry_columns (f_table_catalog,f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type) ' ||
+ 'VALUES ('''', ' || quote_literal(gcs.nspname) || ',' || quote_literal(gcs.relname) || ',' || quote_literal(gcs.attname) || ',' || gndims || ',' || gsrid || ',' || quote_literal(gtype) || ')';
+ EXECUTE query;
+ inserted := inserted + 1;
+ END IF;
+ END LOOP;
+
+ RETURN inserted;
+END
+
+$$;
+
+
+ALTER FUNCTION public.populate_geometry_columns(tbl_oid oid) OWNER TO postgres;
+
+--
+-- TOC entry 353 (class 1255 OID 18707)
+-- Dependencies: 6 1102 1102
+-- Name: postgis_addbbox(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_addbbox(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_addBBOX';
+
+
+ALTER FUNCTION public.postgis_addbbox(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 354 (class 1255 OID 18708)
+-- Dependencies: 6
+-- Name: postgis_cache_bbox(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_cache_bbox() RETURNS trigger
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'cache_bbox';
+
+
+ALTER FUNCTION public.postgis_cache_bbox() OWNER TO postgres;
+
+--
+-- TOC entry 355 (class 1255 OID 18709)
+-- Dependencies: 1102 1102 6
+-- Name: postgis_dropbbox(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_dropbbox(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_dropBBOX';
+
+
+ALTER FUNCTION public.postgis_dropbbox(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 356 (class 1255 OID 18710)
+-- Dependencies: 6 1168
+-- Name: postgis_full_version(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_full_version() RETURNS text
+ LANGUAGE plpgsql IMMUTABLE
+ AS $$
+DECLARE
+ libver text;
+ projver text;
+ geosver text;
+ libxmlver text;
+ usestats bool;
+ dbproc text;
+ relproc text;
+ fullver text;
+BEGIN
+ SELECT postgis_lib_version() INTO libver;
+ SELECT postgis_proj_version() INTO projver;
+ SELECT postgis_geos_version() INTO geosver;
+ SELECT postgis_libxml_version() INTO libxmlver;
+ SELECT postgis_uses_stats() INTO usestats;
+ SELECT postgis_scripts_installed() INTO dbproc;
+ SELECT postgis_scripts_released() INTO relproc;
+
+ fullver = 'POSTGIS="' || libver || '"';
+
+ IF geosver IS NOT NULL THEN
+ fullver = fullver || ' GEOS="' || geosver || '"';
+ END IF;
+
+ IF projver IS NOT NULL THEN
+ fullver = fullver || ' PROJ="' || projver || '"';
+ END IF;
+
+ IF libxmlver IS NOT NULL THEN
+ fullver = fullver || ' LIBXML="' || libxmlver || '"';
+ END IF;
+
+ IF usestats THEN
+ fullver = fullver || ' USE_STATS';
+ END IF;
+
+ -- fullver = fullver || ' DBPROC="' || dbproc || '"';
+ -- fullver = fullver || ' RELPROC="' || relproc || '"';
+
+ IF dbproc != relproc THEN
+ fullver = fullver || ' (procs from ' || dbproc || ' need upgrade)';
+ END IF;
+
+ RETURN fullver;
+END
+$$;
+
+
+ALTER FUNCTION public.postgis_full_version() OWNER TO postgres;
+
+--
+-- TOC entry 357 (class 1255 OID 18711)
+-- Dependencies: 6
+-- Name: postgis_geos_version(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_geos_version() RETURNS text
+ LANGUAGE c IMMUTABLE
+ AS '$libdir/postgis-1.5', 'postgis_geos_version';
+
+
+ALTER FUNCTION public.postgis_geos_version() OWNER TO postgres;
+
+--
+-- TOC entry 358 (class 1255 OID 18712)
+-- Dependencies: 1102 6 1087
+-- Name: postgis_getbbox(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_getbbox(geometry) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_to_BOX2DFLOAT4';
+
+
+ALTER FUNCTION public.postgis_getbbox(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 359 (class 1255 OID 18713)
+-- Dependencies: 6
+-- Name: postgis_gist_joinsel(internal, oid, internal, smallint); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_gist_joinsel(internal, oid, internal, smallint) RETURNS double precision
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'LWGEOM_gist_joinsel';
+
+
+ALTER FUNCTION public.postgis_gist_joinsel(internal, oid, internal, smallint) OWNER TO postgres;
+
+--
+-- TOC entry 360 (class 1255 OID 18714)
+-- Dependencies: 6
+-- Name: postgis_gist_sel(internal, oid, internal, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_gist_sel(internal, oid, internal, integer) RETURNS double precision
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'LWGEOM_gist_sel';
+
+
+ALTER FUNCTION public.postgis_gist_sel(internal, oid, internal, integer) OWNER TO postgres;
+
+--
+-- TOC entry 361 (class 1255 OID 18715)
+-- Dependencies: 1102 6
+-- Name: postgis_hasbbox(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_hasbbox(geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_hasBBOX';
+
+
+ALTER FUNCTION public.postgis_hasbbox(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 362 (class 1255 OID 18716)
+-- Dependencies: 6
+-- Name: postgis_lib_build_date(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_lib_build_date() RETURNS text
+ LANGUAGE c IMMUTABLE
+ AS '$libdir/postgis-1.5', 'postgis_lib_build_date';
+
+
+ALTER FUNCTION public.postgis_lib_build_date() OWNER TO postgres;
+
+--
+-- TOC entry 363 (class 1255 OID 18717)
+-- Dependencies: 6
+-- Name: postgis_lib_version(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_lib_version() RETURNS text
+ LANGUAGE c IMMUTABLE
+ AS '$libdir/postgis-1.5', 'postgis_lib_version';
+
+
+ALTER FUNCTION public.postgis_lib_version() OWNER TO postgres;
+
+--
+-- TOC entry 364 (class 1255 OID 18718)
+-- Dependencies: 6
+-- Name: postgis_libxml_version(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_libxml_version() RETURNS text
+ LANGUAGE c IMMUTABLE
+ AS '$libdir/postgis-1.5', 'postgis_libxml_version';
+
+
+ALTER FUNCTION public.postgis_libxml_version() OWNER TO postgres;
+
+--
+-- TOC entry 365 (class 1255 OID 18719)
+-- Dependencies: 1102 6 1102
+-- Name: postgis_noop(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_noop(geometry) RETURNS geometry
+ LANGUAGE c STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_noop';
+
+
+ALTER FUNCTION public.postgis_noop(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 366 (class 1255 OID 18720)
+-- Dependencies: 6
+-- Name: postgis_proj_version(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_proj_version() RETURNS text
+ LANGUAGE c IMMUTABLE
+ AS '$libdir/postgis-1.5', 'postgis_proj_version';
+
+
+ALTER FUNCTION public.postgis_proj_version() OWNER TO postgres;
+
+--
+-- TOC entry 367 (class 1255 OID 18721)
+-- Dependencies: 6
+-- Name: postgis_scripts_build_date(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_scripts_build_date() RETURNS text
+ LANGUAGE sql IMMUTABLE
+ AS $$SELECT '2010-03-11 19:15:17'::text AS version$$;
+
+
+ALTER FUNCTION public.postgis_scripts_build_date() OWNER TO postgres;
+
+--
+-- TOC entry 368 (class 1255 OID 18722)
+-- Dependencies: 6
+-- Name: postgis_scripts_installed(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_scripts_installed() RETURNS text
+ LANGUAGE sql IMMUTABLE
+ AS $$SELECT '1.5 r5385'::text AS version$$;
+
+
+ALTER FUNCTION public.postgis_scripts_installed() OWNER TO postgres;
+
+--
+-- TOC entry 369 (class 1255 OID 18723)
+-- Dependencies: 6
+-- Name: postgis_scripts_released(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_scripts_released() RETURNS text
+ LANGUAGE c IMMUTABLE
+ AS '$libdir/postgis-1.5', 'postgis_scripts_released';
+
+
+ALTER FUNCTION public.postgis_scripts_released() OWNER TO postgres;
+
+--
+-- TOC entry 370 (class 1255 OID 18724)
+-- Dependencies: 1102 6 1102
+-- Name: postgis_transform_geometry(geometry, text, text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_transform_geometry(geometry, text, text, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'transform_geom';
+
+
+ALTER FUNCTION public.postgis_transform_geometry(geometry, text, text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 371 (class 1255 OID 18725)
+-- Dependencies: 6
+-- Name: postgis_uses_stats(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_uses_stats() RETURNS boolean
+ LANGUAGE c IMMUTABLE
+ AS '$libdir/postgis-1.5', 'postgis_uses_stats';
+
+
+ALTER FUNCTION public.postgis_uses_stats() OWNER TO postgres;
+
+--
+-- TOC entry 372 (class 1255 OID 18726)
+-- Dependencies: 6
+-- Name: postgis_version(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION postgis_version() RETURNS text
+ LANGUAGE c IMMUTABLE
+ AS '$libdir/postgis-1.5', 'postgis_version';
+
+
+ALTER FUNCTION public.postgis_version() OWNER TO postgres;
+
+--
+-- TOC entry 373 (class 1255 OID 18727)
+-- Dependencies: 6 1168
+-- Name: probe_geometry_columns(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION probe_geometry_columns() RETURNS text
+ LANGUAGE plpgsql
+ AS $$
+DECLARE
+ inserted integer;
+ oldcount integer;
+ probed integer;
+ stale integer;
+BEGIN
+
+ SELECT count(*) INTO oldcount FROM geometry_columns;
+
+ SELECT count(*) INTO probed
+ FROM pg_class c, pg_attribute a, pg_type t,
+ pg_namespace n,
+ pg_constraint sridcheck, pg_constraint typecheck
+
+ WHERE t.typname = 'geometry'
+ AND a.atttypid = t.oid
+ AND a.attrelid = c.oid
+ AND c.relnamespace = n.oid
+ AND sridcheck.connamespace = n.oid
+ AND typecheck.connamespace = n.oid
+ AND sridcheck.conrelid = c.oid
+ AND sridcheck.consrc LIKE '(srid('||a.attname||') = %)'
+ AND typecheck.conrelid = c.oid
+ AND typecheck.consrc LIKE
+ '((geometrytype('||a.attname||') = ''%''::text) OR (% IS NULL))'
+ ;
+
+ INSERT INTO geometry_columns SELECT
+ ''::varchar as f_table_catalogue,
+ n.nspname::varchar as f_table_schema,
+ c.relname::varchar as f_table_name,
+ a.attname::varchar as f_geometry_column,
+ 2 as coord_dimension,
+ trim(both ' =)' from
+ replace(replace(split_part(
+ sridcheck.consrc, ' = ', 2), ')', ''), '(', ''))::integer AS srid,
+ trim(both ' =)''' from substr(typecheck.consrc,
+ strpos(typecheck.consrc, '='),
+ strpos(typecheck.consrc, '::')-
+ strpos(typecheck.consrc, '=')
+ ))::varchar as type
+ FROM pg_class c, pg_attribute a, pg_type t,
+ pg_namespace n,
+ pg_constraint sridcheck, pg_constraint typecheck
+ WHERE t.typname = 'geometry'
+ AND a.atttypid = t.oid
+ AND a.attrelid = c.oid
+ AND c.relnamespace = n.oid
+ AND sridcheck.connamespace = n.oid
+ AND typecheck.connamespace = n.oid
+ AND sridcheck.conrelid = c.oid
+ AND sridcheck.consrc LIKE '(st_srid('||a.attname||') = %)'
+ AND typecheck.conrelid = c.oid
+ AND typecheck.consrc LIKE
+ '((geometrytype('||a.attname||') = ''%''::text) OR (% IS NULL))'
+
+ AND NOT EXISTS (
+ SELECT oid FROM geometry_columns gc
+ WHERE c.relname::varchar = gc.f_table_name
+ AND n.nspname::varchar = gc.f_table_schema
+ AND a.attname::varchar = gc.f_geometry_column
+ );
+
+ GET DIAGNOSTICS inserted = ROW_COUNT;
+
+ IF oldcount > probed THEN
+ stale = oldcount-probed;
+ ELSE
+ stale = 0;
+ END IF;
+
+ RETURN 'probed:'||probed::text||
+ ' inserted:'||inserted::text||
+ ' conflicts:'||(probed-inserted)::text||
+ ' stale:'||stale::text;
+END
+
+$$;
+
+
+ALTER FUNCTION public.probe_geometry_columns() OWNER TO postgres;
+
+--
+-- TOC entry 374 (class 1255 OID 18728)
+-- Dependencies: 6 1102 1102
+-- Name: relate(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION relate(geometry, geometry) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'relate_full';
+
+
+ALTER FUNCTION public.relate(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 375 (class 1255 OID 18729)
+-- Dependencies: 1102 6 1102
+-- Name: relate(geometry, geometry, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION relate(geometry, geometry, text) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'relate_pattern';
+
+
+ALTER FUNCTION public.relate(geometry, geometry, text) OWNER TO postgres;
+
+--
+-- TOC entry 376 (class 1255 OID 18730)
+-- Dependencies: 1102 6 1102
+-- Name: removepoint(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION removepoint(geometry, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_removepoint';
+
+
+ALTER FUNCTION public.removepoint(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 377 (class 1255 OID 18731)
+-- Dependencies: 6
+-- Name: rename_geometry_table_constraints(); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION rename_geometry_table_constraints() RETURNS text
+ LANGUAGE sql IMMUTABLE
+ AS $$
+SELECT 'rename_geometry_table_constraint() is obsoleted'::text
+$$;
+
+
+ALTER FUNCTION public.rename_geometry_table_constraints() OWNER TO postgres;
+
+--
+-- TOC entry 378 (class 1255 OID 18732)
+-- Dependencies: 1102 6 1102
+-- Name: reverse(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION reverse(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_reverse';
+
+
+ALTER FUNCTION public.reverse(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 379 (class 1255 OID 18733)
+-- Dependencies: 1102 6 1102
+-- Name: rotate(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION rotate(geometry, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT rotateZ($1, $2)$_$;
+
+
+ALTER FUNCTION public.rotate(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 380 (class 1255 OID 18734)
+-- Dependencies: 1102 6 1102
+-- Name: rotatex(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION rotatex(geometry, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT affine($1, 1, 0, 0, 0, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0)$_$;
+
+
+ALTER FUNCTION public.rotatex(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 381 (class 1255 OID 18735)
+-- Dependencies: 1102 6 1102
+-- Name: rotatey(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION rotatey(geometry, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT affine($1, cos($2), 0, sin($2), 0, 1, 0, -sin($2), 0, cos($2), 0, 0, 0)$_$;
+
+
+ALTER FUNCTION public.rotatey(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 382 (class 1255 OID 18736)
+-- Dependencies: 1102 6 1102
+-- Name: rotatez(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION rotatez(geometry, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT affine($1, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0, 1, 0, 0, 0)$_$;
+
+
+ALTER FUNCTION public.rotatez(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 384 (class 1255 OID 18738)
+-- Dependencies: 6 1102 1102
+-- Name: scale(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION scale(geometry, double precision, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT scale($1, $2, $3, 1)$_$;
+
+
+ALTER FUNCTION public.scale(geometry, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 383 (class 1255 OID 18737)
+-- Dependencies: 6 1102 1102
+-- Name: scale(geometry, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION scale(geometry, double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT affine($1, $2, 0, 0, 0, $3, 0, 0, 0, $4, 0, 0, 0)$_$;
+
+
+ALTER FUNCTION public.scale(geometry, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 385 (class 1255 OID 18739)
+-- Dependencies: 1102 6 1102
+-- Name: se_envelopesintersect(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION se_envelopesintersect(geometry, geometry) RETURNS boolean
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT $1 && $2
+ $_$;
+
+
+ALTER FUNCTION public.se_envelopesintersect(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 386 (class 1255 OID 18740)
+-- Dependencies: 6 1102
+-- Name: se_is3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION se_is3d(geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_hasz';
+
+
+ALTER FUNCTION public.se_is3d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 387 (class 1255 OID 18741)
+-- Dependencies: 6 1102
+-- Name: se_ismeasured(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION se_ismeasured(geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_hasm';
+
+
+ALTER FUNCTION public.se_ismeasured(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 388 (class 1255 OID 18742)
+-- Dependencies: 1102 6 1102
+-- Name: se_locatealong(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION se_locatealong(geometry, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT locate_between_measures($1, $2, $2) $_$;
+
+
+ALTER FUNCTION public.se_locatealong(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 389 (class 1255 OID 18743)
+-- Dependencies: 1102 6 1102
+-- Name: se_locatebetween(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION se_locatebetween(geometry, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_locate_between_m';
+
+
+ALTER FUNCTION public.se_locatebetween(geometry, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 390 (class 1255 OID 18744)
+-- Dependencies: 6 1102
+-- Name: se_m(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION se_m(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_m_point';
+
+
+ALTER FUNCTION public.se_m(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 391 (class 1255 OID 18745)
+-- Dependencies: 6 1102
+-- Name: se_z(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION se_z(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_z_point';
+
+
+ALTER FUNCTION public.se_z(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 392 (class 1255 OID 18746)
+-- Dependencies: 1102 6 1102
+-- Name: segmentize(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION segmentize(geometry, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_segmentize2d';
+
+
+ALTER FUNCTION public.segmentize(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 393 (class 1255 OID 18747)
+-- Dependencies: 1096 6 1096
+-- Name: setfactor(chip, real); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION setfactor(chip, real) RETURNS chip
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_setFactor';
+
+
+ALTER FUNCTION public.setfactor(chip, real) OWNER TO postgres;
+
+--
+-- TOC entry 394 (class 1255 OID 18748)
+-- Dependencies: 1102 6 1102 1102
+-- Name: setpoint(geometry, integer, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION setpoint(geometry, integer, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_setpoint_linestring';
+
+
+ALTER FUNCTION public.setpoint(geometry, integer, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 395 (class 1255 OID 18749)
+-- Dependencies: 1096 6 1096
+-- Name: setsrid(chip, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION setsrid(chip, integer) RETURNS chip
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_setSRID';
+
+
+ALTER FUNCTION public.setsrid(chip, integer) OWNER TO postgres;
+
+--
+-- TOC entry 396 (class 1255 OID 18750)
+-- Dependencies: 1102 6 1102
+-- Name: setsrid(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION setsrid(geometry, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_setSRID';
+
+
+ALTER FUNCTION public.setsrid(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 397 (class 1255 OID 18751)
+-- Dependencies: 6 1102 1102
+-- Name: shift_longitude(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION shift_longitude(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_longitude_shift';
+
+
+ALTER FUNCTION public.shift_longitude(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 398 (class 1255 OID 18752)
+-- Dependencies: 6 1102 1102
+-- Name: simplify(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION simplify(geometry, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_simplify2d';
+
+
+ALTER FUNCTION public.simplify(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 401 (class 1255 OID 18755)
+-- Dependencies: 1102 6 1102
+-- Name: snaptogrid(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION snaptogrid(geometry, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT SnapToGrid($1, 0, 0, $2, $2)$_$;
+
+
+ALTER FUNCTION public.snaptogrid(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 400 (class 1255 OID 18754)
+-- Dependencies: 1102 6 1102
+-- Name: snaptogrid(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION snaptogrid(geometry, double precision, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT SnapToGrid($1, 0, 0, $2, $3)$_$;
+
+
+ALTER FUNCTION public.snaptogrid(geometry, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 399 (class 1255 OID 18753)
+-- Dependencies: 6 1102 1102
+-- Name: snaptogrid(geometry, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION snaptogrid(geometry, double precision, double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_snaptogrid';
+
+
+ALTER FUNCTION public.snaptogrid(geometry, double precision, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 402 (class 1255 OID 18756)
+-- Dependencies: 1102 6 1102 1102
+-- Name: snaptogrid(geometry, geometry, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION snaptogrid(geometry, geometry, double precision, double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_snaptogrid_pointoff';
+
+
+ALTER FUNCTION public.snaptogrid(geometry, geometry, double precision, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 403 (class 1255 OID 18757)
+-- Dependencies: 6 1096
+-- Name: srid(chip); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION srid(chip) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_getSRID';
+
+
+ALTER FUNCTION public.srid(chip) OWNER TO postgres;
+
+--
+-- TOC entry 404 (class 1255 OID 18758)
+-- Dependencies: 6 1102
+-- Name: srid(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION srid(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_getSRID';
+
+
+ALTER FUNCTION public.srid(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 405 (class 1255 OID 18759)
+-- Dependencies: 6 1102 1102
+-- Name: st_addmeasure(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_addmeasure(geometry, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'ST_AddMeasure';
+
+
+ALTER FUNCTION public.st_addmeasure(geometry, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 406 (class 1255 OID 18760)
+-- Dependencies: 6 1102 1102 1102
+-- Name: st_addpoint(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_addpoint(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_addpoint';
+
+
+ALTER FUNCTION public.st_addpoint(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 407 (class 1255 OID 18761)
+-- Dependencies: 6 1102 1102 1102
+-- Name: st_addpoint(geometry, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_addpoint(geometry, geometry, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_addpoint';
+
+
+ALTER FUNCTION public.st_addpoint(geometry, geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 409 (class 1255 OID 18763)
+-- Dependencies: 6 1102 1102
+-- Name: st_affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT affine($1, $2, $3, 0, $4, $5, 0, 0, 0, 1, $6, $7, 0)$_$;
+
+
+ALTER FUNCTION public.st_affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 408 (class 1255 OID 18762)
+-- Dependencies: 6 1102 1102
+-- Name: st_affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_affine';
+
+
+ALTER FUNCTION public.st_affine(geometry, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 410 (class 1255 OID 18764)
+-- Dependencies: 6 1102
+-- Name: st_area(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_area(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_area_polygon';
+
+
+ALTER FUNCTION public.st_area(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 412 (class 1255 OID 18766)
+-- Dependencies: 6 1099
+-- Name: st_area(geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_area(geography) RETURNS double precision
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT ST_Area($1, true)$_$;
+
+
+ALTER FUNCTION public.st_area(geography) OWNER TO postgres;
+
+--
+-- TOC entry 413 (class 1255 OID 18767)
+-- Dependencies: 6
+-- Name: st_area(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_area(text) RETURNS double precision
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT ST_Area($1::geometry); $_$;
+
+
+ALTER FUNCTION public.st_area(text) OWNER TO postgres;
+
+--
+-- TOC entry 411 (class 1255 OID 18765)
+-- Dependencies: 6 1099
+-- Name: st_area(geography, boolean); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_area(geography, boolean) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'geography_area';
+
+
+ALTER FUNCTION public.st_area(geography, boolean) OWNER TO postgres;
+
+--
+-- TOC entry 414 (class 1255 OID 18768)
+-- Dependencies: 6 1102
+-- Name: st_area2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_area2d(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_area_polygon';
+
+
+ALTER FUNCTION public.st_area2d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 415 (class 1255 OID 18769)
+-- Dependencies: 6 1102
+-- Name: st_asbinary(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asbinary(geometry) RETURNS bytea
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_asBinary';
+
+
+ALTER FUNCTION public.st_asbinary(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 417 (class 1255 OID 18771)
+-- Dependencies: 6 1099
+-- Name: st_asbinary(geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asbinary(geography) RETURNS bytea
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_as_binary';
+
+
+ALTER FUNCTION public.st_asbinary(geography) OWNER TO postgres;
+
+--
+-- TOC entry 418 (class 1255 OID 18772)
+-- Dependencies: 6
+-- Name: st_asbinary(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asbinary(text) RETURNS bytea
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT ST_AsBinary($1::geometry); $_$;
+
+
+ALTER FUNCTION public.st_asbinary(text) OWNER TO postgres;
+
+--
+-- TOC entry 416 (class 1255 OID 18770)
+-- Dependencies: 6 1102
+-- Name: st_asbinary(geometry, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asbinary(geometry, text) RETURNS bytea
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_asBinary';
+
+
+ALTER FUNCTION public.st_asbinary(geometry, text) OWNER TO postgres;
+
+--
+-- TOC entry 419 (class 1255 OID 18773)
+-- Dependencies: 6 1102
+-- Name: st_asewkb(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asewkb(geometry) RETURNS bytea
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'WKBFromLWGEOM';
+
+
+ALTER FUNCTION public.st_asewkb(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 420 (class 1255 OID 18774)
+-- Dependencies: 6 1102
+-- Name: st_asewkb(geometry, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asewkb(geometry, text) RETURNS bytea
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'WKBFromLWGEOM';
+
+
+ALTER FUNCTION public.st_asewkb(geometry, text) OWNER TO postgres;
+
+--
+-- TOC entry 421 (class 1255 OID 18775)
+-- Dependencies: 6 1102
+-- Name: st_asewkt(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asewkt(geometry) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_asEWKT';
+
+
+ALTER FUNCTION public.st_asewkt(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 423 (class 1255 OID 18777)
+-- Dependencies: 6 1102
+-- Name: st_asgeojson(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgeojson(geometry) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGeoJson(1, $1, 15, 0)$_$;
+
+
+ALTER FUNCTION public.st_asgeojson(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 429 (class 1255 OID 18783)
+-- Dependencies: 6 1099
+-- Name: st_asgeojson(geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgeojson(geography) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGeoJson(1, $1, 15, 0)$_$;
+
+
+ALTER FUNCTION public.st_asgeojson(geography) OWNER TO postgres;
+
+--
+-- TOC entry 430 (class 1255 OID 18784)
+-- Dependencies: 6
+-- Name: st_asgeojson(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgeojson(text) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT ST_AsGeoJson($1::geometry); $_$;
+
+
+ALTER FUNCTION public.st_asgeojson(text) OWNER TO postgres;
+
+--
+-- TOC entry 422 (class 1255 OID 18776)
+-- Dependencies: 6 1102
+-- Name: st_asgeojson(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgeojson(geometry, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGeoJson(1, $1, $2, 0)$_$;
+
+
+ALTER FUNCTION public.st_asgeojson(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 424 (class 1255 OID 18778)
+-- Dependencies: 6 1102
+-- Name: st_asgeojson(integer, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgeojson(integer, geometry) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGeoJson($1, $2, 15, 0)$_$;
+
+
+ALTER FUNCTION public.st_asgeojson(integer, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 428 (class 1255 OID 18782)
+-- Dependencies: 6 1099
+-- Name: st_asgeojson(geography, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgeojson(geography, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGeoJson(1, $1, $2, 0)$_$;
+
+
+ALTER FUNCTION public.st_asgeojson(geography, integer) OWNER TO postgres;
+
+--
+-- TOC entry 431 (class 1255 OID 18785)
+-- Dependencies: 6 1099
+-- Name: st_asgeojson(integer, geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgeojson(integer, geography) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGeoJson($1, $2, 15, 0)$_$;
+
+
+ALTER FUNCTION public.st_asgeojson(integer, geography) OWNER TO postgres;
+
+--
+-- TOC entry 425 (class 1255 OID 18779)
+-- Dependencies: 6 1102
+-- Name: st_asgeojson(integer, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgeojson(integer, geometry, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGeoJson($1, $2, $3, 0)$_$;
+
+
+ALTER FUNCTION public.st_asgeojson(integer, geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 426 (class 1255 OID 18780)
+-- Dependencies: 6 1102
+-- Name: st_asgeojson(geometry, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgeojson(geometry, integer, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGeoJson(1, $1, $2, $3)$_$;
+
+
+ALTER FUNCTION public.st_asgeojson(geometry, integer, integer) OWNER TO postgres;
+
+--
+-- TOC entry 432 (class 1255 OID 18786)
+-- Dependencies: 6 1099
+-- Name: st_asgeojson(integer, geography, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgeojson(integer, geography, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGeoJson($1, $2, $3, 0)$_$;
+
+
+ALTER FUNCTION public.st_asgeojson(integer, geography, integer) OWNER TO postgres;
+
+--
+-- TOC entry 433 (class 1255 OID 18787)
+-- Dependencies: 6 1099
+-- Name: st_asgeojson(geography, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgeojson(geography, integer, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGeoJson(1, $1, $2, $3)$_$;
+
+
+ALTER FUNCTION public.st_asgeojson(geography, integer, integer) OWNER TO postgres;
+
+--
+-- TOC entry 427 (class 1255 OID 18781)
+-- Dependencies: 6 1102
+-- Name: st_asgeojson(integer, geometry, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgeojson(integer, geometry, integer, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGeoJson($1, $2, $3, $4)$_$;
+
+
+ALTER FUNCTION public.st_asgeojson(integer, geometry, integer, integer) OWNER TO postgres;
+
+--
+-- TOC entry 434 (class 1255 OID 18788)
+-- Dependencies: 6 1099
+-- Name: st_asgeojson(integer, geography, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgeojson(integer, geography, integer, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGeoJson($1, $2, $3, $4)$_$;
+
+
+ALTER FUNCTION public.st_asgeojson(integer, geography, integer, integer) OWNER TO postgres;
+
+--
+-- TOC entry 436 (class 1255 OID 18790)
+-- Dependencies: 6 1102
+-- Name: st_asgml(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgml(geometry) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGML(2, $1, 15, 0)$_$;
+
+
+ALTER FUNCTION public.st_asgml(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 442 (class 1255 OID 18796)
+-- Dependencies: 6 1099
+-- Name: st_asgml(geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgml(geography) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGML(2, $1, 15, 0)$_$;
+
+
+ALTER FUNCTION public.st_asgml(geography) OWNER TO postgres;
+
+--
+-- TOC entry 443 (class 1255 OID 18797)
+-- Dependencies: 6
+-- Name: st_asgml(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgml(text) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT ST_AsGML($1::geometry); $_$;
+
+
+ALTER FUNCTION public.st_asgml(text) OWNER TO postgres;
+
+--
+-- TOC entry 435 (class 1255 OID 18789)
+-- Dependencies: 6 1102
+-- Name: st_asgml(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgml(geometry, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGML(2, $1, $2, 0)$_$;
+
+
+ALTER FUNCTION public.st_asgml(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 437 (class 1255 OID 18791)
+-- Dependencies: 6 1102
+-- Name: st_asgml(integer, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgml(integer, geometry) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGML($1, $2, 15, 0)$_$;
+
+
+ALTER FUNCTION public.st_asgml(integer, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 441 (class 1255 OID 18795)
+-- Dependencies: 6 1099
+-- Name: st_asgml(geography, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgml(geography, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGML(2, $1, $2, 0)$_$;
+
+
+ALTER FUNCTION public.st_asgml(geography, integer) OWNER TO postgres;
+
+--
+-- TOC entry 444 (class 1255 OID 18798)
+-- Dependencies: 6 1099
+-- Name: st_asgml(integer, geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgml(integer, geography) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGML($1, $2, 15, 0)$_$;
+
+
+ALTER FUNCTION public.st_asgml(integer, geography) OWNER TO postgres;
+
+--
+-- TOC entry 438 (class 1255 OID 18792)
+-- Dependencies: 6 1102
+-- Name: st_asgml(integer, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgml(integer, geometry, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGML($1, $2, $3, 0)$_$;
+
+
+ALTER FUNCTION public.st_asgml(integer, geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 439 (class 1255 OID 18793)
+-- Dependencies: 6 1102
+-- Name: st_asgml(geometry, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgml(geometry, integer, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGML(2, $1, $2, $3)$_$;
+
+
+ALTER FUNCTION public.st_asgml(geometry, integer, integer) OWNER TO postgres;
+
+--
+-- TOC entry 445 (class 1255 OID 18799)
+-- Dependencies: 6 1099
+-- Name: st_asgml(integer, geography, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgml(integer, geography, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGML($1, $2, $3, 0)$_$;
+
+
+ALTER FUNCTION public.st_asgml(integer, geography, integer) OWNER TO postgres;
+
+--
+-- TOC entry 446 (class 1255 OID 18800)
+-- Dependencies: 6 1099
+-- Name: st_asgml(geography, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgml(geography, integer, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGML(2, $1, $2, $3)$_$;
+
+
+ALTER FUNCTION public.st_asgml(geography, integer, integer) OWNER TO postgres;
+
+--
+-- TOC entry 440 (class 1255 OID 18794)
+-- Dependencies: 6 1102
+-- Name: st_asgml(integer, geometry, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgml(integer, geometry, integer, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGML($1, $2, $3, $4)$_$;
+
+
+ALTER FUNCTION public.st_asgml(integer, geometry, integer, integer) OWNER TO postgres;
+
+--
+-- TOC entry 447 (class 1255 OID 18801)
+-- Dependencies: 6 1099
+-- Name: st_asgml(integer, geography, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_asgml(integer, geography, integer, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsGML($1, $2, $3, $4)$_$;
+
+
+ALTER FUNCTION public.st_asgml(integer, geography, integer, integer) OWNER TO postgres;
+
+--
+-- TOC entry 448 (class 1255 OID 18802)
+-- Dependencies: 6 1102
+-- Name: st_ashexewkb(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_ashexewkb(geometry) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_asHEXEWKB';
+
+
+ALTER FUNCTION public.st_ashexewkb(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 449 (class 1255 OID 18803)
+-- Dependencies: 6 1102
+-- Name: st_ashexewkb(geometry, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_ashexewkb(geometry, text) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_asHEXEWKB';
+
+
+ALTER FUNCTION public.st_ashexewkb(geometry, text) OWNER TO postgres;
+
+--
+-- TOC entry 451 (class 1255 OID 18805)
+-- Dependencies: 6 1102
+-- Name: st_askml(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_askml(geometry) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsKML(2, ST_Transform($1,4326), 15)$_$;
+
+
+ALTER FUNCTION public.st_askml(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 455 (class 1255 OID 18809)
+-- Dependencies: 6 1099
+-- Name: st_askml(geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_askml(geography) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsKML(2, $1, 15)$_$;
+
+
+ALTER FUNCTION public.st_askml(geography) OWNER TO postgres;
+
+--
+-- TOC entry 456 (class 1255 OID 18810)
+-- Dependencies: 6
+-- Name: st_askml(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_askml(text) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT ST_AsKML($1::geometry); $_$;
+
+
+ALTER FUNCTION public.st_askml(text) OWNER TO postgres;
+
+--
+-- TOC entry 450 (class 1255 OID 18804)
+-- Dependencies: 6 1102
+-- Name: st_askml(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_askml(geometry, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsKML(2, ST_Transform($1,4326), $2)$_$;
+
+
+ALTER FUNCTION public.st_askml(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 452 (class 1255 OID 18806)
+-- Dependencies: 6 1102
+-- Name: st_askml(integer, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_askml(integer, geometry) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsKML($1, ST_Transform($2,4326), 15)$_$;
+
+
+ALTER FUNCTION public.st_askml(integer, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 454 (class 1255 OID 18808)
+-- Dependencies: 1099 6
+-- Name: st_askml(geography, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_askml(geography, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsKML(2, $1, $2)$_$;
+
+
+ALTER FUNCTION public.st_askml(geography, integer) OWNER TO postgres;
+
+--
+-- TOC entry 457 (class 1255 OID 18811)
+-- Dependencies: 6 1099
+-- Name: st_askml(integer, geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_askml(integer, geography) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsKML($1, $2, 15)$_$;
+
+
+ALTER FUNCTION public.st_askml(integer, geography) OWNER TO postgres;
+
+--
+-- TOC entry 453 (class 1255 OID 18807)
+-- Dependencies: 6 1102
+-- Name: st_askml(integer, geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_askml(integer, geometry, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsKML($1, ST_Transform($2,4326), $3)$_$;
+
+
+ALTER FUNCTION public.st_askml(integer, geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 458 (class 1255 OID 18812)
+-- Dependencies: 6 1099
+-- Name: st_askml(integer, geography, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_askml(integer, geography, integer) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_AsKML($1, $2, $3)$_$;
+
+
+ALTER FUNCTION public.st_askml(integer, geography, integer) OWNER TO postgres;
+
+--
+-- TOC entry 461 (class 1255 OID 18815)
+-- Dependencies: 6 1102
+-- Name: st_assvg(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_assvg(geometry) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'assvg_geometry';
+
+
+ALTER FUNCTION public.st_assvg(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 464 (class 1255 OID 18818)
+-- Dependencies: 6 1099
+-- Name: st_assvg(geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_assvg(geography) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_as_svg';
+
+
+ALTER FUNCTION public.st_assvg(geography) OWNER TO postgres;
+
+--
+-- TOC entry 465 (class 1255 OID 18819)
+-- Dependencies: 6
+-- Name: st_assvg(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_assvg(text) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT ST_AsSVG($1::geometry); $_$;
+
+
+ALTER FUNCTION public.st_assvg(text) OWNER TO postgres;
+
+--
+-- TOC entry 460 (class 1255 OID 18814)
+-- Dependencies: 6 1102
+-- Name: st_assvg(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_assvg(geometry, integer) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'assvg_geometry';
+
+
+ALTER FUNCTION public.st_assvg(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 463 (class 1255 OID 18817)
+-- Dependencies: 6 1099
+-- Name: st_assvg(geography, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_assvg(geography, integer) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_as_svg';
+
+
+ALTER FUNCTION public.st_assvg(geography, integer) OWNER TO postgres;
+
+--
+-- TOC entry 459 (class 1255 OID 18813)
+-- Dependencies: 6 1102
+-- Name: st_assvg(geometry, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_assvg(geometry, integer, integer) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'assvg_geometry';
+
+
+ALTER FUNCTION public.st_assvg(geometry, integer, integer) OWNER TO postgres;
+
+--
+-- TOC entry 462 (class 1255 OID 18816)
+-- Dependencies: 6 1099
+-- Name: st_assvg(geography, integer, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_assvg(geography, integer, integer) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_as_svg';
+
+
+ALTER FUNCTION public.st_assvg(geography, integer, integer) OWNER TO postgres;
+
+--
+-- TOC entry 466 (class 1255 OID 18820)
+-- Dependencies: 6 1102
+-- Name: st_astext(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_astext(geometry) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_asText';
+
+
+ALTER FUNCTION public.st_astext(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 467 (class 1255 OID 18821)
+-- Dependencies: 6 1099
+-- Name: st_astext(geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_astext(geography) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_as_text';
+
+
+ALTER FUNCTION public.st_astext(geography) OWNER TO postgres;
+
+--
+-- TOC entry 468 (class 1255 OID 18822)
+-- Dependencies: 6
+-- Name: st_astext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_astext(text) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT ST_AsText($1::geometry); $_$;
+
+
+ALTER FUNCTION public.st_astext(text) OWNER TO postgres;
+
+--
+-- TOC entry 469 (class 1255 OID 18823)
+-- Dependencies: 6 1102 1102
+-- Name: st_azimuth(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_azimuth(geometry, geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_azimuth';
+
+
+ALTER FUNCTION public.st_azimuth(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 470 (class 1255 OID 18824)
+-- Dependencies: 6 1168 1102
+-- Name: st_bdmpolyfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_bdmpolyfromtext(text, integer) RETURNS geometry
+ LANGUAGE plpgsql IMMUTABLE STRICT
+ AS $_$
+DECLARE
+ geomtext alias for $1;
+ srid alias for $2;
+ mline geometry;
+ geom geometry;
+BEGIN
+ mline := ST_MultiLineStringFromText(geomtext, srid);
+
+ IF mline IS NULL
+ THEN
+ RAISE EXCEPTION 'Input is not a MultiLinestring';
+ END IF;
+
+ geom := multi(ST_BuildArea(mline));
+
+ RETURN geom;
+END;
+$_$;
+
+
+ALTER FUNCTION public.st_bdmpolyfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 471 (class 1255 OID 18825)
+-- Dependencies: 6 1168 1102
+-- Name: st_bdpolyfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_bdpolyfromtext(text, integer) RETURNS geometry
+ LANGUAGE plpgsql IMMUTABLE STRICT
+ AS $_$
+DECLARE
+ geomtext alias for $1;
+ srid alias for $2;
+ mline geometry;
+ geom geometry;
+BEGIN
+ mline := ST_MultiLineStringFromText(geomtext, srid);
+
+ IF mline IS NULL
+ THEN
+ RAISE EXCEPTION 'Input is not a MultiLinestring';
+ END IF;
+
+ geom := ST_BuildArea(mline);
+
+ IF GeometryType(geom) != 'POLYGON'
+ THEN
+ RAISE EXCEPTION 'Input returns more then a single polygon, try using BdMPolyFromText instead';
+ END IF;
+
+ RETURN geom;
+END;
+$_$;
+
+
+ALTER FUNCTION public.st_bdpolyfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 472 (class 1255 OID 18826)
+-- Dependencies: 6 1102 1102
+-- Name: st_boundary(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_boundary(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'boundary';
+
+
+ALTER FUNCTION public.st_boundary(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 473 (class 1255 OID 18827)
+-- Dependencies: 6 1102
+-- Name: st_box(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_box(geometry) RETURNS box
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_to_BOX';
+
+
+ALTER FUNCTION public.st_box(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 474 (class 1255 OID 18828)
+-- Dependencies: 6 1090
+-- Name: st_box(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_box(box3d) RETURNS box
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_to_BOX';
+
+
+ALTER FUNCTION public.st_box(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 475 (class 1255 OID 18829)
+-- Dependencies: 6 1087 1102
+-- Name: st_box2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_box2d(geometry) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_to_BOX2DFLOAT4';
+
+
+ALTER FUNCTION public.st_box2d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 476 (class 1255 OID 18830)
+-- Dependencies: 6 1087 1090
+-- Name: st_box2d(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_box2d(box3d) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_to_BOX2DFLOAT4';
+
+
+ALTER FUNCTION public.st_box2d(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 477 (class 1255 OID 18831)
+-- Dependencies: 6 1087 1093
+-- Name: st_box2d(box3d_extent); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_box2d(box3d_extent) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_to_BOX2DFLOAT4';
+
+
+ALTER FUNCTION public.st_box2d(box3d_extent) OWNER TO postgres;
+
+--
+-- TOC entry 478 (class 1255 OID 18832)
+-- Dependencies: 6 1087
+-- Name: st_box2d_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_box2d_in(cstring) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_in';
+
+
+ALTER FUNCTION public.st_box2d_in(cstring) OWNER TO postgres;
+
+--
+-- TOC entry 479 (class 1255 OID 18833)
+-- Dependencies: 6 1087
+-- Name: st_box2d_out(box2d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_box2d_out(box2d) RETURNS cstring
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_out';
+
+
+ALTER FUNCTION public.st_box2d_out(box2d) OWNER TO postgres;
+
+--
+-- TOC entry 480 (class 1255 OID 18834)
+-- Dependencies: 6 1090 1102
+-- Name: st_box3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_box3d(geometry) RETURNS box3d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_to_BOX3D';
+
+
+ALTER FUNCTION public.st_box3d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 481 (class 1255 OID 18835)
+-- Dependencies: 6 1090 1087
+-- Name: st_box3d(box2d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_box3d(box2d) RETURNS box3d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_to_BOX3D';
+
+
+ALTER FUNCTION public.st_box3d(box2d) OWNER TO postgres;
+
+--
+-- TOC entry 482 (class 1255 OID 18836)
+-- Dependencies: 6 1090 1093
+-- Name: st_box3d_extent(box3d_extent); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_box3d_extent(box3d_extent) RETURNS box3d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_extent_to_BOX3D';
+
+
+ALTER FUNCTION public.st_box3d_extent(box3d_extent) OWNER TO postgres;
+
+--
+-- TOC entry 483 (class 1255 OID 18837)
+-- Dependencies: 6 1090
+-- Name: st_box3d_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_box3d_in(cstring) RETURNS box3d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_in';
+
+
+ALTER FUNCTION public.st_box3d_in(cstring) OWNER TO postgres;
+
+--
+-- TOC entry 484 (class 1255 OID 18838)
+-- Dependencies: 6 1090
+-- Name: st_box3d_out(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_box3d_out(box3d) RETURNS cstring
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_out';
+
+
+ALTER FUNCTION public.st_box3d_out(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 485 (class 1255 OID 18839)
+-- Dependencies: 6 1102 1102
+-- Name: st_buffer(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_buffer(geometry, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'buffer';
+
+
+ALTER FUNCTION public.st_buffer(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 488 (class 1255 OID 18842)
+-- Dependencies: 6 1099 1099
+-- Name: st_buffer(geography, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_buffer(geography, double precision) RETURNS geography
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT geography(ST_Transform(ST_Buffer(ST_Transform(geometry($1), _ST_BestSRID($1)), $2), 4326))$_$;
+
+
+ALTER FUNCTION public.st_buffer(geography, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 489 (class 1255 OID 18843)
+-- Dependencies: 6 1102
+-- Name: st_buffer(text, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_buffer(text, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT ST_Buffer($1::geometry, $2); $_$;
+
+
+ALTER FUNCTION public.st_buffer(text, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 486 (class 1255 OID 18840)
+-- Dependencies: 6 1102 1102
+-- Name: st_buffer(geometry, double precision, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_buffer(geometry, double precision, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT _ST_Buffer($1, $2,
+ CAST('quad_segs='||CAST($3 AS text) as cstring))
+ $_$;
+
+
+ALTER FUNCTION public.st_buffer(geometry, double precision, integer) OWNER TO postgres;
+
+--
+-- TOC entry 487 (class 1255 OID 18841)
+-- Dependencies: 6 1102 1102
+-- Name: st_buffer(geometry, double precision, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_buffer(geometry, double precision, text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT _ST_Buffer($1, $2,
+ CAST( regexp_replace($3, '^[0123456789]+$',
+ 'quad_segs='||$3) AS cstring)
+ )
+ $_$;
+
+
+ALTER FUNCTION public.st_buffer(geometry, double precision, text) OWNER TO postgres;
+
+--
+-- TOC entry 490 (class 1255 OID 18844)
+-- Dependencies: 6 1102 1102
+-- Name: st_buildarea(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_buildarea(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'LWGEOM_buildarea';
+
+
+ALTER FUNCTION public.st_buildarea(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 491 (class 1255 OID 18845)
+-- Dependencies: 6 1102
+-- Name: st_bytea(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_bytea(geometry) RETURNS bytea
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_to_bytea';
+
+
+ALTER FUNCTION public.st_bytea(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 492 (class 1255 OID 18846)
+-- Dependencies: 6 1102 1102
+-- Name: st_centroid(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_centroid(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'centroid';
+
+
+ALTER FUNCTION public.st_centroid(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 493 (class 1255 OID 18847)
+-- Dependencies: 6 1096
+-- Name: st_chip_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_chip_in(cstring) RETURNS chip
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_in';
+
+
+ALTER FUNCTION public.st_chip_in(cstring) OWNER TO postgres;
+
+--
+-- TOC entry 494 (class 1255 OID 18848)
+-- Dependencies: 6 1096
+-- Name: st_chip_out(chip); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_chip_out(chip) RETURNS cstring
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_out';
+
+
+ALTER FUNCTION public.st_chip_out(chip) OWNER TO postgres;
+
+--
+-- TOC entry 495 (class 1255 OID 18849)
+-- Dependencies: 6 1102 1102 1102
+-- Name: st_closestpoint(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_closestpoint(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_closestpoint';
+
+
+ALTER FUNCTION public.st_closestpoint(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 497 (class 1255 OID 18851)
+-- Dependencies: 6 1102 1104
+-- Name: st_collect(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_collect(geometry[]) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_collect_garray';
+
+
+ALTER FUNCTION public.st_collect(geometry[]) OWNER TO postgres;
+
+--
+-- TOC entry 496 (class 1255 OID 18850)
+-- Dependencies: 6 1102 1102 1102
+-- Name: st_collect(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_collect(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE
+ AS '$libdir/postgis-1.5', 'LWGEOM_collect';
+
+
+ALTER FUNCTION public.st_collect(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 498 (class 1255 OID 18852)
+-- Dependencies: 6 1102 1102
+-- Name: st_collectionextract(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_collectionextract(geometry, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'ST_CollectionExtract';
+
+
+ALTER FUNCTION public.st_collectionextract(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 499 (class 1255 OID 18853)
+-- Dependencies: 6 1087 1087 1102
+-- Name: st_combine_bbox(box2d, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_combine_bbox(box2d, geometry) RETURNS box2d
+ LANGUAGE c IMMUTABLE
+ AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_combine';
+
+
+ALTER FUNCTION public.st_combine_bbox(box2d, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 500 (class 1255 OID 18854)
+-- Dependencies: 6 1093 1093 1102
+-- Name: st_combine_bbox(box3d_extent, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_combine_bbox(box3d_extent, geometry) RETURNS box3d_extent
+ LANGUAGE c IMMUTABLE
+ AS '$libdir/postgis-1.5', 'BOX3D_combine';
+
+
+ALTER FUNCTION public.st_combine_bbox(box3d_extent, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 501 (class 1255 OID 18855)
+-- Dependencies: 6 1090 1090 1102
+-- Name: st_combine_bbox(box3d, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_combine_bbox(box3d, geometry) RETURNS box3d
+ LANGUAGE c IMMUTABLE
+ AS '$libdir/postgis-1.5', 'BOX3D_combine';
+
+
+ALTER FUNCTION public.st_combine_bbox(box3d, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 502 (class 1255 OID 18856)
+-- Dependencies: 6 1096
+-- Name: st_compression(chip); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_compression(chip) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_getCompression';
+
+
+ALTER FUNCTION public.st_compression(chip) OWNER TO postgres;
+
+--
+-- TOC entry 503 (class 1255 OID 18857)
+-- Dependencies: 6 1102 1102
+-- Name: st_contains(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_contains(geometry, geometry) RETURNS boolean
+ LANGUAGE sql IMMUTABLE
+ AS $_$SELECT $1 && $2 AND _ST_Contains($1,$2)$_$;
+
+
+ALTER FUNCTION public.st_contains(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 504 (class 1255 OID 18858)
+-- Dependencies: 6 1102 1102
+-- Name: st_containsproperly(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_containsproperly(geometry, geometry) RETURNS boolean
+ LANGUAGE sql IMMUTABLE
+ AS $_$SELECT $1 && $2 AND _ST_ContainsProperly($1,$2)$_$;
+
+
+ALTER FUNCTION public.st_containsproperly(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 505 (class 1255 OID 18859)
+-- Dependencies: 6 1102 1102
+-- Name: st_convexhull(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_convexhull(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'convexhull';
+
+
+ALTER FUNCTION public.st_convexhull(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 506 (class 1255 OID 18860)
+-- Dependencies: 6 1102
+-- Name: st_coorddim(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_coorddim(geometry) RETURNS smallint
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_ndims';
+
+
+ALTER FUNCTION public.st_coorddim(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 507 (class 1255 OID 18861)
+-- Dependencies: 6 1102 1102
+-- Name: st_coveredby(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_coveredby(geometry, geometry) RETURNS boolean
+ LANGUAGE sql IMMUTABLE
+ AS $_$SELECT $1 && $2 AND _ST_CoveredBy($1,$2)$_$;
+
+
+ALTER FUNCTION public.st_coveredby(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 508 (class 1255 OID 18862)
+-- Dependencies: 6 1099 1099
+-- Name: st_coveredby(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_coveredby(geography, geography) RETURNS boolean
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT $1 && $2 AND _ST_Covers($2, $1)$_$;
+
+
+ALTER FUNCTION public.st_coveredby(geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 509 (class 1255 OID 18863)
+-- Dependencies: 6
+-- Name: st_coveredby(text, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_coveredby(text, text) RETURNS boolean
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT ST_CoveredBy($1::geometry, $2::geometry); $_$;
+
+
+ALTER FUNCTION public.st_coveredby(text, text) OWNER TO postgres;
+
+--
+-- TOC entry 510 (class 1255 OID 18864)
+-- Dependencies: 6 1102 1102
+-- Name: st_covers(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_covers(geometry, geometry) RETURNS boolean
+ LANGUAGE sql IMMUTABLE
+ AS $_$SELECT $1 && $2 AND _ST_Covers($1,$2)$_$;
+
+
+ALTER FUNCTION public.st_covers(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 511 (class 1255 OID 18865)
+-- Dependencies: 6 1099 1099
+-- Name: st_covers(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_covers(geography, geography) RETURNS boolean
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT $1 && $2 AND _ST_Covers($1, $2)$_$;
+
+
+ALTER FUNCTION public.st_covers(geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 512 (class 1255 OID 18866)
+-- Dependencies: 6
+-- Name: st_covers(text, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_covers(text, text) RETURNS boolean
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT ST_Covers($1::geometry, $2::geometry); $_$;
+
+
+ALTER FUNCTION public.st_covers(text, text) OWNER TO postgres;
+
+--
+-- TOC entry 513 (class 1255 OID 18867)
+-- Dependencies: 6 1102 1102
+-- Name: st_crosses(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_crosses(geometry, geometry) RETURNS boolean
+ LANGUAGE sql IMMUTABLE
+ AS $_$SELECT $1 && $2 AND _ST_Crosses($1,$2)$_$;
+
+
+ALTER FUNCTION public.st_crosses(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 515 (class 1255 OID 18869)
+-- Dependencies: 6 1102 1102
+-- Name: st_curvetoline(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_curvetoline(geometry) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT ST_CurveToLine($1, 32)$_$;
+
+
+ALTER FUNCTION public.st_curvetoline(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 514 (class 1255 OID 18868)
+-- Dependencies: 6 1102 1102
+-- Name: st_curvetoline(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_curvetoline(geometry, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_curve_segmentize';
+
+
+ALTER FUNCTION public.st_curvetoline(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 516 (class 1255 OID 18870)
+-- Dependencies: 6 1096
+-- Name: st_datatype(chip); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_datatype(chip) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_getDatatype';
+
+
+ALTER FUNCTION public.st_datatype(chip) OWNER TO postgres;
+
+--
+-- TOC entry 517 (class 1255 OID 18871)
+-- Dependencies: 6 1102 1102
+-- Name: st_dfullywithin(geometry, geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_dfullywithin(geometry, geometry, double precision) RETURNS boolean
+ LANGUAGE sql IMMUTABLE
+ AS $_$SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND _ST_DFullyWithin(ST_ConvexHull($1), ST_ConvexHull($2), $3)$_$;
+
+
+ALTER FUNCTION public.st_dfullywithin(geometry, geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 518 (class 1255 OID 18872)
+-- Dependencies: 6 1102 1102 1102
+-- Name: st_difference(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_difference(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'difference';
+
+
+ALTER FUNCTION public.st_difference(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 519 (class 1255 OID 18873)
+-- Dependencies: 6 1102
+-- Name: st_dimension(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_dimension(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_dimension';
+
+
+ALTER FUNCTION public.st_dimension(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 520 (class 1255 OID 18874)
+-- Dependencies: 6 1102 1102
+-- Name: st_disjoint(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_disjoint(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'disjoint';
+
+
+ALTER FUNCTION public.st_disjoint(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 521 (class 1255 OID 18875)
+-- Dependencies: 6 1102 1102
+-- Name: st_distance(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_distance(geometry, geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'LWGEOM_mindistance2d';
+
+
+ALTER FUNCTION public.st_distance(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 523 (class 1255 OID 18877)
+-- Dependencies: 6 1099 1099
+-- Name: st_distance(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_distance(geography, geography) RETURNS double precision
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_Distance($1, $2, 0.0, true)$_$;
+
+
+ALTER FUNCTION public.st_distance(geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 524 (class 1255 OID 18878)
+-- Dependencies: 6
+-- Name: st_distance(text, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_distance(text, text) RETURNS double precision
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT ST_Distance($1::geometry, $2::geometry); $_$;
+
+
+ALTER FUNCTION public.st_distance(text, text) OWNER TO postgres;
+
+--
+-- TOC entry 522 (class 1255 OID 18876)
+-- Dependencies: 6 1099 1099
+-- Name: st_distance(geography, geography, boolean); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_distance(geography, geography, boolean) RETURNS double precision
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_Distance($1, $2, 0.0, $3)$_$;
+
+
+ALTER FUNCTION public.st_distance(geography, geography, boolean) OWNER TO postgres;
+
+--
+-- TOC entry 525 (class 1255 OID 18879)
+-- Dependencies: 6 1102 1102
+-- Name: st_distance_sphere(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_distance_sphere(geometry, geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'LWGEOM_distance_sphere';
+
+
+ALTER FUNCTION public.st_distance_sphere(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 526 (class 1255 OID 18880)
+-- Dependencies: 6 1102 1102 1113
+-- Name: st_distance_spheroid(geometry, geometry, spheroid); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_distance_spheroid(geometry, geometry, spheroid) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'LWGEOM_distance_ellipsoid';
+
+
+ALTER FUNCTION public.st_distance_spheroid(geometry, geometry, spheroid) OWNER TO postgres;
+
+--
+-- TOC entry 527 (class 1255 OID 18881)
+-- Dependencies: 6 1105 1102
+-- Name: st_dump(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_dump(geometry) RETURNS SETOF geometry_dump
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_dump';
+
+
+ALTER FUNCTION public.st_dump(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 528 (class 1255 OID 18882)
+-- Dependencies: 6 1105 1102
+-- Name: st_dumppoints(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_dumppoints(geometry) RETURNS SETOF geometry_dump
+ LANGUAGE sql
+ AS $_$
+ SELECT * FROM _ST_DumpPoints($1, NULL);
+$_$;
+
+
+ALTER FUNCTION public.st_dumppoints(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 529 (class 1255 OID 18883)
+-- Dependencies: 6 1105 1102
+-- Name: st_dumprings(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_dumprings(geometry) RETURNS SETOF geometry_dump
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_dump_rings';
+
+
+ALTER FUNCTION public.st_dumprings(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 530 (class 1255 OID 18884)
+-- Dependencies: 6 1102 1102
+-- Name: st_dwithin(geometry, geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_dwithin(geometry, geometry, double precision) RETURNS boolean
+ LANGUAGE sql IMMUTABLE
+ AS $_$SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND _ST_DWithin($1, $2, $3)$_$;
+
+
+ALTER FUNCTION public.st_dwithin(geometry, geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 532 (class 1255 OID 18886)
+-- Dependencies: 6 1099 1099
+-- Name: st_dwithin(geography, geography, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_dwithin(geography, geography, double precision) RETURNS boolean
+ LANGUAGE sql IMMUTABLE
+ AS $_$SELECT $1 && _ST_Expand($2,$3) AND $2 && _ST_Expand($1,$3) AND _ST_DWithin($1, $2, $3, true)$_$;
+
+
+ALTER FUNCTION public.st_dwithin(geography, geography, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 533 (class 1255 OID 18887)
+-- Dependencies: 6
+-- Name: st_dwithin(text, text, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_dwithin(text, text, double precision) RETURNS boolean
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT ST_DWithin($1::geometry, $2::geometry, $3); $_$;
+
+
+ALTER FUNCTION public.st_dwithin(text, text, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 531 (class 1255 OID 18885)
+-- Dependencies: 6 1099 1099
+-- Name: st_dwithin(geography, geography, double precision, boolean); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_dwithin(geography, geography, double precision, boolean) RETURNS boolean
+ LANGUAGE sql IMMUTABLE
+ AS $_$SELECT $1 && _ST_Expand($2,$3) AND $2 && _ST_Expand($1,$3) AND _ST_DWithin($1, $2, $3, $4)$_$;
+
+
+ALTER FUNCTION public.st_dwithin(geography, geography, double precision, boolean) OWNER TO postgres;
+
+--
+-- TOC entry 534 (class 1255 OID 18888)
+-- Dependencies: 6 1102 1102
+-- Name: st_endpoint(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_endpoint(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_endpoint_linestring';
+
+
+ALTER FUNCTION public.st_endpoint(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 535 (class 1255 OID 18889)
+-- Dependencies: 6 1102 1102
+-- Name: st_envelope(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_envelope(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_envelope';
+
+
+ALTER FUNCTION public.st_envelope(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 536 (class 1255 OID 18890)
+-- Dependencies: 6 1102 1102
+-- Name: st_equals(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_equals(geometry, geometry) RETURNS boolean
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT $1 && $2 AND _ST_Equals($1,$2)$_$;
+
+
+ALTER FUNCTION public.st_equals(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 538 (class 1255 OID 18892)
+-- Dependencies: 1087 6
+-- Name: st_estimated_extent(text, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_estimated_extent(text, text) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT SECURITY DEFINER
+ AS '$libdir/postgis-1.5', 'LWGEOM_estimated_extent';
+
+
+ALTER FUNCTION public.st_estimated_extent(text, text) OWNER TO postgres;
+
+--
+-- TOC entry 537 (class 1255 OID 18891)
+-- Dependencies: 6 1087
+-- Name: st_estimated_extent(text, text, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_estimated_extent(text, text, text) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT SECURITY DEFINER
+ AS '$libdir/postgis-1.5', 'LWGEOM_estimated_extent';
+
+
+ALTER FUNCTION public.st_estimated_extent(text, text, text) OWNER TO postgres;
+
+--
+-- TOC entry 539 (class 1255 OID 18893)
+-- Dependencies: 6 1090 1090
+-- Name: st_expand(box3d, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_expand(box3d, double precision) RETURNS box3d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_expand';
+
+
+ALTER FUNCTION public.st_expand(box3d, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 540 (class 1255 OID 18896)
+-- Dependencies: 1087 1087 6
+-- Name: st_expand(box2d, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_expand(box2d, double precision) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_expand';
+
+
+ALTER FUNCTION public.st_expand(box2d, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 541 (class 1255 OID 18897)
+-- Dependencies: 6 1102 1102
+-- Name: st_expand(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_expand(geometry, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_expand';
+
+
+ALTER FUNCTION public.st_expand(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 542 (class 1255 OID 18898)
+-- Dependencies: 6 1102 1102
+-- Name: st_exteriorring(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_exteriorring(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_exteriorring_polygon';
+
+
+ALTER FUNCTION public.st_exteriorring(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 543 (class 1255 OID 18899)
+-- Dependencies: 6 1096
+-- Name: st_factor(chip); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_factor(chip) RETURNS real
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_getFactor';
+
+
+ALTER FUNCTION public.st_factor(chip) OWNER TO postgres;
+
+--
+-- TOC entry 545 (class 1255 OID 18901)
+-- Dependencies: 1087 1168 6
+-- Name: st_find_extent(text, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_find_extent(text, text) RETURNS box2d
+ LANGUAGE plpgsql IMMUTABLE STRICT
+ AS $_$
+DECLARE
+ tablename alias for $1;
+ columnname alias for $2;
+ myrec RECORD;
+
+BEGIN
+ FOR myrec IN EXECUTE 'SELECT extent("' || columnname || '") FROM "' || tablename || '"' LOOP
+ return myrec.extent;
+ END LOOP;
+END;
+$_$;
+
+
+ALTER FUNCTION public.st_find_extent(text, text) OWNER TO postgres;
+
+--
+-- TOC entry 544 (class 1255 OID 18900)
+-- Dependencies: 1168 6 1087
+-- Name: st_find_extent(text, text, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_find_extent(text, text, text) RETURNS box2d
+ LANGUAGE plpgsql IMMUTABLE STRICT
+ AS $_$
+DECLARE
+ schemaname alias for $1;
+ tablename alias for $2;
+ columnname alias for $3;
+ myrec RECORD;
+
+BEGIN
+ FOR myrec IN EXECUTE 'SELECT extent("' || columnname || '") FROM "' || schemaname || '"."' || tablename || '"' LOOP
+ return myrec.extent;
+ END LOOP;
+END;
+$_$;
+
+
+ALTER FUNCTION public.st_find_extent(text, text, text) OWNER TO postgres;
+
+--
+-- TOC entry 546 (class 1255 OID 18902)
+-- Dependencies: 1102 1102 6
+-- Name: st_force_2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_force_2d(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_force_2d';
+
+
+ALTER FUNCTION public.st_force_2d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 547 (class 1255 OID 18903)
+-- Dependencies: 6 1102 1102
+-- Name: st_force_3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_force_3d(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_force_3dz';
+
+
+ALTER FUNCTION public.st_force_3d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 548 (class 1255 OID 18904)
+-- Dependencies: 6 1102 1102
+-- Name: st_force_3dm(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_force_3dm(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_force_3dm';
+
+
+ALTER FUNCTION public.st_force_3dm(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 549 (class 1255 OID 18905)
+-- Dependencies: 1102 6 1102
+-- Name: st_force_3dz(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_force_3dz(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_force_3dz';
+
+
+ALTER FUNCTION public.st_force_3dz(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 550 (class 1255 OID 18906)
+-- Dependencies: 1102 1102 6
+-- Name: st_force_4d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_force_4d(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_force_4d';
+
+
+ALTER FUNCTION public.st_force_4d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 551 (class 1255 OID 18907)
+-- Dependencies: 6 1102 1102
+-- Name: st_force_collection(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_force_collection(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_force_collection';
+
+
+ALTER FUNCTION public.st_force_collection(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 552 (class 1255 OID 18908)
+-- Dependencies: 1102 1102 6
+-- Name: st_forcerhr(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_forcerhr(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_forceRHR_poly';
+
+
+ALTER FUNCTION public.st_forcerhr(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 553 (class 1255 OID 18909)
+-- Dependencies: 1099 6
+-- Name: st_geogfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geogfromtext(text) RETURNS geography
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_from_text';
+
+
+ALTER FUNCTION public.st_geogfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 554 (class 1255 OID 18910)
+-- Dependencies: 1099 6
+-- Name: st_geogfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geogfromwkb(bytea) RETURNS geography
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_from_binary';
+
+
+ALTER FUNCTION public.st_geogfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 555 (class 1255 OID 18911)
+-- Dependencies: 6 1099
+-- Name: st_geographyfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geographyfromtext(text) RETURNS geography
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geography_from_text';
+
+
+ALTER FUNCTION public.st_geographyfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 557 (class 1255 OID 18913)
+-- Dependencies: 6 1102
+-- Name: st_geohash(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geohash(geometry) RETURNS text
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT ST_GeoHash($1, 0)$_$;
+
+
+ALTER FUNCTION public.st_geohash(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 556 (class 1255 OID 18912)
+-- Dependencies: 1102 6
+-- Name: st_geohash(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geohash(geometry, integer) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'ST_GeoHash';
+
+
+ALTER FUNCTION public.st_geohash(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 559 (class 1255 OID 18915)
+-- Dependencies: 6 1102
+-- Name: st_geomcollfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geomcollfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE
+ WHEN geometrytype(ST_GeomFromText($1)) = 'GEOMETRYCOLLECTION'
+ THEN ST_GeomFromText($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_geomcollfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 558 (class 1255 OID 18914)
+-- Dependencies: 1102 6
+-- Name: st_geomcollfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geomcollfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE
+ WHEN geometrytype(ST_GeomFromText($1, $2)) = 'GEOMETRYCOLLECTION'
+ THEN ST_GeomFromText($1,$2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_geomcollfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 561 (class 1255 OID 18917)
+-- Dependencies: 6 1102
+-- Name: st_geomcollfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geomcollfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE
+ WHEN geometrytype(ST_GeomFromWKB($1)) = 'GEOMETRYCOLLECTION'
+ THEN ST_GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_geomcollfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 560 (class 1255 OID 18916)
+-- Dependencies: 6 1102
+-- Name: st_geomcollfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geomcollfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE
+ WHEN geometrytype(GeomFromWKB($1, $2)) = 'GEOMETRYCOLLECTION'
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_geomcollfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 562 (class 1255 OID 18918)
+-- Dependencies: 1087 6 1102
+-- Name: st_geometry(box2d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry(box2d) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_to_LWGEOM';
+
+
+ALTER FUNCTION public.st_geometry(box2d) OWNER TO postgres;
+
+--
+-- TOC entry 563 (class 1255 OID 18919)
+-- Dependencies: 6 1102 1090
+-- Name: st_geometry(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry(box3d) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_to_LWGEOM';
+
+
+ALTER FUNCTION public.st_geometry(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 564 (class 1255 OID 18920)
+-- Dependencies: 6 1102
+-- Name: st_geometry(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry(text) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'parse_WKT_lwgeom';
+
+
+ALTER FUNCTION public.st_geometry(text) OWNER TO postgres;
+
+--
+-- TOC entry 565 (class 1255 OID 18921)
+-- Dependencies: 1102 1096 6
+-- Name: st_geometry(chip); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry(chip) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_to_LWGEOM';
+
+
+ALTER FUNCTION public.st_geometry(chip) OWNER TO postgres;
+
+--
+-- TOC entry 566 (class 1255 OID 18922)
+-- Dependencies: 6 1102
+-- Name: st_geometry(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry(bytea) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_from_bytea';
+
+
+ALTER FUNCTION public.st_geometry(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 567 (class 1255 OID 18923)
+-- Dependencies: 6 1093 1102
+-- Name: st_geometry(box3d_extent); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry(box3d_extent) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_to_LWGEOM';
+
+
+ALTER FUNCTION public.st_geometry(box3d_extent) OWNER TO postgres;
+
+--
+-- TOC entry 568 (class 1255 OID 18924)
+-- Dependencies: 1102 1102 6
+-- Name: st_geometry_above(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_above(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_above';
+
+
+ALTER FUNCTION public.st_geometry_above(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 569 (class 1255 OID 18925)
+-- Dependencies: 6
+-- Name: st_geometry_analyze(internal); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_analyze(internal) RETURNS boolean
+ LANGUAGE c STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_analyze';
+
+
+ALTER FUNCTION public.st_geometry_analyze(internal) OWNER TO postgres;
+
+--
+-- TOC entry 570 (class 1255 OID 18926)
+-- Dependencies: 1102 1102 6
+-- Name: st_geometry_below(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_below(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_below';
+
+
+ALTER FUNCTION public.st_geometry_below(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 571 (class 1255 OID 18927)
+-- Dependencies: 6 1102 1102
+-- Name: st_geometry_cmp(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_cmp(geometry, geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'lwgeom_cmp';
+
+
+ALTER FUNCTION public.st_geometry_cmp(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 572 (class 1255 OID 18928)
+-- Dependencies: 1102 6 1102
+-- Name: st_geometry_contain(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_contain(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_contain';
+
+
+ALTER FUNCTION public.st_geometry_contain(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 573 (class 1255 OID 18929)
+-- Dependencies: 6 1102 1102
+-- Name: st_geometry_contained(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_contained(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_contained';
+
+
+ALTER FUNCTION public.st_geometry_contained(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 574 (class 1255 OID 18930)
+-- Dependencies: 6 1102 1102
+-- Name: st_geometry_eq(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_eq(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'lwgeom_eq';
+
+
+ALTER FUNCTION public.st_geometry_eq(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 575 (class 1255 OID 18931)
+-- Dependencies: 1102 6 1102
+-- Name: st_geometry_ge(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_ge(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'lwgeom_ge';
+
+
+ALTER FUNCTION public.st_geometry_ge(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 576 (class 1255 OID 18932)
+-- Dependencies: 6 1102 1102
+-- Name: st_geometry_gt(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_gt(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'lwgeom_gt';
+
+
+ALTER FUNCTION public.st_geometry_gt(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 577 (class 1255 OID 18933)
+-- Dependencies: 6 1102
+-- Name: st_geometry_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_in(cstring) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_in';
+
+
+ALTER FUNCTION public.st_geometry_in(cstring) OWNER TO postgres;
+
+--
+-- TOC entry 578 (class 1255 OID 18934)
+-- Dependencies: 1102 6 1102
+-- Name: st_geometry_le(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_le(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'lwgeom_le';
+
+
+ALTER FUNCTION public.st_geometry_le(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 579 (class 1255 OID 18935)
+-- Dependencies: 1102 1102 6
+-- Name: st_geometry_left(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_left(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_left';
+
+
+ALTER FUNCTION public.st_geometry_left(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 580 (class 1255 OID 18936)
+-- Dependencies: 1102 6 1102
+-- Name: st_geometry_lt(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_lt(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'lwgeom_lt';
+
+
+ALTER FUNCTION public.st_geometry_lt(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 581 (class 1255 OID 18937)
+-- Dependencies: 1102 6
+-- Name: st_geometry_out(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_out(geometry) RETURNS cstring
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_out';
+
+
+ALTER FUNCTION public.st_geometry_out(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 582 (class 1255 OID 18938)
+-- Dependencies: 1102 1102 6
+-- Name: st_geometry_overabove(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_overabove(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_overabove';
+
+
+ALTER FUNCTION public.st_geometry_overabove(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 583 (class 1255 OID 18939)
+-- Dependencies: 6 1102 1102
+-- Name: st_geometry_overbelow(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_overbelow(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_overbelow';
+
+
+ALTER FUNCTION public.st_geometry_overbelow(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 584 (class 1255 OID 18940)
+-- Dependencies: 6 1102 1102
+-- Name: st_geometry_overlap(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_overlap(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_overlap';
+
+
+ALTER FUNCTION public.st_geometry_overlap(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 585 (class 1255 OID 18941)
+-- Dependencies: 1102 6 1102
+-- Name: st_geometry_overleft(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_overleft(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_overleft';
+
+
+ALTER FUNCTION public.st_geometry_overleft(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 586 (class 1255 OID 18942)
+-- Dependencies: 6 1102 1102
+-- Name: st_geometry_overright(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_overright(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_overright';
+
+
+ALTER FUNCTION public.st_geometry_overright(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 587 (class 1255 OID 18943)
+-- Dependencies: 1102 6
+-- Name: st_geometry_recv(internal); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_recv(internal) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_recv';
+
+
+ALTER FUNCTION public.st_geometry_recv(internal) OWNER TO postgres;
+
+--
+-- TOC entry 588 (class 1255 OID 18944)
+-- Dependencies: 1102 6 1102
+-- Name: st_geometry_right(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_right(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_right';
+
+
+ALTER FUNCTION public.st_geometry_right(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 589 (class 1255 OID 18945)
+-- Dependencies: 1102 6 1102
+-- Name: st_geometry_same(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_same(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_samebox';
+
+
+ALTER FUNCTION public.st_geometry_same(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 590 (class 1255 OID 18946)
+-- Dependencies: 6 1102
+-- Name: st_geometry_send(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometry_send(geometry) RETURNS bytea
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_send';
+
+
+ALTER FUNCTION public.st_geometry_send(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 591 (class 1255 OID 18947)
+-- Dependencies: 1102 6
+-- Name: st_geometryfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometryfromtext(text) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_from_text';
+
+
+ALTER FUNCTION public.st_geometryfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 592 (class 1255 OID 18948)
+-- Dependencies: 1102 6
+-- Name: st_geometryfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometryfromtext(text, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_from_text';
+
+
+ALTER FUNCTION public.st_geometryfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 593 (class 1255 OID 18949)
+-- Dependencies: 1102 6 1102
+-- Name: st_geometryn(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometryn(geometry, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_geometryn_collection';
+
+
+ALTER FUNCTION public.st_geometryn(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 594 (class 1255 OID 18950)
+-- Dependencies: 6 1102
+-- Name: st_geometrytype(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geometrytype(geometry) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geometry_geometrytype';
+
+
+ALTER FUNCTION public.st_geometrytype(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 595 (class 1255 OID 18951)
+-- Dependencies: 1102 6
+-- Name: st_geomfromewkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geomfromewkb(bytea) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOMFromWKB';
+
+
+ALTER FUNCTION public.st_geomfromewkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 596 (class 1255 OID 18952)
+-- Dependencies: 1102 6
+-- Name: st_geomfromewkt(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geomfromewkt(text) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'parse_WKT_lwgeom';
+
+
+ALTER FUNCTION public.st_geomfromewkt(text) OWNER TO postgres;
+
+--
+-- TOC entry 597 (class 1255 OID 18953)
+-- Dependencies: 6 1102
+-- Name: st_geomfromgml(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geomfromgml(text) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geom_from_gml';
+
+
+ALTER FUNCTION public.st_geomfromgml(text) OWNER TO postgres;
+
+--
+-- TOC entry 598 (class 1255 OID 18954)
+-- Dependencies: 6 1102
+-- Name: st_geomfromkml(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geomfromkml(text) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geom_from_kml';
+
+
+ALTER FUNCTION public.st_geomfromkml(text) OWNER TO postgres;
+
+--
+-- TOC entry 599 (class 1255 OID 18955)
+-- Dependencies: 6 1102
+-- Name: st_geomfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geomfromtext(text) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_from_text';
+
+
+ALTER FUNCTION public.st_geomfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 600 (class 1255 OID 18956)
+-- Dependencies: 1102 6
+-- Name: st_geomfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geomfromtext(text, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_from_text';
+
+
+ALTER FUNCTION public.st_geomfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 601 (class 1255 OID 18957)
+-- Dependencies: 1102 6
+-- Name: st_geomfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geomfromwkb(bytea) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_from_WKB';
+
+
+ALTER FUNCTION public.st_geomfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 602 (class 1255 OID 18958)
+-- Dependencies: 1102 6
+-- Name: st_geomfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_geomfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT ST_SetSRID(ST_GeomFromWKB($1), $2)$_$;
+
+
+ALTER FUNCTION public.st_geomfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 603 (class 1255 OID 18959)
+-- Dependencies: 1102 6
+-- Name: st_gmltosql(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_gmltosql(text) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geom_from_gml';
+
+
+ALTER FUNCTION public.st_gmltosql(text) OWNER TO postgres;
+
+--
+-- TOC entry 604 (class 1255 OID 18960)
+-- Dependencies: 1102 6
+-- Name: st_hasarc(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_hasarc(geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_has_arc';
+
+
+ALTER FUNCTION public.st_hasarc(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 605 (class 1255 OID 18961)
+-- Dependencies: 1102 6 1102
+-- Name: st_hausdorffdistance(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_hausdorffdistance(geometry, geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'hausdorffdistance';
+
+
+ALTER FUNCTION public.st_hausdorffdistance(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 606 (class 1255 OID 18962)
+-- Dependencies: 1102 1102 6
+-- Name: st_hausdorffdistance(geometry, geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_hausdorffdistance(geometry, geometry, double precision) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'hausdorffdistancedensify';
+
+
+ALTER FUNCTION public.st_hausdorffdistance(geometry, geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 607 (class 1255 OID 18963)
+-- Dependencies: 6 1096
+-- Name: st_height(chip); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_height(chip) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_getHeight';
+
+
+ALTER FUNCTION public.st_height(chip) OWNER TO postgres;
+
+--
+-- TOC entry 608 (class 1255 OID 18964)
+-- Dependencies: 6 1102 1102
+-- Name: st_interiorringn(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_interiorringn(geometry, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_interiorringn_polygon';
+
+
+ALTER FUNCTION public.st_interiorringn(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 609 (class 1255 OID 18965)
+-- Dependencies: 6 1102 1102 1102
+-- Name: st_intersection(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_intersection(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'intersection';
+
+
+ALTER FUNCTION public.st_intersection(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 610 (class 1255 OID 18966)
+-- Dependencies: 6 1099 1099 1099
+-- Name: st_intersection(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_intersection(geography, geography) RETURNS geography
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT geography(ST_Transform(ST_Intersection(ST_Transform(geometry($1), _ST_BestSRID($1, $2)), ST_Transform(geometry($2), _ST_BestSRID($1, $2))), 4326))$_$;
+
+
+ALTER FUNCTION public.st_intersection(geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 611 (class 1255 OID 18967)
+-- Dependencies: 6 1102
+-- Name: st_intersection(text, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_intersection(text, text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT ST_Intersection($1::geometry, $2::geometry); $_$;
+
+
+ALTER FUNCTION public.st_intersection(text, text) OWNER TO postgres;
+
+--
+-- TOC entry 612 (class 1255 OID 18968)
+-- Dependencies: 6 1102 1102
+-- Name: st_intersects(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_intersects(geometry, geometry) RETURNS boolean
+ LANGUAGE sql IMMUTABLE
+ AS $_$SELECT $1 && $2 AND _ST_Intersects($1,$2)$_$;
+
+
+ALTER FUNCTION public.st_intersects(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 613 (class 1255 OID 18969)
+-- Dependencies: 6 1099 1099
+-- Name: st_intersects(geography, geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_intersects(geography, geography) RETURNS boolean
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT $1 && $2 AND _ST_Distance($1, $2, 0.0, false) < 0.00001$_$;
+
+
+ALTER FUNCTION public.st_intersects(geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 614 (class 1255 OID 18970)
+-- Dependencies: 6
+-- Name: st_intersects(text, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_intersects(text, text) RETURNS boolean
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT ST_Intersects($1::geometry, $2::geometry); $_$;
+
+
+ALTER FUNCTION public.st_intersects(text, text) OWNER TO postgres;
+
+--
+-- TOC entry 615 (class 1255 OID 18971)
+-- Dependencies: 6 1102
+-- Name: st_isclosed(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_isclosed(geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_isclosed_linestring';
+
+
+ALTER FUNCTION public.st_isclosed(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 616 (class 1255 OID 18972)
+-- Dependencies: 6 1102
+-- Name: st_isempty(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_isempty(geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_isempty';
+
+
+ALTER FUNCTION public.st_isempty(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 617 (class 1255 OID 18973)
+-- Dependencies: 6 1102
+-- Name: st_isring(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_isring(geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'isring';
+
+
+ALTER FUNCTION public.st_isring(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 618 (class 1255 OID 18974)
+-- Dependencies: 6 1102
+-- Name: st_issimple(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_issimple(geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'issimple';
+
+
+ALTER FUNCTION public.st_issimple(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 619 (class 1255 OID 18975)
+-- Dependencies: 6 1102
+-- Name: st_isvalid(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_isvalid(geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'isvalid';
+
+
+ALTER FUNCTION public.st_isvalid(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 620 (class 1255 OID 18976)
+-- Dependencies: 6 1102
+-- Name: st_isvalidreason(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_isvalidreason(geometry) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'isvalidreason';
+
+
+ALTER FUNCTION public.st_isvalidreason(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 621 (class 1255 OID 18977)
+-- Dependencies: 6 1102
+-- Name: st_length(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_length(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_length2d_linestring';
+
+
+ALTER FUNCTION public.st_length(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 623 (class 1255 OID 18979)
+-- Dependencies: 6 1099
+-- Name: st_length(geography); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_length(geography) RETURNS double precision
+ LANGUAGE sql IMMUTABLE
+ AS $_$SELECT ST_Length($1, true)$_$;
+
+
+ALTER FUNCTION public.st_length(geography) OWNER TO postgres;
+
+--
+-- TOC entry 624 (class 1255 OID 18980)
+-- Dependencies: 6
+-- Name: st_length(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_length(text) RETURNS double precision
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT ST_Length($1::geometry); $_$;
+
+
+ALTER FUNCTION public.st_length(text) OWNER TO postgres;
+
+--
+-- TOC entry 622 (class 1255 OID 18978)
+-- Dependencies: 6 1099
+-- Name: st_length(geography, boolean); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_length(geography, boolean) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'geography_length';
+
+
+ALTER FUNCTION public.st_length(geography, boolean) OWNER TO postgres;
+
+--
+-- TOC entry 625 (class 1255 OID 18981)
+-- Dependencies: 6 1102
+-- Name: st_length2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_length2d(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_length2d_linestring';
+
+
+ALTER FUNCTION public.st_length2d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 626 (class 1255 OID 18982)
+-- Dependencies: 6 1102 1113
+-- Name: st_length2d_spheroid(geometry, spheroid); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_length2d_spheroid(geometry, spheroid) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'LWGEOM_length2d_ellipsoid';
+
+
+ALTER FUNCTION public.st_length2d_spheroid(geometry, spheroid) OWNER TO postgres;
+
+--
+-- TOC entry 627 (class 1255 OID 18983)
+-- Dependencies: 6 1102
+-- Name: st_length3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_length3d(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_length_linestring';
+
+
+ALTER FUNCTION public.st_length3d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 628 (class 1255 OID 18984)
+-- Dependencies: 6 1102 1113
+-- Name: st_length3d_spheroid(geometry, spheroid); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_length3d_spheroid(geometry, spheroid) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'LWGEOM_length_ellipsoid_linestring';
+
+
+ALTER FUNCTION public.st_length3d_spheroid(geometry, spheroid) OWNER TO postgres;
+
+--
+-- TOC entry 629 (class 1255 OID 18985)
+-- Dependencies: 6 1102 1113
+-- Name: st_length_spheroid(geometry, spheroid); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_length_spheroid(geometry, spheroid) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'LWGEOM_length_ellipsoid_linestring';
+
+
+ALTER FUNCTION public.st_length_spheroid(geometry, spheroid) OWNER TO postgres;
+
+--
+-- TOC entry 630 (class 1255 OID 18986)
+-- Dependencies: 6 1102 1102
+-- Name: st_line_interpolate_point(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_line_interpolate_point(geometry, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_line_interpolate_point';
+
+
+ALTER FUNCTION public.st_line_interpolate_point(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 631 (class 1255 OID 18987)
+-- Dependencies: 6 1102 1102
+-- Name: st_line_locate_point(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_line_locate_point(geometry, geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_line_locate_point';
+
+
+ALTER FUNCTION public.st_line_locate_point(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 632 (class 1255 OID 18988)
+-- Dependencies: 6 1102 1102
+-- Name: st_line_substring(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_line_substring(geometry, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_line_substring';
+
+
+ALTER FUNCTION public.st_line_substring(geometry, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 633 (class 1255 OID 18989)
+-- Dependencies: 6 1102 1102
+-- Name: st_linecrossingdirection(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_linecrossingdirection(geometry, geometry) RETURNS integer
+ LANGUAGE sql IMMUTABLE
+ AS $_$ SELECT CASE WHEN NOT $1 && $2 THEN 0 ELSE _ST_LineCrossingDirection($1,$2) END $_$;
+
+
+ALTER FUNCTION public.st_linecrossingdirection(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 634 (class 1255 OID 18990)
+-- Dependencies: 6 1102 1102
+-- Name: st_linefrommultipoint(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_linefrommultipoint(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_line_from_mpoint';
+
+
+ALTER FUNCTION public.st_linefrommultipoint(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 635 (class 1255 OID 18991)
+-- Dependencies: 6 1102
+-- Name: st_linefromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_linefromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'LINESTRING'
+ THEN ST_GeomFromText($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_linefromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 636 (class 1255 OID 18992)
+-- Dependencies: 6 1102
+-- Name: st_linefromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_linefromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = 'LINESTRING'
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_linefromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 638 (class 1255 OID 18994)
+-- Dependencies: 6 1102
+-- Name: st_linefromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_linefromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'LINESTRING'
+ THEN ST_GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_linefromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 637 (class 1255 OID 18993)
+-- Dependencies: 6 1102
+-- Name: st_linefromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_linefromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'LINESTRING'
+ THEN ST_GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_linefromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 639 (class 1255 OID 18995)
+-- Dependencies: 6 1102 1102
+-- Name: st_linemerge(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_linemerge(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'linemerge';
+
+
+ALTER FUNCTION public.st_linemerge(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 641 (class 1255 OID 18997)
+-- Dependencies: 6 1102
+-- Name: st_linestringfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_linestringfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'LINESTRING'
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_linestringfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 640 (class 1255 OID 18996)
+-- Dependencies: 6 1102
+-- Name: st_linestringfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_linestringfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'LINESTRING'
+ THEN ST_GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_linestringfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 642 (class 1255 OID 18998)
+-- Dependencies: 6 1102 1102
+-- Name: st_linetocurve(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_linetocurve(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_line_desegmentize';
+
+
+ALTER FUNCTION public.st_linetocurve(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 643 (class 1255 OID 18999)
+-- Dependencies: 6 1102 1102
+-- Name: st_locate_along_measure(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_locate_along_measure(geometry, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$ SELECT locate_between_measures($1, $2, $2) $_$;
+
+
+ALTER FUNCTION public.st_locate_along_measure(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 644 (class 1255 OID 19000)
+-- Dependencies: 6 1102 1102
+-- Name: st_locate_between_measures(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_locate_between_measures(geometry, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_locate_between_m';
+
+
+ALTER FUNCTION public.st_locate_between_measures(geometry, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 645 (class 1255 OID 19001)
+-- Dependencies: 6 1102 1102
+-- Name: st_locatebetweenelevations(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_locatebetweenelevations(geometry, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'ST_LocateBetweenElevations';
+
+
+ALTER FUNCTION public.st_locatebetweenelevations(geometry, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 646 (class 1255 OID 19002)
+-- Dependencies: 6 1102 1102 1102
+-- Name: st_longestline(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_longestline(geometry, geometry) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_LongestLine(ST_ConvexHull($1), ST_ConvexHull($2))$_$;
+
+
+ALTER FUNCTION public.st_longestline(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 647 (class 1255 OID 19003)
+-- Dependencies: 6 1102
+-- Name: st_m(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_m(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_m_point';
+
+
+ALTER FUNCTION public.st_m(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 648 (class 1255 OID 19004)
+-- Dependencies: 6 1087 1102 1102
+-- Name: st_makebox2d(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_makebox2d(geometry, geometry) RETURNS box2d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_construct';
+
+
+ALTER FUNCTION public.st_makebox2d(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 649 (class 1255 OID 19005)
+-- Dependencies: 6 1090 1102 1102
+-- Name: st_makebox3d(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_makebox3d(geometry, geometry) RETURNS box3d
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_construct';
+
+
+ALTER FUNCTION public.st_makebox3d(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 650 (class 1255 OID 19006)
+-- Dependencies: 6 1102
+-- Name: st_makeenvelope(double precision, double precision, double precision, double precision, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_makeenvelope(double precision, double precision, double precision, double precision, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'ST_MakeEnvelope';
+
+
+ALTER FUNCTION public.st_makeenvelope(double precision, double precision, double precision, double precision, integer) OWNER TO postgres;
+
+--
+-- TOC entry 651 (class 1255 OID 19007)
+-- Dependencies: 6 1102 1104
+-- Name: st_makeline(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_makeline(geometry[]) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makeline_garray';
+
+
+ALTER FUNCTION public.st_makeline(geometry[]) OWNER TO postgres;
+
+--
+-- TOC entry 652 (class 1255 OID 19008)
+-- Dependencies: 6 1102 1102 1102
+-- Name: st_makeline(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_makeline(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makeline';
+
+
+ALTER FUNCTION public.st_makeline(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 653 (class 1255 OID 19009)
+-- Dependencies: 6 1102 1104
+-- Name: st_makeline_garray(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_makeline_garray(geometry[]) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makeline_garray';
+
+
+ALTER FUNCTION public.st_makeline_garray(geometry[]) OWNER TO postgres;
+
+--
+-- TOC entry 654 (class 1255 OID 19010)
+-- Dependencies: 1102 6
+-- Name: st_makepoint(double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_makepoint(double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makepoint';
+
+
+ALTER FUNCTION public.st_makepoint(double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 655 (class 1255 OID 19011)
+-- Dependencies: 6 1102
+-- Name: st_makepoint(double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_makepoint(double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makepoint';
+
+
+ALTER FUNCTION public.st_makepoint(double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 656 (class 1255 OID 19012)
+-- Dependencies: 6 1102
+-- Name: st_makepoint(double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_makepoint(double precision, double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makepoint';
+
+
+ALTER FUNCTION public.st_makepoint(double precision, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 657 (class 1255 OID 19013)
+-- Dependencies: 6 1102
+-- Name: st_makepointm(double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_makepointm(double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makepoint3dm';
+
+
+ALTER FUNCTION public.st_makepointm(double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 659 (class 1255 OID 19015)
+-- Dependencies: 6 1102 1102
+-- Name: st_makepolygon(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_makepolygon(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makepoly';
+
+
+ALTER FUNCTION public.st_makepolygon(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 658 (class 1255 OID 19014)
+-- Dependencies: 6 1102 1102 1104
+-- Name: st_makepolygon(geometry, geometry[]); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_makepolygon(geometry, geometry[]) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makepoly';
+
+
+ALTER FUNCTION public.st_makepolygon(geometry, geometry[]) OWNER TO postgres;
+
+--
+-- TOC entry 660 (class 1255 OID 19016)
+-- Dependencies: 6 1102 1102
+-- Name: st_maxdistance(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_maxdistance(geometry, geometry) RETURNS double precision
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT _ST_MaxDistance(ST_ConvexHull($1), ST_ConvexHull($2))$_$;
+
+
+ALTER FUNCTION public.st_maxdistance(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 661 (class 1255 OID 19017)
+-- Dependencies: 6 1102
+-- Name: st_mem_size(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_mem_size(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_mem_size';
+
+
+ALTER FUNCTION public.st_mem_size(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 663 (class 1255 OID 19020)
+-- Dependencies: 6 1102 1102
+-- Name: st_minimumboundingcircle(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_minimumboundingcircle(geometry) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT ST_MinimumBoundingCircle($1, 48)$_$;
+
+
+ALTER FUNCTION public.st_minimumboundingcircle(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 662 (class 1255 OID 19018)
+-- Dependencies: 6 1168 1102 1102
+-- Name: st_minimumboundingcircle(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_minimumboundingcircle(inputgeom geometry, segs_per_quarter integer) RETURNS geometry
+ LANGUAGE plpgsql IMMUTABLE STRICT
+ AS $$
+ DECLARE
+ hull GEOMETRY;
+ ring GEOMETRY;
+ center GEOMETRY;
+ radius DOUBLE PRECISION;
+ dist DOUBLE PRECISION;
+ d DOUBLE PRECISION;
+ idx1 integer;
+ idx2 integer;
+ l1 GEOMETRY;
+ l2 GEOMETRY;
+ p1 GEOMETRY;
+ p2 GEOMETRY;
+ a1 DOUBLE PRECISION;
+ a2 DOUBLE PRECISION;
+
+
+ BEGIN
+
+ -- First compute the ConvexHull of the geometry
+ hull = ST_ConvexHull(inputgeom);
+ --A point really has no MBC
+ IF ST_GeometryType(hull) = 'ST_Point' THEN
+ RETURN hull;
+ END IF;
+ -- convert the hull perimeter to a linestring so we can manipulate individual points
+ --If its already a linestring force it to a closed linestring
+ ring = CASE WHEN ST_GeometryType(hull) = 'ST_LineString' THEN ST_AddPoint(hull, ST_StartPoint(hull)) ELSE ST_ExteriorRing(hull) END;
+
+ dist = 0;
+ -- Brute Force - check every pair
+ FOR i in 1 .. (ST_NumPoints(ring)-2)
+ LOOP
+ FOR j in i .. (ST_NumPoints(ring)-1)
+ LOOP
+ d = ST_Distance(ST_PointN(ring,i),ST_PointN(ring,j));
+ -- Check the distance and update if larger
+ IF (d > dist) THEN
+ dist = d;
+ idx1 = i;
+ idx2 = j;
+ END IF;
+ END LOOP;
+ END LOOP;
+
+ -- We now have the diameter of the convex hull. The following line returns it if desired.
+ -- RETURN MakeLine(PointN(ring,idx1),PointN(ring,idx2));
+
+ -- Now for the Minimum Bounding Circle. Since we know the two points furthest from each
+ -- other, the MBC must go through those two points. Start with those points as a diameter of a circle.
+
+ -- The radius is half the distance between them and the center is midway between them
+ radius = ST_Distance(ST_PointN(ring,idx1),ST_PointN(ring,idx2)) / 2.0;
+ center = ST_Line_interpolate_point(ST_MakeLine(ST_PointN(ring,idx1),ST_PointN(ring,idx2)),0.5);
+
+ -- Loop through each vertex and check if the distance from the center to the point
+ -- is greater than the current radius.
+ FOR k in 1 .. (ST_NumPoints(ring)-1)
+ LOOP
+ IF(k <> idx1 and k <> idx2) THEN
+ dist = ST_Distance(center,ST_PointN(ring,k));
+ IF (dist > radius) THEN
+ -- We have to expand the circle. The new circle must pass trhough
+ -- three points - the two original diameters and this point.
+
+ -- Draw a line from the first diameter to this point
+ l1 = ST_Makeline(ST_PointN(ring,idx1),ST_PointN(ring,k));
+ -- Compute the midpoint
+ p1 = ST_line_interpolate_point(l1,0.5);
+ -- Rotate the line 90 degrees around the midpoint (perpendicular bisector)
+ l1 = ST_Translate(ST_Rotate(ST_Translate(l1,-X(p1),-Y(p1)),pi()/2),X(p1),Y(p1));
+ -- Compute the azimuth of the bisector
+ a1 = ST_Azimuth(ST_PointN(l1,1),ST_PointN(l1,2));
+ -- Extend the line in each direction the new computed distance to insure they will intersect
+ l1 = ST_AddPoint(l1,ST_Makepoint(X(ST_PointN(l1,2))+sin(a1)*dist,Y(ST_PointN(l1,2))+cos(a1)*dist),-1);
+ l1 = ST_AddPoint(l1,ST_Makepoint(X(ST_PointN(l1,1))-sin(a1)*dist,Y(ST_PointN(l1,1))-cos(a1)*dist),0);
+
+ -- Repeat for the line from the point to the other diameter point
+ l2 = ST_Makeline(ST_PointN(ring,idx2),ST_PointN(ring,k));
+ p2 = ST_Line_interpolate_point(l2,0.5);
+ l2 = ST_Translate(ST_Rotate(ST_Translate(l2,-X(p2),-Y(p2)),pi()/2),X(p2),Y(p2));
+ a2 = ST_Azimuth(ST_PointN(l2,1),ST_PointN(l2,2));
+ l2 = ST_AddPoint(l2,ST_Makepoint(X(ST_PointN(l2,2))+sin(a2)*dist,Y(ST_PointN(l2,2))+cos(a2)*dist),-1);
+ l2 = ST_AddPoint(l2,ST_Makepoint(X(ST_PointN(l2,1))-sin(a2)*dist,Y(ST_PointN(l2,1))-cos(a2)*dist),0);
+
+ -- The new center is the intersection of the two bisectors
+ center = ST_Intersection(l1,l2);
+ -- The new radius is the distance to any of the three points
+ radius = ST_Distance(center,ST_PointN(ring,idx1));
+ END IF;
+ END IF;
+ END LOOP;
+ --DONE!! Return the MBC via the buffer command
+ RETURN ST_Buffer(center,radius,segs_per_quarter);
+
+ END;
+$$;
+
+
+ALTER FUNCTION public.st_minimumboundingcircle(inputgeom geometry, segs_per_quarter integer) OWNER TO postgres;
+
+--
+-- TOC entry 665 (class 1255 OID 19022)
+-- Dependencies: 6 1102
+-- Name: st_mlinefromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_mlinefromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'MULTILINESTRING'
+ THEN ST_GeomFromText($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_mlinefromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 664 (class 1255 OID 19021)
+-- Dependencies: 6 1102
+-- Name: st_mlinefromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_mlinefromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE
+ WHEN geometrytype(GeomFromText($1, $2)) = 'MULTILINESTRING'
+ THEN GeomFromText($1,$2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_mlinefromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 667 (class 1255 OID 19024)
+-- Dependencies: 6 1102
+-- Name: st_mlinefromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_mlinefromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTILINESTRING'
+ THEN ST_GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_mlinefromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 666 (class 1255 OID 19023)
+-- Dependencies: 6 1102
+-- Name: st_mlinefromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_mlinefromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'MULTILINESTRING'
+ THEN ST_GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_mlinefromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 669 (class 1255 OID 19026)
+-- Dependencies: 6 1102
+-- Name: st_mpointfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_mpointfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'MULTIPOINT'
+ THEN ST_GeomFromText($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_mpointfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 668 (class 1255 OID 19025)
+-- Dependencies: 6 1102
+-- Name: st_mpointfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_mpointfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromText($1, $2)) = 'MULTIPOINT'
+ THEN GeomFromText($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_mpointfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 672 (class 1255 OID 19028)
+-- Dependencies: 6 1102
+-- Name: st_mpointfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_mpointfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTIPOINT'
+ THEN ST_GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_mpointfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 671 (class 1255 OID 19027)
+-- Dependencies: 6 1102
+-- Name: st_mpointfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_mpointfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1, $2)) = 'MULTIPOINT'
+ THEN GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_mpointfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 674 (class 1255 OID 19030)
+-- Dependencies: 6 1102
+-- Name: st_mpolyfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_mpolyfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'MULTIPOLYGON'
+ THEN ST_GeomFromText($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_mpolyfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 673 (class 1255 OID 19029)
+-- Dependencies: 6 1102
+-- Name: st_mpolyfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_mpolyfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromText($1, $2)) = 'MULTIPOLYGON'
+ THEN ST_GeomFromText($1,$2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_mpolyfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 676 (class 1255 OID 19032)
+-- Dependencies: 6 1102
+-- Name: st_mpolyfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_mpolyfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTIPOLYGON'
+ THEN ST_GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_mpolyfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 675 (class 1255 OID 19031)
+-- Dependencies: 6 1102
+-- Name: st_mpolyfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_mpolyfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'MULTIPOLYGON'
+ THEN ST_GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_mpolyfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 677 (class 1255 OID 19033)
+-- Dependencies: 6 1102 1102
+-- Name: st_multi(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_multi(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_force_multi';
+
+
+ALTER FUNCTION public.st_multi(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 678 (class 1255 OID 19034)
+-- Dependencies: 6 1102
+-- Name: st_multilinefromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_multilinefromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTILINESTRING'
+ THEN ST_GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_multilinefromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 679 (class 1255 OID 19035)
+-- Dependencies: 6 1102
+-- Name: st_multilinestringfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_multilinestringfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT ST_MLineFromText($1)$_$;
+
+
+ALTER FUNCTION public.st_multilinestringfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 680 (class 1255 OID 19036)
+-- Dependencies: 6 1102
+-- Name: st_multilinestringfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_multilinestringfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT MLineFromText($1, $2)$_$;
+
+
+ALTER FUNCTION public.st_multilinestringfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 681 (class 1255 OID 19037)
+-- Dependencies: 6 1102
+-- Name: st_multipointfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_multipointfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT MPointFromText($1)$_$;
+
+
+ALTER FUNCTION public.st_multipointfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 683 (class 1255 OID 19039)
+-- Dependencies: 1102 6
+-- Name: st_multipointfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_multipointfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTIPOINT'
+ THEN ST_GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_multipointfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 682 (class 1255 OID 19038)
+-- Dependencies: 6 1102
+-- Name: st_multipointfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_multipointfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1,$2)) = 'MULTIPOINT'
+ THEN ST_GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_multipointfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 685 (class 1255 OID 19041)
+-- Dependencies: 6 1102
+-- Name: st_multipolyfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_multipolyfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'MULTIPOLYGON'
+ THEN ST_GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_multipolyfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 684 (class 1255 OID 19040)
+-- Dependencies: 6 1102
+-- Name: st_multipolyfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_multipolyfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'MULTIPOLYGON'
+ THEN ST_GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_multipolyfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 687 (class 1255 OID 19043)
+-- Dependencies: 6 1102
+-- Name: st_multipolygonfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_multipolygonfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT MPolyFromText($1)$_$;
+
+
+ALTER FUNCTION public.st_multipolygonfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 686 (class 1255 OID 19042)
+-- Dependencies: 6 1102
+-- Name: st_multipolygonfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_multipolygonfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT MPolyFromText($1, $2)$_$;
+
+
+ALTER FUNCTION public.st_multipolygonfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 688 (class 1255 OID 19044)
+-- Dependencies: 6 1102
+-- Name: st_ndims(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_ndims(geometry) RETURNS smallint
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_ndims';
+
+
+ALTER FUNCTION public.st_ndims(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 689 (class 1255 OID 19045)
+-- Dependencies: 6 1102
+-- Name: st_npoints(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_npoints(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_npoints';
+
+
+ALTER FUNCTION public.st_npoints(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 690 (class 1255 OID 19046)
+-- Dependencies: 6 1102
+-- Name: st_nrings(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_nrings(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_nrings';
+
+
+ALTER FUNCTION public.st_nrings(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 691 (class 1255 OID 19047)
+-- Dependencies: 6 1102
+-- Name: st_numgeometries(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_numgeometries(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_numgeometries_collection';
+
+
+ALTER FUNCTION public.st_numgeometries(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 692 (class 1255 OID 19048)
+-- Dependencies: 6 1102
+-- Name: st_numinteriorring(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_numinteriorring(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_numinteriorrings_polygon';
+
+
+ALTER FUNCTION public.st_numinteriorring(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 693 (class 1255 OID 19049)
+-- Dependencies: 6 1102
+-- Name: st_numinteriorrings(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_numinteriorrings(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_numinteriorrings_polygon';
+
+
+ALTER FUNCTION public.st_numinteriorrings(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 694 (class 1255 OID 19050)
+-- Dependencies: 6 1102
+-- Name: st_numpoints(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_numpoints(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_numpoints_linestring';
+
+
+ALTER FUNCTION public.st_numpoints(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 695 (class 1255 OID 19051)
+-- Dependencies: 6 1102 1102
+-- Name: st_orderingequals(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_orderingequals(geometry, geometry) RETURNS boolean
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT $1 ~= $2 AND _ST_OrderingEquals($1, $2)
+ $_$;
+
+
+ALTER FUNCTION public.st_orderingequals(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 696 (class 1255 OID 19052)
+-- Dependencies: 6 1102 1102
+-- Name: st_overlaps(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_overlaps(geometry, geometry) RETURNS boolean
+ LANGUAGE sql IMMUTABLE
+ AS $_$SELECT $1 && $2 AND _ST_Overlaps($1,$2)$_$;
+
+
+ALTER FUNCTION public.st_overlaps(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 697 (class 1255 OID 19053)
+-- Dependencies: 6 1102
+-- Name: st_perimeter(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_perimeter(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_perimeter2d_poly';
+
+
+ALTER FUNCTION public.st_perimeter(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 698 (class 1255 OID 19054)
+-- Dependencies: 6 1102
+-- Name: st_perimeter2d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_perimeter2d(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_perimeter2d_poly';
+
+
+ALTER FUNCTION public.st_perimeter2d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 699 (class 1255 OID 19055)
+-- Dependencies: 6 1102
+-- Name: st_perimeter3d(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_perimeter3d(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_perimeter_poly';
+
+
+ALTER FUNCTION public.st_perimeter3d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 700 (class 1255 OID 19056)
+-- Dependencies: 6 1102
+-- Name: st_point(double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_point(double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_makepoint';
+
+
+ALTER FUNCTION public.st_point(double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 701 (class 1255 OID 19057)
+-- Dependencies: 6 1102
+-- Name: st_point_inside_circle(geometry, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_point_inside_circle(geometry, double precision, double precision, double precision) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_inside_circle_point';
+
+
+ALTER FUNCTION public.st_point_inside_circle(geometry, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 702 (class 1255 OID 19058)
+-- Dependencies: 6 1102
+-- Name: st_pointfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_pointfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'POINT'
+ THEN ST_GeomFromText($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_pointfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 703 (class 1255 OID 19059)
+-- Dependencies: 6 1102
+-- Name: st_pointfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_pointfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromText($1, $2)) = 'POINT'
+ THEN ST_GeomFromText($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_pointfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 706 (class 1255 OID 19061)
+-- Dependencies: 6 1102
+-- Name: st_pointfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_pointfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'POINT'
+ THEN ST_GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_pointfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 705 (class 1255 OID 19060)
+-- Dependencies: 6 1102
+-- Name: st_pointfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_pointfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'POINT'
+ THEN ST_GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_pointfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 707 (class 1255 OID 19062)
+-- Dependencies: 6 1102 1102
+-- Name: st_pointn(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_pointn(geometry, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_pointn_linestring';
+
+
+ALTER FUNCTION public.st_pointn(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 708 (class 1255 OID 19063)
+-- Dependencies: 6 1102 1102
+-- Name: st_pointonsurface(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_pointonsurface(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'pointonsurface';
+
+
+ALTER FUNCTION public.st_pointonsurface(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 709 (class 1255 OID 19064)
+-- Dependencies: 6 1102
+-- Name: st_polyfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_polyfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = 'POLYGON'
+ THEN ST_GeomFromText($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_polyfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 710 (class 1255 OID 19065)
+-- Dependencies: 6 1102
+-- Name: st_polyfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_polyfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromText($1, $2)) = 'POLYGON'
+ THEN ST_GeomFromText($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_polyfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 712 (class 1255 OID 19067)
+-- Dependencies: 6 1102
+-- Name: st_polyfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_polyfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = 'POLYGON'
+ THEN ST_GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_polyfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 711 (class 1255 OID 19066)
+-- Dependencies: 6 1102
+-- Name: st_polyfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_polyfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = 'POLYGON'
+ THEN ST_GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_polyfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 713 (class 1255 OID 19068)
+-- Dependencies: 6 1102 1102
+-- Name: st_polygon(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_polygon(geometry, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT setSRID(makepolygon($1), $2)
+ $_$;
+
+
+ALTER FUNCTION public.st_polygon(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 715 (class 1255 OID 19070)
+-- Dependencies: 1102 6
+-- Name: st_polygonfromtext(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_polygonfromtext(text) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT ST_PolyFromText($1)$_$;
+
+
+ALTER FUNCTION public.st_polygonfromtext(text) OWNER TO postgres;
+
+--
+-- TOC entry 714 (class 1255 OID 19069)
+-- Dependencies: 6 1102
+-- Name: st_polygonfromtext(text, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_polygonfromtext(text, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT PolyFromText($1, $2)$_$;
+
+
+ALTER FUNCTION public.st_polygonfromtext(text, integer) OWNER TO postgres;
+
+--
+-- TOC entry 717 (class 1255 OID 19072)
+-- Dependencies: 6 1102
+-- Name: st_polygonfromwkb(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_polygonfromwkb(bytea) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(GeomFromWKB($1)) = 'POLYGON'
+ THEN GeomFromWKB($1)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_polygonfromwkb(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 716 (class 1255 OID 19071)
+-- Dependencies: 1102 6
+-- Name: st_polygonfromwkb(bytea, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_polygonfromwkb(bytea, integer) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$
+ SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1,$2)) = 'POLYGON'
+ THEN ST_GeomFromWKB($1, $2)
+ ELSE NULL END
+ $_$;
+
+
+ALTER FUNCTION public.st_polygonfromwkb(bytea, integer) OWNER TO postgres;
+
+--
+-- TOC entry 718 (class 1255 OID 19073)
+-- Dependencies: 1102 6 1104
+-- Name: st_polygonize(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_polygonize(geometry[]) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'polygonize_garray';
+
+
+ALTER FUNCTION public.st_polygonize(geometry[]) OWNER TO postgres;
+
+--
+-- TOC entry 719 (class 1255 OID 19074)
+-- Dependencies: 1102 6 1104
+-- Name: st_polygonize_garray(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_polygonize_garray(geometry[]) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'polygonize_garray';
+
+
+ALTER FUNCTION public.st_polygonize_garray(geometry[]) OWNER TO postgres;
+
+--
+-- TOC entry 720 (class 1255 OID 19075)
+-- Dependencies: 6
+-- Name: st_postgis_gist_joinsel(internal, oid, internal, smallint); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_postgis_gist_joinsel(internal, oid, internal, smallint) RETURNS double precision
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'LWGEOM_gist_joinsel';
+
+
+ALTER FUNCTION public.st_postgis_gist_joinsel(internal, oid, internal, smallint) OWNER TO postgres;
+
+--
+-- TOC entry 721 (class 1255 OID 19076)
+-- Dependencies: 6
+-- Name: st_postgis_gist_sel(internal, oid, internal, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_postgis_gist_sel(internal, oid, internal, integer) RETURNS double precision
+ LANGUAGE c
+ AS '$libdir/postgis-1.5', 'LWGEOM_gist_sel';
+
+
+ALTER FUNCTION public.st_postgis_gist_sel(internal, oid, internal, integer) OWNER TO postgres;
+
+--
+-- TOC entry 722 (class 1255 OID 19077)
+-- Dependencies: 1102 6 1102
+-- Name: st_relate(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_relate(geometry, geometry) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'relate_full';
+
+
+ALTER FUNCTION public.st_relate(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 723 (class 1255 OID 19078)
+-- Dependencies: 1102 6 1102
+-- Name: st_relate(geometry, geometry, text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_relate(geometry, geometry, text) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'relate_pattern';
+
+
+ALTER FUNCTION public.st_relate(geometry, geometry, text) OWNER TO postgres;
+
+--
+-- TOC entry 724 (class 1255 OID 19079)
+-- Dependencies: 1102 6 1102
+-- Name: st_removepoint(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_removepoint(geometry, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_removepoint';
+
+
+ALTER FUNCTION public.st_removepoint(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 725 (class 1255 OID 19080)
+-- Dependencies: 1102 6 1102
+-- Name: st_reverse(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_reverse(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_reverse';
+
+
+ALTER FUNCTION public.st_reverse(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 726 (class 1255 OID 19081)
+-- Dependencies: 1102 6 1102
+-- Name: st_rotate(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_rotate(geometry, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT rotateZ($1, $2)$_$;
+
+
+ALTER FUNCTION public.st_rotate(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 727 (class 1255 OID 19082)
+-- Dependencies: 1102 6 1102
+-- Name: st_rotatex(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_rotatex(geometry, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT affine($1, 1, 0, 0, 0, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0)$_$;
+
+
+ALTER FUNCTION public.st_rotatex(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 728 (class 1255 OID 19083)
+-- Dependencies: 1102 6 1102
+-- Name: st_rotatey(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_rotatey(geometry, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT affine($1, cos($2), 0, sin($2), 0, 1, 0, -sin($2), 0, cos($2), 0, 0, 0)$_$;
+
+
+ALTER FUNCTION public.st_rotatey(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 729 (class 1255 OID 19084)
+-- Dependencies: 1102 6 1102
+-- Name: st_rotatez(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_rotatez(geometry, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT affine($1, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0, 1, 0, 0, 0)$_$;
+
+
+ALTER FUNCTION public.st_rotatez(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 731 (class 1255 OID 19086)
+-- Dependencies: 1102 1102 6
+-- Name: st_scale(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_scale(geometry, double precision, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT scale($1, $2, $3, 1)$_$;
+
+
+ALTER FUNCTION public.st_scale(geometry, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 730 (class 1255 OID 19085)
+-- Dependencies: 1102 6 1102
+-- Name: st_scale(geometry, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_scale(geometry, double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT affine($1, $2, 0, 0, 0, $3, 0, 0, 0, $4, 0, 0, 0)$_$;
+
+
+ALTER FUNCTION public.st_scale(geometry, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 732 (class 1255 OID 19087)
+-- Dependencies: 1102 1102 6
+-- Name: st_segmentize(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_segmentize(geometry, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_segmentize2d';
+
+
+ALTER FUNCTION public.st_segmentize(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 733 (class 1255 OID 19088)
+-- Dependencies: 6 1096 1096
+-- Name: st_setfactor(chip, real); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_setfactor(chip, real) RETURNS chip
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_setFactor';
+
+
+ALTER FUNCTION public.st_setfactor(chip, real) OWNER TO postgres;
+
+--
+-- TOC entry 734 (class 1255 OID 19089)
+-- Dependencies: 6 1102 1102 1102
+-- Name: st_setpoint(geometry, integer, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_setpoint(geometry, integer, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_setpoint_linestring';
+
+
+ALTER FUNCTION public.st_setpoint(geometry, integer, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 735 (class 1255 OID 19090)
+-- Dependencies: 1102 6 1102
+-- Name: st_setsrid(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_setsrid(geometry, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_setSRID';
+
+
+ALTER FUNCTION public.st_setsrid(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 736 (class 1255 OID 19091)
+-- Dependencies: 1102 6 1102
+-- Name: st_shift_longitude(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_shift_longitude(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_longitude_shift';
+
+
+ALTER FUNCTION public.st_shift_longitude(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 737 (class 1255 OID 19092)
+-- Dependencies: 1102 1102 1102 6
+-- Name: st_shortestline(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_shortestline(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_shortestline2d';
+
+
+ALTER FUNCTION public.st_shortestline(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 738 (class 1255 OID 19093)
+-- Dependencies: 6 1102 1102
+-- Name: st_simplify(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_simplify(geometry, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_simplify2d';
+
+
+ALTER FUNCTION public.st_simplify(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 739 (class 1255 OID 19094)
+-- Dependencies: 1102 6 1102
+-- Name: st_simplifypreservetopology(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_simplifypreservetopology(geometry, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT COST 100
+ AS '$libdir/postgis-1.5', 'topologypreservesimplify';
+
+
+ALTER FUNCTION public.st_simplifypreservetopology(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 740 (class 1255 OID 19097)
+-- Dependencies: 1102 6 1102
+-- Name: st_snaptogrid(geometry, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_snaptogrid(geometry, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT ST_SnapToGrid($1, 0, 0, $2, $2)$_$;
+
+
+ALTER FUNCTION public.st_snaptogrid(geometry, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 704 (class 1255 OID 19096)
+-- Dependencies: 6 1102 1102
+-- Name: st_snaptogrid(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_snaptogrid(geometry, double precision, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT ST_SnapToGrid($1, 0, 0, $2, $3)$_$;
+
+
+ALTER FUNCTION public.st_snaptogrid(geometry, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 670 (class 1255 OID 19095)
+-- Dependencies: 6 1102 1102
+-- Name: st_snaptogrid(geometry, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_snaptogrid(geometry, double precision, double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_snaptogrid';
+
+
+ALTER FUNCTION public.st_snaptogrid(geometry, double precision, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 741 (class 1255 OID 19098)
+-- Dependencies: 1102 1102 1102 6
+-- Name: st_snaptogrid(geometry, geometry, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_snaptogrid(geometry, geometry, double precision, double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_snaptogrid_pointoff';
+
+
+ALTER FUNCTION public.st_snaptogrid(geometry, geometry, double precision, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 742 (class 1255 OID 19099)
+-- Dependencies: 6 1113
+-- Name: st_spheroid_in(cstring); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_spheroid_in(cstring) RETURNS spheroid
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'ellipsoid_in';
+
+
+ALTER FUNCTION public.st_spheroid_in(cstring) OWNER TO postgres;
+
+--
+-- TOC entry 743 (class 1255 OID 19100)
+-- Dependencies: 6 1113
+-- Name: st_spheroid_out(spheroid); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_spheroid_out(spheroid) RETURNS cstring
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'ellipsoid_out';
+
+
+ALTER FUNCTION public.st_spheroid_out(spheroid) OWNER TO postgres;
+
+--
+-- TOC entry 744 (class 1255 OID 19101)
+-- Dependencies: 1096 6
+-- Name: st_srid(chip); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_srid(chip) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_getSRID';
+
+
+ALTER FUNCTION public.st_srid(chip) OWNER TO postgres;
+
+--
+-- TOC entry 745 (class 1255 OID 19102)
+-- Dependencies: 6 1102
+-- Name: st_srid(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_srid(geometry) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_getSRID';
+
+
+ALTER FUNCTION public.st_srid(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 746 (class 1255 OID 19103)
+-- Dependencies: 6 1102 1102
+-- Name: st_startpoint(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_startpoint(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_startpoint_linestring';
+
+
+ALTER FUNCTION public.st_startpoint(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 747 (class 1255 OID 19104)
+-- Dependencies: 6 1102
+-- Name: st_summary(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_summary(geometry) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_summary';
+
+
+ALTER FUNCTION public.st_summary(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 748 (class 1255 OID 19105)
+-- Dependencies: 1102 1102 1102 6
+-- Name: st_symdifference(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_symdifference(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'symdifference';
+
+
+ALTER FUNCTION public.st_symdifference(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 749 (class 1255 OID 19106)
+-- Dependencies: 1102 1102 1102 6
+-- Name: st_symmetricdifference(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_symmetricdifference(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'symdifference';
+
+
+ALTER FUNCTION public.st_symmetricdifference(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 750 (class 1255 OID 19107)
+-- Dependencies: 6 1102
+-- Name: st_text(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_text(geometry) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_to_text';
+
+
+ALTER FUNCTION public.st_text(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 751 (class 1255 OID 19108)
+-- Dependencies: 1102 6 1102
+-- Name: st_touches(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_touches(geometry, geometry) RETURNS boolean
+ LANGUAGE sql IMMUTABLE
+ AS $_$SELECT $1 && $2 AND _ST_Touches($1,$2)$_$;
+
+
+ALTER FUNCTION public.st_touches(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 752 (class 1255 OID 19109)
+-- Dependencies: 6 1102 1102
+-- Name: st_transform(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_transform(geometry, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'transform';
+
+
+ALTER FUNCTION public.st_transform(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 754 (class 1255 OID 19111)
+-- Dependencies: 1102 6 1102
+-- Name: st_translate(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_translate(geometry, double precision, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT translate($1, $2, $3, 0)$_$;
+
+
+ALTER FUNCTION public.st_translate(geometry, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 753 (class 1255 OID 19110)
+-- Dependencies: 1102 6 1102
+-- Name: st_translate(geometry, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_translate(geometry, double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT affine($1, 1, 0, 0, 0, 1, 0, 0, 0, 1, $2, $3, $4)$_$;
+
+
+ALTER FUNCTION public.st_translate(geometry, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 755 (class 1255 OID 19112)
+-- Dependencies: 6 1102 1102
+-- Name: st_transscale(geometry, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_transscale(geometry, double precision, double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT affine($1, $4, 0, 0, 0, $5, 0,
+ 0, 0, 1, $2 * $4, $3 * $5, 0)$_$;
+
+
+ALTER FUNCTION public.st_transscale(geometry, double precision, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 757 (class 1255 OID 19114)
+-- Dependencies: 6 1104 1102
+-- Name: st_union(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_union(geometry[]) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'pgis_union_geometry_array';
+
+
+ALTER FUNCTION public.st_union(geometry[]) OWNER TO postgres;
+
+--
+-- TOC entry 756 (class 1255 OID 19113)
+-- Dependencies: 6 1102 1102 1102
+-- Name: st_union(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_union(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'geomunion';
+
+
+ALTER FUNCTION public.st_union(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 758 (class 1255 OID 19115)
+-- Dependencies: 1104 6 1102
+-- Name: st_unite_garray(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_unite_garray(geometry[]) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'pgis_union_geometry_array';
+
+
+ALTER FUNCTION public.st_unite_garray(geometry[]) OWNER TO postgres;
+
+--
+-- TOC entry 759 (class 1255 OID 19116)
+-- Dependencies: 6 1096
+-- Name: st_width(chip); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_width(chip) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_getWidth';
+
+
+ALTER FUNCTION public.st_width(chip) OWNER TO postgres;
+
+--
+-- TOC entry 760 (class 1255 OID 19117)
+-- Dependencies: 1102 1102 6
+-- Name: st_within(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_within(geometry, geometry) RETURNS boolean
+ LANGUAGE sql IMMUTABLE
+ AS $_$SELECT $1 && $2 AND _ST_Within($1,$2)$_$;
+
+
+ALTER FUNCTION public.st_within(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 761 (class 1255 OID 19118)
+-- Dependencies: 1102 6
+-- Name: st_wkbtosql(bytea); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_wkbtosql(bytea) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_from_WKB';
+
+
+ALTER FUNCTION public.st_wkbtosql(bytea) OWNER TO postgres;
+
+--
+-- TOC entry 762 (class 1255 OID 19119)
+-- Dependencies: 6 1102
+-- Name: st_wkttosql(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_wkttosql(text) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_from_text';
+
+
+ALTER FUNCTION public.st_wkttosql(text) OWNER TO postgres;
+
+--
+-- TOC entry 763 (class 1255 OID 19120)
+-- Dependencies: 1102 6
+-- Name: st_x(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_x(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_x_point';
+
+
+ALTER FUNCTION public.st_x(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 764 (class 1255 OID 19121)
+-- Dependencies: 6 1090
+-- Name: st_xmax(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_xmax(box3d) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_xmax';
+
+
+ALTER FUNCTION public.st_xmax(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 765 (class 1255 OID 19122)
+-- Dependencies: 6 1090
+-- Name: st_xmin(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_xmin(box3d) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_xmin';
+
+
+ALTER FUNCTION public.st_xmin(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 766 (class 1255 OID 19123)
+-- Dependencies: 1102 6
+-- Name: st_y(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_y(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_y_point';
+
+
+ALTER FUNCTION public.st_y(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 767 (class 1255 OID 19124)
+-- Dependencies: 1090 6
+-- Name: st_ymax(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_ymax(box3d) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_ymax';
+
+
+ALTER FUNCTION public.st_ymax(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 768 (class 1255 OID 19125)
+-- Dependencies: 6 1090
+-- Name: st_ymin(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_ymin(box3d) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_ymin';
+
+
+ALTER FUNCTION public.st_ymin(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 769 (class 1255 OID 19126)
+-- Dependencies: 1102 6
+-- Name: st_z(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_z(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_z_point';
+
+
+ALTER FUNCTION public.st_z(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 770 (class 1255 OID 19127)
+-- Dependencies: 6 1090
+-- Name: st_zmax(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_zmax(box3d) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_zmax';
+
+
+ALTER FUNCTION public.st_zmax(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 771 (class 1255 OID 19128)
+-- Dependencies: 6 1102
+-- Name: st_zmflag(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_zmflag(geometry) RETURNS smallint
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_zmflag';
+
+
+ALTER FUNCTION public.st_zmflag(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 772 (class 1255 OID 19129)
+-- Dependencies: 1090 6
+-- Name: st_zmin(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION st_zmin(box3d) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_zmin';
+
+
+ALTER FUNCTION public.st_zmin(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 773 (class 1255 OID 19130)
+-- Dependencies: 1102 6 1102
+-- Name: startpoint(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION startpoint(geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_startpoint_linestring';
+
+
+ALTER FUNCTION public.startpoint(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 774 (class 1255 OID 19131)
+-- Dependencies: 6 1102
+-- Name: summary(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION summary(geometry) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_summary';
+
+
+ALTER FUNCTION public.summary(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 775 (class 1255 OID 19132)
+-- Dependencies: 1102 6 1102 1102
+-- Name: symdifference(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION symdifference(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'symdifference';
+
+
+ALTER FUNCTION public.symdifference(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 776 (class 1255 OID 19133)
+-- Dependencies: 1102 6 1102 1102
+-- Name: symmetricdifference(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION symmetricdifference(geometry, geometry) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'symdifference';
+
+
+ALTER FUNCTION public.symmetricdifference(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 777 (class 1255 OID 19134)
+-- Dependencies: 6 1102
+-- Name: text(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION text(geometry) RETURNS text
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_to_text';
+
+
+ALTER FUNCTION public.text(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 778 (class 1255 OID 19135)
+-- Dependencies: 1102 6 1102
+-- Name: touches(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION touches(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'touches';
+
+
+ALTER FUNCTION public.touches(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 779 (class 1255 OID 19136)
+-- Dependencies: 1102 6 1102
+-- Name: transform(geometry, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION transform(geometry, integer) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'transform';
+
+
+ALTER FUNCTION public.transform(geometry, integer) OWNER TO postgres;
+
+--
+-- TOC entry 781 (class 1255 OID 19138)
+-- Dependencies: 1102 6 1102
+-- Name: translate(geometry, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION translate(geometry, double precision, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT translate($1, $2, $3, 0)$_$;
+
+
+ALTER FUNCTION public.translate(geometry, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 780 (class 1255 OID 19137)
+-- Dependencies: 1102 6 1102
+-- Name: translate(geometry, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION translate(geometry, double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT affine($1, 1, 0, 0, 0, 1, 0, 0, 0, 1, $2, $3, $4)$_$;
+
+
+ALTER FUNCTION public.translate(geometry, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 782 (class 1255 OID 19139)
+-- Dependencies: 6 1102 1102
+-- Name: transscale(geometry, double precision, double precision, double precision, double precision); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION transscale(geometry, double precision, double precision, double precision, double precision) RETURNS geometry
+ LANGUAGE sql IMMUTABLE STRICT
+ AS $_$SELECT affine($1, $4, 0, 0, 0, $5, 0,
+ 0, 0, 1, $2 * $4, $3 * $5, 0)$_$;
+
+
+ALTER FUNCTION public.transscale(geometry, double precision, double precision, double precision, double precision) OWNER TO postgres;
+
+--
+-- TOC entry 783 (class 1255 OID 19140)
+-- Dependencies: 1104 6 1102
+-- Name: unite_garray(geometry[]); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION unite_garray(geometry[]) RETURNS geometry
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'pgis_union_geometry_array';
+
+
+ALTER FUNCTION public.unite_garray(geometry[]) OWNER TO postgres;
+
+--
+-- TOC entry 784 (class 1255 OID 19141)
+-- Dependencies: 6 1168
+-- Name: unlockrows(text); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION unlockrows(text) RETURNS integer
+ LANGUAGE plpgsql STRICT
+ AS $_$
+DECLARE
+ ret int;
+BEGIN
+
+ IF NOT LongTransactionsEnabled() THEN
+ RAISE EXCEPTION 'Long transaction support disabled, use EnableLongTransaction() to enable.';
+ END IF;
+
+ EXECUTE 'DELETE FROM authorization_table where authid = ' ||
+ quote_literal($1);
+
+ GET DIAGNOSTICS ret = ROW_COUNT;
+
+ RETURN ret;
+END;
+$_$;
+
+
+ALTER FUNCTION public.unlockrows(text) OWNER TO postgres;
+
+--
+-- TOC entry 787 (class 1255 OID 19144)
+-- Dependencies: 6 1168
+-- Name: updategeometrysrid(character varying, character varying, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION updategeometrysrid(character varying, character varying, integer) RETURNS text
+ LANGUAGE plpgsql STRICT
+ AS $_$
+DECLARE
+ ret text;
+BEGIN
+ SELECT UpdateGeometrySRID('','',$1,$2,$3) into ret;
+ RETURN ret;
+END;
+$_$;
+
+
+ALTER FUNCTION public.updategeometrysrid(character varying, character varying, integer) OWNER TO postgres;
+
+--
+-- TOC entry 786 (class 1255 OID 19143)
+-- Dependencies: 6 1168
+-- Name: updategeometrysrid(character varying, character varying, character varying, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION updategeometrysrid(character varying, character varying, character varying, integer) RETURNS text
+ LANGUAGE plpgsql STRICT
+ AS $_$
+DECLARE
+ ret text;
+BEGIN
+ SELECT UpdateGeometrySRID('',$1,$2,$3,$4) into ret;
+ RETURN ret;
+END;
+$_$;
+
+
+ALTER FUNCTION public.updategeometrysrid(character varying, character varying, character varying, integer) OWNER TO postgres;
+
+--
+-- TOC entry 785 (class 1255 OID 19142)
+-- Dependencies: 1168 6
+-- Name: updategeometrysrid(character varying, character varying, character varying, character varying, integer); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION updategeometrysrid(character varying, character varying, character varying, character varying, integer) RETURNS text
+ LANGUAGE plpgsql STRICT
+ AS $_$
+DECLARE
+ catalog_name alias for $1;
+ schema_name alias for $2;
+ table_name alias for $3;
+ column_name alias for $4;
+ new_srid alias for $5;
+ myrec RECORD;
+ okay boolean;
+ cname varchar;
+ real_schema name;
+
+BEGIN
+
+
+ -- Find, check or fix schema_name
+ IF ( schema_name != '' ) THEN
+ okay = 'f';
+
+ FOR myrec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP
+ okay := 't';
+ END LOOP;
+
+ IF ( okay <> 't' ) THEN
+ RAISE EXCEPTION 'Invalid schema name';
+ ELSE
+ real_schema = schema_name;
+ END IF;
+ ELSE
+ SELECT INTO real_schema current_schema()::text;
+ END IF;
+
+ -- Find out if the column is in the geometry_columns table
+ okay = 'f';
+ FOR myrec IN SELECT * from geometry_columns where f_table_schema = text(real_schema) and f_table_name = table_name and f_geometry_column = column_name LOOP
+ okay := 't';
+ END LOOP;
+ IF (okay <> 't') THEN
+ RAISE EXCEPTION 'column not found in geometry_columns table';
+ RETURN 'f';
+ END IF;
+
+ -- Update ref from geometry_columns table
+ EXECUTE 'UPDATE geometry_columns SET SRID = ' || new_srid::text ||
+ ' where f_table_schema = ' ||
+ quote_literal(real_schema) || ' and f_table_name = ' ||
+ quote_literal(table_name) || ' and f_geometry_column = ' ||
+ quote_literal(column_name);
+
+ -- Make up constraint name
+ cname = 'enforce_srid_' || column_name;
+
+ -- Drop enforce_srid constraint
+ EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) ||
+ '.' || quote_ident(table_name) ||
+ ' DROP constraint ' || quote_ident(cname);
+
+ -- Update geometries SRID
+ EXECUTE 'UPDATE ' || quote_ident(real_schema) ||
+ '.' || quote_ident(table_name) ||
+ ' SET ' || quote_ident(column_name) ||
+ ' = setSRID(' || quote_ident(column_name) ||
+ ', ' || new_srid::text || ')';
+
+ -- Reset enforce_srid constraint
+ EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) ||
+ '.' || quote_ident(table_name) ||
+ ' ADD constraint ' || quote_ident(cname) ||
+ ' CHECK (srid(' || quote_ident(column_name) ||
+ ') = ' || new_srid::text || ')';
+
+ RETURN real_schema || '.' || table_name || '.' || column_name ||' SRID changed to ' || new_srid::text;
+
+END;
+$_$;
+
+
+ALTER FUNCTION public.updategeometrysrid(character varying, character varying, character varying, character varying, integer) OWNER TO postgres;
+
+--
+-- TOC entry 788 (class 1255 OID 19145)
+-- Dependencies: 6 1096
+-- Name: width(chip); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION width(chip) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'CHIP_getWidth';
+
+
+ALTER FUNCTION public.width(chip) OWNER TO postgres;
+
+--
+-- TOC entry 789 (class 1255 OID 19146)
+-- Dependencies: 1102 1102 6
+-- Name: within(geometry, geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION within(geometry, geometry) RETURNS boolean
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'within';
+
+
+ALTER FUNCTION public.within(geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 790 (class 1255 OID 19147)
+-- Dependencies: 6 1102
+-- Name: x(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION x(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_x_point';
+
+
+ALTER FUNCTION public.x(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 791 (class 1255 OID 19148)
+-- Dependencies: 6 1090
+-- Name: xmax(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION xmax(box3d) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_xmax';
+
+
+ALTER FUNCTION public.xmax(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 792 (class 1255 OID 19149)
+-- Dependencies: 1090 6
+-- Name: xmin(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION xmin(box3d) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_xmin';
+
+
+ALTER FUNCTION public.xmin(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 793 (class 1255 OID 19150)
+-- Dependencies: 6 1102
+-- Name: y(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION y(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_y_point';
+
+
+ALTER FUNCTION public.y(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 794 (class 1255 OID 19151)
+-- Dependencies: 1090 6
+-- Name: ymax(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION ymax(box3d) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_ymax';
+
+
+ALTER FUNCTION public.ymax(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 795 (class 1255 OID 19152)
+-- Dependencies: 1090 6
+-- Name: ymin(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION ymin(box3d) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_ymin';
+
+
+ALTER FUNCTION public.ymin(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 796 (class 1255 OID 19153)
+-- Dependencies: 1102 6
+-- Name: z(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION z(geometry) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_z_point';
+
+
+ALTER FUNCTION public.z(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 797 (class 1255 OID 19154)
+-- Dependencies: 1090 6
+-- Name: zmax(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION zmax(box3d) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_zmax';
+
+
+ALTER FUNCTION public.zmax(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 798 (class 1255 OID 19155)
+-- Dependencies: 6 1102
+-- Name: zmflag(geometry); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION zmflag(geometry) RETURNS smallint
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'LWGEOM_zmflag';
+
+
+ALTER FUNCTION public.zmflag(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 799 (class 1255 OID 19156)
+-- Dependencies: 1090 6
+-- Name: zmin(box3d); Type: FUNCTION; Schema: public; Owner: postgres
+--
+
+CREATE FUNCTION zmin(box3d) RETURNS double precision
+ LANGUAGE c IMMUTABLE STRICT
+ AS '$libdir/postgis-1.5', 'BOX3D_zmin';
+
+
+ALTER FUNCTION public.zmin(box3d) OWNER TO postgres;
+
+--
+-- TOC entry 1173 (class 1255 OID 19157)
+-- Dependencies: 1104 1102 330 329 6
+-- Name: accum(geometry); Type: AGGREGATE; Schema: public; Owner: postgres
+--
+
+CREATE AGGREGATE accum(geometry) (
+ SFUNC = pgis_geometry_accum_transfn,
+ STYPE = pgis_abs,
+ FINALFUNC = pgis_geometry_accum_finalfn
+);
+
+
+ALTER AGGREGATE public.accum(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1174 (class 1255 OID 19158)
+-- Dependencies: 331 6 1102 1102 330
+-- Name: collect(geometry); Type: AGGREGATE; Schema: public; Owner: postgres
+--
+
+CREATE AGGREGATE collect(geometry) (
+ SFUNC = pgis_geometry_accum_transfn,
+ STYPE = pgis_abs,
+ FINALFUNC = pgis_geometry_collect_finalfn
+);
+
+
+ALTER AGGREGATE public.collect(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1175 (class 1255 OID 19159)
+-- Dependencies: 6 1102 500 1093
+-- Name: extent(geometry); Type: AGGREGATE; Schema: public; Owner: postgres
+--
+
+CREATE AGGREGATE extent(geometry) (
+ SFUNC = public.st_combine_bbox,
+ STYPE = box3d_extent
+);
+
+
+ALTER AGGREGATE public.extent(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1176 (class 1255 OID 19160)
+-- Dependencies: 124 1102 1090 6
+-- Name: extent3d(geometry); Type: AGGREGATE; Schema: public; Owner: postgres
+--
+
+CREATE AGGREGATE extent3d(geometry) (
+ SFUNC = public.combine_bbox,
+ STYPE = box3d
+);
+
+
+ALTER AGGREGATE public.extent3d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1177 (class 1255 OID 19161)
+-- Dependencies: 1102 6 1102 330 332
+-- Name: makeline(geometry); Type: AGGREGATE; Schema: public; Owner: postgres
+--
+
+CREATE AGGREGATE makeline(geometry) (
+ SFUNC = pgis_geometry_accum_transfn,
+ STYPE = pgis_abs,
+ FINALFUNC = pgis_geometry_makeline_finalfn
+);
+
+
+ALTER AGGREGATE public.makeline(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1178 (class 1255 OID 19162)
+-- Dependencies: 1102 496 1102 6
+-- Name: memcollect(geometry); Type: AGGREGATE; Schema: public; Owner: postgres
+--
+
+CREATE AGGREGATE memcollect(geometry) (
+ SFUNC = public.st_collect,
+ STYPE = geometry
+);
+
+
+ALTER AGGREGATE public.memcollect(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1179 (class 1255 OID 19163)
+-- Dependencies: 231 1102 1102 6
+-- Name: memgeomunion(geometry); Type: AGGREGATE; Schema: public; Owner: postgres
+--
+
+CREATE AGGREGATE memgeomunion(geometry) (
+ SFUNC = geomunion,
+ STYPE = geometry
+);
+
+
+ALTER AGGREGATE public.memgeomunion(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1180 (class 1255 OID 19164)
+-- Dependencies: 6 333 330 1102 1102
+-- Name: polygonize(geometry); Type: AGGREGATE; Schema: public; Owner: postgres
+--
+
+CREATE AGGREGATE polygonize(geometry) (
+ SFUNC = pgis_geometry_accum_transfn,
+ STYPE = pgis_abs,
+ FINALFUNC = pgis_geometry_polygonize_finalfn
+);
+
+
+ALTER AGGREGATE public.polygonize(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1181 (class 1255 OID 19165)
+-- Dependencies: 329 330 1102 1104 6
+-- Name: st_accum(geometry); Type: AGGREGATE; Schema: public; Owner: postgres
+--
+
+CREATE AGGREGATE st_accum(geometry) (
+ SFUNC = pgis_geometry_accum_transfn,
+ STYPE = pgis_abs,
+ FINALFUNC = pgis_geometry_accum_finalfn
+);
+
+
+ALTER AGGREGATE public.st_accum(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1182 (class 1255 OID 19166)
+-- Dependencies: 331 330 1102 1102 6
+-- Name: st_collect(geometry); Type: AGGREGATE; Schema: public; Owner: postgres
+--
+
+CREATE AGGREGATE st_collect(geometry) (
+ SFUNC = pgis_geometry_accum_transfn,
+ STYPE = pgis_abs,
+ FINALFUNC = pgis_geometry_collect_finalfn
+);
+
+
+ALTER AGGREGATE public.st_collect(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1183 (class 1255 OID 19167)
+-- Dependencies: 500 1102 1093 6
+-- Name: st_extent(geometry); Type: AGGREGATE; Schema: public; Owner: postgres
+--
+
+CREATE AGGREGATE st_extent(geometry) (
+ SFUNC = public.st_combine_bbox,
+ STYPE = box3d_extent
+);
+
+
+ALTER AGGREGATE public.st_extent(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1169 (class 1255 OID 19168)
+-- Dependencies: 501 1102 1090 6
+-- Name: st_extent3d(geometry); Type: AGGREGATE; Schema: public; Owner: postgres
+--
+
+CREATE AGGREGATE st_extent3d(geometry) (
+ SFUNC = public.st_combine_bbox,
+ STYPE = box3d
+);
+
+
+ALTER AGGREGATE public.st_extent3d(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1170 (class 1255 OID 19169)
+-- Dependencies: 1102 6 330 332 1102
+-- Name: st_makeline(geometry); Type: AGGREGATE; Schema: public; Owner: postgres
+--
+
+CREATE AGGREGATE st_makeline(geometry) (
+ SFUNC = pgis_geometry_accum_transfn,
+ STYPE = pgis_abs,
+ FINALFUNC = pgis_geometry_makeline_finalfn
+);
+
+
+ALTER AGGREGATE public.st_makeline(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1171 (class 1255 OID 19170)
+-- Dependencies: 6 496 1102 1102
+-- Name: st_memcollect(geometry); Type: AGGREGATE; Schema: public; Owner: postgres
+--
+
+CREATE AGGREGATE st_memcollect(geometry) (
+ SFUNC = public.st_collect,
+ STYPE = geometry
+);
+
+
+ALTER AGGREGATE public.st_memcollect(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1172 (class 1255 OID 19171)
+-- Dependencies: 756 6 1102 1102
+-- Name: st_memunion(geometry); Type: AGGREGATE; Schema: public; Owner: postgres
+--
+
+CREATE AGGREGATE st_memunion(geometry) (
+ SFUNC = public.st_union,
+ STYPE = geometry
+);
+
+
+ALTER AGGREGATE public.st_memunion(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1184 (class 1255 OID 19172)
+-- Dependencies: 330 333 1102 1102 6
+-- Name: st_polygonize(geometry); Type: AGGREGATE; Schema: public; Owner: postgres
+--
+
+CREATE AGGREGATE st_polygonize(geometry) (
+ SFUNC = pgis_geometry_accum_transfn,
+ STYPE = pgis_abs,
+ FINALFUNC = pgis_geometry_polygonize_finalfn
+);
+
+
+ALTER AGGREGATE public.st_polygonize(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1185 (class 1255 OID 19173)
+-- Dependencies: 330 334 1102 1102 6
+-- Name: st_union(geometry); Type: AGGREGATE; Schema: public; Owner: postgres
+--
+
+CREATE AGGREGATE st_union(geometry) (
+ SFUNC = pgis_geometry_accum_transfn,
+ STYPE = pgis_abs,
+ FINALFUNC = pgis_geometry_union_finalfn
+);
+
+
+ALTER AGGREGATE public.st_union(geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1891 (class 2617 OID 19174)
+-- Dependencies: 215 6 1102 1102 208 207
+-- Name: &&; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR && (
+ PROCEDURE = geometry_overlap,
+ LEFTARG = geometry,
+ RIGHTARG = geometry,
+ COMMUTATOR = &&,
+ RESTRICT = geometry_gist_sel,
+ JOIN = geometry_gist_joinsel
+);
+
+
+ALTER OPERATOR public.&& (geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1892 (class 2617 OID 19175)
+-- Dependencies: 6 176 180 185 1099 1099
+-- Name: &&; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR && (
+ PROCEDURE = geography_overlaps,
+ LEFTARG = geography,
+ RIGHTARG = geography,
+ COMMUTATOR = &&,
+ RESTRICT = geography_gist_selectivity,
+ JOIN = geography_gist_join_selectivity
+);
+
+
+ALTER OPERATOR public.&& (geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 1893 (class 2617 OID 19177)
+-- Dependencies: 1102 6 1102 216
+-- Name: &<; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR &< (
+ PROCEDURE = geometry_overleft,
+ LEFTARG = geometry,
+ RIGHTARG = geometry,
+ COMMUTATOR = &>,
+ RESTRICT = positionsel,
+ JOIN = positionjoinsel
+);
+
+
+ALTER OPERATOR public.&< (geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1894 (class 2617 OID 19179)
+-- Dependencies: 1102 214 1102 6
+-- Name: &<|; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR &<| (
+ PROCEDURE = geometry_overbelow,
+ LEFTARG = geometry,
+ RIGHTARG = geometry,
+ COMMUTATOR = |&>,
+ RESTRICT = positionsel,
+ JOIN = positionjoinsel
+);
+
+
+ALTER OPERATOR public.&<| (geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1895 (class 2617 OID 19176)
+-- Dependencies: 1102 217 6 1102
+-- Name: &>; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR &> (
+ PROCEDURE = geometry_overright,
+ LEFTARG = geometry,
+ RIGHTARG = geometry,
+ COMMUTATOR = &<,
+ RESTRICT = positionsel,
+ JOIN = positionjoinsel
+);
+
+
+ALTER OPERATOR public.&> (geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1896 (class 2617 OID 19182)
+-- Dependencies: 6 1102 1102 212
+-- Name: <; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR < (
+ PROCEDURE = geometry_lt,
+ LEFTARG = geometry,
+ RIGHTARG = geometry,
+ COMMUTATOR = >,
+ NEGATOR = >=,
+ RESTRICT = contsel,
+ JOIN = contjoinsel
+);
+
+
+ALTER OPERATOR public.< (geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1899 (class 2617 OID 19185)
+-- Dependencies: 1099 6 1099 184
+-- Name: <; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR < (
+ PROCEDURE = geography_lt,
+ LEFTARG = geography,
+ RIGHTARG = geography,
+ COMMUTATOR = >,
+ NEGATOR = >=,
+ RESTRICT = contsel,
+ JOIN = contjoinsel
+);
+
+
+ALTER OPERATOR public.< (geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 1900 (class 2617 OID 19187)
+-- Dependencies: 1102 6 1102 211
+-- Name: <<; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR << (
+ PROCEDURE = geometry_left,
+ LEFTARG = geometry,
+ RIGHTARG = geometry,
+ COMMUTATOR = >>,
+ RESTRICT = positionsel,
+ JOIN = positionjoinsel
+);
+
+
+ALTER OPERATOR public.<< (geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1901 (class 2617 OID 19189)
+-- Dependencies: 6 1102 1102 201
+-- Name: <<|; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR <<| (
+ PROCEDURE = geometry_below,
+ LEFTARG = geometry,
+ RIGHTARG = geometry,
+ COMMUTATOR = |>>,
+ RESTRICT = positionsel,
+ JOIN = positionjoinsel
+);
+
+
+ALTER OPERATOR public.<<| (geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1902 (class 2617 OID 19190)
+-- Dependencies: 1102 6 210 1102
+-- Name: <=; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR <= (
+ PROCEDURE = geometry_le,
+ LEFTARG = geometry,
+ RIGHTARG = geometry,
+ COMMUTATOR = >=,
+ NEGATOR = >,
+ RESTRICT = contsel,
+ JOIN = contjoinsel
+);
+
+
+ALTER OPERATOR public.<= (geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1903 (class 2617 OID 19191)
+-- Dependencies: 183 1099 1099 6
+-- Name: <=; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR <= (
+ PROCEDURE = geography_le,
+ LEFTARG = geography,
+ RIGHTARG = geography,
+ COMMUTATOR = >=,
+ NEGATOR = >,
+ RESTRICT = contsel,
+ JOIN = contjoinsel
+);
+
+
+ALTER OPERATOR public.<= (geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 1904 (class 2617 OID 19192)
+-- Dependencies: 205 6 1102 1102
+-- Name: =; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR = (
+ PROCEDURE = geometry_eq,
+ LEFTARG = geometry,
+ RIGHTARG = geometry,
+ COMMUTATOR = =,
+ RESTRICT = contsel,
+ JOIN = contjoinsel
+);
+
+
+ALTER OPERATOR public.= (geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1905 (class 2617 OID 19193)
+-- Dependencies: 1099 171 1099 6
+-- Name: =; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR = (
+ PROCEDURE = geography_eq,
+ LEFTARG = geography,
+ RIGHTARG = geography,
+ COMMUTATOR = =,
+ RESTRICT = contsel,
+ JOIN = contjoinsel
+);
+
+
+ALTER OPERATOR public.= (geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 1897 (class 2617 OID 19180)
+-- Dependencies: 209 6 1102 1102
+-- Name: >; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR > (
+ PROCEDURE = geometry_gt,
+ LEFTARG = geometry,
+ RIGHTARG = geometry,
+ COMMUTATOR = <,
+ NEGATOR = <=,
+ RESTRICT = contsel,
+ JOIN = contjoinsel
+);
+
+
+ALTER OPERATOR public.> (geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1906 (class 2617 OID 19183)
+-- Dependencies: 1099 1099 6 182
+-- Name: >; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR > (
+ PROCEDURE = geography_gt,
+ LEFTARG = geography,
+ RIGHTARG = geography,
+ COMMUTATOR = <,
+ NEGATOR = <=,
+ RESTRICT = contsel,
+ JOIN = contjoinsel
+);
+
+
+ALTER OPERATOR public.> (geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 1907 (class 2617 OID 19181)
+-- Dependencies: 206 1102 1102 6
+-- Name: >=; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR >= (
+ PROCEDURE = geometry_ge,
+ LEFTARG = geometry,
+ RIGHTARG = geometry,
+ COMMUTATOR = <=,
+ NEGATOR = <,
+ RESTRICT = contsel,
+ JOIN = contjoinsel
+);
+
+
+ALTER OPERATOR public.>= (geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1908 (class 2617 OID 19184)
+-- Dependencies: 6 1099 1099 172
+-- Name: >=; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR >= (
+ PROCEDURE = geography_ge,
+ LEFTARG = geography,
+ RIGHTARG = geography,
+ COMMUTATOR = <=,
+ NEGATOR = <,
+ RESTRICT = contsel,
+ JOIN = contjoinsel
+);
+
+
+ALTER OPERATOR public.>= (geography, geography) OWNER TO postgres;
+
+--
+-- TOC entry 1909 (class 2617 OID 19186)
+-- Dependencies: 6 218 1102 1102
+-- Name: >>; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR >> (
+ PROCEDURE = geometry_right,
+ LEFTARG = geometry,
+ RIGHTARG = geometry,
+ COMMUTATOR = <<,
+ RESTRICT = positionsel,
+ JOIN = positionjoinsel
+);
+
+
+ALTER OPERATOR public.>> (geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1910 (class 2617 OID 19195)
+-- Dependencies: 1102 6 204 1102
+-- Name: @; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR @ (
+ PROCEDURE = geometry_contained,
+ LEFTARG = geometry,
+ RIGHTARG = geometry,
+ COMMUTATOR = ~,
+ RESTRICT = contsel,
+ JOIN = contjoinsel
+);
+
+
+ALTER OPERATOR public.@ (geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1898 (class 2617 OID 19178)
+-- Dependencies: 1102 1102 213 6
+-- Name: |&>; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR |&> (
+ PROCEDURE = geometry_overabove,
+ LEFTARG = geometry,
+ RIGHTARG = geometry,
+ COMMUTATOR = &<|,
+ RESTRICT = positionsel,
+ JOIN = positionjoinsel
+);
+
+
+ALTER OPERATOR public.|&> (geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1911 (class 2617 OID 19188)
+-- Dependencies: 200 1102 6 1102
+-- Name: |>>; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR |>> (
+ PROCEDURE = geometry_above,
+ LEFTARG = geometry,
+ RIGHTARG = geometry,
+ COMMUTATOR = <<|,
+ RESTRICT = positionsel,
+ JOIN = positionjoinsel
+);
+
+
+ALTER OPERATOR public.|>> (geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1912 (class 2617 OID 19194)
+-- Dependencies: 6 1102 1102 203
+-- Name: ~; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR ~ (
+ PROCEDURE = geometry_contain,
+ LEFTARG = geometry,
+ RIGHTARG = geometry,
+ COMMUTATOR = @,
+ RESTRICT = contsel,
+ JOIN = contjoinsel
+);
+
+
+ALTER OPERATOR public.~ (geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 1913 (class 2617 OID 19196)
+-- Dependencies: 1102 220 6 1102
+-- Name: ~=; Type: OPERATOR; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR ~= (
+ PROCEDURE = geometry_samebox,
+ LEFTARG = geometry,
+ RIGHTARG = geometry,
+ COMMUTATOR = ~=,
+ RESTRICT = eqsel,
+ JOIN = eqjoinsel
+);
+
+
+ALTER OPERATOR public.~= (geometry, geometry) OWNER TO postgres;
+
+--
+-- TOC entry 2026 (class 2616 OID 19198)
+-- Dependencies: 2137 6 1099
+-- Name: btree_geography_ops; Type: OPERATOR CLASS; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR CLASS btree_geography_ops
+ DEFAULT FOR TYPE geography USING btree AS
+ OPERATOR 1 <(geography,geography) ,
+ OPERATOR 2 <=(geography,geography) ,
+ OPERATOR 3 =(geography,geography) ,
+ OPERATOR 4 >=(geography,geography) ,
+ OPERATOR 5 >(geography,geography) ,
+ FUNCTION 1 geography_cmp(geography,geography);
+
+
+ALTER OPERATOR CLASS public.btree_geography_ops USING btree OWNER TO postgres;
+
+--
+-- TOC entry 2027 (class 2616 OID 19206)
+-- Dependencies: 1102 2138 6
+-- Name: btree_geometry_ops; Type: OPERATOR CLASS; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR CLASS btree_geometry_ops
+ DEFAULT FOR TYPE geometry USING btree AS
+ OPERATOR 1 <(geometry,geometry) ,
+ OPERATOR 2 <=(geometry,geometry) ,
+ OPERATOR 3 =(geometry,geometry) ,
+ OPERATOR 4 >=(geometry,geometry) ,
+ OPERATOR 5 >(geometry,geometry) ,
+ FUNCTION 1 geometry_cmp(geometry,geometry);
+
+
+ALTER OPERATOR CLASS public.btree_geometry_ops USING btree OWNER TO postgres;
+
+--
+-- TOC entry 2028 (class 2616 OID 19214)
+-- Dependencies: 1099 1107 6 2139
+-- Name: gist_geography_ops; Type: OPERATOR CLASS; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR CLASS gist_geography_ops
+ DEFAULT FOR TYPE geography USING gist AS
+ STORAGE gidx ,
+ OPERATOR 3 &&(geography,geography) ,
+ FUNCTION 1 geography_gist_consistent(internal,geometry,integer) ,
+ FUNCTION 2 geography_gist_union(bytea,internal) ,
+ FUNCTION 3 geography_gist_compress(internal) ,
+ FUNCTION 4 geography_gist_decompress(internal) ,
+ FUNCTION 5 geography_gist_penalty(internal,internal,internal) ,
+ FUNCTION 6 geography_gist_picksplit(internal,internal) ,
+ FUNCTION 7 geography_gist_same(box2d,box2d,internal);
+
+
+ALTER OPERATOR CLASS public.gist_geography_ops USING gist OWNER TO postgres;
+
+--
+-- TOC entry 2029 (class 2616 OID 19224)
+-- Dependencies: 2140 6 1087 1102
+-- Name: gist_geometry_ops; Type: OPERATOR CLASS; Schema: public; Owner: postgres
+--
+
+CREATE OPERATOR CLASS gist_geometry_ops
+ DEFAULT FOR TYPE geometry USING gist AS
+ STORAGE box2d ,
+ OPERATOR 1 <<(geometry,geometry) ,
+ OPERATOR 2 &<(geometry,geometry) ,
+ OPERATOR 3 &&(geometry,geometry) ,
+ OPERATOR 4 &>(geometry,geometry) ,
+ OPERATOR 5 >>(geometry,geometry) ,
+ OPERATOR 6 ~=(geometry,geometry) ,
+ OPERATOR 7 ~(geometry,geometry) ,
+ OPERATOR 8 @(geometry,geometry) ,
+ OPERATOR 9 &<|(geometry,geometry) ,
+ OPERATOR 10 <<|(geometry,geometry) ,
+ OPERATOR 11 |>>(geometry,geometry) ,
+ OPERATOR 12 |&>(geometry,geometry) ,
+ FUNCTION 1 lwgeom_gist_consistent(internal,geometry,integer) ,
+ FUNCTION 2 lwgeom_gist_union(bytea,internal) ,
+ FUNCTION 3 lwgeom_gist_compress(internal) ,
+ FUNCTION 4 lwgeom_gist_decompress(internal) ,
+ FUNCTION 5 lwgeom_gist_penalty(internal,internal,internal) ,
+ FUNCTION 6 lwgeom_gist_picksplit(internal,internal) ,
+ FUNCTION 7 lwgeom_gist_same(box2d,box2d,internal);
+
+
+ALTER OPERATOR CLASS public.gist_geometry_ops USING gist OWNER TO postgres;
+
+SET search_path = pg_catalog;
+
+--
+-- TOC entry 2708 (class 2605 OID 19244)
+-- Dependencies: 110 110 1087 1090
+-- Name: CAST (public.box2d AS public.box3d); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (public.box2d AS public.box3d) WITH FUNCTION public.box3d(public.box2d) AS IMPLICIT;
+
+
+--
+-- TOC entry 2709 (class 2605 OID 19245)
+-- Dependencies: 194 194 1102 1087
+-- Name: CAST (public.box2d AS public.geometry); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (public.box2d AS public.geometry) WITH FUNCTION public.geometry(public.box2d) AS IMPLICIT;
+
+
+--
+-- TOC entry 2710 (class 2605 OID 19246)
+-- Dependencies: 105 1090 105
+-- Name: CAST (public.box3d AS box); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (public.box3d AS box) WITH FUNCTION public.box(public.box3d) AS IMPLICIT;
+
+
+--
+-- TOC entry 2711 (class 2605 OID 19247)
+-- Dependencies: 108 1087 1090 108
+-- Name: CAST (public.box3d AS public.box2d); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (public.box3d AS public.box2d) WITH FUNCTION public.box2d(public.box3d) AS IMPLICIT;
+
+
+--
+-- TOC entry 2712 (class 2605 OID 19248)
+-- Dependencies: 195 1102 1090 195
+-- Name: CAST (public.box3d AS public.geometry); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (public.box3d AS public.geometry) WITH FUNCTION public.geometry(public.box3d) AS IMPLICIT;
+
+
+--
+-- TOC entry 2713 (class 2605 OID 19249)
+-- Dependencies: 106 106 1087 1093
+-- Name: CAST (public.box3d_extent AS public.box2d); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (public.box3d_extent AS public.box2d) WITH FUNCTION public.box2d(public.box3d_extent) AS IMPLICIT;
+
+
+--
+-- TOC entry 2714 (class 2605 OID 19250)
+-- Dependencies: 111 1093 1090 111
+-- Name: CAST (public.box3d_extent AS public.box3d); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (public.box3d_extent AS public.box3d) WITH FUNCTION public.box3d_extent(public.box3d_extent) AS IMPLICIT;
+
+
+--
+-- TOC entry 2715 (class 2605 OID 19251)
+-- Dependencies: 193 1093 1102 193
+-- Name: CAST (public.box3d_extent AS public.geometry); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (public.box3d_extent AS public.geometry) WITH FUNCTION public.geometry(public.box3d_extent) AS IMPLICIT;
+
+
+--
+-- TOC entry 2519 (class 2605 OID 19252)
+-- Dependencies: 198 1102 198
+-- Name: CAST (bytea AS public.geometry); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (bytea AS public.geometry) WITH FUNCTION public.geometry(bytea) AS IMPLICIT;
+
+
+--
+-- TOC entry 2716 (class 2605 OID 19253)
+-- Dependencies: 197 197 1096 1102
+-- Name: CAST (public.chip AS public.geometry); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (public.chip AS public.geometry) WITH FUNCTION public.geometry(public.chip) AS IMPLICIT;
+
+
+--
+-- TOC entry 2717 (class 2605 OID 19254)
+-- Dependencies: 168 1099 168 1099
+-- Name: CAST (public.geography AS public.geography); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (public.geography AS public.geography) WITH FUNCTION public.geography(public.geography, integer, boolean) AS IMPLICIT;
+
+
+--
+-- TOC entry 2718 (class 2605 OID 19255)
+-- Dependencies: 199 1102 199 1099
+-- Name: CAST (public.geography AS public.geometry); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (public.geography AS public.geometry) WITH FUNCTION public.geometry(public.geography);
+
+
+--
+-- TOC entry 2721 (class 2605 OID 19256)
+-- Dependencies: 104 1102 104
+-- Name: CAST (public.geometry AS box); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (public.geometry AS box) WITH FUNCTION public.box(public.geometry) AS IMPLICIT;
+
+
+--
+-- TOC entry 2722 (class 2605 OID 19257)
+-- Dependencies: 107 1087 1102 107
+-- Name: CAST (public.geometry AS public.box2d); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (public.geometry AS public.box2d) WITH FUNCTION public.box2d(public.geometry) AS IMPLICIT;
+
+
+--
+-- TOC entry 2723 (class 2605 OID 19258)
+-- Dependencies: 109 1090 1102 109
+-- Name: CAST (public.geometry AS public.box3d); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (public.geometry AS public.box3d) WITH FUNCTION public.box3d(public.geometry) AS IMPLICIT;
+
+
+--
+-- TOC entry 2719 (class 2605 OID 19259)
+-- Dependencies: 116 1102 116
+-- Name: CAST (public.geometry AS bytea); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (public.geometry AS bytea) WITH FUNCTION public.bytea(public.geometry) AS IMPLICIT;
+
+
+--
+-- TOC entry 2724 (class 2605 OID 19260)
+-- Dependencies: 169 1099 1102 169
+-- Name: CAST (public.geometry AS public.geography); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (public.geometry AS public.geography) WITH FUNCTION public.geography(public.geometry) AS IMPLICIT;
+
+
+--
+-- TOC entry 2720 (class 2605 OID 19261)
+-- Dependencies: 777 1102 777
+-- Name: CAST (public.geometry AS text); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (public.geometry AS text) WITH FUNCTION public.text(public.geometry) AS IMPLICIT;
+
+
+--
+-- TOC entry 2585 (class 2605 OID 19262)
+-- Dependencies: 196 196 1102
+-- Name: CAST (text AS public.geometry); Type: CAST; Schema: pg_catalog; Owner:
+--
+
+CREATE CAST (text AS public.geometry) WITH FUNCTION public.geometry(text) AS IMPLICIT;
+
+
+SET search_path = public, pg_catalog;
+
+SET default_tablespace = '';
+
+SET default_with_oids = false;
+
+--
+-- TOC entry 2423 (class 1259 OID 40481)
+-- Dependencies: 6
+-- Name: agency; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE TABLE agency (
+ agency_name text NOT NULL,
+ agency_url text,
+ agency_timezone text,
+ agency_lang text,
+ agency_phone text
+);
+
+
+ALTER TABLE public.agency OWNER TO postgres;
+
+--
+-- TOC entry 2409 (class 1259 OID 19269)
+-- Dependencies: 6
+-- Name: calendar; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE TABLE calendar (
+ service_id text NOT NULL,
+ start_date text,
+ end_date text,
+ monday integer,
+ tuesday integer,
+ wednesday integer,
+ thursday integer,
+ friday integer,
+ saturday integer,
+ sunday integer
+);
+
+
+ALTER TABLE public.calendar OWNER TO postgres;
+
+--
+-- TOC entry 2410 (class 1259 OID 19275)
+-- Dependencies: 6
+-- Name: calendar_dates; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE TABLE calendar_dates (
+ service_id text NOT NULL,
+ date text NOT NULL,
+ exception_type text
+);
+
+
+ALTER TABLE public.calendar_dates OWNER TO postgres;
+
+--
+-- TOC entry 2411 (class 1259 OID 19281)
+-- Dependencies: 2514 6
+-- Name: geography_columns; Type: VIEW; Schema: public; Owner: postgres
+--
+
+CREATE VIEW geography_columns AS
+ SELECT current_database() AS f_table_catalog, n.nspname AS f_table_schema, c.relname AS f_table_name, a.attname AS f_geography_column, geography_typmod_dims(a.atttypmod) AS coord_dimension, geography_typmod_srid(a.atttypmod) AS srid, geography_typmod_type(a.atttypmod) AS type FROM pg_class c, pg_attribute a, pg_type t, pg_namespace n WHERE ((((((c.relkind = ANY (ARRAY['r'::"char", 'v'::"char"])) AND (t.typname = 'geography'::name)) AND (a.attisdropped = false)) AND (a.atttypid = t.oid)) AND (a.attrelid = c.oid)) AND (c.relnamespace = n.oid));
+
+
+ALTER TABLE public.geography_columns OWNER TO postgres;
+
+SET default_with_oids = true;
+
+--
+-- TOC entry 2412 (class 1259 OID 19286)
+-- Dependencies: 6
+-- Name: geometry_columns; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE TABLE geometry_columns (
+ f_table_catalog character varying(256) NOT NULL,
+ f_table_schema character varying(256) NOT NULL,
+ f_table_name character varying(256) NOT NULL,
+ f_geometry_column character varying(256) NOT NULL,
+ coord_dimension integer NOT NULL,
+ srid integer NOT NULL,
+ type character varying(30) NOT NULL
+);
+
+
+ALTER TABLE public.geometry_columns OWNER TO postgres;
+
+SET default_with_oids = false;
+
+--
+-- TOC entry 2413 (class 1259 OID 19292)
+-- Dependencies: 6
+-- Name: myway_observations; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE TABLE myway_observations (
+ observation_id text NOT NULL,
+ myway_stop text,
+ "time" timestamp with time zone,
+ myway_route text
+);
+
+
+ALTER TABLE public.myway_observations OWNER TO postgres;
+
+--
+-- TOC entry 2427 (class 1259 OID 40519)
+-- Dependencies: 6
+-- Name: myway_routes; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE TABLE myway_routes (
+ myway_route text NOT NULL,
+ route_short_name text,
+ trip_headsign text
+);
+
+
+ALTER TABLE public.myway_routes OWNER TO postgres;
+
+--
+-- TOC entry 2424 (class 1259 OID 40489)
+-- Dependencies: 6
+-- Name: myway_stops; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE TABLE myway_stops (
+ myway_stop text NOT NULL,
+ stop_id text
+);
+
+
+ALTER TABLE public.myway_stops OWNER TO postgres;
+
+--
+-- TOC entry 2425 (class 1259 OID 40498)
+-- Dependencies: 6
+-- Name: myway_timingdeltas; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE TABLE myway_timingdeltas (
+ observation_id text NOT NULL,
+ route_id text,
+ stop_id text,
+ timing_delta integer,
+ "time" time with time zone,
+ date date,
+ timing_period text,
+ stop_sequence integer,
+ myway_stop text,
+ route_name text
+);
+
+
+ALTER TABLE public.myway_timingdeltas OWNER TO postgres;
+
+--
+-- TOC entry 2426 (class 1259 OID 40504)
+-- Dependencies: 6 2425
+-- Name: myway_timingdeltas_timing_period_seq; Type: SEQUENCE; Schema: public; Owner: postgres
+--
+
+CREATE SEQUENCE myway_timingdeltas_timing_period_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.myway_timingdeltas_timing_period_seq OWNER TO postgres;
+
+--
+-- TOC entry 2771 (class 0 OID 0)
+-- Dependencies: 2426
+-- Name: myway_timingdeltas_timing_period_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
+--
+
+ALTER SEQUENCE myway_timingdeltas_timing_period_seq OWNED BY myway_timingdeltas.timing_period;
+
+
+--
+-- TOC entry 2420 (class 1259 OID 40443)
+-- Dependencies: 6
+-- Name: routes; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE TABLE routes (
+ route_id text NOT NULL,
+ route_short_name text,
+ route_long_name text,
+ route_desc text,
+ route_type integer,
+ route_url text,
+ route_text_color text,
+ route_color text
+);
+
+
+ALTER TABLE public.routes OWNER TO postgres;
+
+--
+-- TOC entry 2414 (class 1259 OID 19328)
+-- Dependencies: 6
+-- Name: servicealerts_alerts; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE TABLE servicealerts_alerts (
+ id integer NOT NULL,
+ url text,
+ description text,
+ start timestamp with time zone,
+ "end" timestamp with time zone,
+ cause text,
+ effect text,
+ header text
+);
+
+
+ALTER TABLE public.servicealerts_alerts OWNER TO postgres;
+
+--
+-- TOC entry 2415 (class 1259 OID 19334)
+-- Dependencies: 2414 6
+-- Name: servicealerts_alerts_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
+--
+
+CREATE SEQUENCE servicealerts_alerts_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+
+ALTER TABLE public.servicealerts_alerts_id_seq OWNER TO postgres;
+
+--
+-- TOC entry 2772 (class 0 OID 0)
+-- Dependencies: 2415
+-- Name: servicealerts_alerts_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
+--
+
+ALTER SEQUENCE servicealerts_alerts_id_seq OWNED BY servicealerts_alerts.id;
+
+
+--
+-- TOC entry 2416 (class 1259 OID 19336)
+-- Dependencies: 6
+-- Name: servicealerts_informed; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE TABLE servicealerts_informed (
+ servicealert_id integer NOT NULL,
+ informed_class text NOT NULL,
+ informed_id text NOT NULL,
+ informed_action text
+);
+
+
+ALTER TABLE public.servicealerts_informed OWNER TO postgres;
+
+--
+-- TOC entry 2417 (class 1259 OID 19342)
+-- Dependencies: 6
+-- Name: shapes; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE TABLE shapes (
+ shape_id text NOT NULL,
+ shape_pt_lat double precision,
+ shape_pt_lon double precision,
+ shape_pt_sequence integer NOT NULL,
+ shape_dist_traveled integer,
+ shape_pt geography,
+);
+
+
+ALTER TABLE public.shapes OWNER TO postgres;
+
+--
+-- TOC entry 2418 (class 1259 OID 19348)
+-- Dependencies: 6
+-- Name: spatial_ref_sys; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE TABLE spatial_ref_sys (
+ srid integer NOT NULL,
+ auth_name character varying(256),
+ auth_srid integer,
+ srtext character varying(2048),
+ proj4text character varying(2048)
+);
+
+
+ALTER TABLE public.spatial_ref_sys OWNER TO postgres;
+
+--
+-- TOC entry 2419 (class 1259 OID 20682)
+-- Dependencies: 6
+-- Name: stop_times; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE TABLE stop_times (
+ trip_id text NOT NULL,
+ arrival_time time without time zone,
+ departure_time time without time zone,
+ stop_id text,
+ stop_sequence integer NOT NULL,
+ stop_headsign text,
+ pickup_type text,
+ drop_off_type text,
+ shape_dist_travelled text
+);
+
+
+ALTER TABLE public.stop_times OWNER TO postgres;
+
+--
+-- TOC entry 2421 (class 1259 OID 40452)
+-- Dependencies: 6 1099
+-- Name: stops; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE TABLE stops (
+ stop_id text NOT NULL,
+ stop_code text,
+ stop_name text,
+ stop_desc text,
+ stop_lat double precision,
+ stop_lon double precision,
+ zone_id text,
+ stop_url text,
+ location_type integer,
+ "position" geography
+);
+
+
+ALTER TABLE public.stops OWNER TO postgres;
+
+--
+-- TOC entry 2422 (class 1259 OID 40466)
+-- Dependencies: 6
+-- Name: trips; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE TABLE trips (
+ route_id text,
+ service_id text,
+ trip_id text NOT NULL,
+ trip_headsign text,
+ direction_id text,
+ block_id text,
+ shape_id text
+);
+
+
+ALTER TABLE public.trips OWNER TO postgres;
+
+--
+-- TOC entry 2725 (class 2604 OID 19372)
+-- Dependencies: 2415 2414
+-- Name: id; Type: DEFAULT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE servicealerts_alerts ALTER COLUMN id SET DEFAULT nextval('servicealerts_alerts_id_seq'::regclass);
+
+
+--
+-- TOC entry 2758 (class 2606 OID 40488)
+-- Dependencies: 2423 2423
+-- Name: agency_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
+--
+
+ALTER TABLE ONLY agency
+ ADD CONSTRAINT agency_pkey PRIMARY KEY (agency_name);
+
+
+--
+-- TOC entry 2729 (class 2606 OID 19376)
+-- Dependencies: 2410 2410 2410
+-- Name: calendar_dates_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
+--
+
+ALTER TABLE ONLY calendar_dates
+ ADD CONSTRAINT calendar_dates_pkey PRIMARY KEY (service_id, date);
+
+
+--
+-- TOC entry 2727 (class 2606 OID 19378)
+-- Dependencies: 2409 2409
+-- Name: calendar_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
+--
+
+ALTER TABLE ONLY calendar
+ ADD CONSTRAINT calendar_pkey PRIMARY KEY (service_id);
+
+
+--
+-- TOC entry 2731 (class 2606 OID 19380)
+-- Dependencies: 2412 2412 2412 2412 2412
+-- Name: geometry_columns_pk; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
+--
+
+ALTER TABLE ONLY geometry_columns
+ ADD CONSTRAINT geometry_columns_pk PRIMARY KEY (f_table_catalog, f_table_schema, f_table_name, f_geometry_column);
+
+
+--
+-- TOC entry 2733 (class 2606 OID 19382)
+-- Dependencies: 2413 2413
+-- Name: myway_observations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
+--
+
+ALTER TABLE ONLY myway_observations
+ ADD CONSTRAINT myway_observations_pkey PRIMARY KEY (observation_id);
+
+
+--
+-- TOC entry 2764 (class 2606 OID 40526)
+-- Dependencies: 2427 2427
+-- Name: myway_routes_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
+--
+
+ALTER TABLE ONLY myway_routes
+ ADD CONSTRAINT myway_routes_pkey PRIMARY KEY (myway_route);
+
+
+--
+-- TOC entry 2762 (class 2606 OID 40507)
+-- Dependencies: 2425 2425
+-- Name: myway_timingdeltas_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
+--
+
+ALTER TABLE ONLY myway_timingdeltas
+ ADD CONSTRAINT myway_timingdeltas_pkey PRIMARY KEY (observation_id);
+
+
+--
+-- TOC entry 2760 (class 2606 OID 40496)
+-- Dependencies: 2424 2424
+-- Name: mywaystops_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
+--
+
+ALTER TABLE ONLY myway_stops
+ ADD CONSTRAINT mywaystops_pkey PRIMARY KEY (myway_stop);
+
+
+--
+-- TOC entry 2749 (class 2606 OID 40450)
+-- Dependencies: 2420 2420
+-- Name: routes_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
+--
+
+ALTER TABLE ONLY routes
+ ADD CONSTRAINT routes_pkey PRIMARY KEY (route_id);
+
+
+--
+-- TOC entry 2735 (class 2606 OID 19392)
+-- Dependencies: 2414 2414
+-- Name: servicealerts_alerts_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
+--
+
+ALTER TABLE ONLY servicealerts_alerts
+ ADD CONSTRAINT servicealerts_alerts_pkey PRIMARY KEY (id);
+
+
+--
+-- TOC entry 2737 (class 2606 OID 19394)
+-- Dependencies: 2416 2416 2416 2416
+-- Name: servicealerts_informed_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
+--
+
+ALTER TABLE ONLY servicealerts_informed
+ ADD CONSTRAINT servicealerts_informed_pkey PRIMARY KEY (servicealert_id, informed_class, informed_id);
+
+
+--
+-- TOC entry 2739 (class 2606 OID 19396)
+-- Dependencies: 2417 2417 2417
+-- Name: shapes_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
+--
+
+ALTER TABLE ONLY shapes
+ ADD CONSTRAINT shapes_pkey PRIMARY KEY (shape_id, shape_pt_sequence);
+
+
+--
+-- TOC entry 2741 (class 2606 OID 19398)
+-- Dependencies: 2418 2418
+-- Name: spatial_ref_sys_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
+--
+
+ALTER TABLE ONLY spatial_ref_sys
+ ADD CONSTRAINT spatial_ref_sys_pkey PRIMARY KEY (srid);
+
+
+--
+-- TOC entry 2744 (class 2606 OID 40421)
+-- Dependencies: 2419 2419 2419
+-- Name: stop_times_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
+--
+
+ALTER TABLE ONLY stop_times
+ ADD CONSTRAINT stop_times_pkey PRIMARY KEY (trip_id, stop_sequence);
+
+
+--
+-- TOC entry 2751 (class 2606 OID 40459)
+-- Dependencies: 2421 2421
+-- Name: stops_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
+--
+
+ALTER TABLE ONLY stops
+ ADD CONSTRAINT stops_pkey PRIMARY KEY (stop_id);
+
+
+--
+-- TOC entry 2753 (class 2606 OID 40461)
+-- Dependencies: 2421 2421
+-- Name: stops_stop_code_key; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
+--
+
+ALTER TABLE ONLY stops
+ ADD CONSTRAINT stops_stop_code_key UNIQUE (stop_code);
+
+
+--
+-- TOC entry 2756 (class 2606 OID 40473)
+-- Dependencies: 2422 2422
+-- Name: trips_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
+--
+
+ALTER TABLE ONLY trips
+ ADD CONSTRAINT trips_pkey PRIMARY KEY (trip_id);
+
+
+--
+-- TOC entry 2747 (class 1259 OID 40451)
+-- Dependencies: 2420
+-- Name: routenumber; Type: INDEX; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE INDEX routenumber ON routes USING btree (route_short_name);
+
+
+--
+-- TOC entry 2754 (class 1259 OID 40474)
+-- Dependencies: 2422
+-- Name: routetrips; Type: INDEX; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE INDEX routetrips ON trips USING btree (route_id);
+
+
+--
+-- TOC entry 2742 (class 1259 OID 40418)
+-- Dependencies: 2419 2419 2419
+-- Name: starttime; Type: INDEX; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE UNIQUE INDEX starttime ON stop_times USING btree (trip_id, stop_id, stop_sequence);
+
+
+--
+-- TOC entry 2745 (class 1259 OID 40406)
+-- Dependencies: 2419 2419
+-- Name: stoptimes; Type: INDEX; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE INDEX stoptimes ON stop_times USING btree (arrival_time, stop_id);
+
+
+--
+-- TOC entry 2746 (class 1259 OID 40419)
+-- Dependencies: 2419 2419
+-- Name: triptimes; Type: INDEX; Schema: public; Owner: postgres; Tablespace:
+--
+
+CREATE INDEX triptimes ON stop_times USING btree (trip_id, arrival_time);
+
+
+--
+-- TOC entry 2765 (class 2606 OID 19412)
+-- Dependencies: 2734 2414 2416
+-- Name: servicealerts_alertid; Type: FK CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY servicealerts_informed
+ ADD CONSTRAINT servicealerts_alertid FOREIGN KEY (servicealert_id) REFERENCES servicealerts_alerts(id);
+
+
+--
+-- TOC entry 2770 (class 0 OID 0)
+-- Dependencies: 6
+-- Name: public; Type: ACL; Schema: -; Owner: postgres
+--
+
+REVOKE ALL ON SCHEMA public FROM PUBLIC;
+REVOKE ALL ON SCHEMA public FROM postgres;
+GRANT ALL ON SCHEMA public TO postgres;
+GRANT ALL ON SCHEMA public TO PUBLIC;
+
+
+-- Completed on 2011-10-11 23:16:12
+
+--
+-- PostgreSQL database dump complete
+--
+
+
Binary files a/css/images/01-refresh.png and /dev/null differ
Binary files a/css/images/02-redo.png and /dev/null differ
Binary files a/css/images/06-magnify.png and /dev/null differ
Binary files a/css/images/07-map-marker.png and /dev/null differ
Binary files a/css/images/101-gameplan.png and /dev/null differ
Binary files a/css/images/102-walk.png and /dev/null differ
Binary files a/css/images/103-map.png and /dev/null differ
Binary files a/css/images/121-landscape.png and /dev/null differ
Binary files a/css/images/13-target.png and /dev/null differ
Binary files a/css/images/139-flags.png and /dev/null differ
Binary files a/css/images/145-persondot.png and /dev/null differ
Binary files a/css/images/184-warning.png and /dev/null differ
Binary files a/css/images/193-location-arrow.png and /dev/null differ
Binary files a/css/images/28-star.png and /dev/null differ
Binary files a/css/images/53-house.png and /dev/null differ
Binary files a/css/images/55-network.png and /dev/null differ
Binary files a/css/images/57-download.png and /dev/null differ
Binary files a/css/images/58-bookmark.png and /dev/null differ
Binary files a/css/images/59-flag.png and /dev/null differ
Binary files a/css/images/60-signpost.png and /dev/null differ
Binary files a/css/images/73-radar.png and /dev/null differ
Binary files a/css/images/74-location.png and /dev/null differ
Binary files a/css/images/83-calendar.png and /dev/null differ
Binary files /dev/null and b/css/images/91-beaker-2.png differ
Binary files /dev/null and b/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png differ
Binary files /dev/null and b/css/images/ui-bg_diagonals-thick_20_666666_40x40.png differ
Binary files /dev/null and b/css/images/ui-bg_flat_10_000000_40x100.png differ
Binary files /dev/null and b/css/images/ui-bg_glass_100_f6f6f6_1x400.png differ
Binary files /dev/null and b/css/images/ui-bg_glass_100_fdf5ce_1x400.png differ
Binary files /dev/null and b/css/images/ui-bg_glass_65_ffffff_1x400.png differ
Binary files /dev/null and b/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png differ
Binary files /dev/null and b/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png differ
Binary files /dev/null and b/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png differ
Binary files /dev/null and b/css/images/ui-icons_222222_256x240.png differ
Binary files /dev/null and b/css/images/ui-icons_228ef1_256x240.png differ
Binary files /dev/null and b/css/images/ui-icons_ef8c08_256x240.png differ
Binary files /dev/null and b/css/images/ui-icons_ffd27a_256x240.png differ
Binary files /dev/null and b/css/images/ui-icons_ffffff_256x240.png differ
Binary files /dev/null and b/css/images/warning.png differ
--- a/css/jquery-mobile-1.0a3.css
+++ /dev/null
@@ -1,16 +1,1 @@
-/*!
- * jQuery Mobile v1.0a3
- * http://jquerymobile.com/
- *
- * Copyright 2010, jQuery Project
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- */
-/*!
- * jQuery Mobile v1.0a3
- * http://jquerymobile.com/
- *
- * Copyright 2010, jQuery Project
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- */.ui-bar-a{border:1px solid #2a2a2a;background:#111;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #000;background-image:-moz-linear-gradient(top,#3c3c3c,#111);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3c3c3c),color-stop(1,#111));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#3c3c3c', EndColorStr='#111111')"}.ui-bar-a,.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Helvetica,Arial,sans-serif}.ui-bar-a .ui-link-inherit{color:#fff}.ui-bar-a .ui-link{color:#7cc4e7;font-weight:bold}.ui-body-a{border:1px solid #2a2a2a;background:#222;color:#fff;text-shadow:0 1px 0 #000;font-weight:normal;background-image:-moz-linear-gradient(top,#666,#222);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#666),color-stop(1,#222));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#666666', EndColorStr='#222222)')"}.ui-body-a,.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Helvetica,Arial,sans-serif}.ui-body-a .ui-link-inherit{color:#fff}.ui-body-a .ui-link{color:#2489ce;font-weight:bold}.ui-br{border-bottom:1px solid rgba(130,130,130,.3)}.ui-btn-up-a{border:1px solid #222;background:#333;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #000;text-decoration:none;background-image:-moz-linear-gradient(top,#555,#333);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#555),color-stop(1,#333));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#555555', EndColorStr='#333333')"}.ui-btn-up-a a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid #000;background:#444;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;text-decoration:none;background-image:-moz-linear-gradient(top,#666,#444);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#666),color-stop(1,#444));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#666666', EndColorStr='#444444')"}.ui-btn-hover-a a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid #000;background:#3d3d3d;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-moz-linear-gradient(top,#333,#5a5a5a);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#333),color-stop(1,#5a5a5a));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#333333', EndColorStr='#5a5a5a')"}.ui-btn-down-a a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif}.ui-bar-b{border:1px solid #456f9a;background:#5e87b0;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #254f7a;background-image:-moz-linear-gradient(top,#81a8ce,#5e87b0);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#81a8ce),color-stop(1,#5e87b0));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#81a8ce', EndColorStr='#5e87b0')"}.ui-bar-b,.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Helvetica,Arial,sans-serif}.ui-bar-b .ui-link-inherit{color:#fff}.ui-bar-b .ui-link{color:#7cc4e7;font-weight:bold}.ui-body-b{border:1px solid #c6c6c6;background:#ccc;color:#333;text-shadow:0 1px 0 #fff;font-weight:normal;background-image:-moz-linear-gradient(top,#e6e6e6,#ccc);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e6e6e6),color-stop(1,#ccc));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#e6e6e6', EndColorStr='#cccccc')"}.ui-body-b,.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Helvetica,Arial,sans-serif}.ui-body-b .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#2489ce;font-weight:bold}.ui-btn-up-b{border:1px solid #145072;background:#2567ab;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #145072;text-decoration:none;background-image:-moz-linear-gradient(top,#4e89c5,#2567ab);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#5f9cc5),color-stop(1,#396b9e));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#4e89c5', EndColorStr='#2567ab')"}.ui-btn-up-b a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid #00516e;background:#4b88b6;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #014d68;background-image:-moz-linear-gradient(top,#72b0d4,#4b88b6);text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#72b0d4),color-stop(1,#4b88b6));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#72b0d4', EndColorStr='#4b88b6')"}.ui-btn-hover-b a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid #225377;background:#4e89c5;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #225377;background-image:-moz-linear-gradient(top,#396b9e,#4e89c5);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#396b9e),color-stop(1,#4e89c5));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#396b9e', EndColorStr='#4e89c5')"}.ui-btn-down-b a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif}.ui-bar-c{border:1px solid #b3b3b3;background:#e9eaeb;color:#3e3e3e;font-weight:bold;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#f0f0f0,#e9eaeb);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f0f0f0),color-stop(1,#e9eaeb));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#f0f0f0', EndColorStr='#e9eaeb')"}.ui-bar-c,.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c{border:1px solid #b3b3b3;color:#333;text-shadow:0 1px 0 #fff;background:#f0f0f0;background-image:-moz-linear-gradient(top,#eee,#ddd);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eee),color-stop(1,#ddd));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#eeeeee', EndColorStr='#dddddd')"}.ui-body-c,.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2489ce;font-weight:bold}.ui-btn-up-c{border:1px solid #ccc;background:#eee;font-weight:bold;color:#444;cursor:pointer;text-shadow:0 1px 1px #f6f6f6;text-decoration:none;background-image:-moz-linear-gradient(top,#fefefe,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fdfdfd),color-stop(1,#eee));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fdfdfd', EndColorStr='#eeeeee')"}.ui-btn-up-c a.ui-link-inherit{color:#2f3e46}.ui-btn-hover-c{border:1px solid #bbb;background:#dadada;font-weight:bold;color:#101010;text-decoration:none;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#ededed,#dadada);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ededed),color-stop(1,#dadada));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#ededed', EndColorStr='#dadada')"}.ui-btn-hover-c a.ui-link-inherit{color:#2f3e46}.ui-btn-down-c{border:1px solid #808080;background:#fdfdfd;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#eee,#fdfdfd);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eee),color-stop(1,#fdfdfd));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#eeeeee', EndColorStr='#fdfdfd')"}.ui-btn-down-c a.ui-link-inherit{color:#2f3e46}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Helvetica,Arial,sans-serif}.ui-bar-d{border:1px solid #ccc;background:#bbb;color:#333;text-shadow:0 1px 0 #eee;background-image:-moz-linear-gradient(top,#ddd,#bbb);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ddd),color-stop(1,#bbb));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#dddddd', EndColorStr='#bbbbbb')"}.ui-bar-d,.ui-bar-d input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-d button{font-family:Helvetica,Arial,sans-serif}.ui-bar-d .ui-link-inherit{color:#333}.ui-bar-d .ui-link{color:#2489ce;font-weight:bold}.ui-body-d{border:1px solid #ccc;color:#333;text-shadow:0 1px 0 #fff;background:#fff}.ui-body-d,.ui-body-d input,.ui-body-d select,.ui-body-d textarea,.ui-body-d button{font-family:Helvetica,Arial,sans-serif}.ui-body-d .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#2489ce;font-weight:bold}.ui-btn-up-d{border:1px solid #ccc;background:#fff;font-weight:bold;color:#444;text-decoration:none;text-shadow:0 1px 1px #fff}.ui-btn-up-d a.ui-link-inherit{color:#333}.ui-btn-hover-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#222;cursor:pointer;text-shadow:0 1px 1px #fff;text-decoration:none;background-image:-moz-linear-gradient(top,#fdfdfd,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fdfdfd),color-stop(1,#eee));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fdfdfd', EndColorStr='#eeeeee')"}.ui-btn-hover-d a.ui-link-inherit{color:#222}.ui-btn-down-d{border:1px solid #aaa;background:#fff;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#eee,#fff);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eee),color-stop(1,#fff));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#eeeeee', EndColorStr='#ffffff')"}.ui-btn-down-d a.ui-link-inherit{border:1px solid #808080;background:#ced0d2;font-weight:bold;color:#111;text-shadow:none;background-image:-moz-linear-gradient(top,#ccc,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ccc),color-stop(1,#eee));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#cccccc', EndColorStr='#eeeeee')"}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Helvetica,Arial,sans-serif}.ui-bar-e{border:1px solid #f7c942;background:#fadb4e;color:#333;text-shadow:0 1px 0 #fff;background-image:-moz-linear-gradient(top,#fceda7,#fadb4e);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fceda7),color-stop(1,#fadb4e));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fceda7', EndColorStr='#fadb4e')"}.ui-bar-e,.ui-bar-e input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-d button{font-family:Helvetica,Arial,sans-serif}.ui-bar-e .ui-link-inherit{color:#333}.ui-bar-e .ui-link{color:#2489ce;font-weight:bold}.ui-body-e{border:1px solid #f7c942;color:#333;text-shadow:0 1px 0 #fff;background:#faeb9e;background-image:-moz-linear-gradient(top,#fff,#faeb9e);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(1,#faeb9e));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff', EndColorStr='#faeb9e')"}.ui-body-e,.ui-body-e input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Helvetica,Arial,sans-serif}.ui-body-e .ui-link-inherit{color:#333}.ui-body-e .ui-link{color:#2489ce;font-weight:bold}.ui-btn-up-e{border:1px solid #f7c942;background:#fadb4e;font-weight:bold;color:#333;cursor:pointer;text-shadow:0 1px 1px #fe3;text-decoration:none;text-shadow:0 1px 0 #fff;background-image:-moz-linear-gradient(top,#fceda7,#fadb4e);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fceda7),color-stop(1,#fadb4e));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fceda7', EndColorStr='#fadb4e')"}.ui-btn-up-e a.ui-link-inherit{color:#333}.ui-btn-hover-e{border:1px solid #e79952;background:#fbe26f;font-weight:bold;color:#111;text-decoration:none;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#fcf0b5,#fbe26f);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fcf0b5),color-stop(1,#fbe26f));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fcf0b5', EndColorStr='#fbe26f')"}.ui-btn-hover-e a.ui-link-inherit{color:#333}.ui-btn-down-e{border:1px solid #f7c942;background:#fceda7;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#fadb4e,#fceda7);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fadb4e),color-stop(1,#fceda7));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#fadb4e', EndColorStr='#fceda7')"}.ui-btn-down-e a.ui-link-inherit{color:#333}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Helvetica,Arial,sans-serif}a.ui-link-inherit{text-decoration:none!important}.ui-btn-active{border:1px solid #155678;background:#4596ce;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #145072;text-decoration:none;background-image:-moz-linear-gradient(top,#85bae4,#5393c5);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#85bae4),color-stop(1,#5393c5));-msfilter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#85bae4', EndColorStr='#5393c5')";outline:0}.ui-btn-active a.ui-link-inherit{color:#fff}.ui-btn-inner{border-top:1px solid #fff;border-color:rgba(255,255,255,.3)}.ui-corner-tl{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em}.ui-corner-tr{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bl{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-br{-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-top{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bottom{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-right{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-left{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-all{-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em}.ui-disabled{opacity:.3}.ui-disabled,.ui-disabled a{cursor:default!important}.ui-icon{background-image:url(images/icons-18-white.png);background-repeat:no-repeat;background-color:#666;background-color:rgba(0,0,0,.4);-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px}.ui-icon-disc{background-color:#666;background-color:rgba(0,0,0,.3);-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px}.ui-icon-black{background-image:url(images/icons-18-black.png)}.ui-icon-black-disc{background-color:#fff;background-color:rgba(255,255,255,.3);-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px}@media screen and (-webkit-min-device-pixel-ratio:2),screen and (max--moz-device-pixel-ratio:2){.ui-icon{background-image:url(images/icons-36-white.png);background-size:630px 18px}.ui-icon-black{background-image:url(images/icons-36-black.png)}}.ui-icon-plus{background-position:-0 0}.ui-icon-minus{background-position:-36px 0}.ui-icon-delete{background-position:-72px 0}.ui-icon-arrow-r{background-position:-108px 0}.ui-icon-arrow-l{background-position:-144px 0}.ui-icon-arrow-u{background-position:-180px 0}.ui-icon-arrow-d{background-position:-216px 0}.ui-icon-check{background-position:-252px 0}.ui-icon-gear{background-position:-288px 0}.ui-icon-refresh{background-position:-324px 0}.ui-icon-forward{background-position:-360px 0}.ui-icon-back{background-position:-396px 0}.ui-icon-grid{background-position:-432px 0}.ui-icon-star{background-position:-468px 0}.ui-icon-alert{background-position:-504px 0}.ui-icon-info{background-position:-540px 0}.ui-icon-home{background-position:-576px 0}.ui-icon-search{background-position:-612px 0}.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-color:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;background-size:20px 20px}.ui-icon-checkbox-off{background-image:url(images/form-check-off.png)}.ui-icon-checkbox-on{background-image:url(images/form-check-on.png)}.ui-icon-radio-off{background-image:url(images/form-radio-off.png)}.ui-icon-radio-on{background-image:url(images/form-radio-on.png)}.ui-icon-searchfield{background-image:url(images/icon-search-black.png);background-size:16px 16px}.ui-icon-loading{background-image:url(images/ajax-loader.png);width:40px;height:40px;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;background-size:35px 35px}.ui-btn-corner-tl{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em}.ui-btn-corner-tr{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bl{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-br{-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-top{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bottom{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-right{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-left{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-all{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em}.ui-corner-tl,.ui-corner-tr,.ui-corner-bl,.ui-corner-br,.ui-corner-top,.ui-corner-bottom,.ui-corner-right,.ui-corner-left,.ui-corner-all,.ui-btn-corner-tl,.ui-btn-corner-tr,.ui-btn-corner-bl,.ui-btn-corner-br,.ui-btn-corner-top,.ui-btn-corner-bottom,.ui-btn-corner-right,.ui-btn-corner-left,.ui-btn-corner-all{-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.ui-overlay{background:#666;opacity:.5;filter:Alpha(Opacity=50);position:absolute;width:100%;height:100%}.ui-overlay-shadow{-moz-box-shadow:0 0 12px rgba(0,0,0,.6);-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-shadow{-moz-box-shadow:0 1px 4px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.3);box-shadow:0 1px 4px rgba(0,0,0,.3)}.ui-bar-a .ui-shadow,.ui-bar-b .ui-shadow,.ui-bar-c .ui-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-shadow-inset{-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);box-shadow:inset 0 1px 4px rgba(0,0,0,.2)}.ui-icon-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.4);box-shadow:0 1px 0 rgba(255,255,255,.4)}.ui-focus{-moz-box-shadow:0 0 12px #387bbe;-webkit-box-shadow:0 0 12px #387bbe;box-shadow:0 0 12px #387bbe}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow .ui-focus{outline-width:2px}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border:0}.ui-mobile-viewport{margin:0;overflow-x:hidden;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}[data-role=page],[data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-page-active{display:block;overflow:visible}.portrait,.portrait .ui-page{min-height:480px}.landscape,.landscape .ui-page{min-height:320px}.ui-loading .ui-mobile-viewport{overflow:hidden!important}.ui-loading .ui-loader{display:block}.ui-loading .ui-page{overflow:hidden}.ui-loader{display:none;position:absolute;opacity:.85;z-index:10;left:50%;width:200px;margin-left:-130px;margin-top:-35px;padding:10px 30px}.ui-loader h1{font-size:15px;text-align:center}.ui-loader .ui-icon{position:static;display:block;opacity:.9;margin:0 auto;width:35px;height:35px;background-color:transparent}.ui-mobile-rendering>*{visibility:hidden}.ui-bar,.ui-body{position:relative;padding:.4em 15px;overflow:hidden;display:block;clear:both}.ui-bar{font-size:16px;margin:0}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:16px;display:inline-block}.ui-header,.ui-footer{display:block}.ui-page .ui-header,.ui-page .ui-footer{position:relative}.ui-header .ui-btn-left{position:absolute;left:10px;top:.4em}.ui-header .ui-title,.ui-footer .ui-title{text-align:center;font-size:16px;display:block;margin:.6em 90px .8em;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-header .ui-btn-right{position:absolute;right:10px;top:.4em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px}.ui-page-fullscreen .ui-content{padding:0}.ui-icon{width:18px;height:18px}.ui-fullscreen img{max-width:100%}.ui-nojs{position:absolute;left:-9999px}.spin{-webkit-transform:rotate(360deg);-webkit-animation-name:spin;-webkit-animation-duration:1s;-webkit-animation-iteration-count:infinite}@-webkit-keyframes spin{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}.in,.out{-webkit-animation-timing-function:ease-in-out;-webkit-animation-duration:350ms}.slide.in{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromright}.slide.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft}.slide.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromleft}.slide.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;z-index:10}.slideup.out{-webkit-animation-name:dontmove;z-index:0}.slideup.out.reverse{-webkit-transform:translateY(100%);z-index:10;-webkit-animation-name:slideouttobottom}.slideup.in.reverse{z-index:0;-webkit-animation-name:dontmove}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;z-index:10}.slidedown.out{-webkit-animation-name:dontmove;z-index:0}.slidedown.out.reverse{-webkit-transform:translateY(-100%);z-index:10;-webkit-animation-name:slideouttotop}.slidedown.in.reverse{z-index:0;-webkit-animation-name:dontmove}@-webkit-keyframes slideinfromright{from{-webkit-transform:translateX(100%)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translateX(-100%)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(100%)}}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.in{opacity:1;z-index:10;-webkit-animation-name:fadein}.fade.out{z-index:0;-webkit-animation-name:fadeout}.ui-mobile-viewport-perspective{-webkit-perspective:1000;position:absolute}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden}.flip{-webkit-animation-duration:.65s;-webkit-backface-visibility:hidden;-webkit-transform:translateX(0)}.flip.in{-webkit-transform:rotateY(0) scale(1);-webkit-animation-name:flipinfromleft}.flip.out{-webkit-transform:rotateY(-180deg) scale(.8);-webkit-animation-name:flipouttoleft}.flip.in.reverse{-webkit-transform:rotateY(0) scale(1);-webkit-animation-name:flipinfromright}.flip.out.reverse{-webkit-transform:rotateY(180deg) scale(.8);-webkit-animation-name:flipouttoright}@-webkit-keyframes flipinfromright{from{-webkit-transform:rotateY(-180deg) scale(.8)}to{-webkit-transform:rotateY(0) scale(1)}}@-webkit-keyframes flipinfromleft{from{-webkit-transform:rotateY(180deg) scale(.8)}to{-webkit-transform:rotateY(0) scale(1)}}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0) scale(1)}to{-webkit-transform:rotateY(-180deg) scale(.8)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0) scale(1)}to{-webkit-transform:rotateY(180deg) scale(.8)}}@-webkit-keyframes dontmove{from{opacity:1}to{opacity:1}}.pop{-webkit-transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);opacity:1;-webkit-animation-name:popin;z-index:10}.pop.out.reverse{-webkit-transform:scale(.2);opacity:0;-webkit-animation-name:popout;z-index:10}.pop.in.reverse{z-index:0;-webkit-animation-name:dontmove}@-webkit-keyframes popin{from{-webkit-transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.2);opacity:0}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:50%}.ui-grid-a .ui-block-a{clear:left}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.333%}.ui-grid-b .ui-block-a{clear:left}.ui-grid-c .ui-block-a,.ui-grid-c .ui-block-b,.ui-grid-c .ui-block-c,.ui-grid-c .ui-block-d{width:25%}.ui-grid-c .ui-block-a{clear:left}.ui-grid-d .ui-block-a,.ui-grid-d .ui-block-b,.ui-grid-d .ui-block-c,.ui-grid-d .ui-block-d,.ui-grid-d .ui-block-e{width:20%}.ui-grid-d .ui-block-a{clear:left}.ui-header,.ui-footer,.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{position:absolute;overflow:hidden;width:100%;border-left-width:0;border-right-width:0}.ui-header-fixed,.ui-footer-fixed{z-index:1000;-webkit-transform:translateZ(0)}.ui-footer-duplicate,.ui-page-fullscreen .ui-fixed-inline{display:none}.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{opacity:.9}.ui-navbar{overflow:hidden}.ui-navbar ul,.ui-navbar-expanded ul{list-style:none;padding:0;margin:0;position:relative;display:block;border:0}.ui-navbar-collapsed ul{float:left;width:75%;margin-right:-2px}.ui-navbar-collapsed .ui-navbar-toggle{float:left;width:25%}.ui-navbar li.ui-navbar-truncate{position:absolute;left:-9999px;top:-9999px}.ui-navbar li .ui-btn,.ui-navbar .ui-navbar-toggle .ui-btn{display:block;font-size:12px;text-align:center;margin:0;border-right-width:0}.ui-navbar li .ui-btn{margin-right:-1px}.ui-navbar li .ui-btn:last-child{margin-right:0}.ui-header .ui-navbar li .ui-btn,.ui-header .ui-navbar .ui-navbar-toggle .ui-btn,.ui-footer .ui-navbar li .ui-btn,.ui-footer .ui-navbar .ui-navbar-toggle .ui-btn{border-top-width:0;border-bottom-width:0}.ui-navbar .ui-btn-inner{padding-left:2px;padding-right:2px}.ui-navbar-noicons li .ui-btn .ui-btn-inner,.ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner{padding-top:.8em;padding-bottom:.9em}.ui-navbar-expanded .ui-btn{margin:0;font-size:14px}.ui-navbar-expanded .ui-btn-inner{padding-left:5px;padding-right:5px}.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner{padding:45px 5px 15px;text-align:center}.ui-navbar-expanded .ui-btn-icon-top .ui-icon{top:15px}.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner{padding:15px 5px 45px;text-align:center}.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon{bottom:15px}.ui-navbar-expanded li .ui-btn .ui-btn-inner{min-height:2.5em}.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner{padding-top:1.8em;padding-bottom:1.9em}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 5px;padding:0}.ui-btn:focus,.ui-btn:active{outline:0}.ui-header .ui-btn,.ui-footer .ui-btn,.ui-bar .ui-btn{display:inline-block;font-size:13px;margin:0}.ui-btn-inline{display:inline-block}.ui-btn-inner{padding:.6em 25px;display:block;height:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-bar .ui-btn-inner{padding:.4em 8px .5em}.ui-btn-icon-notext{display:inline-block;width:20px;height:20px;padding:2px 1px 2px 3px;text-indent:-9999px}.ui-btn-icon-notext .ui-btn-inner{padding:0}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-999px}.ui-btn-icon-left .ui-btn-inner{padding-left:33px}.ui-header .ui-btn-icon-left .ui-btn-inner,.ui-footer .ui-btn-icon-left .ui-btn-inner,.ui-bar .ui-btn-icon-left .ui-btn-inner{padding-left:27px}.ui-btn-icon-right .ui-btn-inner{padding-right:33px}.ui-header .ui-btn-icon-right .ui-btn-inner,.ui-footer .ui-btn-icon-right .ui-btn-inner,.ui-bar .ui-btn-icon-right .ui-btn-inner{padding-right:27px}.ui-btn-icon-top .ui-btn-inner{padding-top:33px}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner,.ui-bar .ui-btn-icon-top .ui-btn-inner{padding-top:27px}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:33px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner,.ui-bar .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:27px}.ui-btn-icon-notext .ui-icon{display:block}.ui-btn-icon-left .ui-icon,.ui-btn-icon-right .ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-btn-icon-top .ui-icon,.ui-btn-icon-bottom .ui-icon{position:absolute;left:50%;margin-left:-9px}.ui-btn-icon-left .ui-icon{left:10px}.ui-btn-icon-right .ui-icon{right:10px}.ui-header .ui-btn-icon-left .ui-icon,.ui-footer .ui-btn-icon-left .ui-icon,.ui-bar .ui-btn-icon-left .ui-icon{left:4px}.ui-header .ui-btn-icon-right .ui-icon,.ui-footer .ui-btn-icon-right .ui-icon,.ui-bar .ui-btn-icon-right .ui-icon{right:4px}.ui-header .ui-btn-icon-top .ui-icon,.ui-footer .ui-btn-icon-top .ui-icon,.ui-bar .ui-btn-icon-top .ui-icon{top:4px}.ui-header .ui-btn-icon-bottom .ui-icon,.ui-footer .ui-btn-icon-bottom .ui-icon,.ui-bar .ui-btn-icon-bottom .ui-icon{bottom:4px}.ui-btn-icon-top .ui-icon{top:5px}.ui-btn-icon-bottom .ui-icon{bottom:5px}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:button;opacity:0;cursor:pointer}.ui-collapsible-contain{margin:.5em 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -8px;padding:0;border-width:0 0 1px 0;position:relative}.ui-collapsible-heading a{text-align:left;margin:0}.ui-collapsible-heading a .ui-btn-inner{padding-left:40px}.ui-collapsible-heading a span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px}.ui-collapsible-heading a span.ui-btn .ui-btn-inner{padding:0}.ui-collapsible-heading a span.ui-btn .ui-icon{left:0;margin-top:-10px}.ui-collapsible-heading-status{position:absolute;left:-9999px}.ui-collapsible-content{display:block;padding:10px 0 10px 8px}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible-contain{margin:-1px 0 0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0 1em}.ui-bar .ui-controlgroup{margin:0 .3em}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em}.ui-controlgroup-controls{display:block;width:95%}.ui-controlgroup li{list-style:none}.ui-controlgroup-vertical .ui-btn,.ui-controlgroup-vertical .ui-checkbox,.ui-controlgroup-vertical .ui-radio{margin:0;border-bottom-width:0}.ui-controlgroup-vertical .ui-controlgroup-last{border-bottom-width:1px}.ui-controlgroup-horizontal{padding:0}.ui-controlgroup-horizontal .ui-btn,.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{margin:0 -5px 0 0;display:inline-block}.ui-controlgroup-horizontal .ui-checkbox .ui-btn,.ui-controlgroup-horizontal .ui-radio .ui-btn,.ui-controlgroup-horizontal .ui-checkbox:last-child,.ui-controlgroup-horizontal .ui-radio:last-child{margin-right:0}.ui-controlgroup-horizontal .ui-controlgroup-last{margin-right:0}.ui-controlgroup .ui-checkbox label,.ui-controlgroup .ui-radio label{font-size:16px}.min-width-480px .ui-controlgroup-label{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.min-width-480px .ui-controlgroup-controls{width:60%;display:inline-block}.ui-dialog{min-height:480px}.ui-dialog .ui-header,.ui-dialog .ui-content,.ui-dialog .ui-footer{margin:15px;position:relative}.ui-dialog .ui-header,.ui-dialog .ui-footer{z-index:10;width:auto}.ui-dialog .ui-content,.ui-dialog .ui-footer{margin-top:-15px}.ui-checkbox,.ui-radio{position:relative;margin:.2em 0 .5em;z-index:1}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:0;text-align:left;z-index:2}.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner{padding-left:45px}.ui-checkbox .ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-checkbox .ui-btn-icon-left .ui-icon,.ui-radio .ui-btn-icon-left .ui-icon{left:15px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox input,.ui-radio input{position:absolute;left:20px;top:50%;width:10px;height:10px;margin:-5px 0 0 0;outline:0!important;z-index:1}.ui-field-contain{background:0;padding:1.5em 0;margin:0;border-bottom-width:1px;overflow:visible}.ui-field-contain:first-child{border-top-width:0}.min-width-480px .ui-field-contain{border-width:0;padding:0;margin:1em 0}.ui-select{display:block;position:relative}.ui-select select{position:absolute;left:-9999px;top:-9999px}.ui-select .ui-btn select{cursor:pointer;-webkit-appearance:button;left:0;top:0;width:100%;height:100%;opacity:.001}.ui-select .ui-btn select.ui-select-nativeonly{opacity:1}.ui-select .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-select .ui-btn-icon-right .ui-icon{right:15px}label.ui-select{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:inline-block;min-height:1em}.ui-select .ui-btn-text{text-overflow:ellipsis;overflow:hidden;width:85%}.ui-selectmenu{position:absolute;padding:0;z-index:100!important;width:80%;max-width:350px;padding:6px}.ui-selectmenu .ui-listview{margin:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu-hidden{top:-9999px;left:-9999px}.ui-selectmenu-screen{position:absolute;top:0;left:0;width:100%;height:100%;z-index:99}.ui-screen-hidden,.ui-selectmenu-list .ui-li .ui-icon{display:none}.ui-selectmenu-list .ui-li .ui-icon{display:block}.ui-li.ui-selectmenu-placeholder{display:none}.min-width-480px label.ui-select{display:inline-block;width:20%;margin:0 2% 0 0}.min-width-480px .ui-select{width:60%;display:inline-block}.ui-selectmenu .ui-header h1:after{content:'.';visibility:hidden}label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:normal;margin:0 0 .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;line-height:1.4;font-size:16px;display:block;width:95%}input.ui-input-text{-webkit-appearance:none}textarea.ui-input-text{height:50px;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;transition:height 200ms linear}.ui-input-search{padding:0 30px;width:77%;background-position:8px 50%;background-repeat:no-repeat;position:relative}.ui-input-search input.ui-input-text{border:0;width:98%;padding:.4em 0;margin:0;display:block;background:transparent none;outline:0!important}.ui-input-search .ui-input-clear{position:absolute;right:0;top:50%;margin-top:-14px}.ui-input-search .ui-input-clear-hidden{display:none}.min-width-480px label.ui-input-text{vertical-align:top}.min-width-480px label.ui-input-text{display:inline-block;width:20%;margin:0 2% 0 0}.min-width-480px input.ui-input-text,.min-width-480px textarea.ui-input-text,.min-width-480px .ui-input-search{width:60%;display:inline-block}.min-width-480px .ui-input-search{width:50%}.ui-listview{margin:0;counter-reset:listnumbering}.ui-content .ui-listview{margin:-15px}.ui-content .ui-listview-inset{margin:1em 0}.ui-listview,.ui-li{list-style:none;padding:0;zoom:1}.ui-li{display:block;margin:0;position:relative;overflow:hidden;text-align:left;border-width:0;border-top-width:1px}.ui-li .ui-btn-text{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-divider,.ui-li-static{padding:.5em 15px;font-size:14px;font-weight:bold;counter-reset:listnumbering}ol.ui-listview .ui-link-inherit:before,.ui-li-dec{font-size:.8em;display:inline-block;padding-right:.3em;font-weight:normal;counter-increment:listnumbering;content:counter(listnumbering) ". "}ol.ui-listview .ui-li-jsnumbering:before{content:""!important}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px}.ui-li:last-child{border-bottom-width:1px}.ui-li .ui-btn-inner{display:block;position:relative;padding:.7em 75px .7em 15px}.ui-li-has-thumb .ui-btn-inner{min-height:60px;padding-left:100px}.ui-li-has-icon .ui-btn-inner{min-height:20px;padding-left:40px}.ui-li-heading{font-size:16px;font-weight:bold;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-desc{font-size:12px;font-weight:normal;display:block;margin:-.5em 0 .6em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-thumb,.ui-li-icon{position:absolute;left:1px;top:0;max-height:80px;max-width:80px}.ui-li-icon{max-height:40px;max-width:40px;left:10px;top:.9em}.ui-li-thumb,.ui-li-icon,.ui-li-content{float:left;margin-right:10px}.ui-li-aside{float:right;width:50%;text-align:right;margin:.3em 0}.min-width-480px .ui-li-aside{width:45%}.ui-li-has-alt .ui-btn-inner{padding-right:95px}.ui-li-count{position:absolute;font-size:11px;font-weight:bold;padding:.2em .5em;top:50%;margin-top:-.9em;right:38px}.ui-li-divider .ui-li-count{right:10px}.ui-li-has-alt .ui-li-count{right:55px}.ui-li-link-alt{position:absolute;width:40px;height:100%;border-width:0;border-left-width:1px;top:0;right:0;margin:0;padding:0}.ui-li-link-alt .ui-btn{overflow:hidden;position:absolute;right:8px;top:50%;margin:-11px 0 0 0;border-bottom-width:1px}.ui-li-link-alt .ui-btn-inner{padding:0;position:static}.ui-li-link-alt .ui-btn .ui-icon{right:50%;margin-right:-9px}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}@media only screen and (min-device-width:768px) and (max-device-width:1024px){.ui-li .ui-btn-text{overflow:visible}}label.ui-slider{display:block}input.ui-slider-input,.min-width-480px input.ui-slider-input{display:inline-block;width:50px}select.ui-slider-switch{display:none}div.ui-slider{position:relative;display:inline-block;overflow:visible;height:15px;padding:0;margin:0 2% 0 20px;top:4px;width:66%}a.ui-slider-handle{position:absolute;z-index:10;top:50%;width:28px;height:28px;margin-top:-15px;margin-left:-15px}a.ui-slider-handle .ui-btn-inner{padding-left:0;padding-right:0}.min-width-480px label.ui-slider{display:inline-block;width:20%;margin:0 2% 0 0}.min-width-480px div.ui-slider{width:45%}div.ui-slider-switch{height:32px;overflow:hidden;margin-left:0}div.ui-slider-inneroffset{margin-left:50%;position:absolute;top:1px;height:100%;width:50%}div.ui-slider-handle-snapping{-webkit-transition:left 100ms linear}div.ui-slider-labelbg{position:absolute;top:0;margin:0;border-width:0}div.ui-slider-switch div.ui-slider-labelbg-a{width:60%;height:100%;left:0}div.ui-slider-switch div.ui-slider-labelbg-b{width:60%;height:100%;right:0}.ui-slider-switch-a div.ui-slider-labelbg-a,.ui-slider-switch-b div.ui-slider-labelbg-b{z-index:1}.ui-slider-switch-a div.ui-slider-labelbg-b,.ui-slider-switch-b div.ui-slider-labelbg-a{z-index:10}div.ui-slider-switch a.ui-slider-handle{z-index:20;width:101%;height:32px;margin-top:-18px;margin-left:-101%}span.ui-slider-label{width:100%;position:absolute;height:32px;font-size:16px;text-align:center;line-height:2;background:0;border-color:transparent}span.ui-slider-label-a{left:-100%;margin-right:-1px}span.ui-slider-label-b{right:-100%;margin-left:-1px}
+
--- /dev/null
+++ b/css/jquery-ui-1.8.12.custom.css
@@ -1,1 +1,348 @@
-
+/*
+ * jQuery UI CSS Framework 1.8.12
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.12
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
+.ui-widget-content a { color: #333333; }
+.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
+.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*
+ * jQuery UI Autocomplete 1.8.12
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.ui-autocomplete { position: absolute; cursor: default; }
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.12
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.ui-menu {
+ list-style:none;
+ padding: 2px;
+ margin: 0;
+ display:block;
+ float: left;
+}
+.ui-menu .ui-menu {
+ margin-top: -3px;
+}
+.ui-menu .ui-menu-item {
+ margin:0;
+ padding: 0;
+ zoom: 1;
+ float: left;
+ clear: left;
+ width: 100%;
+}
+.ui-menu .ui-menu-item a {
+ text-decoration:none;
+ display:block;
+ padding:.2em .4em;
+ line-height:1.5;
+ zoom:1;
+}
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+ font-weight: normal;
+ margin: -1px;
+}
+
--- /dev/null
+++ b/css/jquery.mobile-b90eab4935.css
@@ -1,1 +1,2 @@
-
+/*! jQuery Mobile v1.0rc2 jquerymobile.com | jquery.org/license */
+.ui-bar-a{border:1px solid #2a2a2a;background:#111;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#111));background-image:-webkit-linear-gradient(#3c3c3c,#111);background-image:-moz-linear-gradient(#3c3c3c,#111);background-image:-ms-linear-gradient(#3c3c3c,#111);background-image:-o-linear-gradient(#3c3c3c,#111);background-image:linear-gradient(#3c3c3c,#111)}.ui-bar-a,.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Helvetica,Arial,sans-serif}.ui-bar-a .ui-link-inherit{color:#fff}.ui-bar-a .ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-a .ui-link:hover{color:#2489ce}.ui-bar-a .ui-link:active{color:#2489ce}.ui-bar-a .ui-link:visited{color:#2489ce}.ui-body-a,.ui-dialog.ui-overlay-a{border:1px solid #2a2a2a;background:#222;color:#fff;text-shadow:0 1px 0 #000;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from(#666),to(#222));background-image:-webkit-linear-gradient(#666,#222);background-image:-moz-linear-gradient(#666,#222);background-image:-ms-linear-gradient(#666,#222);background-image:-o-linear-gradient(#666,#222);background-image:linear-gradient(#666,#222)}.ui-body-a,.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Helvetica,Arial,sans-serif}.ui-body-a .ui-link-inherit{color:#fff}.ui-body-a .ui-link{color:#2489ce;font-weight:bold}.ui-body-a .ui-link:hover{color:#2489ce}.ui-body-a .ui-link:active{color:#2489ce}.ui-body-a .ui-link:visited{color:#2489ce}.ui-btn-up-a{border:1px solid #222;background:#333;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#333));background-image:-webkit-linear-gradient(#555,#333);background-image:-moz-linear-gradient(#555,#333);background-image:-ms-linear-gradient(#555,#333);background-image:-o-linear-gradient(#555,#333);background-image:linear-gradient(#555,#333)}.ui-btn-up-a a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid #000;background:#444;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#666),to(#444));background-image:-webkit-linear-gradient(#666,#444);background-image:-moz-linear-gradient(#666,#444);background-image:-ms-linear-gradient(#666,#444);background-image:-o-linear-gradient(#666,#444);background-image:linear-gradient(#666,#444)}.ui-btn-hover-a a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid #000;background:#3d3d3d;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#333),to(#5a5a5a));background-image:-webkit-linear-gradient(#333,#5a5a5a);background-image:-moz-linear-gradient(#333,#5a5a5a);background-image:-ms-linear-gradient(#333,#5a5a5a);background-image:-o-linear-gradient(#333,#5a5a5a);background-image:linear-gradient(#333,#5a5a5a)}.ui-btn-down-a a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-b{border:1px solid #456f9a;background:#5e87b0;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #254f7a;background-image:-webkit-gradient(linear,left top,left bottom,from(#81a8ce),to(#5e87b0));background-image:-webkit-linear-gradient(#81a8ce,#5e87b0);background-image:-moz-linear-gradient(#81a8ce,#5e87b0);background-image:-ms-linear-gradient(#81a8ce,#5e87b0);background-image:-o-linear-gradient(#81a8ce,#5e87b0);background-image:linear-gradient(#81a8ce,#5e87b0)}.ui-bar-b,.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Helvetica,Arial,sans-serif}.ui-bar-b .ui-link-inherit{color:#fff}.ui-bar-b .ui-link{color:#ddf0f8;font-weight:bold}.ui-bar-b .ui-link:hover{color:#ddf0f8}.ui-bar-b .ui-link:active{color:#ddf0f8}.ui-bar-b .ui-link:visited{color:#ddf0f8}.ui-body-b,.ui-dialog.ui-overlay-b{border:1px solid #c6c6c6;background:#ccc;color:#333;text-shadow:0 1px 0 #fff;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from(#e6e6e6),to(#ccc));background-image:-webkit-linear-gradient(#e6e6e6,#ccc);background-image:-moz-linear-gradient(#e6e6e6,#ccc);background-image:-ms-linear-gradient(#e6e6e6,#ccc);background-image:-o-linear-gradient(#e6e6e6,#ccc);background-image:linear-gradient(#e6e6e6,#ccc)}.ui-body-b,.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Helvetica,Arial,sans-serif}.ui-body-b .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#2489ce;font-weight:bold}.ui-body-b .ui-link:hover{color:#2489ce}.ui-body-b .ui-link:active{color:#2489ce}.ui-body-b .ui-link:visited{color:#2489ce}.ui-btn-up-b{border:1px solid #145072;background:#2567ab;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #145072;background-image:-webkit-gradient(linear,left top,left bottom,from(#5f9cc5),to(#396b9e));background-image:-webkit-linear-gradient(#5f9cc5,#396b9e);background-image:-moz-linear-gradient(#5f9cc5,#396b9e);background-image:-ms-linear-gradient(#5f9cc5,#396b9e);background-image:-o-linear-gradient(#5f9cc5,#396b9e);background-image:linear-gradient(#5f9cc5,#396b9e)}.ui-btn-up-b a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid #00516e;background:#4b88b6;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #014d68;background-image:-webkit-gradient(linear,left top,left bottom,from(#72b0d4),to(#4b88b6));background-image:-webkit-linear-gradient(#72b0d4,#4b88b6);background-image:-moz-linear-gradient(#72b0d4,#4b88b6);background-image:-ms-linear-gradient(#72b0d4,#4b88b6);background-image:-o-linear-gradient(#72b0d4,#4b88b6);background-image:linear-gradient(#72b0d4,#4b88b6)}.ui-btn-hover-b a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid #225377;background:#4e89c5;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #225377;background-image:-webkit-gradient(linear,left top,left bottom,from(#396b9e),to(#4e89c5));background-image:-webkit-linear-gradient(#396b9e,#4e89c5);background-image:-moz-linear-gradient(#396b9e,#4e89c5);background-image:-ms-linear-gradient(#396b9e,#4e89c5);background-image:-o-linear-gradient(#396b9e,#4e89c5);background-image:linear-gradient(#396b9e,#4e89c5)}.ui-btn-down-b a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-c{border:1px solid #b3b3b3;background:#e9eaeb;color:#3e3e3e;font-weight:bold;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f0f0f0),to(#e9eaeb));background-image:-webkit-linear-gradient(#f0f0f0,#e9eaeb);background-image:-moz-linear-gradient(#f0f0f0,#e9eaeb);background-image:-ms-linear-gradient(#f0f0f0,#e9eaeb);background-image:-o-linear-gradient(#f0f0f0,#e9eaeb);background-image:linear-gradient(#f0f0f0,#e9eaeb)}.ui-bar-c .ui-link-inherit{color:#3e3e3e}.ui-bar-c .ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-c .ui-link:hover{color:#2489ce}.ui-bar-c .ui-link:active{color:#2489ce}.ui-bar-c .ui-link:visited{color:#2489ce}.ui-bar-c,.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c,.ui-dialog.ui-overlay-c{border:1px solid #b3b3b3;color:#333;text-shadow:0 1px 0 #fff;background:#f0f0f0;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#ddd));background-image:-webkit-linear-gradient(#eee,#ddd);background-image:-moz-linear-gradient(#eee,#ddd);background-image:-ms-linear-gradient(#eee,#ddd);background-image:-o-linear-gradient(#eee,#ddd);background-image:linear-gradient(#eee,#ddd)}.ui-body-c,.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2489ce;font-weight:bold}.ui-body-c .ui-link:hover{color:#2489ce}.ui-body-c .ui-link:active{color:#2489ce}.ui-body-c .ui-link:visited{color:#2489ce}.ui-btn-up-c{border:1px solid #ccc;background:#eee;font-weight:bold;color:#444;text-shadow:0 1px 1px #f6f6f6;background-image:-webkit-gradient(linear,left top,left bottom,from(#fdfdfd),to(#eee));background-image:-webkit-linear-gradient(#fdfdfd,#eee);background-image:-moz-linear-gradient(#fdfdfd,#eee);background-image:-ms-linear-gradient(#fdfdfd,#eee);background-image:-o-linear-gradient(#fdfdfd,#eee);background-image:linear-gradient(#fdfdfd,#eee)}.ui-btn-up-c a.ui-link-inherit{color:#2f3e46}.ui-btn-hover-c{border:1px solid #bbb;background:#dadada;font-weight:bold;color:#101010;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#ededed),to(#dadada));background-image:-webkit-linear-gradient(#ededed,#dadada);background-image:-moz-linear-gradient(#ededed,#dadada);background-image:-ms-linear-gradient(#ededed,#dadada);background-image:-o-linear-gradient(#ededed,#dadada);background-image:linear-gradient(#ededed,#dadada)}.ui-btn-hover-c a.ui-link-inherit{color:#2f3e46}.ui-btn-down-c{border:1px solid #808080;background:#fdfdfd;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#fdfdfd));background-image:-webkit-linear-gradient(#eee,#fdfdfd);background-image:-moz-linear-gradient(#eee,#fdfdfd);background-image:-ms-linear-gradient(#eee,#fdfdfd);background-image:-o-linear-gradient(#eee,#fdfdfd);background-image:linear-gradient(#eee,#fdfdfd)}.ui-btn-down-c a.ui-link-inherit{color:#2f3e46}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-d{border:1px solid #ccc;background:#bbb;color:#333;text-shadow:0 1px 0 #eee;background-image:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#bbb));background-image:-webkit-linear-gradient(#ddd,#bbb);background-image:-moz-linear-gradient(#ddd,#bbb);background-image:-ms-linear-gradient(#ddd,#bbb);background-image:-o-linear-gradient(#ddd,#bbb);background-image:linear-gradient(#ddd,#bbb)}.ui-bar-d,.ui-bar-d input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-d button{font-family:Helvetica,Arial,sans-serif}.ui-bar-d .ui-link-inherit{color:#333}.ui-bar-d .ui-link{color:#2489ce;font-weight:bold}.ui-bar-d .ui-link:hover{color:#2489ce}.ui-bar-d .ui-link:active{color:#2489ce}.ui-bar-d .ui-link:visited{color:#2489ce}.ui-body-d,.ui-dialog.ui-overlay-d{border:1px solid #ccc;color:#333;text-shadow:0 1px 0 #fff;background:#fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fff));background-image:-webkit-linear-gradient(#fff,#fff);background-image:-moz-linear-gradient(#fff,#fff);background-image:-ms-linear-gradient(#fff,#fff);background-image:-o-linear-gradient(#fff,#fff);background-image:linear-gradient(#fff,#fff)}.ui-body-d,.ui-body-d input,.ui-body-d select,.ui-body-d textarea,.ui-body-d button{font-family:Helvetica,Arial,sans-serif}.ui-body-d .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#2489ce;font-weight:bold}.ui-body-d .ui-link:hover{color:#2489ce}.ui-body-d .ui-link:active{color:#2489ce}.ui-body-d .ui-link:visited{color:#2489ce}.ui-btn-up-d{border:1px solid #ccc;background:#fff;font-weight:bold;color:#444;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fff));background-image:-webkit-linear-gradient(#fff,#fff);background-image:-moz-linear-gradient(#fff,#fff);background-image:-ms-linear-gradient(#fff,#fff);background-image:-o-linear-gradient(#fff,#fff);background-image:linear-gradient(#fff,#fff)}.ui-btn-up-d a.ui-link-inherit{color:#333}.ui-btn-hover-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#222;cursor:pointer;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fdfdfd),to(#eee));background-image:-webkit-linear-gradient(#fdfdfd,#eee);background-image:-moz-linear-gradient(#fdfdfd,#eee);background-image:-ms-linear-gradient(#fdfdfd,#eee);background-image:-o-linear-gradient(#fdfdfd,#eee);background-image:linear-gradient(#fdfdfd,#eee)}.ui-btn-hover-d a.ui-link-inherit{color:#222}.ui-btn-down-d{border:1px solid #aaa;background:#fff;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#fff));background-image:-webkit-linear-gradient(#eee,#fff);background-image:-moz-linear-gradient(#eee,#fff);background-image:-ms-linear-gradient(#eee,#fff);background-image:-o-linear-gradient(#eee,#fff);background-image:linear-gradient(#eee,#fff)}.ui-btn-down-d a.ui-link-inherit{color:#111}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-e{border:1px solid #f7c942;background:#fadb4e;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fceda7),to(#fadb4e));background-image:-webkit-linear-gradient(#fceda7,#fadb4e);background-image:-moz-linear-gradient(#fceda7,#fadb4e);background-image:-ms-linear-gradient(#fceda7,#fadb4e);background-image:-o-linear-gradient(#fceda7,#fadb4e);background-image:linear-gradient(#fceda7,#fadb4e)}.ui-bar-e,.ui-bar-e input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-e button{font-family:Helvetica,Arial,sans-serif}.ui-bar-e .ui-link-inherit{color:#333}.ui-bar-e .ui-link{color:#2489ce;font-weight:bold}.ui-bar-e .ui-link:hover{color:#2489ce}.ui-bar-e .ui-link:active{color:#2489ce}.ui-bar-e .ui-link:visited{color:#2489ce}.ui-body-e,.ui-dialog.ui-overlay-e{border:1px solid #f7c942;color:#333;text-shadow:0 1px 0 #fff;background:#faeb9e;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#faeb9e));background-image:-webkit-linear-gradient(#fff,#faeb9e);background-image:-moz-linear-gradient(#fff,#faeb9e);background-image:-ms-linear-gradient(#fff,#faeb9e);background-image:-o-linear-gradient(#fff,#faeb9e);background-image:linear-gradient(#fff,#faeb9e)}.ui-body-e,.ui-body-e input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Helvetica,Arial,sans-serif}.ui-body-e .ui-link-inherit{color:#333}.ui-body-e .ui-link{color:#2489ce;font-weight:bold}.ui-body-e .ui-link:hover{color:#2489ce}.ui-body-e .ui-link:active{color:#2489ce}.ui-body-e .ui-link:visited{color:#2489ce}.ui-btn-up-e{border:1px solid #f7c942;background:#fadb4e;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fceda7),to(#fadb4e));background-image:-webkit-linear-gradient(#fceda7,#fadb4e);background-image:-moz-linear-gradient(#fceda7,#fadb4e);background-image:-ms-linear-gradient(#fceda7,#fadb4e);background-image:-o-linear-gradient(#fceda7,#fadb4e);background-image:linear-gradient(#fceda7,#fadb4e)}.ui-btn-up-e a.ui-link-inherit{color:#333}.ui-btn-hover-e{border:1px solid #e79952;background:#fbe26f;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf0b5),to(#fbe26f));background-image:-webkit-linear-gradient(#fcf0b5,#fbe26f);background-image:-moz-linear-gradient(#fcf0b5,#fbe26f);background-image:-ms-linear-gradient(#fcf0b5,#fbe26f);background-image:-o-linear-gradient(#fcf0b5,#fbe26f);background-image:linear-gradient(#fcf0b5,#fbe26f)}.ui-btn-hover-e a.ui-link-inherit{color:#333}.ui-btn-down-e{border:1px solid #f7c942;background:#fceda7;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fadb4e),to(#fceda7));background-image:-webkit-linear-gradient(#fadb4e,#fceda7);background-image:-moz-linear-gradient(#fadb4e,#fceda7);background-image:-ms-linear-gradient(#fadb4e,#fceda7);background-image:-o-linear-gradient(#fadb4e,#fceda7);background-image:linear-gradient(#fadb4e,#fceda7)}.ui-btn-down-e a.ui-link-inherit{color:#333}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Helvetica,Arial,sans-serif;text-decoration:none}a.ui-link-inherit{text-decoration:none!important}.ui-btn-active{border:1px solid #155678;background:#4596ce;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #145072;text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(#85bae4),to(#5393c5));background-image:-webkit-linear-gradient(#85bae4,#5393c5);background-image:-moz-linear-gradient(#85bae4,#5393c5);background-image:-ms-linear-gradient(#85bae4,#5393c5);background-image:-o-linear-gradient(#85bae4,#5393c5);background-image:linear-gradient(#85bae4,#5393c5);font-family:Helvetica,Arial,sans-serif}.ui-btn-active a.ui-link-inherit{color:#fff}.ui-btn-inner{border-top:1px solid #fff;border-color:rgba(255,255,255,.3)}.ui-corner-tl{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em}.ui-corner-tr{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bl{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-br{-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-top{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bottom{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-right{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-left{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-all{-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em}.ui-corner-none{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-br{border-bottom:#828282;border-bottom:rgba(130,130,130,.3);border-bottom-width:1px;border-bottom-style:solid}.ui-disabled{opacity:.3}.ui-disabled,.ui-disabled a{pointer-events:none;cursor:default}.ui-icon,.ui-icon-searchfield:after{background:#666;background:rgba(0,0,0,.4);background-image:url(images/icons-18-white.png);background-repeat:no-repeat;-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px}.ui-icon-alt{background:#fff;background:rgba(255,255,255,.3);background-image:url(images/icons-18-black.png);background-repeat:no-repeat}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min--moz-device-pixel-ratio:1.5),only screen and (min-resolution:240dpi){.ui-icon-plus,.ui-icon-minus,.ui-icon-delete,.ui-icon-arrow-r,.ui-icon-arrow-l,.ui-icon-arrow-u,.ui-icon-arrow-d,.ui-icon-check,.ui-icon-gear,.ui-icon-refresh,.ui-icon-forward,.ui-icon-back,.ui-icon-grid,.ui-icon-star,.ui-icon-alert,.ui-icon-info,.ui-icon-home,.ui-icon-search,.ui-icon-searchfield:after,.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-image:url(images/icons-36-white.png);-moz-background-size:776px 18px;-o-background-size:776px 18px;-webkit-background-size:776px 18px;background-size:776px 18px}.ui-icon-alt{background-image:url(images/icons-36-black.png)}}.ui-icon-plus{background-position:-0 50%}.ui-icon-minus{background-position:-36px 50%}.ui-icon-delete{background-position:-72px 50%}.ui-icon-arrow-r{background-position:-108px 50%}.ui-icon-arrow-l{background-position:-144px 50%}.ui-icon-arrow-u{background-position:-180px 50%}.ui-icon-arrow-d{background-position:-216px 50%}.ui-icon-check{background-position:-252px 50%}.ui-icon-gear{background-position:-288px 50%}.ui-icon-refresh{background-position:-324px 50%}.ui-icon-forward{background-position:-360px 50%}.ui-icon-back{background-position:-396px 50%}.ui-icon-grid{background-position:-432px 50%}.ui-icon-star{background-position:-468px 50%}.ui-icon-alert{background-position:-504px 50%}.ui-icon-info{background-position:-540px 50%}.ui-icon-home{background-position:-576px 50%}.ui-icon-search,.ui-icon-searchfield:after{background-position:-612px 50%}.ui-icon-checkbox-off{background-position:-684px 50%}.ui-icon-checkbox-on{background-position:-648px 50%}.ui-icon-radio-off{background-position:-756px 50%}.ui-icon-radio-on{background-position:-720px 50%}.ui-checkbox .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.ui-icon-checkbox-off,.ui-icon-radio-off{background-color:transparent}.ui-checkbox-on .ui-icon,.ui-radio-on .ui-icon{background-color:#4596ce}.ui-icon-loading{background-image:url(images/ajax-loader.png);width:40px;height:40px;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;background-size:35px 35px}.ui-btn-corner-tl{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em}.ui-btn-corner-tr{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bl{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-br{-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-top{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bottom{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-right{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-left{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-all{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em}.ui-corner-tl,.ui-corner-tr,.ui-corner-bl,.ui-corner-br,.ui-corner-top,.ui-corner-bottom,.ui-corner-right,.ui-corner-left,.ui-corner-all,.ui-btn-corner-tl,.ui-btn-corner-tr,.ui-btn-corner-bl,.ui-btn-corner-br,.ui-btn-corner-top,.ui-btn-corner-bottom,.ui-btn-corner-right,.ui-btn-corner-left,.ui-btn-corner-all{-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.ui-overlay{background:#666;opacity:.5;filter:Alpha(Opacity=50);position:absolute;width:100%;height:100%}.ui-overlay-shadow{-moz-box-shadow:0 0 12px rgba(0,0,0,.6);-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-shadow{-moz-box-shadow:0 1px 4px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.3);box-shadow:0 1px 4px rgba(0,0,0,.3)}.ui-bar-a .ui-shadow,.ui-bar-b .ui-shadow,.ui-bar-c .ui-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-shadow-inset{-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);box-shadow:inset 0 1px 4px rgba(0,0,0,.2)}.ui-icon-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.4);box-shadow:0 1px 0 rgba(255,255,255,.4)}.ui-focus{-moz-box-shadow:0 0 12px #387bbe;-webkit-box-shadow:0 0 12px #387bbe;box-shadow:0 0 12px #387bbe}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow .ui-focus{outline-width:2px}.ui-mobile,.ui-mobile body{height:100%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border:0}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-mobile .ui-page-active{display:block;overflow:visible}.ui-page{outline:0}@media screen and (orientation:portrait){.ui-mobile,.ui-mobile .ui-page{min-height:420px}}@media screen and (orientation:landscape){.ui-mobile,.ui-mobile .ui-page{min-height:300px}}.ui-page.ui-mobile-touch-overflow,.ui-mobile-touch-overflow.ui-native-fixed .ui-content{overflow:auto;height:100%;-webkit-overflow-scrolling:touch;-moz-overflow-scrolling:touch;-o-overflow-scrolling:touch;-ms-overflow-scrolling:touch;overflow-scrolling:touch}.ui-page.ui-mobile-touch-overflow,.ui-page.ui-mobile-touch-overflow *{-webkit-transform:rotateY(0)}.ui-page.ui-mobile-pre-transition{display:block}.ui-loading .ui-mobile-viewport{overflow:hidden!important}.ui-loading .ui-loader{display:block}.ui-loading .ui-page{overflow:hidden}.ui-loader{display:none;position:absolute;opacity:.85;z-index:100;left:50%;width:200px;margin-left:-130px;margin-top:-35px;padding:10px 30px}.ui-loader h1{font-size:15px;text-align:center}.ui-loader .ui-icon{position:static;display:block;opacity:.9;margin:0 auto;width:35px;height:35px;background-color:transparent}.ui-mobile-rendering>*{visibility:hidden}.ui-bar,.ui-body{position:relative;padding:.4em 15px;overflow:hidden;display:block;clear:both}.ui-bar{font-size:16px;margin:0}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:16px;display:inline-block}.ui-header,.ui-footer{display:block}.ui-page .ui-header,.ui-page .ui-footer{position:relative}.ui-header .ui-btn-left{position:absolute;left:10px;top:.4em}.ui-header .ui-btn-right{position:absolute;right:10px;top:.4em}.ui-header .ui-title,.ui-footer .ui-title{min-height:1.1em;text-align:center;font-size:16px;display:block;margin:.6em 90px .8em;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-footer .ui-title{margin:.6em 15px .8em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px}.ui-page-fullscreen .ui-content{padding:0}.ui-mobile-touch-overflow.ui-page.ui-native-fixed,.ui-mobile-touch-overflow.ui-page.ui-native-fullscreen{overflow:visible}.ui-mobile-touch-overflow.ui-native-fixed .ui-header,.ui-mobile-touch-overflow.ui-native-fixed .ui-footer{position:fixed;left:0;right:0;top:0;z-index:200}.ui-mobile-touch-overflow.ui-page.ui-native-fixed .ui-footer{top:auto;bottom:0}.ui-mobile-touch-overflow.ui-native-fixed .ui-content{padding-top:2.5em;padding-bottom:3em;top:0;bottom:0;height:auto;position:absolute}.ui-mobile-touch-overflow.ui-native-fullscreen .ui-content{padding-top:0;padding-bottom:0}.ui-mobile-touch-overflow.ui-native-fullscreen .ui-header,.ui-mobile-touch-overflow.ui-native-fullscreen .ui-footer{opacity:.9}.ui-native-bars-hidden{display:none}.ui-icon{width:18px;height:18px}.ui-fullscreen img{max-width:100%}.ui-nojs{position:absolute;left:-9999px}.ui-hide-label label,.ui-hidden-accessible{position:absolute!important;left:-9999px;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.spin{-webkit-transform:rotate(360deg);-webkit-animation-name:spin;-webkit-animation-duration:1s;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear}@-webkit-keyframes spin{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}.in,.out{-webkit-animation-timing-function:ease-in-out;-webkit-animation-duration:350ms}.slide.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft}.slide.in{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromleft}.slideup.out{-webkit-animation-name:dontmove;z-index:0}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;z-index:10}.slideup.in.reverse{z-index:0;-webkit-animation-name:dontmove}.slideup.out.reverse{-webkit-transform:translateY(100%);z-index:10;-webkit-animation-name:slideouttobottom}.slidedown.out{-webkit-animation-name:dontmove;z-index:0}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;z-index:10}.slidedown.in.reverse{z-index:0;-webkit-animation-name:dontmove}.slidedown.out.reverse{-webkit-transform:translateY(-100%);z-index:10;-webkit-animation-name:slideouttotop}@-webkit-keyframes slideinfromright{from{-webkit-transform:translateX(100%)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translateX(-100%)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(100%)}}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.out{z-index:0;-webkit-animation-name:fadeout}.fade.in{opacity:1;z-index:10;-webkit-animation-name:fadein}.viewport-flip{-webkit-perspective:1000;position:absolute}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden}.flip{-webkit-animation-duration:.65s;-webkit-backface-visibility:hidden;-webkit-transform:translateX(0)}.flip.out{-webkit-transform:rotateY(-180deg) scale(.8);-webkit-animation-name:flipouttoleft}.flip.in{-webkit-transform:rotateY(0) scale(1);-webkit-animation-name:flipinfromleft}.flip.out.reverse{-webkit-transform:rotateY(180deg) scale(.8);-webkit-animation-name:flipouttoright}.flip.in.reverse{-webkit-transform:rotateY(0) scale(1);-webkit-animation-name:flipinfromright}@-webkit-keyframes flipinfromright{from{-webkit-transform:rotateY(-180deg) scale(.8)}to{-webkit-transform:rotateY(0) scale(1)}}@-webkit-keyframes flipinfromleft{from{-webkit-transform:rotateY(180deg) scale(.8)}to{-webkit-transform:rotateY(0) scale(1)}}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0) scale(1)}to{-webkit-transform:rotateY(-180deg) scale(.8)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0) scale(1)}to{-webkit-transform:rotateY(180deg) scale(.8)}}@-webkit-keyframes dontmove{from{opacity:1}to{opacity:1}}.pop{-webkit-transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);opacity:1;-webkit-animation-name:popin;z-index:10}.pop.in.reverse{z-index:0;-webkit-animation-name:dontmove}.pop.out.reverse{-webkit-transform:scale(.2);opacity:0;-webkit-animation-name:popout;z-index:10}@-webkit-keyframes popin{from{-webkit-transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.2);opacity:0}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;min-height:1px}.ui-grid-solo .ui-block-a{width:100%;float:none}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:50%}.ui-grid-a .ui-block-a{clear:left}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.333%}.ui-grid-b .ui-block-a{clear:left}.ui-grid-c .ui-block-a,.ui-grid-c .ui-block-b,.ui-grid-c .ui-block-c,.ui-grid-c .ui-block-d{width:25%}.ui-grid-c .ui-block-a{clear:left}.ui-grid-d .ui-block-a,.ui-grid-d .ui-block-b,.ui-grid-d .ui-block-c,.ui-grid-d .ui-block-d,.ui-grid-d .ui-block-e{width:20%}.ui-grid-d .ui-block-a{clear:left}.ui-header,.ui-footer,.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{position:absolute;overflow:hidden;width:100%;border-left-width:0;border-right-width:0}.ui-header-fixed,.ui-footer-fixed{z-index:1000;-webkit-transform:translateZ(0)}.ui-footer-duplicate,.ui-page-fullscreen .ui-fixed-inline{display:none}.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{opacity:.9}.ui-navbar{overflow:hidden}.ui-navbar ul,.ui-navbar-expanded ul{list-style:none;padding:0;margin:0;position:relative;display:block;border:0}.ui-navbar-collapsed ul{float:left;width:75%;margin-right:-2px}.ui-navbar-collapsed .ui-navbar-toggle{float:left;width:25%}.ui-navbar li.ui-navbar-truncate{position:absolute;left:-9999px;top:-9999px}.ui-navbar li .ui-btn,.ui-navbar .ui-navbar-toggle .ui-btn{display:block;font-size:12px;text-align:center;margin:0;border-right-width:0}.ui-navbar li .ui-btn{margin-right:-1px}.ui-navbar li .ui-btn:last-child{margin-right:0}.ui-header .ui-navbar li .ui-btn,.ui-header .ui-navbar .ui-navbar-toggle .ui-btn,.ui-footer .ui-navbar li .ui-btn,.ui-footer .ui-navbar .ui-navbar-toggle .ui-btn{border-top-width:0;border-bottom-width:0}.ui-navbar .ui-btn-inner{padding-left:2px;padding-right:2px}.ui-navbar-noicons li .ui-btn .ui-btn-inner,.ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner{padding-top:.8em;padding-bottom:.9em}.ui-navbar-expanded .ui-btn{margin:0;font-size:14px}.ui-navbar-expanded .ui-btn-inner{padding-left:5px;padding-right:5px}.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner{padding:45px 5px 15px;text-align:center}.ui-navbar-expanded .ui-btn-icon-top .ui-icon{top:15px}.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner{padding:15px 5px 45px;text-align:center}.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon{bottom:15px}.ui-navbar-expanded li .ui-btn .ui-btn-inner{min-height:2.5em}.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner{padding-top:1.8em;padding-bottom:1.9em}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 5px;padding:0}.ui-header .ui-btn,.ui-footer .ui-btn,.ui-bar .ui-btn{display:inline-block;font-size:13px;margin:0}.ui-btn-inline{display:inline-block}.ui-btn-inner{padding:.6em 25px;display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative;zoom:1}.ui-btn input,.ui-btn button{z-index:2}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-bar .ui-btn-inner{padding:.4em 8px .5em}.ui-btn-icon-notext{width:24px;height:24px}.ui-btn-icon-notext .ui-btn-inner{padding:2px 1px 2px 3px}.ui-btn-text{position:relative;z-index:1}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-9999px}.ui-btn-icon-left .ui-btn-inner{padding-left:33px}.ui-header .ui-btn-icon-left .ui-btn-inner,.ui-footer .ui-btn-icon-left .ui-btn-inner,.ui-bar .ui-btn-icon-left .ui-btn-inner{padding-left:27px}.ui-btn-icon-right .ui-btn-inner{padding-right:33px}.ui-header .ui-btn-icon-right .ui-btn-inner,.ui-footer .ui-btn-icon-right .ui-btn-inner,.ui-bar .ui-btn-icon-right .ui-btn-inner{padding-right:27px}.ui-btn-icon-top .ui-btn-inner{padding-top:33px}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner,.ui-bar .ui-btn-icon-top .ui-btn-inner{padding-top:27px}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:33px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner,.ui-bar .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:27px}.ui-btn-icon-notext .ui-icon{display:block;z-index:0}.ui-btn-icon-left .ui-icon,.ui-btn-icon-right .ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-btn-icon-top .ui-icon,.ui-btn-icon-bottom .ui-icon{position:absolute;left:50%;margin-left:-9px}.ui-btn-icon-left .ui-icon{left:10px}.ui-btn-icon-right .ui-icon{right:10px}.ui-btn-icon-top .ui-icon{top:10px}.ui-btn-icon-bottom .ui-icon{bottom:10px}.ui-header .ui-btn-icon-left .ui-icon,.ui-footer .ui-btn-icon-left .ui-icon,.ui-bar .ui-btn-icon-left .ui-icon{left:4px}.ui-header .ui-btn-icon-right .ui-icon,.ui-footer .ui-btn-icon-right .ui-icon,.ui-bar .ui-btn-icon-right .ui-icon{right:4px}.ui-header .ui-btn-icon-top .ui-icon,.ui-footer .ui-btn-icon-top .ui-icon,.ui-bar .ui-btn-icon-top .ui-icon{top:4px}.ui-header .ui-btn-icon-bottom .ui-icon,.ui-footer .ui-btn-icon-bottom .ui-icon,.ui-bar .ui-btn-icon-bottom .ui-icon{bottom:4px}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:button;opacity:.1;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=.0001);font-size:1px;border:0;line-height:999px}.ui-collapsible{margin:.5em 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -8px;padding:0;border-width:0 0 1px 0;position:relative}.ui-collapsible-heading a{text-align:left;margin:0}.ui-collapsible-heading a .ui-btn-inner{padding-left:40px}.ui-collapsible-heading a span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px}.ui-collapsible-heading a span.ui-btn .ui-btn-inner{padding:10px 0}.ui-collapsible-heading a span.ui-btn .ui-icon{left:0;margin-top:-10px}.ui-collapsible-heading-status{position:absolute;top:-9999px;left:0}.ui-collapsible-content{display:block;margin:0 -8px;padding:10px 16px;border-top:0;background-image:none;font-weight:normal}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0 1em}.ui-bar .ui-controlgroup{margin:0 .3em}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em}.ui-controlgroup-controls{display:block;width:100%}.ui-controlgroup li{list-style:none}.ui-controlgroup-vertical .ui-btn,.ui-controlgroup-vertical .ui-checkbox,.ui-controlgroup-vertical .ui-radio{margin:0;border-bottom-width:0}.ui-controlgroup-controls label.ui-select{position:absolute;left:-9999px}.ui-controlgroup-vertical .ui-controlgroup-last{border-bottom-width:1px}.ui-controlgroup-horizontal{padding:0}.ui-controlgroup-horizontal .ui-btn,.ui-controlgroup-horizontal .ui-select{display:inline-block;margin:0 -5px 0 0}.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{float:left;margin:0 -1px 0 0}.ui-controlgroup-horizontal .ui-checkbox .ui-btn,.ui-controlgroup-horizontal .ui-radio .ui-btn,.ui-controlgroup-horizontal .ui-checkbox:last-child,.ui-controlgroup-horizontal .ui-radio:last-child{margin-right:0}.ui-controlgroup-horizontal .ui-controlgroup-last{margin-right:0}.ui-controlgroup .ui-checkbox label,.ui-controlgroup .ui-radio label{font-size:16px}@media all and (min-width:450px){.ui-field-contain .ui-controlgroup-label{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-controlgroup-controls{width:60%;display:inline-block}.ui-field-contain .ui-controlgroup .ui-select{width:100%}.ui-field-contain .ui-controlgroup-horizontal .ui-select{width:auto}}.ui-dialog{min-height:480px}.ui-dialog .ui-header,.ui-dialog .ui-content,.ui-dialog .ui-footer{max-width:500px;margin:10% auto 15px auto;width:85%;position:relative}.ui-dialog .ui-header,.ui-dialog .ui-footer{padding:0 15px;z-index:10}.ui-dialog .ui-content{padding:15px}.ui-dialog .ui-content,.ui-dialog .ui-footer{margin-top:-15px}.ui-checkbox,.ui-radio{position:relative;margin:.2em 0 .5em;z-index:1}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:0;text-align:left;z-index:2}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{white-space:normal}.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner{padding-left:45px}.ui-checkbox .ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-checkbox .ui-icon,.ui-radio .ui-icon{top:1.1em}.ui-checkbox .ui-btn-icon-left .ui-icon,.ui-radio .ui-btn-icon-left .ui-icon{left:15px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox input,.ui-radio input{position:absolute;left:20px;top:50%;width:10px;height:10px;margin:-5px 0 0 0;outline:0!important;z-index:1}.ui-field-contain{padding:1.5em 0;margin:0;border-bottom-width:1px;overflow:visible}.ui-field-contain:first-child{border-top-width:0}@media all and (min-width:450px){.ui-field-contain{border-width:0;padding:0;margin:1em 0}}.ui-select{display:block;position:relative}.ui-select select{position:absolute;left:-9999px;top:-9999px}.ui-select .ui-btn{overflow:hidden}.ui-select .ui-btn{opacity:1}.ui-select .ui-btn select{cursor:pointer;-webkit-appearance:button;left:0;top:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;opacity:0;-ms-filter:"alpha(opacity=0)";filter:alpha(opacity=0);z-index:2}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-btn select.ui-select-nativeonly{opacity:1;text-indent:0}.ui-select .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-select .ui-btn-icon-right .ui-icon{right:15px}label.ui-select{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:block;min-height:1em;overflow:hidden}.ui-select .ui-btn-text{text-overflow:ellipsis}.ui-selectmenu{position:absolute;padding:0;z-index:1100!important;width:80%;max-width:350px;padding:6px}.ui-selectmenu .ui-listview{margin:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu-hidden{top:-9999px;left:-9999px}.ui-selectmenu-screen{position:absolute;top:0;left:0;width:100%;height:100%;z-index:99}.ui-screen-hidden,.ui-selectmenu-list .ui-li .ui-icon{display:none}.ui-selectmenu-list .ui-li .ui-icon{display:block}.ui-li.ui-selectmenu-placeholder{display:none}.ui-selectmenu .ui-header .ui-title{margin:.6em 46px .8em}@media all and (min-width:450px){.ui-field-contain label.ui-select{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-select{width:60%;display:inline-block}}.ui-selectmenu .ui-header h1:after{content:'.';visibility:hidden}label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:normal;margin:0 0 .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;line-height:1.4;font-size:16px;display:block;width:97%}input.ui-input-text{-webkit-appearance:none}textarea.ui-input-text{height:50px;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;transition:height 200ms linear}.ui-input-search{padding:0 30px;background-image:none;position:relative}.ui-icon-searchfield:after{position:absolute;left:7px;top:50%;margin-top:-9px;content:"";width:18px;height:18px;opacity:.5}.ui-input-search input.ui-input-text{border:0;width:98%;padding:.4em 0;margin:0;display:block;background:transparent none;outline:0!important}.ui-input-search .ui-input-clear{position:absolute;right:0;top:50%;margin-top:-13px}.ui-input-search .ui-input-clear-hidden{display:none}@media all and (min-width:450px){.ui-field-contain label.ui-input-text{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text,.ui-field-contain .ui-input-search{width:60%;display:inline-block}.ui-field-contain .ui-input-search{width:50%}.ui-hide-label input.ui-input-text,.ui-hide-label textarea.ui-input-text,.ui-hide-label .ui-input-search{padding:.4em;width:97%}.ui-input-search input.ui-input-text{width:98%}}.ui-listview{margin:0;counter-reset:listnumbering}.ui-content .ui-listview{margin:-15px}.ui-content .ui-listview-inset{margin:1em 0}.ui-listview,.ui-li{list-style:none;padding:0}.ui-li,.ui-li.ui-field-contain{display:block;margin:0;position:relative;overflow:visible;text-align:left;border-width:0;border-top-width:1px}.ui-li .ui-btn-text a.ui-link-inherit{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-divider,.ui-li-static{padding:.5em 15px;font-size:14px;font-weight:bold}.ui-li-divider{counter-reset:listnumbering}ol.ui-listview .ui-link-inherit:before,ol.ui-listview .ui-li-static:before,.ui-li-dec{font-size:.8em;display:inline-block;padding-right:.3em;font-weight:normal;counter-increment:listnumbering;content:counter(listnumbering) ". "}ol.ui-listview .ui-li-jsnumbering:before{content:""!important}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px}.ui-li:last-child,.ui-li.ui-field-contain:last-child{border-bottom-width:1px}.ui-li>.ui-btn-inner{display:block;position:relative;padding:0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li{padding:.7em 15px .7em 15px;display:block}.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-thumb{min-height:60px;padding-left:100px}.ui-li-has-icon .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-icon{min-height:20px;padding-left:40px}.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-count{padding-right:45px}.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow{padding-right:30px}.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow.ui-li-has-count{padding-right:75px}.ui-li-has-count .ui-btn-text{padding-right:15px}.ui-li-heading{font-size:16px;font-weight:bold;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-desc{font-size:12px;font-weight:normal;display:block;margin:-.5em 0 .6em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-thumb,.ui-listview .ui-li-icon{position:absolute;left:1px;top:0;max-height:80px;max-width:80px}.ui-listview .ui-li-icon{max-height:40px;max-width:40px;left:10px;top:.9em}.ui-li-thumb,.ui-listview .ui-li-icon,.ui-li-content{float:left;margin-right:10px}.ui-li-aside{float:right;width:50%;text-align:right;margin:.3em 0}@media all and (min-width:480px){.ui-li-aside{width:45%}}.ui-li-divider{cursor:default}.ui-li-has-alt .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt{padding-right:95px}.ui-li-has-count .ui-li-count{position:absolute;font-size:11px;font-weight:bold;padding:.2em .5em;top:50%;margin-top:-.9em;right:38px}.ui-li-divider .ui-li-count,.ui-li-static .ui-li-count{right:10px}.ui-li-has-alt .ui-li-count{right:55px}.ui-li-link-alt{position:absolute;width:40px;height:100%;border-width:0;border-left-width:1px;top:0;right:0;margin:0;padding:0;z-index:2}.ui-li-link-alt .ui-btn{overflow:hidden;position:absolute;right:8px;top:50%;margin:-11px 0 0 0;border-bottom-width:1px;z-index:-1}.ui-li-link-alt .ui-btn-inner{padding:0;height:100%;position:absolute;width:100%;top:0;left:0}.ui-li-link-alt .ui-btn .ui-icon{right:50%;margin-right:-9px}.ui-listview * .ui-btn-inner>.ui-btn>.ui-btn-inner{border-top:0}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}.ui-listview-filter-inset{margin:-15px -5px -15px -5px;background:transparent}.ui-li.ui-screen-hidden{display:none}@media only screen and (min-device-width:768px) and (max-device-width:1024px){.ui-li .ui-btn-text{overflow:visible}}label.ui-slider{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}input.ui-slider-input,.ui-field-contain input.ui-slider-input{display:inline-block;width:50px}select.ui-slider-switch{display:none}div.ui-slider{position:relative;display:inline-block;overflow:visible;height:15px;padding:0;margin:0 2% 0 20px;top:4px;width:66%}div.ui-slider-switch{width:99.8%}a.ui-slider-handle{position:absolute;z-index:10;top:50%;width:28px;height:28px;margin-top:-15px;margin-left:-15px}a.ui-slider-handle .ui-btn-inner{padding-left:0;padding-right:0}@media all and (min-width:480px){.ui-field-contain label.ui-slider{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain div.ui-slider{width:43%}}div.ui-slider-switch{height:32px;overflow:hidden;margin-left:0}div.ui-slider-inneroffset{margin-left:50%;position:absolute;top:1px;height:100%;width:50%}a.ui-slider-handle-snapping{-webkit-transition:left 70ms linear}div.ui-slider-labelbg{position:absolute;top:0;margin:0;border-width:0}div.ui-slider-switch div.ui-slider-labelbg-a{width:60%;height:100%;left:0}div.ui-slider-switch div.ui-slider-labelbg-b{width:60%;height:100%;right:0}.ui-slider-switch-a div.ui-slider-labelbg-a,.ui-slider-switch-b div.ui-slider-labelbg-b{z-index:-1}.ui-slider-switch-a div.ui-slider-labelbg-b,.ui-slider-switch-b div.ui-slider-labelbg-a{z-index:0}div.ui-slider-switch a.ui-slider-handle{z-index:20;width:101%;height:32px;margin-top:-18px;margin-left:-101%}span.ui-slider-label{width:100%;position:absolute;height:32px;font-size:16px;text-align:center;line-height:2;background:0;border-color:transparent}span.ui-slider-label-a{left:-100%;margin-right:-1px}span.ui-slider-label-b{right:-100%;margin-left:-1px}
--- a/css/jquery.ui.datepicker.mobile.css
+++ /dev/null
@@ -1,18 +1,1 @@
-div.hasDatepicker{display:block;padding:0;overflow:visible;margin:8px 0;}
-.ui-datepicker{overflow:visible;margin:0;max-width:500px;}
-.ui-datepicker .ui-datepicker-header{position:relative;padding:.4em 0;border-bottom:0;font-weight:bold;}
-.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next{padding:1px 0 1px 2px;position:absolute;top:.5em;margin-top:0;text-indent:-9999px;}
-.ui-datepicker .ui-datepicker-prev{left:6px;}
-.ui-datepicker .ui-datepicker-next{right:6px;}
-.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center;}
-.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0;}
-.ui-datepicker select.ui-datepicker-month-year{width:100%;}
-.ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year{width:49%;}
-.ui-datepicker table{width:100%;border-collapse:collapse;margin:0;}
-.ui-datepicker td{border-width:1px;padding:0;text-align:center;}
-.ui-datepicker td span, .ui-datepicker td a{display:block;padding:.2em 0;font-weight:bold;margin:0;border-width:0;text-align:center;text-decoration:none;}
-.ui-datepicker-calendar th{padding-top:.3em;padding-bottom:.3em;}
-.ui-datepicker-calendar th span, .ui-datepicker-calendar span.ui-state-default{opacity:.3;}
-.ui-datepicker-calendar td a{padding-top:.5em;padding-bottom:.5em;}
-.min-width-480px div.hasDatepicker{width:63%;display:inline-block;margin:0;}
--- /dev/null
+++ b/css/local.css.php
@@ -1,1 +1,221 @@
-
+<?php
+
+header('Content-type: text/css');
+ob_start("compress");
+
+function compress($buffer) {
+ /* remove comments */
+ $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
+ /* remove tabs, spaces, newlines, etc. */
+ $buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer);
+ return $buffer;
+}
+
+echo '
+.ui-li-thumb, .ui-li-icon { position: relative; }
+
+ .ui-navbar {
+ width: 100%;
+ }
+ .ui-btn-inner {
+ white-space: normal !important;
+ }
+ .ui-li-heading {
+ white-space: normal !important;
+ }
+ .ui-listview-filter {
+ margin: 0 !important;
+ }
+ .ui-icon-navigation {
+ background-image: url(images/113-navigation.png);
+ background-position: 1px 0;
+ }
+ .ui-icon-beaker {
+ background-image: url(images/91-beaker-2.png);
+ background-position: 1px 0;
+ }
+ #footer {
+ text-size: 0.75em;
+ text-align: center;
+ }
+ body {
+ background-color: #F0F0F0;
+ }
+ #jqm-homeheader {
+ text-align: center;
+ }
+ .viaPoints {
+ display: none;
+ text-size: 0.2em;
+ }
+ .min-width-480px .viaPoints {
+ display: inline;
+ }
+ #extrainfo {
+ visibility: hidden;
+ display: none;
+ }
+ #servicewarning {
+ padding: 1em;
+ margin-bottom: 0.5em;
+ text-size: 0.2em;
+ background-color: #FF9;
+ -moz-border-radius: 15px;
+border-radius: 15px;
+ }
+
+
+#footer {
+clear:both;
+text-align:center;
+}
+ // source http://webaim.org/techniques/skipnav/
+ #skip a, #skip a:hover, #skip a:visited
+{
+position:absolute;
+left:0px;
+top:-500px;
+width:1px;
+height:1px;
+overflow:hidden;
+}
+
+#skip a:active, #skip a:focus
+{
+position:static;
+width:auto;
+height:auto;
+}';
+
+//if (false)
+echo '
+// adaptive layout from jQuery Mobile docs site
+.type-interior .content-secondary {
+ border-right: 0;
+ border-left: 0;
+ margin: 10px -15px 0;
+ background: #fff;
+ border-top: 1px solid #ccc;
+}
+.type-home .ui-content {
+ margin-top: 5px;
+}
+.type-interior .ui-content {
+ padding-bottom: 0;
+}
+.content-secondary .ui-collapsible-contain {
+ padding: 10px 15px;
+
+}
+.content-secondary .ui-collapsible-heading {
+ margin: 0 0 30px;
+}
+.content-secondary .ui-collapsible-heading-collapsed,
+.content-secondary .ui-collapsible-content {
+ padding:0;
+ margin: 0;
+}
+ /* hires ahoy */
+@media all and (min-width: 650px){
+
+.content-secondary {
+ text-align: left;
+ float: left;
+ width: 45%;
+ background: none;
+ border-top: 0;
+ }
+ .content-secondary,
+ .type-interior .content-secondary {
+ margin: 30px 0 20px 2%;
+ padding: 20px 4% 0 0;
+ background: none;
+ }
+ .type-index .content-secondary {
+ padding: 0;
+ }
+ .type-index .content-secondary .ui-listview {
+ margin: 0;
+ }
+ .content-primary {
+ width: 45%;
+ float: right;
+ margin-top: 30px;
+ margin-right: 1%;
+ padding-right: 1%;
+ }
+ .content-primary ul:first-child {
+ margin-top: 0;
+ }
+
+ .type-interior .content-primary {
+ padding: 1.5em 6% 3em 0;
+ margin: 0;
+ }
+ /* fix up the collapsibles - expanded on desktop */
+ .content-secondary .ui-collapsible-heading {
+ display: none;
+ }
+ .content-secondary .ui-collapsible-contain {
+ margin:0;
+ }
+ .content-secondary .ui-collapsible-content {
+ display: block;
+ margin: 0;
+ padding: 0;
+ }
+ .type-interior .content-secondary .ui-li-divider {
+ padding-top: 1em;
+ padding-bottom: 1em;
+ }
+ .type-interior .content-secondary {
+ margin: 0;
+ padding: 0;
+ }
+}
+@media all and (min-width: 750px){
+ .type-home .ui-content,
+ .type-interior .ui-content {
+ background-position: 39%;
+ }
+ .content-secondary {
+ width: 34%;
+ }
+ .content-primary {
+ width: 56%;
+ padding-right: 1%;
+ }
+ .type-interior .ui-content {
+ background-position: 34%;
+ }
+}
+
+@media all and (min-width: 1200px){
+ .type-home .ui-content{
+ background-position: 38.5%;
+ }
+ .type-interior .ui-content {
+ background-position: 30%;
+ }
+ .content-secondary {
+ width: 30%;
+ padding-right:6%;
+ margin: 30px 0 20px 5%;
+ }
+ .type-interior .content-secondary {
+ margin: 0;
+ padding: 0;
+ }
+ .content-primary {
+ width: 50%;
+ margin-right: 5%;
+ padding-right: 3%;
+ }
+ .type-interior .content-primary {
+ width: 60%;
+ }
+}
+';
+ob_end_flush();
+?>
+
--- /dev/null
+++ b/dotcloud/postinstall
@@ -1,1 +1,19 @@
+#!/bin/bash
+#dotcloud postinstall
+curl http://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip \
+-o /home/dotcloud/current/cbrfeed.zip
+curl http://s3-ap-southeast-1.amazonaws.com/busresources/Graph.obj \
+-o /tmp/Graph.obj
+
+#db setup
+#curl https://github.com/maxious/ACTBus-ui/raw/master/transitdata.cbrfeed.sql.gz -o transitdata.cbrfeed.sql.gz
+#curl https://github.com/maxious/ACTBus-ui/raw/master/lib/postgis.sql -o postgis.sql
+#createlang -d transitdata plpgsql
+#psql -d transitdata -f postgis.sql
+#gunzip /var/www/transitdata.cbrfeed.sql.gz
+#psql -d transitdata -f transitdata.cbrfeed.sql
+#createuser transitdata -SDRP
+#password transitdata
+#psql -c \"GRANT SELECT ON TABLE agency,calendar,calendar_dates,routes,stop_times,stops,trips TO transitdata;\"
+
--- /dev/null
+++ b/dotcloud/push.sh
@@ -1,1 +1,7 @@
+#wget http://s3-ap-southeast-1.amazonaws.com/busresources/opentripplanner-webapp.war
+cp ~/workspace/opentripplanner/maven.1277125291275/opentripplanner-webapp/target/opentripplanner-webapp.war ./
+#wget http://s3-ap-southeast-1.amazonaws.com/busresources/opentripplanner-api-webapp.war
+cp ~/workspace/opentripplanner/maven.1277125291275/opentripplanner-api-webapp/target/opentripplanner-api-webapp.war ./
+dotcloud push actbus.otp ./
+
--- a/feedback.php
+++ b/feedback.php
@@ -1,5 +1,6 @@
<?php
include ("include/common.inc.php");
+ $GTFSREnabled = false;
include_header("Feedback", "feedback");
function sendEmail($topic, $message)
{
@@ -24,10 +25,13 @@
mail($address, $topic, $message);
}
}
-
+if (isset($_REQUEST['feedback']) || isset($_REQUEST['newlocation'])){
+ sendEmail("bus.lambda feedback",print_r($_REQUEST,true));
+ echo "<h2 style='text-align: center;'>Thank you for your feedback!</h2>";
+} else {
$stopid = "";
$stopcode = "";
-$urlparts = explode("?",$_SERVER["HTTP_REFERER"]);
+if (isset($_SERVER["HTTP_REFERER"])) $urlparts = explode("?",$_SERVER["HTTP_REFERER"]);
if (isset($urlparts[1])) {
$getparams = explode("&",$urlparts[1]);
foreach ($getparams as $param) {
@@ -39,30 +43,40 @@
?>
<h3>Add/Move/Delete a Bus Stop Location</h3>
+<form action="feedback.php" method="post">
StopID: <input type="text" name="stopid" value="<?php echo $stopid ?>"/><br>
or StopCode: <input type="text" name="stopcode" value="<?php echo $stopcode ?>"/><br>
<small> if you click on feedback from a stop page, these will get filled in automatically. else describe the location/street of the stop in one of these boxes </small><br>
Suggested Stop Location (lat/long or words): <input type="text" name="newlocation"/><br>
-<small> if your device supports javascript, you can pick a location from the map above</small><br>
+<!--<small> if your device supports javascript, you can pick a location from the map above</small><br>-->
<input type="submit" value="Submit!"/>
-
+</form>
<h3>Bug Report/Feedback</h3>
Please leave feedback about bugs/errors or general suggestions about improvements that could be made to the way the data is presented!
-<textarea id="feedback">
+<form action="feedback.php" method="post">
+<textarea name="feedback">
</textarea>
-<textarea id="extrainfo">
+<textarea name="extrainfo" id="extrainfo">
<?php
- echo "Referrer URL: ".$_SERVER["HTTP_REFERER"];
+ echo "Referrer URL: ".($_SERVER["HTTP_REFERER"] ? $_SERVER["HTTP_REFERER"] : "");
+ echo "\nCurrent page URL: ".curPageURL();
echo "\nUser Agent: ".$_SERVER["HTTP_USER_AGENT"];
echo "\nUser host/IP: ".$_SERVER["HTTP_X_FORWARDED_FOR"]." ".$_SERVER["REMOTE_ADDR"];
echo "\nServer host/IP: ".php_uname("n");
echo "\nCurrent date/time: ". date("c");
+ echo "\nCurrent code revision: ".exec("git rev-parse --short HEAD");
+ echo "\nCurrent timetables version: ".date("c",@filemtime('cbrfeed.zip'));
echo "\nDump of session: ".print_r($_SESSION,true);
?>
</textarea>
<input type="submit" value="Submit!"/>
+</form>
+<?php
+}
+include_footer();
+?>
--- /dev/null
+++ b/geo/route.kml.php
@@ -1,1 +1,30 @@
+<?php
+header('Content-Type: application/vnd.google-earth.kml+xml');
+include ('../include/common.inc.php');
+echo '<?xml version="1.0" encoding="UTF-8"?>
+<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom"><Document>';
+echo '
+ <Style id="yellowLineGreenPoly">
+ <LineStyle>
+ <color>7f00ff00</color>
+ <width>4</width>
+ </LineStyle>
+ <PolyStyle>
+ <color>7f00ffff</color>
+ </PolyStyle>
+ </Style>';
+$route = getRoute($routeid);
+ echo "\n<Placemark>\n";
+ $link = curPageURL()."/../trip.php?routeid=".htmlspecialchars ($route["route_id"]);
+ echo "<name>".$route['route_short_name']."</name>";
+ echo '<atom:link href="'.$link.'"/>';
+ echo '<description><![CDATA[ <a href="'.$link.'">'.$route['route_short_name']." ".$route['route_long_name']."</a>]]> </description>";
+echo "<styleUrl>#yellowLineGreenPoly</styleUrl>";
+ $trip = getRouteNextTrip($routeid);
+ echo getTripShape($trip['trip_id']);
+
+echo "</Placemark>\n</Document></kml>\n";
+?>
+
+
--- /dev/null
+++ b/geo/stops.kml.php
@@ -1,1 +1,38 @@
+<?php
+include ('../include/common.inc.php');
+header('Content-type: application/vnd.google-earth.kml+xml');
+//http://wiki.openstreetmap.org/wiki/OpenLayers_Dynamic_KML
+// Creates the KML/XML Document.
+$dom = new DOMDocument('1.0', 'UTF-8');
+// Creates the root KML element and appends it to the root document.
+$node = $dom->createElementNS('http://earth.google.com/kml/2.1', 'kml');
+$parNode = $dom->appendChild($node);
+// Creates a KML Document element and append it to the KML element.
+$dnode = $dom->createElement('Document');
+$docNode = $parNode->appendChild($dnode);
+if ($suburb != "") $result_stops = getStopsBySuburb($suburb);
+else $result_stops = getStops();
+foreach ($result_stops as $stop) {
+ $description = 'http://bus.lambdacomplex.org/' . 'stop.php?stopid=' . $stop['stop_id'] . " <br>";
+ // Creates a Placemark and append it to the Document.
+ $node = $dom->createElement('Placemark');
+ $placeNode = $docNode->appendChild($node);
+ // Creates an id attribute and assign it the value of id column.
+ $placeNode->setAttribute('id', 'placemark' . $stop['stop_id']);
+ // Create name, and description elements and assigns them the values of the name and address columns from the results.
+ $nameNode = $dom->createElement('name', htmlentities($stop['stop_name']));
+ $descriptionNode = $dom->createElement('description', $description);
+ $placeNode->appendChild($nameNode);
+ $placeNode->appendChild($descriptionNode);
+ // Creates a Point element.
+ $pointNode = $dom->createElement('Point');
+ $placeNode->appendChild($pointNode);
+ // Creates a coordinates element and gives it the value of the lng and lat columns from the results.
+ $coorStr = $stop['stop_lon'] . ',' . $stop['stop_lat'];
+ $coorNode = $dom->createElement('coordinates', $coorStr);
+ $pointNode->appendChild($coorNode);
+}
+$kmlOutput = $dom->saveXML();
+echo $kmlOutput;
+?>
--- /dev/null
+++ b/include/common-auth.inc.php
@@ -1,1 +1,33 @@
+<?php
+require $basePath.'lib/openid.php';
+$openid = new LightOpenID($_SERVER['HTTP_HOST']);
+
+function login()
+{
+ global $openid;
+ if(!$openid->mode) {
+ $openid->required = array('contact/email');
+ $openid->identity = 'https://www.google.com/accounts/o8/id';
+ header('Location: ' . $openid->authUrl());
+ }
+ }
+
+function auth()
+
+{
+ if ($_SESSION['authed'] == true) return true;
+ global $openid;
+
+ if($openid->mode) {
+ $attr = $openid->getAttributes();
+ if ($attr["contact/email"] != "maxious@gmail.com") {
+ die("Access Denied");
+ } else {
+ $_SESSION['authed'] = true;
+ }
+ } else {
+ login();
+ }
+ }
+?>
--- /dev/null
+++ b/include/common-db.inc.php
@@ -1,1 +1,40 @@
+<?php
+/*
+ * Copyright 2010,2011 Alexander Sadleir
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+if (strstr(php_uname('n'),"actbus")) {
+ $conn = new PDO("pgsql:dbname=transitdata;user=transitdata;password=transitdata;host=bus-main.lambdacomplex.org");
+} else if (isDebugServer()) {
+ $conn = new PDO("pgsql:dbname=transitdata;user=postgres;password=snmc;host=localhost");
+} else {
+ $conn = new PDO("pgsql:dbname=transitdata;user=transitdata;password=transitdata;host=localhost");
+}
+if (!$conn) {
+ die("A database error occurred.\n");
+}
+
+function databaseError($errMsg) {
+ if ($errMsg[1] != "") {
+ die(print_r($errMsg,true));
+ }
+}
+
+include ('db/route-dao.inc.php');
+include ('db/trip-dao.inc.php');
+include ('db/stop-dao.inc.php');
+include ('db/servicealert-dao.inc.php');
+?>
+
--- a/include/common-geo.inc.php
+++ b/include/common-geo.inc.php
@@ -1,151 +1,172 @@
<?php
+
+/*
+ * Copyright 2010,2011 Alexander Sadleir
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
// SELECT array_to_string(array(SELECT REPLACE(name_2006, ',', '\,') as name FROM suburbs order by name), ',')
$suburbs = explode(",", "Acton,Ainslie,Amaroo,Aranda,Banks,Barton,Belconnen,Bonner,Bonython,Braddon,Bruce,Calwell,Campbell,Chapman,Charnwood,Chifley,Chisholm,City,Conder,Cook,Curtin,Deakin,Dickson,Downer,Duffy,Dunlop,Evatt,Fadden,Farrer,Fisher,Florey,Flynn,Forrest,Franklin,Fraser,Fyshwick,Garran,Gilmore,Giralang,Gordon,Gowrie,Greenway,Griffith,Gungahlin,Hackett,Hall,Harrison,Hawker,Higgins,Holder,Holt,Hughes,Hume,Isaacs,Isabella Plains,Kaleen,Kambah,Kingston,Latham,Lawson,Lyneham,Lyons,Macarthur,Macgregor,Macquarie,Mawson,McKellar,Melba,Mitchell,Monash,Narrabundah,Ngunnawal,Nicholls,Oaks Estate,O'Connor,O'Malley,Oxley,Page,Palmerston,Parkes,Pearce,Phillip,Pialligo,Red Hill,Reid,Richardson,Rivett,Russell,Scullin,Spence,Stirling,Symonston,Tharwa,Theodore,Torrens,Turner,Wanniassa,Waramanga,Watson,Weetangera,Weston,Yarralumla");
-function staticmap($mapPoints, $zoom = 0, $markerImage = "iconb", $collapsible = true)
-{
- $width = 300;
- $height = 300;
- $metersperpixel[9] = 305.492 * $width;
- $metersperpixel[10] = 152.746 * $width;
- $metersperpixel[11] = 76.373 * $width;
- $metersperpixel[12] = 38.187 * $width;
- $metersperpixel[13] = 19.093 * $width;
- $metersperpixel[14] = 9.547 * $width;
- $metersperpixel[15] = 4.773 * $width;
- $metersperpixel[16] = 2.387 * $width;
- // $metersperpixel[17]=1.193*$width;
- $center = "";
- $markers = "";
- $minlat = 999;
- $minlon = 999;
- $maxlat = 0;
- $maxlon = 0;
- if (sizeof($mapPoints) < 1) return "map error";
- if (sizeof($mapPoints) === 1) {
- if ($zoom == 0) $zoom = 14;
- $markers.= "{$mapPoints[0][0]},{$mapPoints[0][1]},$markerimage";
- $center = "{$mapPoints[0][0]},{$mapPoints[0][1]}";
- }
- else {
- foreach ($mapPoints as $index => $mapPoint) {
- $markers.= $mapPoint[0] . "," . $mapPoint[1] . "," . $markerImage . ($index + 1);
- if ($index + 1 != sizeof($mapPoints)) $markers.= "|";
- if ($mapPoint[0] < $minlat) $minlat = $mapPoint[0];
- if ($mapPoint[0] > $maxlat) $maxlat = $mapPoint[0];
- if ($mapPoint[1] < $minlon) $minlon = $mapPoint[1];
- if ($mapPoint[1] > $maxlon) $maxlon = $mapPoint[1];
- $totalLat+= $mapPoint[0];
- $totalLon+= $mapPoint[1];
- }
- if ($zoom == 0) {
- $mapwidthinmeters = distance($minlat, $minlon, $minlat, $maxlon);
- foreach (array_reverse($metersperpixel, true) as $zoomLevel => $maxdistance) {
- if ($zoom == 0 && $mapwidthinmeters < ($maxdistance + 50)) $zoom = $zoomLevel;
- }
- }
- $center = $totalLat / sizeof($mapPoints) . "," . $totalLon / sizeof($mapPoints);
- }
- $output = "";
- if ($collapsible) $output.= '<div data-role="collapsible" data-collapsed="true"><h3>Open Map...</h3>';
- $output.= '<center><img src="' . curPageURL() . 'lib/staticmaplite/staticmap.php?center=' . $center . '&zoom=' . $zoom . '&size=' . $width . 'x' . $height . '&maptype=mapnik&markers=' .
-$markers . '" width=' . $width . ' height=' . $height . '></center>';
- if ($collapsible) $output.= '</div>';
- return $output;
+
+function staticmap($mapPoints, $collapsible = true, $twotone = false, $path = false, $numbered = false) {
+
+ $markers = "";
+ $height = 300;
+ $width = $height;
+ $index = 0;
+ if (sizeof($mapPoints) < 1)
+ return "map error";
+ if (sizeof($mapPoints) === 1) {
+ $markers = "markers={$mapPoints[0][0]},{$mapPoints[0][1]}";
+ } else {
+ if (!$numbered) {
+ $markers = "markers=";
+ }
+ if ($path) {
+ $markers.= "markers={$mapPoints[0][0]},{$mapPoints[0][1]}&path=";
+ }
+ foreach ($mapPoints as $index => $mapPoint) {
+ if ($twotone && $index == 0) {
+ $markers = "markerd=color:red|".$mapPoint[0] . "," . $mapPoint[1]."&markers=";
+ } else {
+ if ($numbered) {
+ $label = ($index > 9 ? 9 : $index);
+ $markers.= "markers=label:$label|" . $mapPoint[0] . "," . $mapPoint[1];
+ if ($index + 1 != sizeof($mapPoints)) {
+ $markers.= "&";
+ }
+ } else {
+ $markers.= $mapPoint[0] . "," . $mapPoint[1];
+ if ($index + 1 != sizeof($mapPoints)) {
+ $markers.= "|";
+ }
+ }
+ $index++;
+ }
+ }
+ }
+ $output = "";
+ if ($collapsible)
+ $output.= '<div class="map" data-role="collapsible" data-collapsed="true"><h3>Open Map...</h3>';
+ if (isIOSDevice()) $output.= '<img class="hiresmap" src="http://maps.googleapis.com/maps/api/staticmap?size=' . $width . 'x' . $height . '&' . $markers . '&scale=2&sensor=true" width=' . $width . ' height=' . $height . '>';
+ else $output.= '<img class="lowresmap" src="http://maps.googleapis.com/maps/api/staticmap?size=' . $width . 'x' . $height . '&' . $markers . '&scale=1&format=jpg&sensor=true" width=' . $width . ' height=' . $height . '>';
+
+ if ($collapsible)
+ $output.= '</div>';
+ return $output;
}
-function distance($lat1, $lng1, $lat2, $lng2, $roundLargeValues = false)
-{
- $pi80 = M_PI / 180;
- $lat1*= $pi80;
- $lng1*= $pi80;
- $lat2*= $pi80;
- $lng2*= $pi80;
- $r = 6372.797; // mean radius of Earth in km
- $dlat = $lat2 - $lat1;
- $dlng = $lng2 - $lng1;
- $a = sin($dlat / 2) * sin($dlat / 2) + cos($lat1) * cos($lat2) * sin($dlng / 2) * sin($dlng / 2);
- $c = 2 * atan2(sqrt($a) , sqrt(1 - $a));
- $km = $r * $c;
- if ($roundLargeValues) {
- if ($km < 1) return floor($km * 1000);
- else return round($km,2)."k";
- } else return floor($km * 1000);
+
+function distance($lat1, $lng1, $lat2, $lng2, $roundLargeValues = false) {
+ $pi80 = M_PI / 180;
+ $lat1*= $pi80;
+ $lng1*= $pi80;
+ $lat2*= $pi80;
+ $lng2*= $pi80;
+ $r = 6372.797; // mean radius of Earth in km
+ $dlat = $lat2 - $lat1;
+ $dlng = $lng2 - $lng1;
+ $a = sin($dlat / 2) * sin($dlat / 2) + cos($lat1) * cos($lat2) * sin($dlng / 2) * sin($dlng / 2);
+ $c = 2 * atan2(sqrt($a), sqrt(1 - $a));
+ $km = $r * $c;
+ if ($roundLargeValues) {
+ if ($km < 1)
+ return floor($km * 1000);
+ else
+ return round($km, 2) . "k";
+ }
+ else
+ return floor($km * 1000);
}
-function decodePolylineToArray($encoded)
-{
- // source: http://latlongeeks.com/forum/viewtopic.php?f=4&t=5
- $length = strlen($encoded);
- $index = 0;
- $points = array();
- $lat = 0;
- $lng = 0;
- while ($index < $length) {
- // Temporary variable to hold each ASCII byte.
- $b = 0;
- // The encoded polyline consists of a latitude value followed by a
- // longitude value. They should always come in pairs. Read the
- // latitude value first.
- $shift = 0;
- $result = 0;
- do {
- // The `ord(substr($encoded, $index++))` statement returns the ASCII
- // code for the character at $index. Subtract 63 to get the original
- // value. (63 was added to ensure proper ASCII characters are displayed
- // in the encoded polyline string, which is `human` readable)
- $b = ord(substr($encoded, $index++)) - 63;
- // AND the bits of the byte with 0x1f to get the original 5-bit `chunk.
- // Then left shift the bits by the required amount, which increases
- // by 5 bits each time.
- // OR the value into $results, which sums up the individual 5-bit chunks
- // into the original value. Since the 5-bit chunks were reversed in
- // order during encoding, reading them in this way ensures proper
- // summation.
- $result|= ($b & 0x1f) << $shift;
- $shift+= 5;
- }
- // Continue while the read byte is >= 0x20 since the last `chunk`
- // was not OR'd with 0x20 during the conversion process. (Signals the end)
- while ($b >= 0x20);
- // Check if negative, and convert. (All negative values have the last bit
- // set)
- $dlat = (($result & 1) ? ~($result >> 1) : ($result >> 1));
- // Compute actual latitude since value is offset from previous value.
- $lat+= $dlat;
- // The next values will correspond to the longitude for this point.
- $shift = 0;
- $result = 0;
- do {
- $b = ord(substr($encoded, $index++)) - 63;
- $result|= ($b & 0x1f) << $shift;
- $shift+= 5;
- } while ($b >= 0x20);
- $dlng = (($result & 1) ? ~($result >> 1) : ($result >> 1));
- $lng+= $dlng;
- // The actual latitude and longitude values were multiplied by
- // 1e5 before encoding so that they could be converted to a 32-bit
- // integer representation. (With a decimal accuracy of 5 places)
- // Convert back to original values.
- $points[] = array(
- $lat * 1e-5,
- $lng * 1e-5
- );
- }
- return $points;
+
+function decodePolylineToArray($encoded) {
+ // source: http://latlongeeks.com/forum/viewtopic.php?f=4&t=5
+ $length = strlen($encoded);
+ $index = 0;
+ $points = array();
+ $lat = 0;
+ $lng = 0;
+ while ($index < $length) {
+ // Temporary variable to hold each ASCII byte.
+ $b = 0;
+ // The encoded polyline consists of a latitude value followed by a
+ // longitude value. They should always come in pairs. Read the
+ // latitude value first.
+ $shift = 0;
+ $result = 0;
+ do {
+ // The `ord(substr($encoded, $index++))` statement returns the ASCII
+ // code for the character at $index. Subtract 63 to get the original
+ // value. (63 was added to ensure proper ASCII characters are displayed
+ // in the encoded polyline string, which is `human` readable)
+ $b = ord(substr($encoded, $index++)) - 63;
+ // AND the bits of the byte with 0x1f to get the original 5-bit `chunk.
+ // Then left shift the bits by the required amount, which increases
+ // by 5 bits each time.
+ // OR the value into $results, which sums up the individual 5-bit chunks
+ // into the original value. Since the 5-bit chunks were reversed in
+ // order during encoding, reading them in this way ensures proper
+ // summation.
+ $result|= ($b & 0x1f) << $shift;
+ $shift+= 5;
+ }
+ // Continue while the read byte is >= 0x20 since the last `chunk`
+ // was not OR'd with 0x20 during the conversion process. (Signals the end)
+ while ($b >= 0x20);
+ // Check if negative, and convert. (All negative values have the last bit
+ // set)
+ $dlat = (($result & 1) ? ~($result >> 1) : ($result >> 1));
+ // Compute actual latitude since value is offset from previous value.
+ $lat+= $dlat;
+ // The next values will correspond to the longitude for this point.
+ $shift = 0;
+ $result = 0;
+ do {
+ $b = ord(substr($encoded, $index++)) - 63;
+ $result|= ($b & 0x1f) << $shift;
+ $shift+= 5;
+ } while ($b >= 0x20);
+ $dlng = (($result & 1) ? ~($result >> 1) : ($result >> 1));
+ $lng+= $dlng;
+ // The actual latitude and longitude values were multiplied by
+ // 1e5 before encoding so that they could be converted to a 32-bit
+ // integer representation. (With a decimal accuracy of 5 places)
+ // Convert back to original values.
+ $points[] = array(
+ $lat * 1e-5,
+ $lng * 1e-5
+ );
+ }
+ return $points;
}
-function geocode($query, $giveOptions)
-{
- global $cloudmadeAPIkey;
- $url = "http://geocoding.cloudmade.com/$cloudmadeAPIkey/geocoding/v2/find.js?query=" . urlencode($query) . "&bbox=-35.5,149.00,-35.15,149.1930&return_location=true&bbox_only=true";
- $contents = json_decode(getPage($url));
- if ($giveOptions) return $contents->features;
- elseif (isset($contents->features[0]->centroid)) return $contents->features[0]->centroid->coordinates[0] . "," . $contents->features[0]->centroid->coordinates[1];
- else return "";
+
+function geocode($query, $giveOptions) {
+ global $cloudmadeAPIkey;
+ $url = "http://geocoding.cloudmade.com/$cloudmadeAPIkey/geocoding/v2/find.js?query=" . urlencode($query) . "&bbox=-35.5,149.00,-35.15,149.1930&return_location=true&bbox_only=true";
+ $contents = json_decode(getPage($url));
+ if ($giveOptions)
+ return $contents->features;
+ elseif (isset($contents->features[0]->centroid))
+ return $contents->features[0]->centroid->coordinates[0] . "," . $contents->features[0]->centroid->coordinates[1];
+ else
+ return "";
}
-function reverseGeocode($lat, $lng)
-{
- global $cloudmadeAPIkey;
- $url = "http://geocoding.cloudmade.com/$cloudmadeAPIkey/geocoding/v2/find.js?around=" . $lat . "," . $lng . "&distance=closest&object_type=road";
- $contents = json_decode(getPage($url));
- return $contents->features[0]->properties->name;
+
+function reverseGeocode($lat, $lng) {
+ global $cloudmadeAPIkey;
+ $url = "http://geocoding.cloudmade.com/$cloudmadeAPIkey/geocoding/v2/find.js?around=" . $lat . "," . $lng . "&distance=closest&object_type=road";
+ $contents = json_decode(getPage($url));
+ return $contents->features[0]->properties->name;
}
+
?>
--- a/include/common-net.inc.php
+++ b/include/common-net.inc.php
@@ -1,30 +1,48 @@
<?php
-function getPage($url)
-{
- debug($url, "json");
- $ch = curl_init($url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_HEADER, 0);
- curl_setopt($ch, CURLOPT_TIMEOUT, 30);
- $page = curl_exec($ch);
- if (curl_errno($ch)) {
- echo "<font color=red> Database temporarily unavailable: ";
- echo curl_errno($ch) . " " . curl_error($ch);
- if (isDebug()) {
- echo $url;
- }
- echo "</font><br>";
- }
- curl_close($ch);
- debug(print_r($page,true),"json");
- return $page;
+
+/*
+ * Copyright 2010,2011 Alexander Sadleir
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+function getPage($url) {
+ debug($url, "json");
+ $ch = curl_init($url);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($ch, CURLOPT_HEADER, 0);
+ curl_setopt($ch, CURLOPT_TIMEOUT, 45);
+ $page = curl_exec($ch);
+ if (curl_errno($ch)) {
+ echo "<font color=red> Database temporarily unavailable: ";
+ echo curl_errno($ch) . " " . curl_error($ch);
+ if (isDebug()) {
+ echo $url;
+ }
+ echo "</font><br>";
+ }
+ curl_close($ch);
+ debug(print_r($page, true), "json");
+ return $page;
}
-function curPageURL()
-{
- $isHTTPS = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on");
- $port = (isset($_SERVER["SERVER_PORT"]) && ((!$isHTTPS && $_SERVER["SERVER_PORT"] != "80") || ($isHTTPS && $_SERVER["SERVER_PORT"] != "443")));
- $port = ($port) ? ':' . $_SERVER["SERVER_PORT"] : '';
- $url = ($isHTTPS ? 'https://' : 'http://') . $_SERVER["SERVER_NAME"] . $port . htmlentities(dirname($_SERVER['PHP_SELF']) , ENT_QUOTES) . "/";
- return $url;
+
+function curPageURL() {
+ $isHTTPS = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on");
+ $port = (isset($_SERVER["SERVER_PORT"]) && ((!$isHTTPS && $_SERVER["SERVER_PORT"] != "80") || ($isHTTPS && $_SERVER["SERVER_PORT"] != "443")));
+ $port = ($port) ? ':' . $_SERVER["SERVER_PORT"] : '';
+ $url = ($isHTTPS ? 'https://' : 'http://') . $_SERVER["SERVER_NAME"] . $port . htmlentities(dirname($_SERVER['PHP_SELF']), ENT_QUOTES);
+ return $url;
}
+
?>
+
--- /dev/null
+++ b/include/common-request.inc.php
@@ -1,1 +1,75 @@
+<?php
+/*
+ * Copyright 2010,2011 Alexander Sadleir
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+if (isset($_REQUEST['firstLetter'])) {
+ $firstLetter = filter_var($_REQUEST['firstLetter'], FILTER_SANITIZE_STRING);
+}
+if (isset($_REQUEST['bysuburbs'])) {
+ $bysuburbs = true;
+}
+if (isset($_REQUEST['bynumber'])) {
+ $bynumber = true;
+}
+if (isset($_REQUEST['allstops'])) {
+ $allstops = true;
+}
+if (isset($_REQUEST['nearby'])) {
+ $nearby = true;
+}
+if (isset($_REQUEST['suburb'])) {
+ $suburb = $_REQUEST['suburb'];
+}
+if (isset($_REQUEST['pageKey'])) {
+ $pageKey = filter_var($_REQUEST['pageKey'], FILTER_SANITIZE_NUMBER_INT);
+}
+if (isset($_REQUEST['lat'])) {
+ $lat = filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
+}
+if (isset($_REQUEST['lon'])) {
+ $lon = filter_var($_REQUEST['lon'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
+}
+if (isset($_REQUEST['radius'])) {
+ $max_distance = filter_var($_REQUEST['radius'], FILTER_SANITIZE_NUMBER_INT);
+}
+if (isset($_REQUEST['numberSeries'])) {
+ $numberSeries = filter_var($_REQUEST['numberSeries'], FILTER_SANITIZE_NUMBER_INT);
+}
+if (isset($_REQUEST['routeDestination'])) {
+ $routeDestination = urldecode(filter_var($_REQUEST['routeDestination'], FILTER_SANITIZE_ENCODED));
+}
+if (isset($_REQUEST['stopcode'])) {
+ $stopcode = filter_var($_REQUEST['stopcode'], FILTER_SANITIZE_STRING);
+}
+if (isset($_REQUEST['stopids'])) {
+ $stopids = explode(",", filter_var($_REQUEST['stopids'], FILTER_SANITIZE_STRING));
+}
+if (isset($_REQUEST['tripid'])) {
+ $tripid = filter_var($_REQUEST['tripid'], FILTER_SANITIZE_STRING);
+}
+if (isset($_REQUEST['routeid'])) {
+ $routeid = filter_var($_REQUEST['routeid'], FILTER_SANITIZE_STRING);
+}
+if (isset($_REQUEST['directionid'])) {
+ $directionid = filter_var($_REQUEST['directionid'], FILTER_SANITIZE_STRING);
+}
+if (isset($_REQUEST['stopid'])) {
+ $stopid = filter_var($_REQUEST['stopid'], FILTER_SANITIZE_NUMBER_INT);
+}
+if (isset($_REQUEST['geolocate'])) {
+ $geolocate = filter_var($_REQUEST['geolocate'], FILTER_SANITIZE_URL);
+}
+?>
--- /dev/null
+++ b/include/common-session.inc.php
@@ -1,1 +1,71 @@
+<?php
+/*
+ * Copyright 2010,2011 Alexander Sadleir
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+// you have to open the session to be able to modify or remove it
+session_start();
+if (isset($_REQUEST['geolocate']) && $_REQUEST['geolocate'] != "Enter co-ordinates or address here") {
+ $geocoded = false;
+ if (isset($_REQUEST['lat']) && isset($_REQUEST['lon'])) {
+ $_SESSION['lat'] = trim(filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
+ $_SESSION['lon'] = trim(filter_var($_REQUEST['lon'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
+ } else {
+ if (startsWith($geolocate, "-")) {
+ $locateparts = explode(",", $geolocate);
+ $_SESSION['lat'] = $locateparts[0];
+ $_SESSION['lon'] = $locateparts[1];
+ } else if (strpos($geolocate, "(") !== false) {
+ $geoParts = explode("(", $geolocate);
+ $locateparts = explode(",", str_replace(")", "", $geoParts[1]));
+ $_SESSION['lat'] = $locateparts[0];
+ $_SESSION['lon'] = $locateparts[1];
+ } else {
+ $contents = geocode($geolocate, true);
+ print_r($contents);
+ if (isset($contents[0]->centroid)) {
+ $geocoded = true;
+ $_SESSION['lat'] = $contents[0]->centroid->coordinates[0];
+ $_SESSION['lon'] = $contents[0]->centroid->coordinates[1];
+ } else {
+ $_SESSION['lat'] = "";
+ $_SESSION['lon'] = "";
+ }
+ }
+ }
+ sessionUpdated();
+}
+
+function sessionUpdated() {
+ $_SESSION['lastUpdated'] = time();
+}
+
+// timeoutSession
+$TIMEOUT_LIMIT = 60 * 5; // 5 minutes
+if (isset($_SESSION['lastUpdated']) && $_SESSION['lastUpdated'] + $TIMEOUT_LIMIT < time()) {
+ debug("Session timeout " . ($_SESSION['lastUpdated'] + $TIMEOUT_LIMIT) . ">" . time(), "session");
+ session_destroy();
+ session_start();
+}
+
+//debug(print_r($_SESSION, true) , "session");
+function current_time($time = "") {
+ if ($_REQUEST['time']) return $_REQUEST['time'];
+ else if ($time != "") date("H:i:s",$time);
+ else return date("H:i:s");
+}
+
+?>
+
--- a/include/common-template.inc.php
+++ b/include/common-template.inc.php
@@ -1,138 +1,139 @@
<?php
- // Copyright 2009 Google Inc. All Rights Reserved.
- $GA_ACCOUNT = "MO-22173039-1";
- $GA_PIXEL = "/lib/ga.php";
-
- function googleAnalyticsGetImageUrl() {
+
+/*
+ * Copyright 2010,2011 Alexander Sadleir
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+// Copyright 2009 Google Inc. All Rights Reserved.
+$GA_ACCOUNT = "MO-22173039-1";
+$GA_PIXEL = "/lib/ga.php";
+
+function googleAnalyticsGetImageUrl() {
global $GA_ACCOUNT, $GA_PIXEL;
+ //if (stristr($_SERVER['HTTP_USER_AGENT'], 'Googlebot') return "";
$url = "";
- $url .= $GA_PIXEL . "?";
- $url .= "utmac=" . $GA_ACCOUNT;
- $url .= "&utmn=" . rand(0, 0x7fffffff);
- $referer = $_SERVER["HTTP_REFERER"];
+ $url.= $GA_PIXEL . "?";
+ $url.= "utmac=" . $GA_ACCOUNT;
+ $url.= "&utmn=" . rand(0, 0x7fffffff);
+ $referer = (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : "");
$query = $_SERVER["QUERY_STRING"];
$path = $_SERVER["REQUEST_URI"];
if (empty($referer)) {
- $referer = "-";
- }
- $url .= "&utmr=" . urlencode($referer);
+ $referer = "-";
+ }
+ $url.= "&utmr=" . urlencode($referer);
if (!empty($path)) {
- $url .= "&utmp=" . urlencode($path);
- }
- $url .= "&guid=ON";
+ $url.= "&utmp=" . urlencode($path);
+ }
+ $url.= "&guid=ON";
return str_replace("&", "&", $url);
- }
-
-function include_header($pageTitle, $pageType, $opendiv = true, $geolocate = false, $datepicker = false)
-{
- echo '
+}
+
+function include_header($pageTitle, $pageType, $opendiv = true, $geolocate = false, $datepicker = false) {
+ global $basePath, $GTFSREnabled;
+ echo '
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
- <title>' . $pageTitle . '</title>
- <meta name="google-site-verification"
-content="-53T5Qn4TB_de1NyfR_ZZkEVdUNcNFSaYKSFkWKx-sY" />';
- if ($datepicker) echo '<link rel="stylesheet" href="css/jquery.ui.datepicker.mobile.css" />';
- if (isDebugServer()) echo '<link rel="stylesheet" href="css/jquery-mobile-1.0a3.css" />
- <script type="text/javascript" src="js/jquery-1.5.js"></script>
- <script>$(document).bind("mobileinit", function(){
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>' . $pageTitle . ' - Canberra Bus Timetable</title>
+ <meta name="google-site-verification" content="-53T5Qn4TB_de1NyfR_ZZkEVdUNcNFSaYKSFkWKx-sY" />
+<link rel="dns-prefetch" href="//code.jquery.com">
+<link rel="dns-prefetch" href="//ajax.googleapis.com">
+ <link rel="stylesheet" href="' . $basePath . 'css/jquery-ui-1.8.12.custom.css" />';
+ $jqmVersion = "1.0";
+ if (isDebugServer()) {
+ $jqmcss = $basePath . "css/jquery.mobile-$jqmVersion.css";
+ $jqjs = $basePath . "js/jquery-1.6.4.min.js";
+ $jqmjs = $basePath . "js/jquery.mobile-$jqmVersion.js";
+
+ $jqmcss = $basePath . "css/jquery.mobile-b90eab4935.css";
+ $jqmjs = $basePath . "js/jquery.mobile-b90eab4935.js";
+ } else {
+ $jqmcss = "//code.jquery.com/mobile/$jqmVersion/jquery.mobile-$jqmVersion.min.css";
+ $jqjs = "//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js";
+ $jqmjs = "//code.jquery.com/mobile/$jqmVersion/jquery.mobile-$jqmVersion.min.js";
+
+ }
+ echo '<link rel="stylesheet" href="' . $jqmcss . '" />
+ <script src="' . $jqjs . '"></script>
+ <script>$(document).bind("mobileinit", function(){
$.mobile.ajaxEnabled = false;
});
-</script>
- <script type="text/javascript" src="js/jquery-mobile-1.0a3.js"></script>';
- else echo '<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.css" />
- <script type="text/javascript" src="http://code.jquery.com/jquery-1.5.1.min.js"></script>
- <script>$(document).bind("mobileinit", function(){
- $.mobile.ajaxEnabled = false;
-});
-</script>
- <script type="text/javascript" src="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.js"></script>';
- if ($datepicker) echo '<script>
- //reset type=date inputs to text
- $( document ).bind( "mobileinit", function(){
- $.mobile.page.prototype.options.degradeInputs.date = true;
- });
- </script>
- <script src="js/jQuery.ui.datepicker.js"></script>';
- echo '<style type="text/css">
- .ui-navbar {
- width: 100%;
- }
- .ui-btn-inner {
- white-space: normal !important;
- }
- .ui-li-heading {
- white-space: normal !important;
- }
- .ui-listview-filter {
- margin: 0 !important;
- }
- .ui-icon-navigation {
- background-image: url(css/images/113-navigation.png);
- background-position: 1px 0;
- }
- #footer {
- text-size: 0.75em;
- text-align: center;
- }
- body {
- background-color: #F0F0F0;
- }
- #jqm-homeheader {
- text-align: center;
- }
- .viaPoints {
- display: none;
- text-size: 0.2em;
- }
- .min-width-480px .viaPoints {
- display: block;
- }
- #extrainfo {
- visibility: hidden;
- display: none;
- }
- // source http://webaim.org/techniques/skipnav/
- #skip a, #skip a:hover, #skip a:visited
-{
-position:absolute;
-left:0px;
-top:-500px;
-width:1px;
-height:1px;
-overflow:hidden;
-}
-
-#skip a:active, #skip a:focus
-{
-position:static;
-width:auto;
-height:auto;
-}
-</style>';
- if (strstr($_SERVER['HTTP_USER_AGENT'], 'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'], 'iPod')) {
- echo '<meta name="apple-mobile-web-app-capable" content="yes" />
+</script>
+ <script src="' . $jqmjs . '"></script>
+
+<script src="' . $basePath . 'js/jquery.ui.core.min.js"></script>
+<script src="' . $basePath . 'js/jquery.ui.position.min.js"></script>
+<script src="' . $basePath . 'js/jquery.ui.widget.min.js"></script>
+ <script src="' . $basePath . 'js/jquery.ui.autocomplete.min.js"></script>
+ <script>
+ $(function() {
+ $( "#geolocate" ).autocomplete({
+ source: "lib/autocomplete.php",
+ minLength: 2
+ });
+ $( "#from" ).autocomplete({
+ source: "lib/autocomplete.php",
+ minLength: 2
+ });
+ $( "#to" ).autocomplete({
+ source: "lib/autocomplete.php",
+ minLength: 2
+ });
+ });
+ </script>';
+ echo '<style type="text/css">';
+ if (strstr($_SERVER['HTTP_USER_AGENT'], 'Android'))
+ echo '.ui-shadow,.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a,.ui-body-b,.ui-btn-up-b,.ui-btn-hover-b,
+.ui-btn-down-b,.ui-bar-c,.ui-body-c,.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c,.ui-bar-c,.ui-body-d,
+.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d,.ui-bar-d,.ui-body-e,.ui-btn-up-e,.ui-btn-hover-e,
+.ui-btn-down-e,.ui-bar-e,.ui-overlay-shadow,.ui-shadow,.ui-btn-active,.ui-body-a,.ui-bar-a {
+ text-shadow: none;
+ box-shadow: none;
+ -webkit-box-shadow: none;
+}';
+ echo '</style>';
+ echo '<link rel="stylesheet" href="' . $basePath . 'css/local.css.php" />';
+ if (isIOSDevice()){
+ echo '<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<link rel="apple-touch-startup-image" href="startup.png" />
<link rel="apple-touch-icon" href="apple-touch-icon.png" />';
- }
- if ($geolocate) {
- echo "<script>
+ }
+ if ($geolocate) {
+ echo "<script>
function success(position) {
+$('#error').val('Location now detected. Please wait for data to load.');
$('#geolocate').val(position.coords.latitude+','+position.coords.longitude);
-$.ajax({ url: \"include/common.inc.php?geolocate=yes&lat=\"+position.coords.latitude+\"&lon=\"+position.coords.longitude });
-location.reload(true);
+$.ajax({ async: false,
+success: function(){
+ location.reload(true);
+ },
+url: \"include/common.inc.php?geolocate=yes&lat=\"+position.coords.latitude+\"&lon=\"+position.coords.longitude });
}
function error(msg) {
- console.log(msg);
+$('#error').val('Error: '+msg);
}
function geolocate() {
if (navigator.geolocation) {
var options = {
- enableHighAccuracy: false,
+ enableHighAccuracy: true,
timeout: 60000,
maximumAge: 10000
}
@@ -141,46 +142,64 @@
}
$(document).ready(function() {
$('#here').click(function(event) { $('#geolocate').val(geolocate()); return false;});
-$('#here').show();
+ $('#here').show();
});
";
-if (!isset($_SESSION['lat']) || $_SESSION['lat'] == "") echo "geolocate();";
-echo "</script> ";
- }
- if (isAnalyticsOn()) echo '
-<script type="text/javascript">'."
+ if (!isset($_SESSION['lat']) || $_SESSION['lat'] == "")
+ echo "geolocate();";
+ echo "</script> ";
+ }
+ if (isAnalyticsOn())
+ echo '
+<script type="text/javascript">' . "
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-22173039-1']);
_gaq.push(['_trackPageview']);
+ _gaq.push(['_trackPageLoadTime']);
</script>";
-echo '</head>
+ echo '</head>
<body>
<div id="skip">
<a href="#maincontent">Skip to content</a>
</div>
';
- if ($opendiv) {
- echo '<div data-role="page">
- <script>
-$(document).ready(function ()
-{
- document.title = "' . $pageTitle . '";
-});
-</script>
- <div data-role="header">
+ if ($opendiv) {
+ echo '<div data-role="page">
+ <div data-role="header" data-position="inline">
+ <a href="' . (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : "javascript:history.go(-1)") . '" data-icon="arrow-l" data-rel="back" class="ui-btn-left">Back</a>
<h1>' . $pageTitle . '</h1>
+ <a href="' . $basePath . '/index.php" data-icon="home" class="ui-btn-right">Home</a>
</div><!-- /header -->
<a name="maincontent" id="maincontent"></a>
<div data-role="content"> ';
- }
-}
-function include_footer()
-{
- echo '<div id="footer"><a href="about.php">About/Contact Us</a> <a href="feedback.php">Feedback/Bug Report</a></a>';
- echo '</div>';
- if (isAnalyticsOn()) {
- echo "<script> (function() {
+ if ($GTFSREnabled) {
+ $overrides = getServiceOverride();
+ if (isset($overrides['service_id'])) {
+ if ($overrides['service_id'] == "noservice") {
+ echo '<div id="servicewarning">Buses are <strong>not running today</strong> due to industrial action/public holiday. See <a
+href="http://www.action.act.gov.au">http://www.action.act.gov.au</a> for details.</div>';
+ } else {
+ echo '<div id="servicewarning">Buses are running on an altered timetable today due to industrial action/public holiday. See <a href="http://www.action.act.gov.au">http://www.action.act.gov.au</a> for details.</div>';
+ }
+ }
+ $serviceAlerts = getServiceAlertsAsArray("agency", "0");
+ if (isset($serviceAlerts['entity']) && sizeof($serviceAlerts['entity']) > 0) {
+ foreach ($serviceAlerts['entity'] as $entity) {
+ echo "<div id='servicewarning'>" . date("F j, g:i a", strtotime($entity['alert']['active_period'][0]['start'])) . " to " . date("F j, g:i a", strtotime($entity['alert']['active_period'][0]['end'])) . "{$entity['alert']['header_text']['translation'][0]['text']}<br>Warning: {$entity['alert']['description_text']['translation'][0]['text']}
+ <br><a href='{$entity['alert']['url']['translation'][0]['text']}'>Source</a> </div>";
+ }
+ }
+ }
+ }
+}
+
+function include_footer() {
+ global $basePath;
+ echo '<div id="footer"><a href="' . $basePath . 'about.php">About/Contact Us</a> <a href="' . $basePath . 'feedback.php">Feedback/Bug Report</a> <a href="' . $basePath . 'privacy.php">Privacy Policy</a>';
+ echo '</div>';
+ if (isAnalyticsOn()) {
+ echo "<script> (function() {
var ga = document.createElement('script'); ga.type =
'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ?
@@ -188,53 +207,102 @@
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();</script>";
- $googleAnalyticsImageUrl = googleAnalyticsGetImageUrl();
- echo '<noscript><img src="' . $googleAnalyticsImageUrl . '" /></noscript>';
- }
-}
-function timePlaceSettings($geolocate = false)
-{
- global $service_periods;
- $geoerror = false;
- if ($geolocate == true) {
- $geoerror = !isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == "";
- }
- if ($geoerror) {
- echo '<div class="error">Sorry, but your location could not currently be detected.
+ $googleAnalyticsImageUrl = googleAnalyticsGetImageUrl();
+ echo '<noscript><img src="' . $googleAnalyticsImageUrl . '" /></noscript>';
+ }
+ echo "\n</div></div></body></html>";
+}
+function timeSettings() {
+ global $service_periods;
+echo '<div id="settings" data-role="collapsible" data-collapsed="true">
+<h3>Change Time (' . (isset($_REQUEST['time']) ? $_REQUEST['time'] : "Current Time,") . ' ' . ucwords(service_period()) . ')...</h3>
+ <form action="' . basename($_SERVER['PHP_SELF']) . '" method="GET">
+ <input type="hidden" name="suburb" id="suburb" value="' . (isset($_REQUEST['suburb']) ? $_REQUEST['suburb'] : "") . '"/>
+
+ <input type="hidden" name="stopid" id="stopid" value="' . (isset($_REQUEST['stopid']) ? $_REQUEST['stopid'] : "") . '"/>
+ <input type="hidden" name="stopcode" id="stopcode" value="' . (isset($_REQUEST['stopcode']) ? $_REQUEST['stopcode'] : "") . '"/>
+ <div class="ui-body">
+ <div data-role="fieldcontain">
+ <label for="time"> Time: </label>
+ <input type="time" name="time" id="time" value="' . (isset($_REQUEST['time']) ? $_REQUEST['time'] : date("H:i")) . '"/>
+ <a href="#" name="currentTime" id="currentTime" onClick="var d = new Date();' . "$('#time').val(d.getHours() +':'+ (d.getMinutes().toString().length == 1 ? '0'+ d.getMinutes(): d.getMinutes()));" . '">Current Time?</a>
+ </div>
+ <div data-role="fieldcontain">
+ <label for="service_period"> Service Period: </label>
+ <select name="service_period" id="service_period">';
+foreach ($service_periods as $service_period) {
+ echo "<option value=\"$service_period\"" . (service_period() === $service_period ? " SELECTED" : "") . '>' . ucwords($service_period) . '</option>';
+}
+echo '</select>
+ <a href="#" style="display:none" name="currentPeriod" id="currentPeriod">Current Period?</a>
+ </div>
+
+ <input type="submit" value="Update"/>
+ </div></form>
+ </div>';
+}
+function placeSettings() {
+
+ $geoerror = false;
+ $geoerror = !isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == "";
+
+ echo '<div id="error">';
+ if ($geoerror) {
+ echo 'Sorry, but your location could not currently be detected.
Please allow location permission, wait for your location to be detected,
- or enter an address/co-ordinates in the box below.</div>';
- }
- echo '<div data-role="collapsible" data-collapsed="' . !$geoerror . '">
- <h3>Change Time/Place (' . (isset($_SESSION['time']) ? $_SESSION['time'] : "Current Time,") . ' ' . ucwords(service_period()) . ')...</h3>
- <form action="'.basename($_SERVER['PHP_SELF'])."?".$_SERVER['QUERY_STRING'].'" method="post">
+ or enter an address/co-ordinates in the box below.';
+ }
+ echo '</div>';
+ echo '<div id="settings" data-role="collapsible" data-collapsed="' . !$geoerror . '">
+ <h3>Change Location...</h3>
+ <form action="' . basename($_SERVER['PHP_SELF']) . "?" . $_SERVER['QUERY_STRING'] . '" method="post">
<div class="ui-body">
<div data-role="fieldcontain">
<label for="geolocate"> Current Location: </label>
<input type="text" id="geolocate" name="geolocate" value="' . (isset($_SESSION['lat']) && isset($_SESSION['lon']) ? $_SESSION['lat'] . "," . $_SESSION['lon'] : "Enter co-ordinates or address here") . '"/> <a href="#" style="display:none" name="here" id="here">Here?</a>
</div>
- <div data-role="fieldcontain">
- <label for="time"> Time: </label>
- <input type="time" name="time" id="time" value="' . (isset($_SESSION['time']) ? $_SESSION['time'] : date("H:i")) . '"/>
- <a href="#" name="currentTime" id="currentTime" onClick="var d = new Date();'. "$('#time').val(d.getHours() +':'+ d.getMinutes());".'">Current Time?</a>
- </div>
- <div data-role="fieldcontain">
- <label for="service_period"> Service Period: </label>
- <select name="service_period" id="service_period">';
- foreach ($service_periods as $service_period) {
- echo "<option value=\"$service_period\"" . (service_period() === $service_period ? " SELECTED" : "") . '>' . ucwords($service_period) . '</option>';
- }
- echo '</select>
- <a href="#" style="display:none" name="currentPeriod" id="currentPeriod"/>Current Period?</a>
- </div>
<input type="submit" value="Update"/>
- </form>
- </div></div>';
-}
-function trackEvent($category, $action, $label = "", $value = -1) {
- if (isAnalyticsOn()) {
- echo "<script> _gaq.push(['_trackEvent', $category, $action".($label != "" ? ", $label" : "").($value != -1 ? ", $value" : "")."]);</script>";
- }
+ </div></form>
+ </div>';
+}
+
+function trackEvent($category, $action, $label = "", $value = - 1) {
+ if (isAnalyticsOn()) {
+ echo "\n<script> _gaq.push(['_trackEvent', '$category', '$action'" . ($label != "" ? ", '$label'" : "") . ($value != - 1 ? ", $value" : "") . "]);</script>";
+ }
+}
+
+//stop list collapsing
+function stopCompare($stopName) {
+ return substr(trim(preg_replace("/\(Platform.*/", "", $stopName)),0,9);
+}
+function stopGroupTitle($stopName,$stopdesc) {
+ if (preg_match("/Dr |Cct |Cir |Av |St |Cr |Parade |Way |Bank /",$stopName)) {
+ $descParts = explode("<br>",$stopdesc);
+ return trim(str_replace("Street: ","",$descParts[0]));
+ } else {
+ return trim(preg_replace("/\(Platform.*/", "",$stopName));
+ }
+}
+
+function viaPointNames($tripid, $stop_sequence = "") {
+ $viaPointNames = Array();
+ foreach (viaPoints($tripid, $stop_sequence) as $point) {
+ if (strstr($point['stop_name'], "Station")
+ || strstr($point['stop_name'], "Shops")
+ || strstr($point['stop_name'], "CIT")
+ || strstr($point['stop_name'], "School")
+ || strstr($point['stop_name'], "University")
+ ) {
+ $viaPointNames[] = $point['stop_name'];
+ }
+ }
+ if (sizeof($viaPointNames) > 0) {
+ return r_implode(", ", $viaPointNames);
+ } else {
+ return "";
+ }
}
?>
--- a/include/common-transit.inc.php
+++ b/include/common-transit.inc.php
@@ -1,73 +1,305 @@
<?php
+
+/*
+ * Copyright 2010,2011 Alexander Sadleir
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
$service_periods = Array(
- 'sunday',
- 'saturday',
- 'weekday'
+ 'sunday',
+ 'saturday',
+ 'weekday'
);
-function service_period()
-{
- if (isset($_SESSION['service_period'])) return $_SESSION['service_period'];
- switch (date('w')) {
- case 0:
- return 'sunday';
- case 6:
- return 'saturday';
- default:
- return 'weekday';
- }
-}
-function midnight_seconds()
-{
- // from http://www.perturb.org/display/Perlfunc__Seconds_Since_Midnight.html
- if (isset($_SESSION['time'])) {
- $time = strtotime($_SESSION['time']);
- return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time);
- }
- return (date("G") * 3600) + (date("i") * 60) + date("s");
-}
-function midnight_seconds_to_time($seconds)
-{
- if ($seconds > 0) {
- $midnight = mktime(0, 0, 0, date("n") , date("j") , date("Y"));
- return date("h:ia", $midnight + $seconds);
- }
- else {
- return "";
- }
-}
-function viaPoints($tripid, $stopid, $timingPointsOnly = false)
-{
- global $APIurl;
- $url = $APIurl . "/json/tripstoptimes?trip=" . $tripid;
- $json = json_decode(getPage($url));
- debug(print_r($json, true));
- $stops = $json[0];
- $times = $json[1];
- $foundStop = false;
- $viaPoints = Array();
- foreach ($stops as $key => $row) {
- if ($foundStop) {
- if (!$timingPointsOnly || !startsWith($row[5], "Wj")) {
- $viaPoints[] = Array(
- "id" => $row[0],
- "name" => $row[1],
- "time" => $times[$key]
- );
- }
- }
- else {
- if ($row[0] == $stopid) $foundStop = true;
- }
- }
- return $viaPoints;
-}
-function viaPointNames($tripid, $stopid)
-{
- $points = viaPoints($tripid, $stopid, true);
- $pointNames = Array();
- foreach ($points as $point) {
- $pointNames[] = $point['name'];
- }
- return implode(", ", $pointNames);
+
+function service_period($date = "") {
+
+ if (isset($_REQUEST['service_period'])) {
+ return $_REQUEST['service_period'];
+ }
+
+ $override = getServiceOverride($date);
+ if (isset($override['service_id'])) {
+ return strtolower($override['service_id']);
+ }
+ $date = ($date != "" ? $date : time());
+ $dow = date('w', $date);
+
+ switch ($dow) {
+ case 0:
+ return 'sunday';
+ case 6:
+ return 'saturday';
+ default:
+ return 'weekday';
+ }
+}
+
+function service_ids($service_period, $date = "") {
+ switch ($service_period) {
+ case 'sunday':
+ return Array("Sunday", "Sunday");
+ case 'saturday':
+ return Array("Saturday", "Saturday");
+ default:
+ $date = ($date != "" ? $date : time());
+// school holidays
+ $ymd = date('Ymd', $date);
+ $dow = date('w', $date);
+ if (intval($ymd) < "20120203" && $dow != 0 && $dow != 6) {
+ return Array("Weekday-SchoolVacation", "Weekday-SchoolVacation");
+ } else {
+ return Array("Weekday", "Weekday");
+ }
+ }
+}
+
+function valid_service_ids() {
+ return array_merge(service_ids(""), service_ids('saturday'), service_ids('sunday'));
+}
+
+function midnight_seconds($time = "") {
+ // from http://www.perturb.org/display/Perlfunc__Seconds_Since_Midnight.html
+ if ($time != "") {
+ return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time);
+ }
+ if (isset($_SESSION['time'])) {
+ $time = strtotime($_SESSION['time']);
+ return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time);
+ }
+ return (date("G") * 3600) + (date("i") * 60) + date("s");
+}
+
+function midnight_seconds_to_time($seconds) {
+ if ($seconds > 0) {
+ $midnight = mktime(0, 0, 0, date("n"), date("j"), date("Y"));
+ return date("h:ia", $midnight + $seconds);
+ } else {
+ return "";
+ }
+}
+
+if ($GTFSREnabled) {
+ $serviceAlertCause = Array(
+ "UNKNOWN_CAUSE" => "Unknown cause",
+ "OTHER_CAUSE" => "Other cause",
+ "TECHNICAL_PROBLEM" => "Technical problem",
+ "STRIKE" => "Strike",
+ "DEMONSTRATION" => "Demonstration",
+ "ACCIDENT" => "Accident",
+ "HOLIDAY" => "Holiday",
+ "WEATHER" => "Weather",
+ "MAINTENANCE" => "Maintenance",
+ "CONSTRUCTION" => "Construction",
+ "POLICE_ACTIVITY" => "Police activity",
+ "MEDICAL_EMERGENCY" => "Medical emergency"
+ );
+ $serviceAlertEffect = Array(
+ "NO_SERVICE" => "No service",
+ "REDUCED_SERVICE" => "Reduced service",
+ "SIGNIFICANT_DELAYS" => "Significant delays",
+ "DETOUR" => "Detour",
+ "ADDITIONAL_SERVICE" => "Additional service",
+ "MODIFIED_SERVICE" => "Modified service",
+ "OTHER_EFFECT" => "Other effect",
+ "UNKNOWN_EFFECT" => "Unknown effect",
+ "STOP_MOVED" => "Stop moved");
+
+ set_include_path(get_include_path() . PATH_SEPARATOR . ($basePath . "lib/Protobuf-PHP/library/DrSlump/"));
+
+ include_once("Protobuf.php");
+ include_once("Protobuf/Message.php");
+ include_once("Protobuf/Registry.php");
+ include_once("Protobuf/Descriptor.php");
+ include_once("Protobuf/Field.php");
+
+ include_once($basePath . "lib/Protobuf-PHP/gtfs-realtime.php");
+ include_once("Protobuf/CodecInterface.php");
+ include_once("Protobuf/Codec/PhpArray.php");
+ include_once("Protobuf/Codec/Binary.php");
+ include_once("Protobuf/Codec/Binary/Writer.php");
+ include_once("Protobuf/Codec/Json.php");
+
+ function getServiceAlerts($filter_class = "", $filter_id = "") {
+ /*
+
+ also need last modified epoch of client gtfs
+
+ - add,remove,patch,inform (null)
+ - stop
+ - trip
+ - network
+ - classes (WHERE=)
+ - route (short_name or route_id)
+ - street
+ - stop
+ - trip
+ Currently support:
+ network inform
+ trip patch: stop remove
+ street inform: route inform, trip inform, stop inform
+ route patch: trip remove
+ */
+ $fm = new transit_realtime\FeedMessage();
+ $fh = new transit_realtime\FeedHeader();
+ $fh->setGtfsRealtimeVersion(1);
+ $fh->setTimestamp(time());
+ $fm->setHeader($fh);
+ foreach (getCurrentAlerts() as $alert) {
+ $fe = new transit_realtime\FeedEntity();
+ $fe->setId($alert['id']);
+ $fe->setIsDeleted(false);
+ $alert = new transit_realtime\Alert();
+ $tr = new transit_realtime\TimeRange();
+ $tr->setStart($alert['start']);
+ $tr->setEnd($alert['end']);
+ $alert->addActivePeriod($tr);
+ $informedEntities = getInformedAlerts($alert['id'], $_REQUEST['filter_class'], $_REQUEST['filter_id']);
+ if (sizeof($informedEntities) > 0) {
+ $informed = Array();
+ $es = new transit_realtime\EntitySelector();
+ if ($informedEntity['informed_class'] == "agency") {
+ $es->setAgencyId($informedEntity['informed_id']);
+ }
+ if ($informedEntity['informed_class'] == "stop") {
+ $es->setStopId($informedEntity['informed_id']);
+ }
+ if ($informedEntity['informed_class'] == "route") {
+ $es->setRouteId($informedEntity['informed_id']);
+ }
+ if ($informedEntity['informed_class'] == "trip") {
+ $td = new transit_realtime\TripDescriptor();
+ $td->setTripId($informedEntity['informed_id']);
+ $es->setTrip($td);
+ }
+ $alert->addInformedEntity($es);
+ }
+ $alert->setCause(constant("transit_realtime\Alert\Cause::" . $alert['cause']));
+ $alert->setEffect(constant("transit_realtime\Alert\Effect::" . $alert['effect']));
+ $tsUrl = new transit_realtime\TranslatedString();
+ $tUrl = new transit_realtime\TranslatedString\Translation();
+ $tUrl->setText($alert['url']);
+ $tUrl->setLanguage("en");
+ $tsUrl->addTranslation($tUrl);
+ $alert->setUrl($tsUrl);
+ $tsHeaderText = new transit_realtime\TranslatedString();
+ $tHeaderText = new transit_realtime\TranslatedString\Translation();
+ $tHeaderText->setText($alert['header']);
+ $tHeaderText->setLanguage("en");
+ $tsHeaderText->addTranslation($tHeaderText);
+ $alert->setHeaderText($tsHeaderText);
+ $tsDescriptionText = new transit_realtime\TranslatedString();
+ $tDescriptionText = new transit_realtime\TranslatedString\Translation();
+ $tDescriptionText->setText($alert['description']);
+ $tDescriptionText->setLanguage("en");
+ $tsDescriptionText->addTranslation($tDescriptionText);
+ $alert->setDescriptionText($tsDescriptionText);
+ $fe->setAlert($alert);
+ $fm->addEntity($fe);
+ }
+ return $fm;
+ }
+
+ function getServiceAlertsAsArray($filter_class = "", $filter_id = "") {
+ $codec = new DrSlump\Protobuf\Codec\PhpArray();
+ return $codec->encode(getServiceAlerts($filter_class, $filter_id));
+ }
+
+ function getServiceAlertsAsBinary($filter_class = "", $filter_id = "") {
+ $codec = new DrSlump\Protobuf\Codec\Binary();
+ return $codec->encode(getServiceAlerts($filter_class, $filter_id));
+ }
+
+ function getServiceAlertsAsJSON($filter_class = "", $filter_id = "") {
+ $codec = new DrSlump\Protobuf\Codec\Json();
+ return $codec->encode(getServiceAlerts($filter_class, $filter_id));
+ }
+
+ function getServiceAlertsByClass() {
+ $return = Array();
+ $alerts = getServiceAlertsAsArray("", "");
+ foreach ($alerts['entities'] as $entity) {
+ foreach ($entity['informed'] as $informed) {
+ foreach ($informed as $key => $value) {
+ if (strpos("_id", $key) > 0) {
+ $parts = explode($key);
+ $class = $parts[0];
+ $id = $value;
+ }
+ }
+ $return[$class][$id][] = $entity;
+ }
+ }
+ }
+
+ function getTripUpdates($filter_class = "", $filter_id = "") {
+ $fm = new transit_realtime\FeedMessage();
+ $fh = new transit_realtime\FeedHeader();
+ $fh->setGtfsRealtimeVersion(1);
+ $fh->setTimestamp(time());
+ $fm->setHeader($fh);
+ foreach (getCurrentAlerts() as $alert) {
+ $informedEntities = getInformedAlerts($alert['id'], $_REQUEST['filter_class'], $_REQUEST['filter_id']);
+ $stops = Array();
+ $routestrips = Array();
+ if (sizeof($informedEntities) > 0) {
+ if ($informedEntity['informed_class'] == "stop" && $informed["x-action"] == "remove") {
+ $stops[] = $informedEntity['informed_id'];
+ }
+ if (($informedEntity['informed_class'] == "route" || $informedEntity['informed_class'] == "trip") && $informed["x-action"] == "patch") {
+ $routestrips[] = Array("id" => $informedEntity['informed_id'],
+ "type" => $informedEntity['informed_class']);
+ }
+ }
+ foreach ($routestrips as $routetrip) {
+ $fe = new transit_realtime\FeedEntity();
+ $fe->setId($alert['id'] . $routetrip['id']);
+ $fe->setIsDeleted(false);
+ $tu = new transit_realtime\TripUpdate();
+ $td = new transit_realtime\TripDescriptor();
+ if ($routetrip['type'] == "route") {
+ $td->setRouteId($routetrip['id']);
+ } else if ($routetrip['type'] == "trip") {
+ $td->setTripId($routetrip['id']);
+ }
+ $tu->setTrip($td);
+ foreach ($stops as $stop) {
+ $stu = new transit_realtime\TripUpdate\StopTimeUpdate();
+ $stu->setStopId($stop);
+ $stu->setScheduleRelationship(transit_realtime\TripUpdate\StopTimeUpdate\ScheduleRelationship::SKIPPED);
+ $tu->addStopTimeUpdate($stu);
+ }
+ $fe->setTripUpdate($tu);
+ $fm->addEntity($fe);
+ }
+ }
+ return $fm;
+ }
+
+ function getTripUpdatesAsArray($filter_class = "", $filter_id = "") {
+ $codec = new DrSlump\Protobuf\Codec\PhpArray();
+ return $codec->encode(getTripUpdates($filter_class, $filter_id));
+ }
+
+ function getTripUpdatesAsBinary($filter_class = "", $filter_id = "") {
+ $codec = new DrSlump\Protobuf\Codec\Binary();
+ return $codec->encode(getTripUpdates($filter_class, $filter_id));
+ }
+
+ function getTripUpdatesAsJSON($filter_class = "", $filter_id = "") {
+ $codec = new DrSlump\Protobuf\Codec\Json();
+ return $codec->encode(getTripUpdates($filter_class, $filter_id));
+ }
+
}
?>
+
--- a/include/common.inc.php
+++ b/include/common.inc.php
@@ -1,176 +1,206 @@
<?php
+
+/*
+ * Copyright 2010,2011 Alexander Sadleir
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
date_default_timezone_set('Australia/ACT');
-$APIurl = "http://localhost:8765";
$debugOkay = Array(
- "session",
- "json",
- "phperror",
- "awsgtfs",
- "awsotp",
- "other"
+ "session",
+ "json",
+ "phperror",
+ "awsotp",
+ //"squallotp",
+ //"vanilleotp",
+ "database",
+ "other"
);
-if (isDebug("awsgtfs")) {
- $APIurl = "http://bus-main.lambdacomplex.org:8765";
-}
+$GTFSREnabled = true;
$cloudmadeAPIkey = "daa03470bb8740298d4b10e3f03d63e6";
$googleMapsAPIkey = "ABQIAAAA95XYXN0cki3Yj_Sb71CFvBTPaLd08ONybQDjcH_VdYtHHLgZvRTw2INzI_m17_IoOUqH3RNNmlTk1Q";
$otpAPIurl = 'http://localhost:8080/opentripplanner-api-webapp/';
-if (isDebug("awsotp") || php_uname('n') == "maxious.xen.prgmr.com") {
- $otpAPIurl = 'http://bus-main.lambdacomplex.org:8080/opentripplanner-api-webapp/';
-}
-if (isDebug("phperror")) error_reporting(E_ALL ^ E_NOTICE);
+if (isDebug("awsotp") || php_uname('n') == "maxious.xen.prgmr.com" || strstr(php_uname('n'),"actbus")) {
+ $otpAPIurl = 'http://bus-main.lambdacomplex.org:8080/opentripplanner-api-webapp/';
+}
+if (isDebug("dotcloudotp") || php_uname('n') == "actbus-www") {
+ $otpAPIurl = 'http://otp.actbus.dotcloud.com/opentripplanner-api-webapp/';
+}
+if (isDebug("squallotp")) {
+ $otpAPIurl = 'http://10.0.1.108:5080/opentripplanner-api-webapp/';
+}
+if (isDebug("vanilleotp")) {
+ $otpAPIurl = 'http://10.0.1.135:8080/opentripplanner-api-webapp/';
+}
+if (isDebug("phperror"))
+ error_reporting(E_ALL ^ E_NOTICE);
+$basePath = "";
+if (strstr($_SERVER['PHP_SELF'], "labs/")
+ || strstr($_SERVER['PHP_SELF'], "myway/")
+ || strstr($_SERVER['PHP_SELF'], "lib/")
+ || strstr($_SERVER['PHP_SELF'], "geo/")
+ || strstr($_SERVER['PHP_SELF'], "include/")
+ || strstr($_SERVER['PHP_SELF'], "servicealerts/"))
+ $basePath = "../";
+
+function isDebugServer() {
+
+ return php_sapi_name() == "cli" || strstr(php_uname('n'),"actbus") || isset($_SERVER['SERVER_NAME']) && ( $_SERVER['SERVER_NAME'] == "azusa" || $_SERVER['SERVER_NAME'] == "vanille"
+ || $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "127.0.0.1" || $_SERVER['SERVER_NAME'] == "192.168.1.8");
+}
+
include_once ("common-geo.inc.php");
include_once ("common-net.inc.php");
+include_once ("common-transit.inc.php");
+if (!strstr($_SERVER['PHP_SELF'], "feedback")) {
+ include_once ("common-db.inc.php");
+}
+
+include_once ("common-request.inc.php");
+include_once ("common-session.inc.php");
+include_once ("common-auth.inc.php");
include_once ("common-template.inc.php");
-include_once ("common-transit.inc.php");
-// you have to open the session to be able to modify or remove it
-session_start();
-if (isset($_REQUEST['service_period'])) {
- $_SESSION['service_period'] = filter_var($_REQUEST['service_period'], FILTER_SANITIZE_STRING);
-}
-if (isset($_REQUEST['time'])) {
- $_SESSION['time'] = filter_var($_REQUEST['time'], FILTER_SANITIZE_STRING);
-}
-if (isset($_REQUEST['geolocate'])) {
- $geocoded = false;
- if (isset($_REQUEST['lat']) && isset($_REQUEST['lon'])) {
- $_SESSION['lat'] = trim(filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
- $_SESSION['lon'] = trim(filter_var($_REQUEST['lon'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
- }
- else {
- $geolocate = filter_var($_REQUEST['geolocate'], FILTER_SANITIZE_URL);
- echo $_REQUEST['geolocate'];
- if (startsWith($geolocate, "-")) {
- $locateparts = explode(",", $geolocate);
- $_SESSION['lat'] = $locateparts[0];
- $_SESSION['lon'] = $locateparts[1];
- }
- else {
- $contents = geocode($geolocate, true);
- print_r($contents);
- if (isset($contents[0]->centroid)) {
- $geocoded = true;
- $_SESSION['lat'] = $contents[0]->centroid->coordinates[0];
- $_SESSION['lon'] = $contents[0]->centroid->coordinates[1];
- }
- else {
- $_SESSION['lat'] = "";
- $_SESSION['lon'] = "";
- }
- }
- }
- if ($_SESSION['lat'] != "" && isAnalyticsOn()) {
- trackEvent("Geolocation","Updated Location", "Geocoded - ".($geocoded ? "Yes" : "No"));
- }
-}
-debug(print_r($_SESSION, true) , "session");
-function isDebugServer()
-{
- return $_SERVER['SERVER_NAME'] == "10.0.1.154" || $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "127.0.0.1" || !$_SERVER['SERVER_NAME'];
-}
-function isAnalyticsOn()
-{
- return !isDebugServer();
-}
-function isDebug($debugReason = "other")
-{
- global $debugOkay;
- return in_array($debugReason, $debugOkay, false) && isDebugServer();
-}
-function debug($msg, $debugReason = "other")
-{
- if (isDebug($debugReason)) echo "\n<!-- " . date(DATE_RFC822) . "\n $msg -->\n";
-}
-function isJQueryMobileDevice()
-{
- // http://forum.jquery.com/topic/what-is-the-best-way-to-detect-all-useragents-which-can-handle-jquery-mobile#14737000002087897
- $user_agent = $_SERVER['HTTP_USER_AGENT'];
- return preg_match('/iphone/i', $user_agent) || preg_match('/android/i', $user_agent) || preg_match('/webos/i', $user_agent) || preg_match('/ios/i', $user_agent) || preg_match('/bada/i', $user_agent) || preg_match('/maemo/i', $user_agent) || preg_match('/meego/i', $user_agent) || preg_match('/fennec/i', $user_agent) || (preg_match('/symbian/i', $user_agent) && preg_match('/s60/i', $user_agent) && $browser['majorver'] >= 5) || (preg_match('/symbian/i', $user_agent) && preg_match('/platform/i', $user_agent) && $browser['majorver'] >= 3) || (preg_match('/blackberry/i', $user_agent) && $browser['majorver'] >= 5) || (preg_match('/opera mobile/i', $user_agent) && $browser['majorver'] >= 10) || (preg_match('/opera mini/i', $user_agent) && $browser['majorver'] >= 5);
-}
-function isFastDevice()
-{
- $ua = $_SERVER['HTTP_USER_AGENT'];
- $fastDevices = Array(
- "Mozilla/5.0 (X11;",
- "Mozilla/5.0 (Windows;",
- "Mozilla/5.0 (iP",
- "Mozilla/5.0 (Linux; U; Android",
- "Mozilla/4.0 (compatible; MSIE"
- );
- $slowDevices = Array(
- "J2ME",
- "MIDP",
- "Opera/",
- "Mozilla/2.0 (compatible;",
- "Mozilla/3.0 (compatible;"
- );
- return true;
-}
-function array_flatten($a, $f = array())
-{
- if (!$a || !is_array($a)) return '';
- foreach ($a as $k => $v) {
- if (is_array($v)) $f = array_flatten($v, $f);
- else $f[$k] = $v;
- }
- return $f;
-}
-function remove_spaces($string)
-{
- return str_replace(' ', '', $string);
-}
-function object2array($object)
-{
- if (is_object($object)) {
- foreach ($object as $key => $value) {
- $array[$key] = $value;
- }
- }
- else {
- $array = $object;
- }
- return $array;
-}
-function startsWith($haystack, $needle, $case = true)
-{
- if ($case) {
- return (strcmp(substr($haystack, 0, strlen($needle)) , $needle) === 0);
- }
- return (strcasecmp(substr($haystack, 0, strlen($needle)) , $needle) === 0);
-}
-
-function endsWith($haystack, $needle, $case = true)
-{
- if ($case) {
- return (strcmp(substr($haystack, strlen($haystack) - strlen($needle)) , $needle) === 0);
- }
- return (strcasecmp(substr($haystack, strlen($haystack) - strlen($needle)) , $needle) === 0);
-}
-function bracketsMeanNewLine($input)
-{
- return str_replace(")", "</small>", str_replace("(", "<br><small>", $input));
-}
-function sksort(&$array, $subkey = "id", $sort_ascending = false)
-{
- if (count($array)) $temp_array[key($array) ] = array_shift($array);
- foreach ($array as $key => $val) {
- $offset = 0;
- $found = false;
- foreach ($temp_array as $tmp_key => $tmp_val) {
- if (!$found and strtolower($val[$subkey]) > strtolower($tmp_val[$subkey])) {
- $temp_array = array_merge((array)array_slice($temp_array, 0, $offset) , array(
- $key => $val
- ) , array_slice($temp_array, $offset));
- $found = true;
- }
- $offset++;
- }
- if (!$found) $temp_array = array_merge($temp_array, array(
- $key => $val
- ));
- }
- if ($sort_ascending) $array = array_reverse($temp_array);
- else $array = $temp_array;
-}
+
+function isAnalyticsOn() {
+ $user_agent = $_SERVER['HTTP_USER_AGENT'];
+ return !isDebugServer() && !preg_match('/cloudkick/i', $user_agent) && !preg_match('/googlebot/i', $user_agent) &&
+ !preg_match('/baidu/i', $user_agent);
+}
+
+function isDebug($debugReason = "other") {
+ global $debugOkay;
+ return in_array($debugReason, $debugOkay, false) && isDebugServer();
+}
+
+function debug($msg, $debugReason = "other") {
+ if (isDebug($debugReason))
+ echo "\n<!-- " . date(DATE_RFC822) . "\n $msg -->\n";
+}
+function isIOSDevice() {
+ return strstr($_SERVER['HTTP_USER_AGENT'], 'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'], 'iPod') || strstr($_SERVER['HTTP_USER_AGENT'], 'iPad');
+}
+function isJQueryMobileDevice() {
+ // http://forum.jquery.com/topic/what-is-the-best-way-to-detect-all-useragents-which-can-handle-jquery-mobile#14737000002087897
+ $user_agent = $_SERVER['HTTP_USER_AGENT'];
+ return preg_match('/iphone/i', $user_agent) || preg_match('/android/i', $user_agent) || preg_match('/webos/i', $user_agent) || preg_match('/ios/i', $user_agent) || preg_match('/bada/i', $user_agent) || preg_match('/maemo/i', $user_agent) || preg_match('/meego/i', $user_agent) || preg_match('/fennec/i', $user_agent) || (preg_match('/symbian/i', $user_agent) && preg_match('/s60/i', $user_agent) && $browser['majorver'] >= 5) || (preg_match('/symbian/i', $user_agent) && preg_match('/platform/i', $user_agent) && $browser['majorver'] >= 3) || (preg_match('/blackberry/i', $user_agent) && $browser['majorver'] >= 5) || (preg_match('/opera mobile/i', $user_agent) && $browser['majorver'] >= 10) || (preg_match('/opera mini/i', $user_agent) && $browser['majorver'] >= 5);
+}
+
+
+function array_flatten($a, $f = array()) {
+ if (!$a || !is_array($a))
+ return '';
+ foreach ($a as $k => $v) {
+ if (is_array($v))
+ $f = array_flatten($v, $f);
+ else
+ $f[$k] = $v;
+ }
+ return $f;
+}
+
+function remove_spaces($string) {
+ return str_replace(' ', '', $string);
+}
+
+function object2array($object) {
+ if (is_object($object)) {
+ foreach ($object as $key => $value) {
+ $array[$key] = $value;
+ }
+ } else {
+ $array = $object;
+ }
+ return $array;
+}
+
+function startsWith($haystack, $needle, $case = true) {
+ if ($case) {
+ return (strcmp(substr($haystack, 0, strlen($needle)), $needle) === 0);
+ }
+ return (strcasecmp(substr($haystack, 0, strlen($needle)), $needle) === 0);
+}
+
+function endsWith($haystack, $needle, $case = true) {
+ if ($case) {
+ return (strcmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0);
+ }
+ return (strcasecmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0);
+}
+
+function sksort(&$array, $subkey = "id", $sort_ascending = false) {
+ if (count($array))
+ $temp_array[key($array)] = array_shift($array);
+ foreach ($array as $key => $val) {
+ $offset = 0;
+ $found = false;
+ foreach ($temp_array as $tmp_key => $tmp_val) {
+ if (!$found and strtolower($val[$subkey]) > strtolower($tmp_val[$subkey])) {
+ $temp_array = array_merge((array) array_slice($temp_array, 0, $offset), array(
+ $key => $val
+ ), array_slice($temp_array, $offset));
+ $found = true;
+ }
+ $offset++;
+ }
+ if (!$found)
+ $temp_array = array_merge($temp_array, array(
+ $key => $val
+ ));
+ }
+ if ($sort_ascending)
+ $array = array_reverse($temp_array);
+ else
+ $array = $temp_array;
+}
+
+function sktimesort(&$array, $subkey = "id", $sort_ascending = false) {
+ if (count($array))
+ $temp_array[key($array)] = array_shift($array);
+ foreach ($array as $key => $val) {
+ $offset = 0;
+ $found = false;
+ foreach ($temp_array as $tmp_key => $tmp_val) {
+ if (!$found and strtotime($val[$subkey]) > strtotime($tmp_val[$subkey])) {
+ $temp_array = array_merge((array) array_slice($temp_array, 0, $offset), array(
+ $key => $val
+ ), array_slice($temp_array, $offset));
+ $found = true;
+ }
+ $offset++;
+ }
+ if (!$found)
+ $temp_array = array_merge($temp_array, array(
+ $key => $val
+ ));
+ }
+ if ($sort_ascending && isset($temp_array))
+ $array = array_reverse($temp_array);
+ else
+ $array = $temp_array;
+}
+
+function r_implode($glue, $pieces) {
+ foreach ($pieces as $r_pieces) {
+ if (is_array($r_pieces)) {
+ $retVal[] = r_implode($glue, $r_pieces);
+ } else {
+ $retVal[] = $r_pieces;
+ }
+ }
+ return implode($glue, $retVal);
+}
+
+
?>
--- /dev/null
+++ b/include/db/route-dao.inc.php
@@ -1,1 +1,303 @@
-
+<?php
+
+/*
+ * Copyright 2010,2011 Alexander Sadleir
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+function getRoute($routeID) {
+ global $conn;
+ $query = "Select * from routes where route_id = :routeID LIMIT 1";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":routeID", $routeID);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetch(PDO :: FETCH_ASSOC);
+}
+
+function getRoutesByShortName($routeShortName) {
+ global $conn;
+ $query = "Select distinct route_id, route_short_name from routes where route_short_name = :routeShortName";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":routeShortName", $routeShortName);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+function getRouteHeadsigns($routeID) {
+ global $conn;
+ $query = "select stops.stop_name, trip_headsign, direction_id,max(service_id) as service_id, count(*)
+ from routes join trips on trips.route_id = routes.route_id
+join stop_times on stop_times.trip_id = trips.trip_id join stops on
+stop_times.stop_id = stops.stop_id where trips.route_id = :routeID
+and stop_times.stop_sequence = 1 group by stops.stop_name, trip_headsign, direction_id having count(*) > 2";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":routeID", $routeID);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+function getRouteDescription($routeID, $directionID) {
+ $trip = getRouteNextTrip($routeID, $directionID);
+ $start = getTripStartingPoint($trip['trip_id']);
+ $end = getTripDestination($trip['trip_id']);
+ return "From ".$start['stop_name']." to ".$end['stop_name'];
+}
+function getRouteByFullName($routeFullName) {
+ global $conn;
+ $query = "Select * from routes where route_short_name||route_long_name = :routeFullName LIMIT 1";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":routeFullName", $routeFullName);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetch(PDO :: FETCH_ASSOC);
+}
+
+function getRoutes() {
+ global $conn;
+ $query = "Select * from routes order by route_short_name;";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+function getRoutesByNumberSeries($routeNumberSeries = "") {
+ global $conn;
+ if (strlen($routeNumberSeries) == 1) {
+ return getRoutesByNumber($routeNumberSeries);
+ }
+ $seriesMin = substr($routeNumberSeries, 0, -1) . "0";
+ $seriesMax = substr($routeNumberSeries, 0, -1) . "9";
+ $query = "Select distinct routes.route_id,routes.route_short_name,routes.route_long_name,service_id from routes join trips on trips.route_id =
+routes.route_id join stop_times on stop_times.trip_id = trips.trip_id where to_number(route_short_name, 'FM999') between :seriesMin and :seriesMax OR route_short_name LIKE :routeNumberSeries order by route_short_name;";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":seriesMin", $seriesMin);
+ $query->bindParam(":seriesMax", $seriesMax);
+ $routeNumberSeries = "% " . substr($routeNumberSeries, 0, -1) . "%";
+ $query->bindParam(":routeNumberSeries", $routeNumberSeries);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+function getRouteNextTrip($routeID, $directionID) {
+ global $conn;
+
+ $query = "select routes.route_id,direction_id,trips.trip_id,trip_headsign,departure_time from routes join trips on trips.route_id = routes.route_id
+join stop_times on stop_times.trip_id = trips.trip_id where arrival_time between :currentTime and :futureTime
+and routes.route_id = :routeID and trips.direction_id = :directionID order by
+arrival_time limit 1";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":currentTime", current_time());
+ $futureTime = current_time(strtotime(current_time() ." +2h"));
+ if (date("h",strtotime(current_time()) > 22)) $futureTime = "23:59:59";
+ $query->bindParam(":futureTime", $futureTime);
+ $query->bindParam(":routeID", $routeID);
+ $query->bindParam(":directionID", $directionID);
+ $query->execute();
+ databaseError($conn->errorInfo());
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ $r = $query->fetch(PDO :: FETCH_ASSOC);
+ return $r;
+}
+
+function getRouteFirstTrip($routeID,$directionID) {
+ global $conn;
+
+ $query = "select * from routes join trips on trips.route_id = routes.route_id
+join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = :routeID
+and trips.direction_id = :directionID order by
+arrival_time DESC limit 1";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":routeID", $routeID);
+
+ $query->bindParam(":directionID", $directionID);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+
+ $r = $query->fetch(PDO :: FETCH_ASSOC);
+ return $r;
+}
+
+function getRouteAtStop($routeID, $directionID, $stop_id) {
+ $nextTrip = getRouteNextTrip($routeID, $directionID);
+ if ($nextTrip['trip_id']) {
+ foreach (getTripStopTimes($nextTrip['trip_id']) as $tripStop) {
+ if ($tripStop['stop_id'] == $stop_id)
+ return $tripStop;
+ }
+ }
+ return Array();
+}
+
+function getRouteTrips($routeID, $directionID = "", $service_period = "") {
+ global $conn;
+ if ($service_period == "")
+ $service_period = service_period();
+ $service_ids = service_ids($service_period);
+ $sidA = $service_ids[0];
+ $sidB = $service_ids[1];
+ $directionSQL = "";
+ if ($directionID != "")
+ $directionSQL = " and direction_id = :directionID ";
+ $query = "select routes.route_id,trips.trip_id,service_id,arrival_time, stop_id, stop_sequence from routes join trips on trips.route_id = routes.route_id
+join stop_times on stop_times.trip_id = trips.trip_id where (service_id=:service_periodA OR service_id=:service_periodB)
+AND (routes.route_id = :routeID) " . $directionSQL . " and stop_sequence = '1' order by
+arrival_time ";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":routeID", $routeID);
+ $query->bindParam(":service_periodA", $sidA);
+ $query->bindParam(":service_periodB", $sidB);
+ if ($directionSQL != "")
+ $query->bindParam(":directionID", $directionID);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+function getRoutesByDestination($destination = "", $service_period = "") {
+ global $conn;
+ if ($service_period == "")
+ $service_period = service_period();
+ $service_ids = service_ids($service_period);
+ $sidA = $service_ids[0];
+ $sidB = $service_ids[1];
+ if ($destination != "") {
+ $query = "SELECT DISTINCT trips.route_id,route_short_name,route_long_name, service_id
+FROM stop_times join trips on trips.trip_id =
+stop_times.trip_id join routes on trips.route_id = routes.route_id
+WHERE route_long_name = :destination AND (service_id=:service_periodA OR service_id=:service_periodB)
+ order by route_short_name";
+ } else {
+ $query = "SELECT DISTINCT route_long_name
+FROM stop_times join trips on trips.trip_id =
+stop_times.trip_id join routes on trips.route_id = routes.route_id
+WHERE (service_id=:service_periodA OR service_id=:service_periodB)
+ order by route_long_name";
+ }
+ debug($query, "database");
+ $query = $conn->prepare($query);
+
+ $query->bindParam(":service_periodA", $sidA);
+ $query->bindParam(":service_periodB", $sidB);
+ if ($destination != "")
+ $query->bindParam(":destination", $destination);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+function getRoutesBySuburb($suburb, $service_period = "") {
+ if ($service_period == "")
+ $service_period = service_period();
+ $service_ids = service_ids($service_period);
+ $sidA = $service_ids[0];
+ $sidB = $service_ids[1];
+
+ global $conn;
+ $query = "SELECT DISTINCT service_id,trips.route_id,route_short_name,route_long_name
+FROM stop_times join trips on trips.trip_id = stop_times.trip_id
+join routes on trips.route_id = routes.route_id
+join stops on stops.stop_id = stop_times.stop_id
+WHERE stop_desc LIKE :suburb AND (service_id=:service_periodA OR service_id=:service_periodB)
+ ORDER BY route_short_name";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":service_periodA", $sidA);
+ $query->bindParam(":service_periodB", $sidB);
+ $suburb = "%Suburb: %" . $suburb . "%";
+ $query->bindParam(":suburb", $suburb);
+ $query->execute();
+
+ databaseError($conn->errorInfo());
+
+ return $query->fetchAll();
+}
+
+function getRoutesNearby($lat, $lng, $limit = "", $distance = 500) {
+ if ($service_period == "")
+ $service_period = service_period();
+ $service_ids = service_ids($service_period);
+ $sidA = $service_ids[0];
+ $sidB = $service_ids[1];
+ if ($limit != "")
+ $limitSQL = " LIMIT :limit ";
+ global $conn;
+ $query = "SELECT service_id,trips.route_id,trips.direction_id,route_short_name,route_long_name,min(stops.stop_id) as stop_id,
+ min(ST_Distance(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), FALSE)) as distance
+FROM stop_times
+join trips on trips.trip_id = stop_times.trip_id
+join routes on trips.route_id = routes.route_id
+join stops on stops.stop_id = stop_times.stop_id
+WHERE (service_id=:service_periodA OR service_id=:service_periodB)
+AND ST_DWithin(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), :distance, FALSE)
+ group by service_id,trips.route_id,trips.direction_id,route_short_name,route_long_name
+ order by distance $limitSQL";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":service_periodA", $sidA);
+ $query->bindParam(":service_periodB", $sidB);
+ $query->bindParam(":distance", $distance);
+ if ($limit != "")
+ $query->bindParam(":limit", $limit);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+?>
--- /dev/null
+++ b/include/db/servicealert-dao.inc.php
@@ -1,1 +1,177 @@
+<?php
+/*
+ * Copyright 2010,2011 Alexander Sadleir
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+function getServiceOverride($date = "") {
+ global $conn;
+ $query = "Select * from calendar_dates where date = :date and exception_type = '1' LIMIT 1";
+ // debug($query,"database");
+ $query = $conn->prepare($query); // Create a prepared statement
+ $query->bindParam(":date", date("Ymd", ($date != "" ? $date : time())));
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetch(PDO :: FETCH_ASSOC);
+}
+
+function getServiceAlert($alertID) {
+ global $conn;
+ $query = "SELECT id,extract('epoch' from start) as start, extract('epoch' from \"end\") as \"end\",cause,effect,header,description,url from servicealerts_alerts where id = :servicealert_id";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":servicealert_id", $alertID);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetch(PDO :: FETCH_ASSOC);
+}
+
+function updateServiceAlert($alertID, $start, $end, $header, $description, $url) {
+ global $conn;
+ $query = 'update servicealerts_alerts set start=:start, "end"=:end, header=:header, description=:description, url=:url where id = :servicealert_id';
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":servicealert_id", $alertID);
+ $query->bindParam(":start", $start);
+ $query->bindParam(":end", $end);
+ $query->bindParam(":header", $header);
+ $query->bindParam(":description", $description);
+ $query->bindParam(":url", $url);
+ $query->execute();
+
+ print_r($conn->errorInfo());
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetch(PDO :: FETCH_ASSOC);
+}
+
+function addServiceAlert($start, $end, $header, $description, $url) {
+ global $conn;
+ $query = 'INSERT INTO servicealerts_alerts (start, "end", header, description, url) VALUES (:start, :end, :header, :description, :url) ';
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":start", $start);
+ $query->bindParam(":end", $end);
+ $query->bindParam(":header", $header);
+ $query->bindParam(":description", $description);
+ $query->bindParam(":url", $url);
+ $query->execute();
+
+ print_r($conn->errorInfo());
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetch(PDO :: FETCH_ASSOC);
+}
+
+function getCurrentAlerts() {
+ global $conn;
+ $query = "SELECT id,extract('epoch' from start) as start, extract('epoch' from \"end\") as \"end\",cause,effect,header,description,url from servicealerts_alerts where NOW() > start and NOW() < \"end\"";
+ // debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+function getFutureAlerts() {
+ global $conn;
+ $query = "SELECT id,extract('epoch' from start) as start, extract('epoch' from \"end\") as \"end\",cause,effect,header,description,url from servicealerts_alerts where NOW() > start or NOW() < \"end\"";
+ // debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+function getInformedAlerts($id, $filter_class, $filter_id) {
+
+ global $conn;
+ $query = "SELECT * from servicealerts_informed where servicealert_id = :servicealert_id";
+
+ if ($filter_class != "") {
+ $query .= " AND informed_class = :informed_class ";
+ }
+ if ($filter_id != "") {
+ $query .= " AND informed_id = :informed_id ";
+ }
+ // debug($query, "database");
+ $query = $conn->prepare($query);
+ if ($filter_class != "") {
+ $query->bindParam(":informed_class", $filter_class);
+ }
+ if ($filter_id != "") {
+ $query->bindParam(":informed_id", $filter_id);
+ }
+ $query->bindParam(":servicealert_id", $id);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+function deleteInformedAlert($serviceAlertID, $class, $id) {
+ global $conn;
+ $query = 'DELETE from servicealerts_informed where servicealert_id = :servicealert_id and informed_class = :informed_class AND informed_id = :informed_id';
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":servicealert_id", $serviceAlertID);
+ $query->bindParam(":informed_class", $class);
+ $query->bindParam(":informed_id", $id);
+ $query->execute();
+ print_r($conn->errorInfo());
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return null;
+}
+
+function addInformedAlert($serviceAlertID, $class, $id, $action) {
+ global $conn;
+ $query = 'INSERT INTO servicealerts_informed (servicealert_id , informed_class , informed_id) VALUES(:servicealert_id ,:informed_class, :informed_id)';
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":servicealert_id", $serviceAlertID);
+ $query->bindParam(":informed_class", $class);
+ $query->bindParam(":informed_id", $id);
+ $query->execute();
+
+ print_r($conn->errorInfo());
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return null;
+}
+
+?>
--- /dev/null
+++ b/include/db/stop-dao.inc.php
@@ -1,1 +1,250 @@
-
+<?php
+
+/*
+ * Copyright 2010,2011 Alexander Sadleir
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+function getStop($stopID) {
+ global $conn;
+ $query = "Select * from stops where stop_id = :stopID LIMIT 1";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":stopID", $stopID);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetch(PDO :: FETCH_ASSOC);
+}
+
+function getStops($firstLetter = "", $startsWith = "") {
+ global $conn;
+ $conditions = Array();
+ if ($firstLetter != "")
+ $conditions[] = "substr(stop_name,1,1) = :firstLetter";
+ if ($startsWith != "")
+ $conditions[] = "stop_name like :startsWith";
+ $query = "Select * from stops";
+ if (sizeof($conditions) > 0) {
+ if (sizeof($conditions) > 1) {
+ $query .= " Where " . implode(" AND ", $conditions) . " ";
+ } else {
+ $query .= " Where " . $conditions[0] . " ";
+ }
+ }
+ $query .= " order by stop_name;";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ if ($firstLetter != "")
+ $query->bindParam(":firstLetter", $firstLetter);
+
+ if ($startsWith != "") {
+ $startsWith = $startsWith . "%";
+ $query->bindParam(":startsWith", $startsWith);
+ }
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+function getNearbyStops($lat, $lng, $limit = "", $distance = 1000) {
+ if ($lat == null || $lng == null)
+ return Array();
+ if ($limit != "")
+ $limitSQL = " LIMIT :limit ";
+ global $conn;
+ $query = "Select *, ST_Distance(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), FALSE) as distance
+ from stops WHERE ST_DWithin(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), :distance, FALSE)
+ order by distance $limitSQL;";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":distance", $distance);
+ $query->bindParam(":limit", $limit);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+function getStopsByName($name) {
+ global $conn;
+ $query = "Select * from stops where stop_name LIKE :name;";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $name = "%" . $name . ";%";
+ $query->bindParam(":name", $name);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+function getStopsBySuburb($suburb) {
+ global $conn;
+ $query = "Select * from stops where stop_desc LIKE :suburb order by stop_name;";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $suburb = "%<br>Suburb: %" . $suburb . "%";
+ $query->bindParam(":suburb", $suburb);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+function getStopsByStopCode($stop_code, $startsWith = "") {
+ global $conn;
+ $query = "Select * from stops where (stop_code = :stop_code OR stop_code LIKE :stop_code2)";
+ if ($startsWith != "")
+ $query .= " AND stop_name like :startsWith";
+
+ debug($query, "database");
+ $query = $conn->prepare($query);
+
+ $query->bindParam(":stop_code", $stop_code);
+ $stop_code2 = $stop_code . "%";
+ $query->bindParam(":stop_code2", $stop_code2);
+ if ($startsWith != "") {
+ $startsWith = $startsWith . "%";
+ $query->bindParam(":startsWith", $startsWith);
+ }
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+function getStopRoutes($stopID, $service_period) {
+ if ($service_period == "") {
+ $service_period = service_period();
+ }
+ $service_ids = service_ids($service_period);
+ $sidA = $service_ids[0];
+ $sidB = $service_ids[1];
+ global $conn;
+ $query = "SELECT distinct service_id,trips.route_id,route_short_name,route_long_name
+FROM stop_times join trips on trips.trip_id =
+stop_times.trip_id join routes on trips.route_id = routes.route_id WHERE stop_id = :stopID
+AND (service_id=:service_periodA OR service_id=:service_periodB)";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":service_periodA", $sidA);
+ $query->bindParam(":service_periodB", $sidB);
+ $query->bindParam(":stopID", $stopID);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+function getStopTrips($stopID, $service_period = "", $afterTime = "", $limit = "", $route_short_name = "") {
+ if ($service_period == "") {
+ $service_period = service_period();
+ }
+ $service_ids = service_ids($service_period);
+ $sidA = $service_ids[0];
+ $sidB = $service_ids[1];
+ $limitSQL = "";
+ if ($limit != "")
+ $limitSQL .= " LIMIT :limit ";
+
+ global $conn;
+ if ($afterTime != "") {
+ $query = " SELECT stop_times.trip_id,stop_times.arrival_time,stop_times.stop_id,stop_sequence,service_id,trips.route_id,trips.direction_id,trips.trip_headsign,route_short_name,route_long_name,end_times.arrival_time as end_time
+FROM stop_times
+join trips on trips.trip_id =
+stop_times.trip_id
+join routes on trips.route_id = routes.route_id , (SELECT trip_id,max(arrival_time) as arrival_time from stop_times
+ WHERE stop_times.arrival_time IS NOT NULL group by trip_id) as end_times
+WHERE stop_times.stop_id = :stopID
+AND stop_times.trip_id = end_times.trip_id
+AND (service_id=:service_periodA OR service_id=:service_periodB) " . ($route_short_name != "" ? " AND route_short_name = :route_short_name " : "") . "
+AND end_times.arrival_time > :afterTime
+ORDER BY end_time $limitSQL";
+ } else {
+ $query = "SELECT stop_times.trip_id,arrival_time,stop_times.stop_id,stop_sequence,service_id,trips.route_id,route_short_name,route_long_name
+FROM stop_times
+join trips on trips.trip_id =
+stop_times.trip_id
+join routes on trips.route_id = routes.route_id
+WHERE stop_times.stop_id = :stopID
+AND (service_id=:service_periodA OR service_id=:service_periodB) " . ($route_short_name != "" ? " AND route_short_name = :route_short_name " : "") . "
+ORDER BY arrival_time $limitSQL";
+ }
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":service_periodA", $sidA);
+ $query->bindParam(":service_periodB", $sidB);
+ $query->bindParam(":stopID", $stopID);
+ if ($limit != "")
+ $query->bindParam(":limit", $limit);
+ if ($afterTime != "")
+ $query->bindParam(":afterTime", $afterTime);
+ if ($route_short_name != "")
+ $query->bindParam(":route_short_name", $route_short_name);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+function getStopTripsWithTimes($stopID, $time = "", $service_period = "", $time_range = "", $limit = "") {
+ if ($service_period == "")
+ $service_period = service_period();
+ if ($time_range == "")
+ $time_range = (24 * 60 * 60);
+ if ($time == "")
+ $time = current_time();
+ if ($limit == "")
+ $limit = 10;
+ $trips = getStopTrips($stopID, $service_period, $time);
+ $timedTrips = Array();
+ if ($trips && sizeof($trips) > 0) {
+ foreach ($trips as $trip) {
+ if ($trip['arrival_time'] != "") {
+ if (strtotime($trip['arrival_time']) > strtotime($time) and strtotime($trip['arrival_time']) < (strtotime($time) + $time_range)) {
+ $timedTrips[] = $trip;
+ }
+ } else {
+ $timedTrip = getTripAtStop($trip['trip_id'], $trip['stop_sequence']);
+ if ($timedTrip['arrival_time'] > $time and strtotime($timedTrip['arrival_time']) < (strtotime($time) + $time_range)) {
+ $timedTrips[] = $timedTrip;
+ }
+ }
+ if (sizeof($timedTrips) > $limit)
+ break;
+ }
+ sktimesort($timedTrips, "arrival_time", true);
+ }
+ return $timedTrips;
+}
+
+?>
--- /dev/null
+++ b/include/db/trip-dao.inc.php
@@ -1,1 +1,208 @@
-
+<?php
+
+/*
+ * Copyright 2010,2011 Alexander Sadleir
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+function getTrip($tripID) {
+ global $conn;
+ $query = "Select * from trips
+ join routes on trips.route_id = routes.route_id
+ where trip_id = :tripID
+ LIMIT 1";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":tripID", $tripID);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+
+ return Array();
+ }
+ return $query->fetch(PDO :: FETCH_ASSOC);
+}
+function getTripStops($tripID) {
+ global $conn;
+ $query = "SELECT stop_id, stop_name, ST_AsKML(position) as positionkml,
+ stop_sequence, trips.trip_id
+FROM stop_times
+join trips on trips.trip_id = stop_times.trip_id
+join stops on stops.stop_id = stop_times.stop_id
+WHERE trips.trip_id = :tripID ORDER BY stop_sequence";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":tripID", $tripID);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchColumn(0);
+}
+function getTripShape($tripID) {
+ // todo, use shapes table if shape_id specified
+ global $conn;
+ $query = "SELECT ST_AsKML(ST_MakeLine(geometry(a.shape_pt))) as the_route
+FROM (SELECT shapes.shape_id,shape_pt from shapes
+inner join trips on shapes.shape_id = trips.shape_id
+WHERE trips.trip_id = :tripID ORDER BY shape_pt_sequence) as a group by a.shape_id";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":tripID", $tripID);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchColumn(0);
+}
+
+function getTripStopTimes($tripID) {
+ global $conn;
+ $query = "SELECT stop_times.trip_id,trip_headsign,arrival_time,stop_times.stop_id
+ ,stop_lat,stop_lon,stop_name,stop_desc,stop_code,
+ stop_sequence,service_id,trips.route_id,route_short_name,route_long_name
+FROM stop_times
+join trips on trips.trip_id = stop_times.trip_id
+join routes on trips.route_id = routes.route_id
+join stops on stops.stop_id = stop_times.stop_id
+WHERE trips.trip_id = :tripID $range ORDER BY stop_sequence";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":tripID", $tripID);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ $stopTimes = $query->fetchAll();
+ return $stopTimes;
+}
+
+function getTripAtStop($tripID, $stop_sequence) {
+ global $conn;
+ foreach (getTripStopTimes($tripID) as $tripStop) {
+ if ($tripStop['stop_sequence'] == $stop_sequence)
+ return $tripStop;
+ }
+ return Array();
+}
+
+function getTripStartTime($tripID) {
+ global $conn;
+ $query = "Select * from stop_times
+ where trip_id = :tripID
+ AND arrival_time IS NOT NULL
+ AND stop_sequence = '1'";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":tripID", $tripID);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ $r = $query->fetch(PDO :: FETCH_ASSOC);
+ return $r['arrival_time'];
+}
+
+function getTripEndTime($tripID) {
+ global $conn;
+ $query = "SELECT trip_id,max(arrival_time) as arrival_time from stop_times
+ WHERE stop_times.arrival_time IS NOT NULL and trip_id = :tripID group by trip_id";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":tripID", $tripID);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ $r = $query->fetch(PDO :: FETCH_ASSOC);
+ return $r['arrival_time'];
+}
+function getTripStartingPoint($tripID) {
+ global $conn;
+ $query = "SELECT stops.stop_id, stops.stop_name, stops.stop_desc
+ from stop_times inner join stops on stop_times.stop_id = stops.stop_id
+ WHERE trip_id = :tripID and stop_sequence = '1' limit 1";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":tripID", $tripID);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ $r = $query->fetch(PDO :: FETCH_ASSOC);
+ return $r;
+}
+
+function getTripDestination($tripID) {
+ global $conn;
+ $query = "SELECT stops.stop_id, stops.stop_name, stops.stop_desc
+ from stop_times inner join stops on stop_times.stop_id = stops.stop_id
+ WHERE trip_id = :tripID order by stop_sequence desc limit 1";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":tripID", $tripID);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ $r = $query->fetch(PDO :: FETCH_ASSOC);
+ return $r;
+}
+
+function getActiveTrips($time) {
+ global $conn;
+ if ($time == "")
+ $time = current_time();
+ $query = "Select distinct stop_times.trip_id, start_times.arrival_time as start_time, end_times.arrival_time as end_time from stop_times, (SELECT trip_id,arrival_time from stop_times WHERE stop_times.arrival_time IS NOT NULL
+AND stop_sequence = '1') as start_times, (SELECT trip_id,max(arrival_time) as arrival_time from stop_times WHERE stop_times.arrival_time IS NOT NULL group by trip_id) as end_times
+WHERE start_times.trip_id = end_times.trip_id AND stop_times.trip_id = end_times.trip_id AND :time > start_times.arrival_time AND :time < end_times.arrival_time";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":time", $time);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+function viaPoints($tripID, $stop_sequence = "") {
+ global $conn;
+ $query = "SELECT stops.stop_id, stop_name, arrival_time
+FROM stop_times join stops on stops.stop_id = stop_times.stop_id
+WHERE stop_times.trip_id = :tripID
+" . ($stop_sequence != "" ? " AND stop_sequence > :stop_sequence " : "") . " ORDER BY stop_sequence";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ if ($stop_sequence != "")
+ $query->bindParam(":stop_sequence", $stop_sequence);
+ $query->bindParam(":tripID", $tripID);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetchAll();
+}
+
+
+?>
--- a/index.php
+++ b/index.php
@@ -1,31 +1,45 @@
<?php
+/*
+ * Copyright 2010,2011 Alexander Sadleir
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
include ('include/common.inc.php');
include_header("bus.lambdacomplex.org", "index", false)
?>
<div data-role="page">
- <div data-role="content">
- <div id="jqm-homeheader">
- <h1>busness time</h1><br><small>Canberra Bus Timetables and Trip Planner</small>
- </div>
- <a name="maincontent" id="maincontent"></a>
- <a href="tripPlanner.php" data-role="button" data-icon="navigation">Launch Trip Planner...</a>
- <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b">
- <li data-role="list-divider">Timetables - Stops</li>
- <li><a href="stopList.php">Major (Timing Point) Stops</a></li>
- <li><a href="stopList.php?allstops=yes">All Stops</a></li>
- <li><a href="stopList.php?suburbs=yes">Stops By Suburb</a></li>
- <li><a class="nearby" href="stopList.php?nearby=yes">Nearby Stops</a></li>
- </ul>
- <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b">
- <li data-role="list-divider">Timetables - Routes</li>
- <li><a href="routeList.php">Routes By Final Destination</a></li>
- <li><a href="routeList.php?bynumber=yes">Routes By Number</a></li>
- <li><a href="routeList.php?bysuburb=yes">Routes By Suburb</a></li>
- <li><a class="nearby" href="routeList.php?nearby=yes">Nearby Routes</a></li>
- </ul>
-<?php
-echo timePlaceSettings();
-include_footer(true)
-?>
-
+ <div data-role="content">
+ <div id="jqm-homeheader">
+ <h1>busness time</h1><br><small>Canberra Bus Timetables and Trip Planner</small>
+ </div>
+ <a name="maincontent" id="maincontent"></a>
+ <a href="tripPlanner.php" data-role="button" data-icon="navigation">Launch Trip Planner...</a>
+ <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b">
+ <li data-role="list-divider">Timetables - Stops</li>
+ <li><a href="stopList.php">Stops By Name</a></li>
+ <li><a href="stopList.php?bysuburbs=yes">Stops By Suburb</a></li>
+ <li><a class="nearby" href="stopList.php?nearby=yes">Nearby Stops</a></li>
+ </ul>
+ <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b">
+ <li data-role="list-divider">Timetables - Routes</li>
+ <li><a href="routeList.php">Routes By Final Destination</a></li>
+ <li><a href="routeList.php?bynumber=yes">Routes By Number</a></li>
+ <li><a href="routeList.php?bysuburbs=yes">Routes By Suburb</a></li>
+ <li><a class="nearby" href="routeList.php?nearby=yes">Nearby Routes</a></li>
+ </ul>
+ <a href="labs/index.php" data-role="button" data-icon="beaker">Busness R&D</a>
+ <a href="myway/index.php" data-role="button">MyWay Balance and Timeliness Survey Results</a>
+ <?php
+ include_footer(true)
+ ?>
--- /dev/null
+++ b/js/LAB.min.js
@@ -1,1 +1,5 @@
-
+/*! LAB.js (LABjs :: Loading And Blocking JavaScript)
+ v2.0.1 (c) Kyle Simpson
+ MIT License
+*/
+(function(o){var K=o.$LAB,y="UseLocalXHR",z="AlwaysPreserveOrder",u="AllowDuplicates",A="CacheBust",B="BasePath",C=/^[^?#]*\//.exec(location.href)[0],D=/^\w+\:\/\/\/?[^\/]+/.exec(C)[0],i=document.head||document.getElementsByTagName("head"),L=(o.opera&&Object.prototype.toString.call(o.opera)=="[object Opera]")||("MozAppearance"in document.documentElement.style),q=document.createElement("script"),E=typeof q.preload=="boolean",r=E||(q.readyState&&q.readyState=="uninitialized"),F=!r&&q.async===true,M=!r&&!F&&!L;function G(a){return Object.prototype.toString.call(a)=="[object Function]"}function H(a){return Object.prototype.toString.call(a)=="[object Array]"}function N(a,c){var b=/^\w+\:\/\//;if(/^\/\/\/?/.test(a)){a=location.protocol+a}else if(!b.test(a)&&a.charAt(0)!="/"){a=(c||"")+a}return b.test(a)?a:((a.charAt(0)=="/"?D:C)+a)}function s(a,c){for(var b in a){if(a.hasOwnProperty(b)){c[b]=a[b]}}return c}function O(a){var c=false;for(var b=0;b<a.scripts.length;b++){if(a.scripts[b].ready&&a.scripts[b].exec_trigger){c=true;a.scripts[b].exec_trigger();a.scripts[b].exec_trigger=null}}return c}function t(a,c,b,d){a.onload=a.onreadystatechange=function(){if((a.readyState&&a.readyState!="complete"&&a.readyState!="loaded")||c[b])return;a.onload=a.onreadystatechange=null;d()}}function I(a){a.ready=a.finished=true;for(var c=0;c<a.finished_listeners.length;c++){setTimeout(a.finished_listeners[c],0)}a.ready_listeners=[];a.finished_listeners=[]}function P(d,f,e,g,h){setTimeout(function(){var a,c=f.real_src,b;if("item"in i){if(!i[0]){setTimeout(arguments.callee,25);return}i=i[0]}a=document.createElement("script");if(f.type)a.type=f.type;if(f.charset)a.charset=f.charset;if(h){if(r){e.elem=a;if(E){a.preload=true;a.onpreload=g}else{a.onreadystatechange=function(){if(a.readyState=="loaded")g();a.onreadystatechange=null}}a.src=c}else if(h&&c.indexOf(D)==0&&d[y]){b=new XMLHttpRequest();b.onreadystatechange=function(){if(b.readyState==4){b.onreadystatechange=function(){};e.text=b.responseText+"\n//@ sourceURL="+c;g()}};b.open("GET",c);b.send()}else{a.type="text/cache-script";t(a,e,"ready",function(){i.removeChild(a);g()});a.src=c;i.insertBefore(a,i.firstChild)}}else if(F){a.async=false;t(a,e,"finished",g);a.src=c;i.insertBefore(a,i.firstChild)}else{t(a,e,"finished",g);a.src=c;i.insertBefore(a,i.firstChild)}},0)}function J(){var l={},Q=r||M,n=[],p={},m;l[y]=true;l[z]=false;l[u]=false;l[A]=false;l[B]="";function R(a,c,b){var d;function f(){if(d!=null){I(b);d=null}}if(p[c.src].finished)return;if(!a[u])p[c.src].finished=true;d=b.elem||document.createElement("script");if(c.type)d.type=c.type;if(c.charset)d.charset=c.charset;t(d,b,"finished",f);if(b.elem){b.elem=null}else if(b.text){d.onload=d.onreadystatechange=null;d.text=b.text}else{d.src=c.real_src}i.insertBefore(d,i.firstChild);if(b.text){f()}}function S(c,b,d,f){var e,g,h=function(){b.ready_cb(b,function(){R(c,b,e)})},j=function(){b.finished_cb(b,d)};b.src=N(b.src,c[B]);b.real_src=b.src+(c[A]?((/\?.*$/.test(b.src)?"&_":"?_")+~~(Math.random()*1E9)+"="):"");if(!p[b.src])p[b.src]={items:[],finished:false};g=p[b.src].items;if(c[u]||g.length==0){e=g[g.length]={ready:false,finished:false,ready_listeners:[h],finished_listeners:[j]};P(c,b,e,((f)?function(){e.ready=true;for(var a=0;a<e.ready_listeners.length;a++){setTimeout(e.ready_listeners[a],0)}e.ready_listeners=[]}:function(){I(e)}),f)}else{e=g[0];if(e.finished){setTimeout(j,0)}else{e.finished_listeners.push(j)}}}function v(){var e,g=s(l,{}),h=[],j=0,w=false,k;function T(a,c){a.ready=true;a.exec_trigger=c;x()}function U(a,c){a.ready=a.finished=true;a.exec_trigger=null;for(var b=0;b<c.scripts.length;b++){if(!c.scripts[b].finished)return}c.finished=true;x()}function x(){while(j<h.length){if(G(h[j])){try{h[j]()}catch(err){}}else if(!h[j].finished){if(O(h[j]))continue;break}j++}if(j==h.length){w=false;k=false}}function V(){if(!k||!k.scripts){h.push(k={scripts:[],finished:true})}}e={script:function(){for(var f=0;f<arguments.length;f++){(function(a,c){var b;if(!H(a)){c=[a]}for(var d=0;d<c.length;d++){V();a=c[d];if(G(a))a=a();if(!a)continue;if(H(a)){b=[].slice.call(a);b.push(d,1);c.splice.call(c,b);d--;continue}if(typeof a=="string")a={src:a};a=s(a,{ready:false,ready_cb:T,finished:false,finished_cb:U});k.finished=false;k.scripts.push(a);S(g,a,k,(Q&&w));w=true;if(g[z])e.wait()}})(arguments[f],arguments[f])}return e},wait:function(){if(arguments.length>0){for(var a=0;a<arguments.length;a++){h.push(arguments[a])}k=h[h.length-1]}else k=false;x();return e}};return{script:e.script,wait:e.wait,setOptions:function(a){s(a,g);return e}}}m={setGlobalDefaults:function(a){s(a,l);return m},setOptions:function(){return v().setOptions.apply(null,arguments)},script:function(){return v().script.apply(null,arguments)},wait:function(){return v().wait.apply(null,arguments)},queueScript:function(){n[n.length]={type:"script",args:[].slice.call(arguments)};return m},queueWait:function(){n[n.length]={type:"wait",args:[].slice.call(arguments)};return m},runQueue:function(){var a=m,c=n.length,b=c,d;for(;--b>=0;){d=n.shift();a=a[d.type].apply(null,d.args)}return a},noConflict:function(){o.$LAB=K;return m},sandbox:function(){return J()}};return m}o.$LAB=J();(function(a,c,b){if(document.readyState==null&&document[a]){document.readyState="loading";document[a](c,b=function(){document.removeEventListener(c,b,false);document.readyState="complete"},false)}})("addEventListener","DOMContentLoaded")})(this);
--- /dev/null
+++ b/js/flot/excanvas.js
@@ -1,1 +1,1428 @@
-
+// Copyright 2006 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+// Known Issues:
+//
+// * Patterns only support repeat.
+// * Radial gradient are not implemented. The VML version of these look very
+// different from the canvas one.
+// * Clipping paths are not implemented.
+// * Coordsize. The width and height attribute have higher priority than the
+// width and height style values which isn't correct.
+// * Painting mode isn't implemented.
+// * Canvas width/height should is using content-box by default. IE in
+// Quirks mode will draw the canvas using border-box. Either change your
+// doctype to HTML5
+// (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype)
+// or use Box Sizing Behavior from WebFX
+// (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html)
+// * Non uniform scaling does not correctly scale strokes.
+// * Filling very large shapes (above 5000 points) is buggy.
+// * Optimize. There is always room for speed improvements.
+
+// Only add this code if we do not already have a canvas implementation
+if (!document.createElement('canvas').getContext) {
+
+(function() {
+
+ // alias some functions to make (compiled) code shorter
+ var m = Math;
+ var mr = m.round;
+ var ms = m.sin;
+ var mc = m.cos;
+ var abs = m.abs;
+ var sqrt = m.sqrt;
+
+ // this is used for sub pixel precision
+ var Z = 10;
+ var Z2 = Z / 2;
+
+ /**
+ * This funtion is assigned to the <canvas> elements as element.getContext().
+ * @this {HTMLElement}
+ * @return {CanvasRenderingContext2D_}
+ */
+ function getContext() {
+ return this.context_ ||
+ (this.context_ = new CanvasRenderingContext2D_(this));
+ }
+
+ var slice = Array.prototype.slice;
+
+ /**
+ * Binds a function to an object. The returned function will always use the
+ * passed in {@code obj} as {@code this}.
+ *
+ * Example:
+ *
+ * g = bind(f, obj, a, b)
+ * g(c, d) // will do f.call(obj, a, b, c, d)
+ *
+ * @param {Function} f The function to bind the object to
+ * @param {Object} obj The object that should act as this when the function
+ * is called
+ * @param {*} var_args Rest arguments that will be used as the initial
+ * arguments when the function is called
+ * @return {Function} A new function that has bound this
+ */
+ function bind(f, obj, var_args) {
+ var a = slice.call(arguments, 2);
+ return function() {
+ return f.apply(obj, a.concat(slice.call(arguments)));
+ };
+ }
+
+ function encodeHtmlAttribute(s) {
+ return String(s).replace(/&/g, '&').replace(/"/g, '"');
+ }
+
+ function addNamespacesAndStylesheet(doc) {
+ // create xmlns
+ if (!doc.namespaces['g_vml_']) {
+ doc.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml',
+ '#default#VML');
+
+ }
+ if (!doc.namespaces['g_o_']) {
+ doc.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office',
+ '#default#VML');
+ }
+
+ // Setup default CSS. Only add one style sheet per document
+ if (!doc.styleSheets['ex_canvas_']) {
+ var ss = doc.createStyleSheet();
+ ss.owningElement.id = 'ex_canvas_';
+ ss.cssText = 'canvas{display:inline-block;overflow:hidden;' +
+ // default size is 300x150 in Gecko and Opera
+ 'text-align:left;width:300px;height:150px}';
+ }
+ }
+
+ // Add namespaces and stylesheet at startup.
+ addNamespacesAndStylesheet(document);
+
+ var G_vmlCanvasManager_ = {
+ init: function(opt_doc) {
+ if (/MSIE/.test(navigator.userAgent) && !window.opera) {
+ var doc = opt_doc || document;
+ // Create a dummy element so that IE will allow canvas elements to be
+ // recognized.
+ doc.createElement('canvas');
+ doc.attachEvent('onreadystatechange', bind(this.init_, this, doc));
+ }
+ },
+
+ init_: function(doc) {
+ // find all canvas elements
+ var els = doc.getElementsByTagName('canvas');
+ for (var i = 0; i < els.length; i++) {
+ this.initElement(els[i]);
+ }
+ },
+
+ /**
+ * Public initializes a canvas element so that it can be used as canvas
+ * element from now on. This is called automatically before the page is
+ * loaded but if you are creating elements using createElement you need to
+ * make sure this is called on the element.
+ * @param {HTMLElement} el The canvas element to initialize.
+ * @return {HTMLElement} the element that was created.
+ */
+ initElement: function(el) {
+ if (!el.getContext) {
+ el.getContext = getContext;
+
+ // Add namespaces and stylesheet to document of the element.
+ addNamespacesAndStylesheet(el.ownerDocument);
+
+ // Remove fallback content. There is no way to hide text nodes so we
+ // just remove all childNodes. We could hide all elements and remove
+ // text nodes but who really cares about the fallback content.
+ el.innerHTML = '';
+
+ // do not use inline function because that will leak memory
+ el.attachEvent('onpropertychange', onPropertyChange);
+ el.attachEvent('onresize', onResize);
+
+ var attrs = el.attributes;
+ if (attrs.width && attrs.width.specified) {
+ // TODO: use runtimeStyle and coordsize
+ // el.getContext().setWidth_(attrs.width.nodeValue);
+ el.style.width = attrs.width.nodeValue + 'px';
+ } else {
+ el.width = el.clientWidth;
+ }
+ if (attrs.height && attrs.height.specified) {
+ // TODO: use runtimeStyle and coordsize
+ // el.getContext().setHeight_(attrs.height.nodeValue);
+ el.style.height = attrs.height.nodeValue + 'px';
+ } else {
+ el.height = el.clientHeight;
+ }
+ //el.getContext().setCoordsize_()
+ }
+ return el;
+ }
+ };
+
+ function onPropertyChange(e) {
+ var el = e.srcElement;
+
+ switch (e.propertyName) {
+ case 'width':
+ el.getContext().clearRect();
+ el.style.width = el.attributes.width.nodeValue + 'px';
+ // In IE8 this does not trigger onresize.
+ el.firstChild.style.width = el.clientWidth + 'px';
+ break;
+ case 'height':
+ el.getContext().clearRect();
+ el.style.height = el.attributes.height.nodeValue + 'px';
+ el.firstChild.style.height = el.clientHeight + 'px';
+ break;
+ }
+ }
+
+ function onResize(e) {
+ var el = e.srcElement;
+ if (el.firstChild) {
+ el.firstChild.style.width = el.clientWidth + 'px';
+ el.firstChild.style.height = el.clientHeight + 'px';
+ }
+ }
+
+ G_vmlCanvasManager_.init();
+
+ // precompute "00" to "FF"
+ var decToHex = [];
+ for (var i = 0; i < 16; i++) {
+ for (var j = 0; j < 16; j++) {
+ decToHex[i * 16 + j] = i.toString(16) + j.toString(16);
+ }
+ }
+
+ function createMatrixIdentity() {
+ return [
+ [1, 0, 0],
+ [0, 1, 0],
+ [0, 0, 1]
+ ];
+ }
+
+ function matrixMultiply(m1, m2) {
+ var result = createMatrixIdentity();
+
+ for (var x = 0; x < 3; x++) {
+ for (var y = 0; y < 3; y++) {
+ var sum = 0;
+
+ for (var z = 0; z < 3; z++) {
+ sum += m1[x][z] * m2[z][y];
+ }
+
+ result[x][y] = sum;
+ }
+ }
+ return result;
+ }
+
+ function copyState(o1, o2) {
+ o2.fillStyle = o1.fillStyle;
+ o2.lineCap = o1.lineCap;
+ o2.lineJoin = o1.lineJoin;
+ o2.lineWidth = o1.lineWidth;
+ o2.miterLimit = o1.miterLimit;
+ o2.shadowBlur = o1.shadowBlur;
+ o2.shadowColor = o1.shadowColor;
+ o2.shadowOffsetX = o1.shadowOffsetX;
+ o2.shadowOffsetY = o1.shadowOffsetY;
+ o2.strokeStyle = o1.strokeStyle;
+ o2.globalAlpha = o1.globalAlpha;
+ o2.font = o1.font;
+ o2.textAlign = o1.textAlign;
+ o2.textBaseline = o1.textBaseline;
+ o2.arcScaleX_ = o1.arcScaleX_;
+ o2.arcScaleY_ = o1.arcScaleY_;
+ o2.lineScale_ = o1.lineScale_;
+ }
+
+ var colorData = {
+ aliceblue: '#F0F8FF',
+ antiquewhite: '#FAEBD7',
+ aquamarine: '#7FFFD4',
+ azure: '#F0FFFF',
+ beige: '#F5F5DC',
+ bisque: '#FFE4C4',
+ black: '#000000',
+ blanchedalmond: '#FFEBCD',
+ blueviolet: '#8A2BE2',
+ brown: '#A52A2A',
+ burlywood: '#DEB887',
+ cadetblue: '#5F9EA0',
+ chartreuse: '#7FFF00',
+ chocolate: '#D2691E',
+ coral: '#FF7F50',
+ cornflowerblue: '#6495ED',
+ cornsilk: '#FFF8DC',
+ crimson: '#DC143C',
+ cyan: '#00FFFF',
+ darkblue: '#00008B',
+ darkcyan: '#008B8B',
+ darkgoldenrod: '#B8860B',
+ darkgray: '#A9A9A9',
+ darkgreen: '#006400',
+ darkgrey: '#A9A9A9',
+ darkkhaki: '#BDB76B',
+ darkmagenta: '#8B008B',
+ darkolivegreen: '#556B2F',
+ darkorange: '#FF8C00',
+ darkorchid: '#9932CC',
+ darkred: '#8B0000',
+ darksalmon: '#E9967A',
+ darkseagreen: '#8FBC8F',
+ darkslateblue: '#483D8B',
+ darkslategray: '#2F4F4F',
+ darkslategrey: '#2F4F4F',
+ darkturquoise: '#00CED1',
+ darkviolet: '#9400D3',
+ deeppink: '#FF1493',
+ deepskyblue: '#00BFFF',
+ dimgray: '#696969',
+ dimgrey: '#696969',
+ dodgerblue: '#1E90FF',
+ firebrick: '#B22222',
+ floralwhite: '#FFFAF0',
+ forestgreen: '#228B22',
+ gainsboro: '#DCDCDC',
+ ghostwhite: '#F8F8FF',
+ gold: '#FFD700',
+ goldenrod: '#DAA520',
+ grey: '#808080',
+ greenyellow: '#ADFF2F',
+ honeydew: '#F0FFF0',
+ hotpink: '#FF69B4',
+ indianred: '#CD5C5C',
+ indigo: '#4B0082',
+ ivory: '#FFFFF0',
+ khaki: '#F0E68C',
+ lavender: '#E6E6FA',
+ lavenderblush: '#FFF0F5',
+ lawngreen: '#7CFC00',
+ lemonchiffon: '#FFFACD',
+ lightblue: '#ADD8E6',
+ lightcoral: '#F08080',
+ lightcyan: '#E0FFFF',
+ lightgoldenrodyellow: '#FAFAD2',
+ lightgreen: '#90EE90',
+ lightgrey: '#D3D3D3',
+ lightpink: '#FFB6C1',
+ lightsalmon: '#FFA07A',
+ lightseagreen: '#20B2AA',
+ lightskyblue: '#87CEFA',
+ lightslategray: '#778899',
+ lightslategrey: '#778899',
+ lightsteelblue: '#B0C4DE',
+ lightyellow: '#FFFFE0',
+ limegreen: '#32CD32',
+ linen: '#FAF0E6',
+ magenta: '#FF00FF',
+ mediumaquamarine: '#66CDAA',
+ mediumblue: '#0000CD',
+ mediumorchid: '#BA55D3',
+ mediumpurple: '#9370DB',
+ mediumseagreen: '#3CB371',
+ mediumslateblue: '#7B68EE',
+ mediumspringgreen: '#00FA9A',
+ mediumturquoise: '#48D1CC',
+ mediumvioletred: '#C71585',
+ midnightblue: '#191970',
+ mintcream: '#F5FFFA',
+ mistyrose: '#FFE4E1',
+ moccasin: '#FFE4B5',
+ navajowhite: '#FFDEAD',
+ oldlace: '#FDF5E6',
+ olivedrab: '#6B8E23',
+ orange: '#FFA500',
+ orangered: '#FF4500',
+ orchid: '#DA70D6',
+ palegoldenrod: '#EEE8AA',
+ palegreen: '#98FB98',
+ paleturquoise: '#AFEEEE',
+ palevioletred: '#DB7093',
+ papayawhip: '#FFEFD5',
+ peachpuff: '#FFDAB9',
+ peru: '#CD853F',
+ pink: '#FFC0CB',
+ plum: '#DDA0DD',
+ powderblue: '#B0E0E6',
+ rosybrown: '#BC8F8F',
+ royalblue: '#4169E1',
+ saddlebrown: '#8B4513',
+ salmon: '#FA8072',
+ sandybrown: '#F4A460',
+ seagreen: '#2E8B57',
+ seashell: '#FFF5EE',
+ sienna: '#A0522D',
+ skyblue: '#87CEEB',
+ slateblue: '#6A5ACD',
+ slategray: '#708090',
+ slategrey: '#708090',
+ snow: '#FFFAFA',
+ springgreen: '#00FF7F',
+ steelblue: '#4682B4',
+ tan: '#D2B48C',
+ thistle: '#D8BFD8',
+ tomato: '#FF6347',
+ turquoise: '#40E0D0',
+ violet: '#EE82EE',
+ wheat: '#F5DEB3',
+ whitesmoke: '#F5F5F5',
+ yellowgreen: '#9ACD32'
+ };
+
+
+ function getRgbHslContent(styleString) {
+ var start = styleString.indexOf('(', 3);
+ var end = styleString.indexOf(')', start + 1);
+ var parts = styleString.substring(start + 1, end).split(',');
+ // add alpha if needed
+ if (parts.length == 4 && styleString.substr(3, 1) == 'a') {
+ alpha = Number(parts[3]);
+ } else {
+ parts[3] = 1;
+ }
+ return parts;
+ }
+
+ function percent(s) {
+ return parseFloat(s) / 100;
+ }
+
+ function clamp(v, min, max) {
+ return Math.min(max, Math.max(min, v));
+ }
+
+ function hslToRgb(parts){
+ var r, g, b;
+ h = parseFloat(parts[0]) / 360 % 360;
+ if (h < 0)
+ h++;
+ s = clamp(percent(parts[1]), 0, 1);
+ l = clamp(percent(parts[2]), 0, 1);
+ if (s == 0) {
+ r = g = b = l; // achromatic
+ } else {
+ var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
+ var p = 2 * l - q;
+ r = hueToRgb(p, q, h + 1 / 3);
+ g = hueToRgb(p, q, h);
+ b = hueToRgb(p, q, h - 1 / 3);
+ }
+
+ return '#' + decToHex[Math.floor(r * 255)] +
+ decToHex[Math.floor(g * 255)] +
+ decToHex[Math.floor(b * 255)];
+ }
+
+ function hueToRgb(m1, m2, h) {
+ if (h < 0)
+ h++;
+ if (h > 1)
+ h--;
+
+ if (6 * h < 1)
+ return m1 + (m2 - m1) * 6 * h;
+ else if (2 * h < 1)
+ return m2;
+ else if (3 * h < 2)
+ return m1 + (m2 - m1) * (2 / 3 - h) * 6;
+ else
+ return m1;
+ }
+
+ function processStyle(styleString) {
+ var str, alpha = 1;
+
+ styleString = String(styleString);
+ if (styleString.charAt(0) == '#') {
+ str = styleString;
+ } else if (/^rgb/.test(styleString)) {
+ var parts = getRgbHslContent(styleString);
+ var str = '#', n;
+ for (var i = 0; i < 3; i++) {
+ if (parts[i].indexOf('%') != -1) {
+ n = Math.floor(percent(parts[i]) * 255);
+ } else {
+ n = Number(parts[i]);
+ }
+ str += decToHex[clamp(n, 0, 255)];
+ }
+ alpha = parts[3];
+ } else if (/^hsl/.test(styleString)) {
+ var parts = getRgbHslContent(styleString);
+ str = hslToRgb(parts);
+ alpha = parts[3];
+ } else {
+ str = colorData[styleString] || styleString;
+ }
+ return {color: str, alpha: alpha};
+ }
+
+ var DEFAULT_STYLE = {
+ style: 'normal',
+ variant: 'normal',
+ weight: 'normal',
+ size: 10,
+ family: 'sans-serif'
+ };
+
+ // Internal text style cache
+ var fontStyleCache = {};
+
+ function processFontStyle(styleString) {
+ if (fontStyleCache[styleString]) {
+ return fontStyleCache[styleString];
+ }
+
+ var el = document.createElement('div');
+ var style = el.style;
+ try {
+ style.font = styleString;
+ } catch (ex) {
+ // Ignore failures to set to invalid font.
+ }
+
+ return fontStyleCache[styleString] = {
+ style: style.fontStyle || DEFAULT_STYLE.style,
+ variant: style.fontVariant || DEFAULT_STYLE.variant,
+ weight: style.fontWeight || DEFAULT_STYLE.weight,
+ size: style.fontSize || DEFAULT_STYLE.size,
+ family: style.fontFamily || DEFAULT_STYLE.family
+ };
+ }
+
+ function getComputedStyle(style, element) {
+ var computedStyle = {};
+
+ for (var p in style) {
+ computedStyle[p] = style[p];
+ }
+
+ // Compute the size
+ var canvasFontSize = parseFloat(element.currentStyle.fontSize),
+ fontSize = parseFloat(style.size);
+
+ if (typeof style.size == 'number') {
+ computedStyle.size = style.size;
+ } else if (style.size.indexOf('px') != -1) {
+ computedStyle.size = fontSize;
+ } else if (style.size.indexOf('em') != -1) {
+ computedStyle.size = canvasFontSize * fontSize;
+ } else if(style.size.indexOf('%') != -1) {
+ computedStyle.size = (canvasFontSize / 100) * fontSize;
+ } else if (style.size.indexOf('pt') != -1) {
+ computedStyle.size = fontSize / .75;
+ } else {
+ computedStyle.size = canvasFontSize;
+ }
+
+ // Different scaling between normal text and VML text. This was found using
+ // trial and error to get the same size as non VML text.
+ computedStyle.size *= 0.981;
+
+ return computedStyle;
+ }
+
+ function buildStyle(style) {
+ return style.style + ' ' + style.variant + ' ' + style.weight + ' ' +
+ style.size + 'px ' + style.family;
+ }
+
+ function processLineCap(lineCap) {
+ switch (lineCap) {
+ case 'butt':
+ return 'flat';
+ case 'round':
+ return 'round';
+ case 'square':
+ default:
+ return 'square';
+ }
+ }
+
+ /**
+ * This class implements CanvasRenderingContext2D interface as described by
+ * the WHATWG.
+ * @param {HTMLElement} surfaceElement The element that the 2D context should
+ * be associated with
+ */
+ function CanvasRenderingContext2D_(surfaceElement) {
+ this.m_ = createMatrixIdentity();
+
+ this.mStack_ = [];
+ this.aStack_ = [];
+ this.currentPath_ = [];
+
+ // Canvas context properties
+ this.strokeStyle = '#000';
+ this.fillStyle = '#000';
+
+ this.lineWidth = 1;
+ this.lineJoin = 'miter';
+ this.lineCap = 'butt';
+ this.miterLimit = Z * 1;
+ this.globalAlpha = 1;
+ this.font = '10px sans-serif';
+ this.textAlign = 'left';
+ this.textBaseline = 'alphabetic';
+ this.canvas = surfaceElement;
+
+ var el = surfaceElement.ownerDocument.createElement('div');
+ el.style.width = surfaceElement.clientWidth + 'px';
+ el.style.height = surfaceElement.clientHeight + 'px';
+ el.style.overflow = 'hidden';
+ el.style.position = 'absolute';
+ surfaceElement.appendChild(el);
+
+ this.element_ = el;
+ this.arcScaleX_ = 1;
+ this.arcScaleY_ = 1;
+ this.lineScale_ = 1;
+ }
+
+ var contextPrototype = CanvasRenderingContext2D_.prototype;
+ contextPrototype.clearRect = function() {
+ if (this.textMeasureEl_) {
+ this.textMeasureEl_.removeNode(true);
+ this.textMeasureEl_ = null;
+ }
+ this.element_.innerHTML = '';
+ };
+
+ contextPrototype.beginPath = function() {
+ // TODO: Branch current matrix so that save/restore has no effect
+ // as per safari docs.
+ this.currentPath_ = [];
+ };
+
+ contextPrototype.moveTo = function(aX, aY) {
+ var p = this.getCoords_(aX, aY);
+ this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y});
+ this.currentX_ = p.x;
+ this.currentY_ = p.y;
+ };
+
+ contextPrototype.lineTo = function(aX, aY) {
+ var p = this.getCoords_(aX, aY);
+ this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y});
+
+ this.currentX_ = p.x;
+ this.currentY_ = p.y;
+ };
+
+ contextPrototype.bezierCurveTo = function(aCP1x, aCP1y,
+ aCP2x, aCP2y,
+ aX, aY) {
+ var p = this.getCoords_(aX, aY);
+ var cp1 = this.getCoords_(aCP1x, aCP1y);
+ var cp2 = this.getCoords_(aCP2x, aCP2y);
+ bezierCurveTo(this, cp1, cp2, p);
+ };
+
+ // Helper function that takes the already fixed cordinates.
+ function bezierCurveTo(self, cp1, cp2, p) {
+ self.currentPath_.push({
+ type: 'bezierCurveTo',
+ cp1x: cp1.x,
+ cp1y: cp1.y,
+ cp2x: cp2.x,
+ cp2y: cp2.y,
+ x: p.x,
+ y: p.y
+ });
+ self.currentX_ = p.x;
+ self.currentY_ = p.y;
+ }
+
+ contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) {
+ // the following is lifted almost directly from
+ // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes
+
+ var cp = this.getCoords_(aCPx, aCPy);
+ var p = this.getCoords_(aX, aY);
+
+ var cp1 = {
+ x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_),
+ y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_)
+ };
+ var cp2 = {
+ x: cp1.x + (p.x - this.currentX_) / 3.0,
+ y: cp1.y + (p.y - this.currentY_) / 3.0
+ };
+
+ bezierCurveTo(this, cp1, cp2, p);
+ };
+
+ contextPrototype.arc = function(aX, aY, aRadius,
+ aStartAngle, aEndAngle, aClockwise) {
+ aRadius *= Z;
+ var arcType = aClockwise ? 'at' : 'wa';
+
+ var xStart = aX + mc(aStartAngle) * aRadius - Z2;
+ var yStart = aY + ms(aStartAngle) * aRadius - Z2;
+
+ var xEnd = aX + mc(aEndAngle) * aRadius - Z2;
+ var yEnd = aY + ms(aEndAngle) * aRadius - Z2;
+
+ // IE won't render arches drawn counter clockwise if xStart == xEnd.
+ if (xStart == xEnd && !aClockwise) {
+ xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something
+ // that can be represented in binary
+ }
+
+ var p = this.getCoords_(aX, aY);
+ var pStart = this.getCoords_(xStart, yStart);
+ var pEnd = this.getCoords_(xEnd, yEnd);
+
+ this.currentPath_.push({type: arcType,
+ x: p.x,
+ y: p.y,
+ radius: aRadius,
+ xStart: pStart.x,
+ yStart: pStart.y,
+ xEnd: pEnd.x,
+ yEnd: pEnd.y});
+
+ };
+
+ contextPrototype.rect = function(aX, aY, aWidth, aHeight) {
+ this.moveTo(aX, aY);
+ this.lineTo(aX + aWidth, aY);
+ this.lineTo(aX + aWidth, aY + aHeight);
+ this.lineTo(aX, aY + aHeight);
+ this.closePath();
+ };
+
+ contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) {
+ var oldPath = this.currentPath_;
+ this.beginPath();
+
+ this.moveTo(aX, aY);
+ this.lineTo(aX + aWidth, aY);
+ this.lineTo(aX + aWidth, aY + aHeight);
+ this.lineTo(aX, aY + aHeight);
+ this.closePath();
+ this.stroke();
+
+ this.currentPath_ = oldPath;
+ };
+
+ contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) {
+ var oldPath = this.currentPath_;
+ this.beginPath();
+
+ this.moveTo(aX, aY);
+ this.lineTo(aX + aWidth, aY);
+ this.lineTo(aX + aWidth, aY + aHeight);
+ this.lineTo(aX, aY + aHeight);
+ this.closePath();
+ this.fill();
+
+ this.currentPath_ = oldPath;
+ };
+
+ contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) {
+ var gradient = new CanvasGradient_('gradient');
+ gradient.x0_ = aX0;
+ gradient.y0_ = aY0;
+ gradient.x1_ = aX1;
+ gradient.y1_ = aY1;
+ return gradient;
+ };
+
+ contextPrototype.createRadialGradient = function(aX0, aY0, aR0,
+ aX1, aY1, aR1) {
+ var gradient = new CanvasGradient_('gradientradial');
+ gradient.x0_ = aX0;
+ gradient.y0_ = aY0;
+ gradient.r0_ = aR0;
+ gradient.x1_ = aX1;
+ gradient.y1_ = aY1;
+ gradient.r1_ = aR1;
+ return gradient;
+ };
+
+ contextPrototype.drawImage = function(image, var_args) {
+ var dx, dy, dw, dh, sx, sy, sw, sh;
+
+ // to find the original width we overide the width and height
+ var oldRuntimeWidth = image.runtimeStyle.width;
+ var oldRuntimeHeight = image.runtimeStyle.height;
+ image.runtimeStyle.width = 'auto';
+ image.runtimeStyle.height = 'auto';
+
+ // get the original size
+ var w = image.width;
+ var h = image.height;
+
+ // and remove overides
+ image.runtimeStyle.width = oldRuntimeWidth;
+ image.runtimeStyle.height = oldRuntimeHeight;
+
+ if (arguments.length == 3) {
+ dx = arguments[1];
+ dy = arguments[2];
+ sx = sy = 0;
+ sw = dw = w;
+ sh = dh = h;
+ } else if (arguments.length == 5) {
+ dx = arguments[1];
+ dy = arguments[2];
+ dw = arguments[3];
+ dh = arguments[4];
+ sx = sy = 0;
+ sw = w;
+ sh = h;
+ } else if (arguments.length == 9) {
+ sx = arguments[1];
+ sy = arguments[2];
+ sw = arguments[3];
+ sh = arguments[4];
+ dx = arguments[5];
+ dy = arguments[6];
+ dw = arguments[7];
+ dh = arguments[8];
+ } else {
+ throw Error('Invalid number of arguments');
+ }
+
+ var d = this.getCoords_(dx, dy);
+
+ var w2 = sw / 2;
+ var h2 = sh / 2;
+
+ var vmlStr = [];
+
+ var W = 10;
+ var H = 10;
+
+ // For some reason that I've now forgotten, using divs didn't work
+ vmlStr.push(' <g_vml_:group',
+ ' coordsize="', Z * W, ',', Z * H, '"',
+ ' coordorigin="0,0"' ,
+ ' style="width:', W, 'px;height:', H, 'px;position:absolute;');
+
+ // If filters are necessary (rotation exists), create them
+ // filters are bog-slow, so only create them if abbsolutely necessary
+ // The following check doesn't account for skews (which don't exist
+ // in the canvas spec (yet) anyway.
+
+ if (this.m_[0][0] != 1 || this.m_[0][1] ||
+ this.m_[1][1] != 1 || this.m_[1][0]) {
+ var filter = [];
+
+ // Note the 12/21 reversal
+ filter.push('M11=', this.m_[0][0], ',',
+ 'M12=', this.m_[1][0], ',',
+ 'M21=', this.m_[0][1], ',',
+ 'M22=', this.m_[1][1], ',',
+ 'Dx=', mr(d.x / Z), ',',
+ 'Dy=', mr(d.y / Z), '');
+
+ // Bounding box calculation (need to minimize displayed area so that
+ // filters don't waste time on unused pixels.
+ var max = d;
+ var c2 = this.getCoords_(dx + dw, dy);
+ var c3 = this.getCoords_(dx, dy + dh);
+ var c4 = this.getCoords_(dx + dw, dy + dh);
+
+ max.x = m.max(max.x, c2.x, c3.x, c4.x);
+ max.y = m.max(max.y, c2.y, c3.y, c4.y);
+
+ vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z),
+ 'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(',
+ filter.join(''), ", sizingmethod='clip');");
+
+ } else {
+ vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;');
+ }
+
+ vmlStr.push(' ">' ,
+ '<g_vml_:image src="', image.src, '"',
+ ' style="width:', Z * dw, 'px;',
+ ' height:', Z * dh, 'px"',
+ ' cropleft="', sx / w, '"',
+ ' croptop="', sy / h, '"',
+ ' cropright="', (w - sx - sw) / w, '"',
+ ' cropbottom="', (h - sy - sh) / h, '"',
+ ' />',
+ '</g_vml_:group>');
+
+ this.element_.insertAdjacentHTML('BeforeEnd', vmlStr.join(''));
+ };
+
+ contextPrototype.stroke = function(aFill) {
+ var W = 10;
+ var H = 10;
+ // Divide the shape into chunks if it's too long because IE has a limit
+ // somewhere for how long a VML shape can be. This simple division does
+ // not work with fills, only strokes, unfortunately.
+ var chunkSize = 5000;
+
+ var min = {x: null, y: null};
+ var max = {x: null, y: null};
+
+ for (var j = 0; j < this.currentPath_.length; j += chunkSize) {
+ var lineStr = [];
+ var lineOpen = false;
+
+ lineStr.push('<g_vml_:shape',
+ ' filled="', !!aFill, '"',
+ ' style="position:absolute;width:', W, 'px;height:', H, 'px;"',
+ ' coordorigin="0,0"',
+ ' coordsize="', Z * W, ',', Z * H, '"',
+ ' stroked="', !aFill, '"',
+ ' path="');
+
+ var newSeq = false;
+
+ for (var i = j; i < Math.min(j + chunkSize, this.currentPath_.length); i++) {
+ if (i % chunkSize == 0 && i > 0) { // move into position for next chunk
+ lineStr.push(' m ', mr(this.currentPath_[i-1].x), ',', mr(this.currentPath_[i-1].y));
+ }
+
+ var p = this.currentPath_[i];
+ var c;
+
+ switch (p.type) {
+ case 'moveTo':
+ c = p;
+ lineStr.push(' m ', mr(p.x), ',', mr(p.y));
+ break;
+ case 'lineTo':
+ lineStr.push(' l ', mr(p.x), ',', mr(p.y));
+ break;
+ case 'close':
+ lineStr.push(' x ');
+ p = null;
+ break;
+ case 'bezierCurveTo':
+ lineStr.push(' c ',
+ mr(p.cp1x), ',', mr(p.cp1y), ',',
+ mr(p.cp2x), ',', mr(p.cp2y), ',',
+ mr(p.x), ',', mr(p.y));
+ break;
+ case 'at':
+ case 'wa':
+ lineStr.push(' ', p.type, ' ',
+ mr(p.x - this.arcScaleX_ * p.radius), ',',
+ mr(p.y - this.arcScaleY_ * p.radius), ' ',
+ mr(p.x + this.arcScaleX_ * p.radius), ',',
+ mr(p.y + this.arcScaleY_ * p.radius), ' ',
+ mr(p.xStart), ',', mr(p.yStart), ' ',
+ mr(p.xEnd), ',', mr(p.yEnd));
+ break;
+ }
+
+
+ // TODO: Following is broken for curves due to
+ // move to proper paths.
+
+ // Figure out dimensions so we can do gradient fills
+ // properly
+ if (p) {
+ if (min.x == null || p.x < min.x) {
+ min.x = p.x;
+ }
+ if (max.x == null || p.x > max.x) {
+ max.x = p.x;
+ }
+ if (min.y == null || p.y < min.y) {
+ min.y = p.y;
+ }
+ if (max.y == null || p.y > max.y) {
+ max.y = p.y;
+ }
+ }
+ }
+ lineStr.push(' ">');
+
+ if (!aFill) {
+ appendStroke(this, lineStr);
+ } else {
+ appendFill(this, lineStr, min, max);
+ }
+
+ lineStr.push('</g_vml_:shape>');
+
+ this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));
+ }
+ };
+
+ function appendStroke(ctx, lineStr) {
+ var a = processStyle(ctx.strokeStyle);
+ var color = a.color;
+ var opacity = a.alpha * ctx.globalAlpha;
+ var lineWidth = ctx.lineScale_ * ctx.lineWidth;
+
+ // VML cannot correctly render a line if the width is less than 1px.
+ // In that case, we dilute the color to make the line look thinner.
+ if (lineWidth < 1) {
+ opacity *= lineWidth;
+ }
+
+ lineStr.push(
+ '<g_vml_:stroke',
+ ' opacity="', opacity, '"',
+ ' joinstyle="', ctx.lineJoin, '"',
+ ' miterlimit="', ctx.miterLimit, '"',
+ ' endcap="', processLineCap(ctx.lineCap), '"',
+ ' weight="', lineWidth, 'px"',
+ ' color="', color, '" />'
+ );
+ }
+
+ function appendFill(ctx, lineStr, min, max) {
+ var fillStyle = ctx.fillStyle;
+ var arcScaleX = ctx.arcScaleX_;
+ var arcScaleY = ctx.arcScaleY_;
+ var width = max.x - min.x;
+ var height = max.y - min.y;
+ if (fillStyle instanceof CanvasGradient_) {
+ // TODO: Gradients transformed with the transformation matrix.
+ var angle = 0;
+ var focus = {x: 0, y: 0};
+
+ // additional offset
+ var shift = 0;
+ // scale factor for offset
+ var expansion = 1;
+
+ if (fillStyle.type_ == 'gradient') {
+ var x0 = fillStyle.x0_ / arcScaleX;
+ var y0 = fillStyle.y0_ / arcScaleY;
+ var x1 = fillStyle.x1_ / arcScaleX;
+ var y1 = fillStyle.y1_ / arcScaleY;
+ var p0 = ctx.getCoords_(x0, y0);
+ var p1 = ctx.getCoords_(x1, y1);
+ var dx = p1.x - p0.x;
+ var dy = p1.y - p0.y;
+ angle = Math.atan2(dx, dy) * 180 / Math.PI;
+
+ // The angle should be a non-negative number.
+ if (angle < 0) {
+ angle += 360;
+ }
+
+ // Very small angles produce an unexpected result because they are
+ // converted to a scientific notation string.
+ if (angle < 1e-6) {
+ angle = 0;
+ }
+ } else {
+ var p0 = ctx.getCoords_(fillStyle.x0_, fillStyle.y0_);
+ focus = {
+ x: (p0.x - min.x) / width,
+ y: (p0.y - min.y) / height
+ };
+
+ width /= arcScaleX * Z;
+ height /= arcScaleY * Z;
+ var dimension = m.max(width, height);
+ shift = 2 * fillStyle.r0_ / dimension;
+ expansion = 2 * fillStyle.r1_ / dimension - shift;
+ }
+
+ // We need to sort the color stops in ascending order by offset,
+ // otherwise IE won't interpret it correctly.
+ var stops = fillStyle.colors_;
+ stops.sort(function(cs1, cs2) {
+ return cs1.offset - cs2.offset;
+ });
+
+ var length = stops.length;
+ var color1 = stops[0].color;
+ var color2 = stops[length - 1].color;
+ var opacity1 = stops[0].alpha * ctx.globalAlpha;
+ var opacity2 = stops[length - 1].alpha * ctx.globalAlpha;
+
+ var colors = [];
+ for (var i = 0; i < length; i++) {
+ var stop = stops[i];
+ colors.push(stop.offset * expansion + shift + ' ' + stop.color);
+ }
+
+ // When colors attribute is used, the meanings of opacity and o:opacity2
+ // are reversed.
+ lineStr.push('<g_vml_:fill type="', fillStyle.type_, '"',
+ ' method="none" focus="100%"',
+ ' color="', color1, '"',
+ ' color2="', color2, '"',
+ ' colors="', colors.join(','), '"',
+ ' opacity="', opacity2, '"',
+ ' g_o_:opacity2="', opacity1, '"',
+ ' angle="', angle, '"',
+ ' focusposition="', focus.x, ',', focus.y, '" />');
+ } else if (fillStyle instanceof CanvasPattern_) {
+ if (width && height) {
+ var deltaLeft = -min.x;
+ var deltaTop = -min.y;
+ lineStr.push('<g_vml_:fill',
+ ' position="',
+ deltaLeft / width * arcScaleX * arcScaleX, ',',
+ deltaTop / height * arcScaleY * arcScaleY, '"',
+ ' type="tile"',
+ // TODO: Figure out the correct size to fit the scale.
+ //' size="', w, 'px ', h, 'px"',
+ ' src="', fillStyle.src_, '" />');
+ }
+ } else {
+ var a = processStyle(ctx.fillStyle);
+ var color = a.color;
+ var opacity = a.alpha * ctx.globalAlpha;
+ lineStr.push('<g_vml_:fill color="', color, '" opacity="', opacity,
+ '" />');
+ }
+ }
+
+ contextPrototype.fill = function() {
+ this.stroke(true);
+ };
+
+ contextPrototype.closePath = function() {
+ this.currentPath_.push({type: 'close'});
+ };
+
+ /**
+ * @private
+ */
+ contextPrototype.getCoords_ = function(aX, aY) {
+ var m = this.m_;
+ return {
+ x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2,
+ y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2
+ };
+ };
+
+ contextPrototype.save = function() {
+ var o = {};
+ copyState(this, o);
+ this.aStack_.push(o);
+ this.mStack_.push(this.m_);
+ this.m_ = matrixMultiply(createMatrixIdentity(), this.m_);
+ };
+
+ contextPrototype.restore = function() {
+ if (this.aStack_.length) {
+ copyState(this.aStack_.pop(), this);
+ this.m_ = this.mStack_.pop();
+ }
+ };
+
+ function matrixIsFinite(m) {
+ return isFinite(m[0][0]) && isFinite(m[0][1]) &&
+ isFinite(m[1][0]) && isFinite(m[1][1]) &&
+ isFinite(m[2][0]) && isFinite(m[2][1]);
+ }
+
+ function setM(ctx, m, updateLineScale) {
+ if (!matrixIsFinite(m)) {
+ return;
+ }
+ ctx.m_ = m;
+
+ if (updateLineScale) {
+ // Get the line scale.
+ // Determinant of this.m_ means how much the area is enlarged by the
+ // transformation. So its square root can be used as a scale factor
+ // for width.
+ var det = m[0][0] * m[1][1] - m[0][1] * m[1][0];
+ ctx.lineScale_ = sqrt(abs(det));
+ }
+ }
+
+ contextPrototype.translate = function(aX, aY) {
+ var m1 = [
+ [1, 0, 0],
+ [0, 1, 0],
+ [aX, aY, 1]
+ ];
+
+ setM(this, matrixMultiply(m1, this.m_), false);
+ };
+
+ contextPrototype.rotate = function(aRot) {
+ var c = mc(aRot);
+ var s = ms(aRot);
+
+ var m1 = [
+ [c, s, 0],
+ [-s, c, 0],
+ [0, 0, 1]
+ ];
+
+ setM(this, matrixMultiply(m1, this.m_), false);
+ };
+
+ contextPrototype.scale = function(aX, aY) {
+ this.arcScaleX_ *= aX;
+ this.arcScaleY_ *= aY;
+ var m1 = [
+ [aX, 0, 0],
+ [0, aY, 0],
+ [0, 0, 1]
+ ];
+
+ setM(this, matrixMultiply(m1, this.m_), true);
+ };
+
+ contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) {
+ var m1 = [
+ [m11, m12, 0],
+ [m21, m22, 0],
+ [dx, dy, 1]
+ ];
+
+ setM(this, matrixMultiply(m1, this.m_), true);
+ };
+
+ contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) {
+ var m = [
+ [m11, m12, 0],
+ [m21, m22, 0],
+ [dx, dy, 1]
+ ];
+
+ setM(this, m, true);
+ };
+
+ /**
+ * The text drawing function.
+ * The maxWidth argument isn't taken in account, since no browser supports
+ * it yet.
+ */
+ contextPrototype.drawText_ = function(text, x, y, maxWidth, stroke) {
+ var m = this.m_,
+ delta = 1000,
+ left = 0,
+ right = delta,
+ offset = {x: 0, y: 0},
+ lineStr = [];
+
+ var fontStyle = getComputedStyle(processFontStyle(this.font),
+ this.element_);
+
+ var fontStyleString = buildStyle(fontStyle);
+
+ var elementStyle = this.element_.currentStyle;
+ var textAlign = this.textAlign.toLowerCase();
+ switch (textAlign) {
+ case 'left':
+ case 'center':
+ case 'right':
+ break;
+ case 'end':
+ textAlign = elementStyle.direction == 'ltr' ? 'right' : 'left';
+ break;
+ case 'start':
+ textAlign = elementStyle.direction == 'rtl' ? 'right' : 'left';
+ break;
+ default:
+ textAlign = 'left';
+ }
+
+ // 1.75 is an arbitrary number, as there is no info about the text baseline
+ switch (this.textBaseline) {
+ case 'hanging':
+ case 'top':
+ offset.y = fontStyle.size / 1.75;
+ break;
+ case 'middle':
+ break;
+ default:
+ case null:
+ case 'alphabetic':
+ case 'ideographic':
+ case 'bottom':
+ offset.y = -fontStyle.size / 2.25;
+ break;
+ }
+
+ switch(textAlign) {
+ case 'right':
+ left = delta;
+ right = 0.05;
+ break;
+ case 'center':
+ left = right = delta / 2;
+ break;
+ }
+
+ var d = this.getCoords_(x + offset.x, y + offset.y);
+
+ lineStr.push('<g_vml_:line from="', -left ,' 0" to="', right ,' 0.05" ',
+ ' coordsize="100 100" coordorigin="0 0"',
+ ' filled="', !stroke, '" stroked="', !!stroke,
+ '" style="position:absolute;width:1px;height:1px;">');
+
+ if (stroke) {
+ appendStroke(this, lineStr);
+ } else {
+ // TODO: Fix the min and max params.
+ appendFill(this, lineStr, {x: -left, y: 0},
+ {x: right, y: fontStyle.size});
+ }
+
+ var skewM = m[0][0].toFixed(3) + ',' + m[1][0].toFixed(3) + ',' +
+ m[0][1].toFixed(3) + ',' + m[1][1].toFixed(3) + ',0,0';
+
+ var skewOffset = mr(d.x / Z) + ',' + mr(d.y / Z);
+
+ lineStr.push('<g_vml_:skew on="t" matrix="', skewM ,'" ',
+ ' offset="', skewOffset, '" origin="', left ,' 0" />',
+ '<g_vml_:path textpathok="true" />',
+ '<g_vml_:textpath on="true" string="',
+ encodeHtmlAttribute(text),
+ '" style="v-text-align:', textAlign,
+ ';font:', encodeHtmlAttribute(fontStyleString),
+ '" /></g_vml_:line>');
+
+ this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));
+ };
+
+ contextPrototype.fillText = function(text, x, y, maxWidth) {
+ this.drawText_(text, x, y, maxWidth, false);
+ };
+
+ contextPrototype.strokeText = function(text, x, y, maxWidth) {
+ this.drawText_(text, x, y, maxWidth, true);
+ };
+
+ contextPrototype.measureText = function(text) {
+ if (!this.textMeasureEl_) {
+ var s = '<span style="position:absolute;' +
+ 'top:-20000px;left:0;padding:0;margin:0;border:none;' +
+ 'white-space:pre;"></span>';
+ this.element_.insertAdjacentHTML('beforeEnd', s);
+ this.textMeasureEl_ = this.element_.lastChild;
+ }
+ var doc = this.element_.ownerDocument;
+ this.textMeasureEl_.innerHTML = '';
+ this.textMeasureEl_.style.font = this.font;
+ // Don't use innerHTML or innerText because they allow markup/whitespace.
+ this.textMeasureEl_.appendChild(doc.createTextNode(text));
+ return {width: this.textMeasureEl_.offsetWidth};
+ };
+
+ /******** STUBS ********/
+ contextPrototype.clip = function() {
+ // TODO: Implement
+ };
+
+ contextPrototype.arcTo = function() {
+ // TODO: Implement
+ };
+
+ contextPrototype.createPattern = function(image, repetition) {
+ return new CanvasPattern_(image, repetition);
+ };
+
+ // Gradient / Pattern Stubs
+ function CanvasGradient_(aType) {
+ this.type_ = aType;
+ this.x0_ = 0;
+ this.y0_ = 0;
+ this.r0_ = 0;
+ this.x1_ = 0;
+ this.y1_ = 0;
+ this.r1_ = 0;
+ this.colors_ = [];
+ }
+
+ CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) {
+ aColor = processStyle(aColor);
+ this.colors_.push({offset: aOffset,
+ color: aColor.color,
+ alpha: aColor.alpha});
+ };
+
+ function CanvasPattern_(image, repetition) {
+ assertImageIsValid(image);
+ switch (repetition) {
+ case 'repeat':
+ case null:
+ case '':
+ this.repetition_ = 'repeat';
+ break
+ case 'repeat-x':
+ case 'repeat-y':
+ case 'no-repeat':
+ this.repetition_ = repetition;
+ break;
+ default:
+ throwException('SYNTAX_ERR');
+ }
+
+ this.src_ = image.src;
+ this.width_ = image.width;
+ this.height_ = image.height;
+ }
+
+ function throwException(s) {
+ throw new DOMException_(s);
+ }
+
+ function assertImageIsValid(img) {
+ if (!img || img.nodeType != 1 || img.tagName != 'IMG') {
+ throwException('TYPE_MISMATCH_ERR');
+ }
+ if (img.readyState != 'complete') {
+ throwException('INVALID_STATE_ERR');
+ }
+ }
+
+ function DOMException_(s) {
+ this.code = this[s];
+ this.message = s +': DOM Exception ' + this.code;
+ }
+ var p = DOMException_.prototype = new Error;
+ p.INDEX_SIZE_ERR = 1;
+ p.DOMSTRING_SIZE_ERR = 2;
+ p.HIERARCHY_REQUEST_ERR = 3;
+ p.WRONG_DOCUMENT_ERR = 4;
+ p.INVALID_CHARACTER_ERR = 5;
+ p.NO_DATA_ALLOWED_ERR = 6;
+ p.NO_MODIFICATION_ALLOWED_ERR = 7;
+ p.NOT_FOUND_ERR = 8;
+ p.NOT_SUPPORTED_ERR = 9;
+ p.INUSE_ATTRIBUTE_ERR = 10;
+ p.INVALID_STATE_ERR = 11;
+ p.SYNTAX_ERR = 12;
+ p.INVALID_MODIFICATION_ERR = 13;
+ p.NAMESPACE_ERR = 14;
+ p.INVALID_ACCESS_ERR = 15;
+ p.VALIDATION_ERR = 16;
+ p.TYPE_MISMATCH_ERR = 17;
+
+ // set up externs
+ G_vmlCanvasManager = G_vmlCanvasManager_;
+ CanvasRenderingContext2D = CanvasRenderingContext2D_;
+ CanvasGradient = CanvasGradient_;
+ CanvasPattern = CanvasPattern_;
+ DOMException = DOMException_;
+})();
+
+} // if
+
--- /dev/null
+++ b/js/flot/excanvas.min.js
@@ -1,1 +1,1 @@
-
+if(!document.createElement("canvas").getContext){(function(){var z=Math;var K=z.round;var J=z.sin;var U=z.cos;var b=z.abs;var k=z.sqrt;var D=10;var F=D/2;function T(){return this.context_||(this.context_=new W(this))}var O=Array.prototype.slice;function G(i,j,m){var Z=O.call(arguments,2);return function(){return i.apply(j,Z.concat(O.call(arguments)))}}function AD(Z){return String(Z).replace(/&/g,"&").replace(/"/g,""")}function r(i){if(!i.namespaces.g_vml_){i.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml","#default#VML")}if(!i.namespaces.g_o_){i.namespaces.add("g_o_","urn:schemas-microsoft-com:office:office","#default#VML")}if(!i.styleSheets.ex_canvas_){var Z=i.createStyleSheet();Z.owningElement.id="ex_canvas_";Z.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}r(document);var E={init:function(Z){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var i=Z||document;i.createElement("canvas");i.attachEvent("onreadystatechange",G(this.init_,this,i))}},init_:function(m){var j=m.getElementsByTagName("canvas");for(var Z=0;Z<j.length;Z++){this.initElement(j[Z])}},initElement:function(i){if(!i.getContext){i.getContext=T;r(i.ownerDocument);i.innerHTML="";i.attachEvent("onpropertychange",S);i.attachEvent("onresize",w);var Z=i.attributes;if(Z.width&&Z.width.specified){i.style.width=Z.width.nodeValue+"px"}else{i.width=i.clientWidth}if(Z.height&&Z.height.specified){i.style.height=Z.height.nodeValue+"px"}else{i.height=i.clientHeight}}return i}};function S(i){var Z=i.srcElement;switch(i.propertyName){case"width":Z.getContext().clearRect();Z.style.width=Z.attributes.width.nodeValue+"px";Z.firstChild.style.width=Z.clientWidth+"px";break;case"height":Z.getContext().clearRect();Z.style.height=Z.attributes.height.nodeValue+"px";Z.firstChild.style.height=Z.clientHeight+"px";break}}function w(i){var Z=i.srcElement;if(Z.firstChild){Z.firstChild.style.width=Z.clientWidth+"px";Z.firstChild.style.height=Z.clientHeight+"px"}}E.init();var I=[];for(var AC=0;AC<16;AC++){for(var AB=0;AB<16;AB++){I[AC*16+AB]=AC.toString(16)+AB.toString(16)}}function V(){return[[1,0,0],[0,1,0],[0,0,1]]}function d(m,j){var i=V();for(var Z=0;Z<3;Z++){for(var AF=0;AF<3;AF++){var p=0;for(var AE=0;AE<3;AE++){p+=m[Z][AE]*j[AE][AF]}i[Z][AF]=p}}return i}function Q(i,Z){Z.fillStyle=i.fillStyle;Z.lineCap=i.lineCap;Z.lineJoin=i.lineJoin;Z.lineWidth=i.lineWidth;Z.miterLimit=i.miterLimit;Z.shadowBlur=i.shadowBlur;Z.shadowColor=i.shadowColor;Z.shadowOffsetX=i.shadowOffsetX;Z.shadowOffsetY=i.shadowOffsetY;Z.strokeStyle=i.strokeStyle;Z.globalAlpha=i.globalAlpha;Z.font=i.font;Z.textAlign=i.textAlign;Z.textBaseline=i.textBaseline;Z.arcScaleX_=i.arcScaleX_;Z.arcScaleY_=i.arcScaleY_;Z.lineScale_=i.lineScale_}var B={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",grey:"#808080",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",oldlace:"#FDF5E6",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",whitesmoke:"#F5F5F5",yellowgreen:"#9ACD32"};function g(i){var m=i.indexOf("(",3);var Z=i.indexOf(")",m+1);var j=i.substring(m+1,Z).split(",");if(j.length==4&&i.substr(3,1)=="a"){alpha=Number(j[3])}else{j[3]=1}return j}function C(Z){return parseFloat(Z)/100}function N(i,j,Z){return Math.min(Z,Math.max(j,i))}function c(AF){var j,i,Z;h=parseFloat(AF[0])/360%360;if(h<0){h++}s=N(C(AF[1]),0,1);l=N(C(AF[2]),0,1);if(s==0){j=i=Z=l}else{var m=l<0.5?l*(1+s):l+s-l*s;var AE=2*l-m;j=A(AE,m,h+1/3);i=A(AE,m,h);Z=A(AE,m,h-1/3)}return"#"+I[Math.floor(j*255)]+I[Math.floor(i*255)]+I[Math.floor(Z*255)]}function A(i,Z,j){if(j<0){j++}if(j>1){j--}if(6*j<1){return i+(Z-i)*6*j}else{if(2*j<1){return Z}else{if(3*j<2){return i+(Z-i)*(2/3-j)*6}else{return i}}}}function Y(Z){var AE,p=1;Z=String(Z);if(Z.charAt(0)=="#"){AE=Z}else{if(/^rgb/.test(Z)){var m=g(Z);var AE="#",AF;for(var j=0;j<3;j++){if(m[j].indexOf("%")!=-1){AF=Math.floor(C(m[j])*255)}else{AF=Number(m[j])}AE+=I[N(AF,0,255)]}p=m[3]}else{if(/^hsl/.test(Z)){var m=g(Z);AE=c(m);p=m[3]}else{AE=B[Z]||Z}}}return{color:AE,alpha:p}}var L={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};var f={};function X(Z){if(f[Z]){return f[Z]}var m=document.createElement("div");var j=m.style;try{j.font=Z}catch(i){}return f[Z]={style:j.fontStyle||L.style,variant:j.fontVariant||L.variant,weight:j.fontWeight||L.weight,size:j.fontSize||L.size,family:j.fontFamily||L.family}}function P(j,i){var Z={};for(var AF in j){Z[AF]=j[AF]}var AE=parseFloat(i.currentStyle.fontSize),m=parseFloat(j.size);if(typeof j.size=="number"){Z.size=j.size}else{if(j.size.indexOf("px")!=-1){Z.size=m}else{if(j.size.indexOf("em")!=-1){Z.size=AE*m}else{if(j.size.indexOf("%")!=-1){Z.size=(AE/100)*m}else{if(j.size.indexOf("pt")!=-1){Z.size=m/0.75}else{Z.size=AE}}}}}Z.size*=0.981;return Z}function AA(Z){return Z.style+" "+Z.variant+" "+Z.weight+" "+Z.size+"px "+Z.family}function t(Z){switch(Z){case"butt":return"flat";case"round":return"round";case"square":default:return"square"}}function W(i){this.m_=V();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=D*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=i;var Z=i.ownerDocument.createElement("div");Z.style.width=i.clientWidth+"px";Z.style.height=i.clientHeight+"px";Z.style.overflow="hidden";Z.style.position="absolute";i.appendChild(Z);this.element_=Z;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var M=W.prototype;M.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=""};M.beginPath=function(){this.currentPath_=[]};M.moveTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"moveTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.lineTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"lineTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.bezierCurveTo=function(j,i,AI,AH,AG,AE){var Z=this.getCoords_(AG,AE);var AF=this.getCoords_(j,i);var m=this.getCoords_(AI,AH);e(this,AF,m,Z)};function e(Z,m,j,i){Z.currentPath_.push({type:"bezierCurveTo",cp1x:m.x,cp1y:m.y,cp2x:j.x,cp2y:j.y,x:i.x,y:i.y});Z.currentX_=i.x;Z.currentY_=i.y}M.quadraticCurveTo=function(AG,j,i,Z){var AF=this.getCoords_(AG,j);var AE=this.getCoords_(i,Z);var AH={x:this.currentX_+2/3*(AF.x-this.currentX_),y:this.currentY_+2/3*(AF.y-this.currentY_)};var m={x:AH.x+(AE.x-this.currentX_)/3,y:AH.y+(AE.y-this.currentY_)/3};e(this,AH,m,AE)};M.arc=function(AJ,AH,AI,AE,i,j){AI*=D;var AN=j?"at":"wa";var AK=AJ+U(AE)*AI-F;var AM=AH+J(AE)*AI-F;var Z=AJ+U(i)*AI-F;var AL=AH+J(i)*AI-F;if(AK==Z&&!j){AK+=0.125}var m=this.getCoords_(AJ,AH);var AG=this.getCoords_(AK,AM);var AF=this.getCoords_(Z,AL);this.currentPath_.push({type:AN,x:m.x,y:m.y,radius:AI,xStart:AG.x,yStart:AG.y,xEnd:AF.x,yEnd:AF.y})};M.rect=function(j,i,Z,m){this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath()};M.strokeRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.stroke();this.currentPath_=p};M.fillRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.fill();this.currentPath_=p};M.createLinearGradient=function(i,m,Z,j){var p=new v("gradient");p.x0_=i;p.y0_=m;p.x1_=Z;p.y1_=j;return p};M.createRadialGradient=function(m,AE,j,i,p,Z){var AF=new v("gradientradial");AF.x0_=m;AF.y0_=AE;AF.r0_=j;AF.x1_=i;AF.y1_=p;AF.r1_=Z;return AF};M.drawImage=function(AO,j){var AH,AF,AJ,AV,AM,AK,AQ,AX;var AI=AO.runtimeStyle.width;var AN=AO.runtimeStyle.height;AO.runtimeStyle.width="auto";AO.runtimeStyle.height="auto";var AG=AO.width;var AT=AO.height;AO.runtimeStyle.width=AI;AO.runtimeStyle.height=AN;if(arguments.length==3){AH=arguments[1];AF=arguments[2];AM=AK=0;AQ=AJ=AG;AX=AV=AT}else{if(arguments.length==5){AH=arguments[1];AF=arguments[2];AJ=arguments[3];AV=arguments[4];AM=AK=0;AQ=AG;AX=AT}else{if(arguments.length==9){AM=arguments[1];AK=arguments[2];AQ=arguments[3];AX=arguments[4];AH=arguments[5];AF=arguments[6];AJ=arguments[7];AV=arguments[8]}else{throw Error("Invalid number of arguments")}}}var AW=this.getCoords_(AH,AF);var m=AQ/2;var i=AX/2;var AU=[];var Z=10;var AE=10;AU.push(" <g_vml_:group",' coordsize="',D*Z,",",D*AE,'"',' coordorigin="0,0"',' style="width:',Z,"px;height:",AE,"px;position:absolute;");if(this.m_[0][0]!=1||this.m_[0][1]||this.m_[1][1]!=1||this.m_[1][0]){var p=[];p.push("M11=",this.m_[0][0],",","M12=",this.m_[1][0],",","M21=",this.m_[0][1],",","M22=",this.m_[1][1],",","Dx=",K(AW.x/D),",","Dy=",K(AW.y/D),"");var AS=AW;var AR=this.getCoords_(AH+AJ,AF);var AP=this.getCoords_(AH,AF+AV);var AL=this.getCoords_(AH+AJ,AF+AV);AS.x=z.max(AS.x,AR.x,AP.x,AL.x);AS.y=z.max(AS.y,AR.y,AP.y,AL.y);AU.push("padding:0 ",K(AS.x/D),"px ",K(AS.y/D),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",p.join(""),", sizingmethod='clip');")}else{AU.push("top:",K(AW.y/D),"px;left:",K(AW.x/D),"px;")}AU.push(' ">','<g_vml_:image src="',AO.src,'"',' style="width:',D*AJ,"px;"," height:",D*AV,'px"',' cropleft="',AM/AG,'"',' croptop="',AK/AT,'"',' cropright="',(AG-AM-AQ)/AG,'"',' cropbottom="',(AT-AK-AX)/AT,'"'," />","</g_vml_:group>");this.element_.insertAdjacentHTML("BeforeEnd",AU.join(""))};M.stroke=function(AM){var m=10;var AN=10;var AE=5000;var AG={x:null,y:null};var AL={x:null,y:null};for(var AH=0;AH<this.currentPath_.length;AH+=AE){var AK=[];var AF=false;AK.push("<g_vml_:shape",' filled="',!!AM,'"',' style="position:absolute;width:',m,"px;height:",AN,'px;"',' coordorigin="0,0"',' coordsize="',D*m,",",D*AN,'"',' stroked="',!AM,'"',' path="');var AO=false;for(var AI=AH;AI<Math.min(AH+AE,this.currentPath_.length);AI++){if(AI%AE==0&&AI>0){AK.push(" m ",K(this.currentPath_[AI-1].x),",",K(this.currentPath_[AI-1].y))}var Z=this.currentPath_[AI];var AJ;switch(Z.type){case"moveTo":AJ=Z;AK.push(" m ",K(Z.x),",",K(Z.y));break;case"lineTo":AK.push(" l ",K(Z.x),",",K(Z.y));break;case"close":AK.push(" x ");Z=null;break;case"bezierCurveTo":AK.push(" c ",K(Z.cp1x),",",K(Z.cp1y),",",K(Z.cp2x),",",K(Z.cp2y),",",K(Z.x),",",K(Z.y));break;case"at":case"wa":AK.push(" ",Z.type," ",K(Z.x-this.arcScaleX_*Z.radius),",",K(Z.y-this.arcScaleY_*Z.radius)," ",K(Z.x+this.arcScaleX_*Z.radius),",",K(Z.y+this.arcScaleY_*Z.radius)," ",K(Z.xStart),",",K(Z.yStart)," ",K(Z.xEnd),",",K(Z.yEnd));break}if(Z){if(AG.x==null||Z.x<AG.x){AG.x=Z.x}if(AL.x==null||Z.x>AL.x){AL.x=Z.x}if(AG.y==null||Z.y<AG.y){AG.y=Z.y}if(AL.y==null||Z.y>AL.y){AL.y=Z.y}}}AK.push(' ">');if(!AM){R(this,AK)}else{a(this,AK,AG,AL)}AK.push("</g_vml_:shape>");this.element_.insertAdjacentHTML("beforeEnd",AK.join(""))}};function R(j,AE){var i=Y(j.strokeStyle);var m=i.color;var p=i.alpha*j.globalAlpha;var Z=j.lineScale_*j.lineWidth;if(Z<1){p*=Z}AE.push("<g_vml_:stroke",' opacity="',p,'"',' joinstyle="',j.lineJoin,'"',' miterlimit="',j.miterLimit,'"',' endcap="',t(j.lineCap),'"',' weight="',Z,'px"',' color="',m,'" />')}function a(AO,AG,Ah,AP){var AH=AO.fillStyle;var AY=AO.arcScaleX_;var AX=AO.arcScaleY_;var Z=AP.x-Ah.x;var m=AP.y-Ah.y;if(AH instanceof v){var AL=0;var Ac={x:0,y:0};var AU=0;var AK=1;if(AH.type_=="gradient"){var AJ=AH.x0_/AY;var j=AH.y0_/AX;var AI=AH.x1_/AY;var Aj=AH.y1_/AX;var Ag=AO.getCoords_(AJ,j);var Af=AO.getCoords_(AI,Aj);var AE=Af.x-Ag.x;var p=Af.y-Ag.y;AL=Math.atan2(AE,p)*180/Math.PI;if(AL<0){AL+=360}if(AL<0.000001){AL=0}}else{var Ag=AO.getCoords_(AH.x0_,AH.y0_);Ac={x:(Ag.x-Ah.x)/Z,y:(Ag.y-Ah.y)/m};Z/=AY*D;m/=AX*D;var Aa=z.max(Z,m);AU=2*AH.r0_/Aa;AK=2*AH.r1_/Aa-AU}var AS=AH.colors_;AS.sort(function(Ak,i){return Ak.offset-i.offset});var AN=AS.length;var AR=AS[0].color;var AQ=AS[AN-1].color;var AW=AS[0].alpha*AO.globalAlpha;var AV=AS[AN-1].alpha*AO.globalAlpha;var Ab=[];for(var Ae=0;Ae<AN;Ae++){var AM=AS[Ae];Ab.push(AM.offset*AK+AU+" "+AM.color)}AG.push('<g_vml_:fill type="',AH.type_,'"',' method="none" focus="100%"',' color="',AR,'"',' color2="',AQ,'"',' colors="',Ab.join(","),'"',' opacity="',AV,'"',' g_o_:opacity2="',AW,'"',' angle="',AL,'"',' focusposition="',Ac.x,",",Ac.y,'" />')}else{if(AH instanceof u){if(Z&&m){var AF=-Ah.x;var AZ=-Ah.y;AG.push("<g_vml_:fill",' position="',AF/Z*AY*AY,",",AZ/m*AX*AX,'"',' type="tile"',' src="',AH.src_,'" />')}}else{var Ai=Y(AO.fillStyle);var AT=Ai.color;var Ad=Ai.alpha*AO.globalAlpha;AG.push('<g_vml_:fill color="',AT,'" opacity="',Ad,'" />')}}}M.fill=function(){this.stroke(true)};M.closePath=function(){this.currentPath_.push({type:"close"})};M.getCoords_=function(j,i){var Z=this.m_;return{x:D*(j*Z[0][0]+i*Z[1][0]+Z[2][0])-F,y:D*(j*Z[0][1]+i*Z[1][1]+Z[2][1])-F}};M.save=function(){var Z={};Q(this,Z);this.aStack_.push(Z);this.mStack_.push(this.m_);this.m_=d(V(),this.m_)};M.restore=function(){if(this.aStack_.length){Q(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function H(Z){return isFinite(Z[0][0])&&isFinite(Z[0][1])&&isFinite(Z[1][0])&&isFinite(Z[1][1])&&isFinite(Z[2][0])&&isFinite(Z[2][1])}function y(i,Z,j){if(!H(Z)){return }i.m_=Z;if(j){var p=Z[0][0]*Z[1][1]-Z[0][1]*Z[1][0];i.lineScale_=k(b(p))}}M.translate=function(j,i){var Z=[[1,0,0],[0,1,0],[j,i,1]];y(this,d(Z,this.m_),false)};M.rotate=function(i){var m=U(i);var j=J(i);var Z=[[m,j,0],[-j,m,0],[0,0,1]];y(this,d(Z,this.m_),false)};M.scale=function(j,i){this.arcScaleX_*=j;this.arcScaleY_*=i;var Z=[[j,0,0],[0,i,0],[0,0,1]];y(this,d(Z,this.m_),true)};M.transform=function(p,m,AF,AE,i,Z){var j=[[p,m,0],[AF,AE,0],[i,Z,1]];y(this,d(j,this.m_),true)};M.setTransform=function(AE,p,AG,AF,j,i){var Z=[[AE,p,0],[AG,AF,0],[j,i,1]];y(this,Z,true)};M.drawText_=function(AK,AI,AH,AN,AG){var AM=this.m_,AQ=1000,i=0,AP=AQ,AF={x:0,y:0},AE=[];var Z=P(X(this.font),this.element_);var j=AA(Z);var AR=this.element_.currentStyle;var p=this.textAlign.toLowerCase();switch(p){case"left":case"center":case"right":break;case"end":p=AR.direction=="ltr"?"right":"left";break;case"start":p=AR.direction=="rtl"?"right":"left";break;default:p="left"}switch(this.textBaseline){case"hanging":case"top":AF.y=Z.size/1.75;break;case"middle":break;default:case null:case"alphabetic":case"ideographic":case"bottom":AF.y=-Z.size/2.25;break}switch(p){case"right":i=AQ;AP=0.05;break;case"center":i=AP=AQ/2;break}var AO=this.getCoords_(AI+AF.x,AH+AF.y);AE.push('<g_vml_:line from="',-i,' 0" to="',AP,' 0.05" ',' coordsize="100 100" coordorigin="0 0"',' filled="',!AG,'" stroked="',!!AG,'" style="position:absolute;width:1px;height:1px;">');if(AG){R(this,AE)}else{a(this,AE,{x:-i,y:0},{x:AP,y:Z.size})}var AL=AM[0][0].toFixed(3)+","+AM[1][0].toFixed(3)+","+AM[0][1].toFixed(3)+","+AM[1][1].toFixed(3)+",0,0";var AJ=K(AO.x/D)+","+K(AO.y/D);AE.push('<g_vml_:skew on="t" matrix="',AL,'" ',' offset="',AJ,'" origin="',i,' 0" />','<g_vml_:path textpathok="true" />','<g_vml_:textpath on="true" string="',AD(AK),'" style="v-text-align:',p,";font:",AD(j),'" /></g_vml_:line>');this.element_.insertAdjacentHTML("beforeEnd",AE.join(""))};M.fillText=function(j,Z,m,i){this.drawText_(j,Z,m,i,false)};M.strokeText=function(j,Z,m,i){this.drawText_(j,Z,m,i,true)};M.measureText=function(j){if(!this.textMeasureEl_){var Z='<span style="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;"></span>';this.element_.insertAdjacentHTML("beforeEnd",Z);this.textMeasureEl_=this.element_.lastChild}var i=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(i.createTextNode(j));return{width:this.textMeasureEl_.offsetWidth}};M.clip=function(){};M.arcTo=function(){};M.createPattern=function(i,Z){return new u(i,Z)};function v(Z){this.type_=Z;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}v.prototype.addColorStop=function(i,Z){Z=Y(Z);this.colors_.push({offset:i,color:Z.color,alpha:Z.alpha})};function u(i,Z){q(i);switch(Z){case"repeat":case null:case"":this.repetition_="repeat";break;case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=Z;break;default:n("SYNTAX_ERR")}this.src_=i.src;this.width_=i.width;this.height_=i.height}function n(Z){throw new o(Z)}function q(Z){if(!Z||Z.nodeType!=1||Z.tagName!="IMG"){n("TYPE_MISMATCH_ERR")}if(Z.readyState!="complete"){n("INVALID_STATE_ERR")}}function o(Z){this.code=this[Z];this.message=Z+": DOM Exception "+this.code}var x=o.prototype=new Error;x.INDEX_SIZE_ERR=1;x.DOMSTRING_SIZE_ERR=2;x.HIERARCHY_REQUEST_ERR=3;x.WRONG_DOCUMENT_ERR=4;x.INVALID_CHARACTER_ERR=5;x.NO_DATA_ALLOWED_ERR=6;x.NO_MODIFICATION_ALLOWED_ERR=7;x.NOT_FOUND_ERR=8;x.NOT_SUPPORTED_ERR=9;x.INUSE_ATTRIBUTE_ERR=10;x.INVALID_STATE_ERR=11;x.SYNTAX_ERR=12;x.INVALID_MODIFICATION_ERR=13;x.NAMESPACE_ERR=14;x.INVALID_ACCESS_ERR=15;x.VALIDATION_ERR=16;x.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=E;CanvasRenderingContext2D=W;CanvasGradient=v;CanvasPattern=u;DOMException=o})()};
--- /dev/null
+++ b/js/flot/jquery.colorhelpers.js
@@ -1,1 +1,180 @@
+/* Plugin for jQuery for working with colors.
+ *
+ * Version 1.1.
+ *
+ * Inspiration from jQuery color animation plugin by John Resig.
+ *
+ * Released under the MIT license by Ole Laursen, October 2009.
+ *
+ * Examples:
+ *
+ * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString()
+ * var c = $.color.extract($("#mydiv"), 'background-color');
+ * console.log(c.r, c.g, c.b, c.a);
+ * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)"
+ *
+ * Note that .scale() and .add() return the same modified object
+ * instead of making a new one.
+ *
+ * V. 1.1: Fix error handling so e.g. parsing an empty string does
+ * produce a color rather than just crashing.
+ */
+(function($) {
+ $.color = {};
+
+ // construct color object with some convenient chainable helpers
+ $.color.make = function (r, g, b, a) {
+ var o = {};
+ o.r = r || 0;
+ o.g = g || 0;
+ o.b = b || 0;
+ o.a = a != null ? a : 1;
+
+ o.add = function (c, d) {
+ for (var i = 0; i < c.length; ++i)
+ o[c.charAt(i)] += d;
+ return o.normalize();
+ };
+
+ o.scale = function (c, f) {
+ for (var i = 0; i < c.length; ++i)
+ o[c.charAt(i)] *= f;
+ return o.normalize();
+ };
+
+ o.toString = function () {
+ if (o.a >= 1.0) {
+ return "rgb("+[o.r, o.g, o.b].join(",")+")";
+ } else {
+ return "rgba("+[o.r, o.g, o.b, o.a].join(",")+")";
+ }
+ };
+
+ o.normalize = function () {
+ function clamp(min, value, max) {
+ return value < min ? min: (value > max ? max: value);
+ }
+
+ o.r = clamp(0, parseInt(o.r), 255);
+ o.g = clamp(0, parseInt(o.g), 255);
+ o.b = clamp(0, parseInt(o.b), 255);
+ o.a = clamp(0, o.a, 1);
+ return o;
+ };
+
+ o.clone = function () {
+ return $.color.make(o.r, o.b, o.g, o.a);
+ };
+
+ return o.normalize();
+ }
+
+ // extract CSS color property from element, going up in the DOM
+ // if it's "transparent"
+ $.color.extract = function (elem, css) {
+ var c;
+ do {
+ c = elem.css(css).toLowerCase();
+ // keep going until we find an element that has color, or
+ // we hit the body
+ if (c != '' && c != 'transparent')
+ break;
+ elem = elem.parent();
+ } while (!$.nodeName(elem.get(0), "body"));
+
+ // catch Safari's way of signalling transparent
+ if (c == "rgba(0, 0, 0, 0)")
+ c = "transparent";
+
+ return $.color.parse(c);
+ }
+
+ // parse CSS color string (like "rgb(10, 32, 43)" or "#fff"),
+ // returns color object, if parsing failed, you get black (0, 0,
+ // 0) out
+ $.color.parse = function (str) {
+ var res, m = $.color.make;
+
+ // Look for rgb(num,num,num)
+ if (res = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))
+ return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10));
+
+ // Look for rgba(num,num,num,num)
+ if (res = /rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))
+ return m(parseInt(res[1], 10), parseInt(res[2], 10), parseInt(res[3], 10), parseFloat(res[4]));
+
+ // Look for rgb(num%,num%,num%)
+ if (res = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))
+ return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55);
+
+ // Look for rgba(num%,num%,num%,num)
+ if (res = /rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))
+ return m(parseFloat(res[1])*2.55, parseFloat(res[2])*2.55, parseFloat(res[3])*2.55, parseFloat(res[4]));
+
+ // Look for #a0b1c2
+ if (res = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))
+ return m(parseInt(res[1], 16), parseInt(res[2], 16), parseInt(res[3], 16));
+
+ // Look for #fff
+ if (res = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))
+ return m(parseInt(res[1]+res[1], 16), parseInt(res[2]+res[2], 16), parseInt(res[3]+res[3], 16));
+
+ // Otherwise, we're most likely dealing with a named color
+ var name = $.trim(str).toLowerCase();
+ if (name == "transparent")
+ return m(255, 255, 255, 0);
+ else {
+ // default to black
+ res = lookupColors[name] || [0, 0, 0];
+ return m(res[0], res[1], res[2]);
+ }
+ }
+
+ var lookupColors = {
+ aqua:[0,255,255],
+ azure:[240,255,255],
+ beige:[245,245,220],
+ black:[0,0,0],
+ blue:[0,0,255],
+ brown:[165,42,42],
+ cyan:[0,255,255],
+ darkblue:[0,0,139],
+ darkcyan:[0,139,139],
+ darkgrey:[169,169,169],
+ darkgreen:[0,100,0],
+ darkkhaki:[189,183,107],
+ darkmagenta:[139,0,139],
+ darkolivegreen:[85,107,47],
+ darkorange:[255,140,0],
+ darkorchid:[153,50,204],
+ darkred:[139,0,0],
+ darksalmon:[233,150,122],
+ darkviolet:[148,0,211],
+ fuchsia:[255,0,255],
+ gold:[255,215,0],
+ green:[0,128,0],
+ indigo:[75,0,130],
+ khaki:[240,230,140],
+ lightblue:[173,216,230],
+ lightcyan:[224,255,255],
+ lightgreen:[144,238,144],
+ lightgrey:[211,211,211],
+ lightpink:[255,182,193],
+ lightyellow:[255,255,224],
+ lime:[0,255,0],
+ magenta:[255,0,255],
+ maroon:[128,0,0],
+ navy:[0,0,128],
+ olive:[128,128,0],
+ orange:[255,165,0],
+ pink:[255,192,203],
+ purple:[128,0,128],
+ violet:[128,0,128],
+ red:[255,0,0],
+ silver:[192,192,192],
+ white:[255,255,255],
+ yellow:[255,255,0]
+ };
+})(jQuery);
+
--- /dev/null
+++ b/js/flot/jquery.colorhelpers.min.js
@@ -1,1 +1,1 @@
-
+(function(b){b.color={};b.color.make=function(f,e,c,d){var h={};h.r=f||0;h.g=e||0;h.b=c||0;h.a=d!=null?d:1;h.add=function(k,j){for(var g=0;g<k.length;++g){h[k.charAt(g)]+=j}return h.normalize()};h.scale=function(k,j){for(var g=0;g<k.length;++g){h[k.charAt(g)]*=j}return h.normalize()};h.toString=function(){if(h.a>=1){return"rgb("+[h.r,h.g,h.b].join(",")+")"}else{return"rgba("+[h.r,h.g,h.b,h.a].join(",")+")"}};h.normalize=function(){function g(j,k,i){return k<j?j:(k>i?i:k)}h.r=g(0,parseInt(h.r),255);h.g=g(0,parseInt(h.g),255);h.b=g(0,parseInt(h.b),255);h.a=g(0,h.a,1);return h};h.clone=function(){return b.color.make(h.r,h.b,h.g,h.a)};return h.normalize()};b.color.extract=function(e,d){var f;do{f=e.css(d).toLowerCase();if(f!=""&&f!="transparent"){break}e=e.parent()}while(!b.nodeName(e.get(0),"body"));if(f=="rgba(0, 0, 0, 0)"){f="transparent"}return b.color.parse(f)};b.color.parse=function(f){var e,c=b.color.make;if(e=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(f)){return c(parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3],10))}if(e=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(f)){return c(parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3],10),parseFloat(e[4]))}if(e=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(f)){return c(parseFloat(e[1])*2.55,parseFloat(e[2])*2.55,parseFloat(e[3])*2.55)}if(e=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(f)){return c(parseFloat(e[1])*2.55,parseFloat(e[2])*2.55,parseFloat(e[3])*2.55,parseFloat(e[4]))}if(e=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(f)){return c(parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16))}if(e=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(f)){return c(parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16))}var d=b.trim(f).toLowerCase();if(d=="transparent"){return c(255,255,255,0)}else{e=a[d]||[0,0,0];return c(e[0],e[1],e[2])}};var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);
--- /dev/null
+++ b/js/flot/jquery.flot.crosshair.js
@@ -1,1 +1,168 @@
+/*
+Flot plugin for showing crosshairs, thin lines, when the mouse hovers
+over the plot.
+ crosshair: {
+ mode: null or "x" or "y" or "xy"
+ color: color
+ lineWidth: number
+ }
+
+Set the mode to one of "x", "y" or "xy". The "x" mode enables a
+vertical crosshair that lets you trace the values on the x axis, "y"
+enables a horizontal crosshair and "xy" enables them both. "color" is
+the color of the crosshair (default is "rgba(170, 0, 0, 0.80)"),
+"lineWidth" is the width of the drawn lines (default is 1).
+
+The plugin also adds four public methods:
+
+ - setCrosshair(pos)
+
+ Set the position of the crosshair. Note that this is cleared if
+ the user moves the mouse. "pos" is in coordinates of the plot and
+ should be on the form { x: xpos, y: ypos } (you can use x2/x3/...
+ if you're using multiple axes), which is coincidentally the same
+ format as what you get from a "plothover" event. If "pos" is null,
+ the crosshair is cleared.
+
+ - clearCrosshair()
+
+ Clear the crosshair.
+
+ - lockCrosshair(pos)
+
+ Cause the crosshair to lock to the current location, no longer
+ updating if the user moves the mouse. Optionally supply a position
+ (passed on to setCrosshair()) to move it to.
+
+ Example usage:
+ var myFlot = $.plot( $("#graph"), ..., { crosshair: { mode: "x" } } };
+ $("#graph").bind("plothover", function (evt, position, item) {
+ if (item) {
+ // Lock the crosshair to the data point being hovered
+ myFlot.lockCrosshair({ x: item.datapoint[0], y: item.datapoint[1] });
+ }
+ else {
+ // Return normal crosshair operation
+ myFlot.unlockCrosshair();
+ }
+ });
+
+ - unlockCrosshair()
+
+ Free the crosshair to move again after locking it.
+*/
+
+(function ($) {
+ var options = {
+ crosshair: {
+ mode: null, // one of null, "x", "y" or "xy",
+ color: "rgba(170, 0, 0, 0.80)",
+ lineWidth: 1
+ }
+ };
+
+ function init(plot) {
+ // position of crosshair in pixels
+ var crosshair = { x: -1, y: -1, locked: false };
+
+ plot.setCrosshair = function setCrosshair(pos) {
+ if (!pos)
+ crosshair.x = -1;
+ else {
+ var o = plot.p2c(pos);
+ crosshair.x = Math.max(0, Math.min(o.left, plot.width()));
+ crosshair.y = Math.max(0, Math.min(o.top, plot.height()));
+ }
+
+ plot.triggerRedrawOverlay();
+ };
+
+ plot.clearCrosshair = plot.setCrosshair; // passes null for pos
+
+ plot.lockCrosshair = function lockCrosshair(pos) {
+ if (pos)
+ plot.setCrosshair(pos);
+ crosshair.locked = true;
+ }
+
+ plot.unlockCrosshair = function unlockCrosshair() {
+ crosshair.locked = false;
+ }
+
+ function onMouseOut(e) {
+ if (crosshair.locked)
+ return;
+
+ if (crosshair.x != -1) {
+ crosshair.x = -1;
+ plot.triggerRedrawOverlay();
+ }
+ }
+
+ function onMouseMove(e) {
+ if (crosshair.locked)
+ return;
+
+ if (plot.getSelection && plot.getSelection()) {
+ crosshair.x = -1; // hide the crosshair while selecting
+ return;
+ }
+
+ var offset = plot.offset();
+ crosshair.x = Math.max(0, Math.min(e.pageX - offset.left, plot.width()));
+ crosshair.y = Math.max(0, Math.min(e.pageY - offset.top, plot.height()));
+ plot.triggerRedrawOverlay();
+ }
+
+ plot.hooks.bindEvents.push(function (plot, eventHolder) {
+ if (!plot.getOptions().crosshair.mode)
+ return;
+
+ eventHolder.mouseout(onMouseOut);
+ eventHolder.mousemove(onMouseMove);
+ });
+
+ plot.hooks.drawOverlay.push(function (plot, ctx) {
+ var c = plot.getOptions().crosshair;
+ if (!c.mode)
+ return;
+
+ var plotOffset = plot.getPlotOffset();
+
+ ctx.save();
+ ctx.translate(plotOffset.left, plotOffset.top);
+
+ if (crosshair.x != -1) {
+ ctx.strokeStyle = c.color;
+ ctx.lineWidth = c.lineWidth;
+ ctx.lineJoin = "round";
+
+ ctx.beginPath();
+ if (c.mode.indexOf("x") != -1) {
+ ctx.moveTo(crosshair.x, 0);
+ ctx.lineTo(crosshair.x, plot.height());
+ }
+ if (c.mode.indexOf("y") != -1) {
+ ctx.moveTo(0, crosshair.y);
+ ctx.lineTo(plot.width(), crosshair.y);
+ }
+ ctx.stroke();
+ }
+ ctx.restore();
+ });
+
+ plot.hooks.shutdown.push(function (plot, eventHolder) {
+ eventHolder.unbind("mouseout", onMouseOut);
+ eventHolder.unbind("mousemove", onMouseMove);
+ });
+ }
+
+ $.plot.plugins.push({
+ init: init,
+ options: options,
+ name: 'crosshair',
+ version: '1.0'
+ });
+})(jQuery);
+
--- /dev/null
+++ b/js/flot/jquery.flot.crosshair.min.js
@@ -1,1 +1,1 @@
-
+(function(b){var a={crosshair:{mode:null,color:"rgba(170, 0, 0, 0.80)",lineWidth:1}};function c(h){var j={x:-1,y:-1,locked:false};h.setCrosshair=function e(l){if(!l){j.x=-1}else{var k=h.p2c(l);j.x=Math.max(0,Math.min(k.left,h.width()));j.y=Math.max(0,Math.min(k.top,h.height()))}h.triggerRedrawOverlay()};h.clearCrosshair=h.setCrosshair;h.lockCrosshair=function f(k){if(k){h.setCrosshair(k)}j.locked=true};h.unlockCrosshair=function g(){j.locked=false};function d(k){if(j.locked){return}if(j.x!=-1){j.x=-1;h.triggerRedrawOverlay()}}function i(k){if(j.locked){return}if(h.getSelection&&h.getSelection()){j.x=-1;return}var l=h.offset();j.x=Math.max(0,Math.min(k.pageX-l.left,h.width()));j.y=Math.max(0,Math.min(k.pageY-l.top,h.height()));h.triggerRedrawOverlay()}h.hooks.bindEvents.push(function(l,k){if(!l.getOptions().crosshair.mode){return}k.mouseout(d);k.mousemove(i)});h.hooks.drawOverlay.push(function(m,k){var n=m.getOptions().crosshair;if(!n.mode){return}var l=m.getPlotOffset();k.save();k.translate(l.left,l.top);if(j.x!=-1){k.strokeStyle=n.color;k.lineWidth=n.lineWidth;k.lineJoin="round";k.beginPath();if(n.mode.indexOf("x")!=-1){k.moveTo(j.x,0);k.lineTo(j.x,m.height())}if(n.mode.indexOf("y")!=-1){k.moveTo(0,j.y);k.lineTo(m.width(),j.y)}k.stroke()}k.restore()});h.hooks.shutdown.push(function(l,k){k.unbind("mouseout",d);k.unbind("mousemove",i)})}b.plot.plugins.push({init:c,options:a,name:"crosshair",version:"1.0"})})(jQuery);
--- /dev/null
+++ b/js/flot/jquery.flot.fillbetween.js
@@ -1,1 +1,184 @@
+/*
+Flot plugin for computing bottoms for filled line and bar charts.
+The case: you've got two series that you want to fill the area
+between. In Flot terms, you need to use one as the fill bottom of the
+other. You can specify the bottom of each data point as the third
+coordinate manually, or you can use this plugin to compute it for you.
+
+In order to name the other series, you need to give it an id, like this
+
+ var dataset = [
+ { data: [ ... ], id: "foo" } , // use default bottom
+ { data: [ ... ], fillBetween: "foo" }, // use first dataset as bottom
+ ];
+
+ $.plot($("#placeholder"), dataset, { line: { show: true, fill: true }});
+
+As a convenience, if the id given is a number that doesn't appear as
+an id in the series, it is interpreted as the index in the array
+instead (so fillBetween: 0 can also mean the first series).
+
+Internally, the plugin modifies the datapoints in each series. For
+line series, extra data points might be inserted through
+interpolation. Note that at points where the bottom line is not
+defined (due to a null point or start/end of line), the current line
+will show a gap too. The algorithm comes from the jquery.flot.stack.js
+plugin, possibly some code could be shared.
+*/
+
+(function ($) {
+ var options = {
+ series: { fillBetween: null } // or number
+ };
+
+ function init(plot) {
+ function findBottomSeries(s, allseries) {
+ var i;
+ for (i = 0; i < allseries.length; ++i) {
+ if (allseries[i].id == s.fillBetween)
+ return allseries[i];
+ }
+
+ if (typeof s.fillBetween == "number") {
+ i = s.fillBetween;
+
+ if (i < 0 || i >= allseries.length)
+ return null;
+
+ return allseries[i];
+ }
+
+ return null;
+ }
+
+ function computeFillBottoms(plot, s, datapoints) {
+ if (s.fillBetween == null)
+ return;
+
+ var other = findBottomSeries(s, plot.getData());
+ if (!other)
+ return;
+
+ var ps = datapoints.pointsize,
+ points = datapoints.points,
+ otherps = other.datapoints.pointsize,
+ otherpoints = other.datapoints.points,
+ newpoints = [],
+ px, py, intery, qx, qy, bottom,
+ withlines = s.lines.show,
+ withbottom = ps > 2 && datapoints.format[2].y,
+ withsteps = withlines && s.lines.steps,
+ fromgap = true,
+ i = 0, j = 0, l;
+
+ while (true) {
+ if (i >= points.length)
+ break;
+
+ l = newpoints.length;
+
+ if (points[i] == null) {
+ // copy gaps
+ for (m = 0; m < ps; ++m)
+ newpoints.push(points[i + m]);
+ i += ps;
+ }
+ else if (j >= otherpoints.length) {
+ // for lines, we can't use the rest of the points
+ if (!withlines) {
+ for (m = 0; m < ps; ++m)
+ newpoints.push(points[i + m]);
+ }
+ i += ps;
+ }
+ else if (otherpoints[j] == null) {
+ // oops, got a gap
+ for (m = 0; m < ps; ++m)
+ newpoints.push(null);
+ fromgap = true;
+ j += otherps;
+ }
+ else {
+ // cases where we actually got two points
+ px = points[i];
+ py = points[i + 1];
+ qx = otherpoints[j];
+ qy = otherpoints[j + 1];
+ bottom = 0;
+
+ if (px == qx) {
+ for (m = 0; m < ps; ++m)
+ newpoints.push(points[i + m]);
+
+ //newpoints[l + 1] += qy;
+ bottom = qy;
+
+ i += ps;
+ j += otherps;
+ }
+ else if (px > qx) {
+ // we got past point below, might need to
+ // insert interpolated extra point
+ if (withlines && i > 0 && points[i - ps] != null) {
+ intery = py + (points[i - ps + 1] - py) * (qx - px) / (points[i - ps] - px);
+ newpoints.push(qx);
+ newpoints.push(intery)
+ for (m = 2; m < ps; ++m)
+ newpoints.push(points[i + m]);
+ bottom = qy;
+ }
+
+ j += otherps;
+ }
+ else { // px < qx
+ if (fromgap && withlines) {
+ // if we come from a gap, we just skip this point
+ i += ps;
+ continue;
+ }
+
+ for (m = 0; m < ps; ++m)
+ newpoints.push(points[i + m]);
+
+ // we might be able to interpolate a point below,
+ // this can give us a better y
+ if (withlines && j > 0 && otherpoints[j - otherps] != null)
+ bottom = qy + (otherpoints[j - otherps + 1] - qy) * (px - qx) / (otherpoints[j - otherps] - qx);
+
+ //newpoints[l + 1] += bottom;
+
+ i += ps;
+ }
+
+ fromgap = false;
+
+ if (l != newpoints.length && withbottom)
+ newpoints[l + 2] = bottom;
+ }
+
+ // maintain the line steps invariant
+ if (withsteps && l != newpoints.length && l > 0
+ && newpoints[l] != null
+ && newpoints[l] != newpoints[l - ps]
+ && newpoints[l + 1] != newpoints[l - ps + 1]) {
+ for (m = 0; m < ps; ++m)
+ newpoints[l + ps + m] = newpoints[l + m];
+ newpoints[l + 1] = newpoints[l - ps + 1];
+ }
+ }
+
+ datapoints.points = newpoints;
+ }
+
+ plot.hooks.processDatapoints.push(computeFillBottoms);
+ }
+
+ $.plot.plugins.push({
+ init: init,
+ options: options,
+ name: 'fillbetween',
+ version: '1.0'
+ });
+})(jQuery);
+
--- /dev/null
+++ b/js/flot/jquery.flot.fillbetween.min.js
@@ -1,1 +1,1 @@
-
+(function(b){var a={series:{fillBetween:null}};function c(f){function d(j,h){var g;for(g=0;g<h.length;++g){if(h[g].id==j.fillBetween){return h[g]}}if(typeof j.fillBetween=="number"){g=j.fillBetween;if(g<0||g>=h.length){return null}return h[g]}return null}function e(B,u,g){if(u.fillBetween==null){return}var p=d(u,B.getData());if(!p){return}var y=g.pointsize,E=g.points,h=p.datapoints.pointsize,x=p.datapoints.points,r=[],w,v,k,G,F,q,t=u.lines.show,o=y>2&&g.format[2].y,n=t&&u.lines.steps,D=true,C=0,A=0,z;while(true){if(C>=E.length){break}z=r.length;if(E[C]==null){for(m=0;m<y;++m){r.push(E[C+m])}C+=y}else{if(A>=x.length){if(!t){for(m=0;m<y;++m){r.push(E[C+m])}}C+=y}else{if(x[A]==null){for(m=0;m<y;++m){r.push(null)}D=true;A+=h}else{w=E[C];v=E[C+1];G=x[A];F=x[A+1];q=0;if(w==G){for(m=0;m<y;++m){r.push(E[C+m])}q=F;C+=y;A+=h}else{if(w>G){if(t&&C>0&&E[C-y]!=null){k=v+(E[C-y+1]-v)*(G-w)/(E[C-y]-w);r.push(G);r.push(k);for(m=2;m<y;++m){r.push(E[C+m])}q=F}A+=h}else{if(D&&t){C+=y;continue}for(m=0;m<y;++m){r.push(E[C+m])}if(t&&A>0&&x[A-h]!=null){q=F+(x[A-h+1]-F)*(w-G)/(x[A-h]-G)}C+=y}}D=false;if(z!=r.length&&o){r[z+2]=q}}}}if(n&&z!=r.length&&z>0&&r[z]!=null&&r[z]!=r[z-y]&&r[z+1]!=r[z-y+1]){for(m=0;m<y;++m){r[z+y+m]=r[z+m]}r[z+1]=r[z-y+1]}}g.points=r}f.hooks.processDatapoints.push(e)}b.plot.plugins.push({init:c,options:a,name:"fillbetween",version:"1.0"})})(jQuery);
--- /dev/null
+++ b/js/flot/jquery.flot.image.js
@@ -1,1 +1,239 @@
-
+/*
+Flot plugin for plotting images, e.g. useful for putting ticks on a
+prerendered complex visualization.
+
+The data syntax is [[image, x1, y1, x2, y2], ...] where (x1, y1) and
+(x2, y2) are where you intend the two opposite corners of the image to
+end up in the plot. Image must be a fully loaded Javascript image (you
+can make one with new Image()). If the image is not complete, it's
+skipped when plotting.
+
+There are two helpers included for retrieving images. The easiest work
+the way that you put in URLs instead of images in the data (like
+["myimage.png", 0, 0, 10, 10]), then call $.plot.image.loadData(data,
+options, callback) where data and options are the same as you pass in
+to $.plot. This loads the images, replaces the URLs in the data with
+the corresponding images and calls "callback" when all images are
+loaded (or failed loading). In the callback, you can then call $.plot
+with the data set. See the included example.
+
+A more low-level helper, $.plot.image.load(urls, callback) is also
+included. Given a list of URLs, it calls callback with an object
+mapping from URL to Image object when all images are loaded or have
+failed loading.
+
+Options for the plugin are
+
+ series: {
+ images: {
+ show: boolean
+ anchor: "corner" or "center"
+ alpha: [0,1]
+ }
+ }
+
+which can be specified for a specific series
+
+ $.plot($("#placeholder"), [{ data: [ ... ], images: { ... } ])
+
+Note that because the data format is different from usual data points,
+you can't use images with anything else in a specific data series.
+
+Setting "anchor" to "center" causes the pixels in the image to be
+anchored at the corner pixel centers inside of at the pixel corners,
+effectively letting half a pixel stick out to each side in the plot.
+
+
+A possible future direction could be support for tiling for large
+images (like Google Maps).
+
+*/
+
+(function ($) {
+ var options = {
+ series: {
+ images: {
+ show: false,
+ alpha: 1,
+ anchor: "corner" // or "center"
+ }
+ }
+ };
+
+ $.plot.image = {};
+
+ $.plot.image.loadDataImages = function (series, options, callback) {
+ var urls = [], points = [];
+
+ var defaultShow = options.series.images.show;
+
+ $.each(series, function (i, s) {
+ if (!(defaultShow || s.images.show))
+ return;
+
+ if (s.data)
+ s = s.data;
+
+ $.each(s, function (i, p) {
+ if (typeof p[0] == "string") {
+ urls.push(p[0]);
+ points.push(p);
+ }
+ });
+ });
+
+ $.plot.image.load(urls, function (loadedImages) {
+ $.each(points, function (i, p) {
+ var url = p[0];
+ if (loadedImages[url])
+ p[0] = loadedImages[url];
+ });
+
+ callback();
+ });
+ }
+
+ $.plot.image.load = function (urls, callback) {
+ var missing = urls.length, loaded = {};
+ if (missing == 0)
+ callback({});
+
+ $.each(urls, function (i, url) {
+ var handler = function () {
+ --missing;
+
+ loaded[url] = this;
+
+ if (missing == 0)
+ callback(loaded);
+ };
+
+ $('<img />').load(handler).error(handler).attr('src', url);
+ });
+ }
+
+ function drawSeries(plot, ctx, series) {
+ var plotOffset = plot.getPlotOffset();
+
+ if (!series.images || !series.images.show)
+ return;
+
+ var points = series.datapoints.points,
+ ps = series.datapoints.pointsize;
+
+ for (var i = 0; i < points.length; i += ps) {
+ var img = points[i],
+ x1 = points[i + 1], y1 = points[i + 2],
+ x2 = points[i + 3], y2 = points[i + 4],
+ xaxis = series.xaxis, yaxis = series.yaxis,
+ tmp;
+
+ // actually we should check img.complete, but it
+ // appears to be a somewhat unreliable indicator in
+ // IE6 (false even after load event)
+ if (!img || img.width <= 0 || img.height <= 0)
+ continue;
+
+ if (x1 > x2) {
+ tmp = x2;
+ x2 = x1;
+ x1 = tmp;
+ }
+ if (y1 > y2) {
+ tmp = y2;
+ y2 = y1;
+ y1 = tmp;
+ }
+
+ // if the anchor is at the center of the pixel, expand the
+ // image by 1/2 pixel in each direction
+ if (series.images.anchor == "center") {
+ tmp = 0.5 * (x2-x1) / (img.width - 1);
+ x1 -= tmp;
+ x2 += tmp;
+ tmp = 0.5 * (y2-y1) / (img.height - 1);
+ y1 -= tmp;
+ y2 += tmp;
+ }
+
+ // clip
+ if (x1 == x2 || y1 == y2 ||
+ x1 >= xaxis.max || x2 <= xaxis.min ||
+ y1 >= yaxis.max || y2 <= yaxis.min)
+ continue;
+
+ var sx1 = 0, sy1 = 0, sx2 = img.width, sy2 = img.height;
+ if (x1 < xaxis.min) {
+ sx1 += (sx2 - sx1) * (xaxis.min - x1) / (x2 - x1);
+ x1 = xaxis.min;
+ }
+
+ if (x2 > xaxis.max) {
+ sx2 += (sx2 - sx1) * (xaxis.max - x2) / (x2 - x1);
+ x2 = xaxis.max;
+ }
+
+ if (y1 < yaxis.min) {
+ sy2 += (sy1 - sy2) * (yaxis.min - y1) / (y2 - y1);
+ y1 = yaxis.min;
+ }
+
+ if (y2 > yaxis.max) {
+ sy1 += (sy1 - sy2) * (yaxis.max - y2) / (y2 - y1);
+ y2 = yaxis.max;
+ }
+
+ x1 = xaxis.p2c(x1);
+ x2 = xaxis.p2c(x2);
+ y1 = yaxis.p2c(y1);
+ y2 = yaxis.p2c(y2);
+
+ // the transformation may have swapped us
+ if (x1 > x2) {
+ tmp = x2;
+ x2 = x1;
+ x1 = tmp;
+ }
+ if (y1 > y2) {
+ tmp = y2;
+ y2 = y1;
+ y1 = tmp;
+ }
+
+ tmp = ctx.globalAlpha;
+ ctx.globalAlpha *= series.images.alpha;
+ ctx.drawImage(img,
+ sx1, sy1, sx2 - sx1, sy2 - sy1,
+ x1 + plotOffset.left, y1 + plotOffset.top,
+ x2 - x1, y2 - y1);
+ ctx.globalAlpha = tmp;
+ }
+ }
+
+ function processRawData(plot, series, data, datapoints) {
+ if (!series.images.show)
+ return;
+
+ // format is Image, x1, y1, x2, y2 (opposite corners)
+ datapoints.format = [
+ { required: true },
+ { x: true, number: true, required: true },
+ { y: true, number: true, required: true },
+ { x: true, number: true, required: true },
+ { y: true, number: true, required: true }
+ ];
+ }
+
+ function init(plot) {
+ plot.hooks.processRawData.push(processRawData);
+ plot.hooks.drawSeries.push(drawSeries);
+ }
+
+ $.plot.plugins.push({
+ init: init,
+ options: options,
+ name: 'image',
+ version: '1.1'
+ });
+})(jQuery);
+
--- /dev/null
+++ b/js/flot/jquery.flot.image.min.js
@@ -1,1 +1,1 @@
-
+(function(c){var a={series:{images:{show:false,alpha:1,anchor:"corner"}}};c.plot.image={};c.plot.image.loadDataImages=function(g,f,k){var j=[],h=[];var i=f.series.images.show;c.each(g,function(l,m){if(!(i||m.images.show)){return}if(m.data){m=m.data}c.each(m,function(n,o){if(typeof o[0]=="string"){j.push(o[0]);h.push(o)}})});c.plot.image.load(j,function(l){c.each(h,function(n,o){var m=o[0];if(l[m]){o[0]=l[m]}});k()})};c.plot.image.load=function(h,i){var g=h.length,f={};if(g==0){i({})}c.each(h,function(k,j){var l=function(){--g;f[j]=this;if(g==0){i(f)}};c("<img />").load(l).error(l).attr("src",j)})};function d(q,o,l){var m=q.getPlotOffset();if(!l.images||!l.images.show){return}var r=l.datapoints.points,n=l.datapoints.pointsize;for(var t=0;t<r.length;t+=n){var y=r[t],w=r[t+1],g=r[t+2],v=r[t+3],f=r[t+4],h=l.xaxis,u=l.yaxis,x;if(!y||y.width<=0||y.height<=0){continue}if(w>v){x=v;v=w;w=x}if(g>f){x=f;f=g;g=x}if(l.images.anchor=="center"){x=0.5*(v-w)/(y.width-1);w-=x;v+=x;x=0.5*(f-g)/(y.height-1);g-=x;f+=x}if(w==v||g==f||w>=h.max||v<=h.min||g>=u.max||f<=u.min){continue}var k=0,s=0,j=y.width,p=y.height;if(w<h.min){k+=(j-k)*(h.min-w)/(v-w);w=h.min}if(v>h.max){j+=(j-k)*(h.max-v)/(v-w);v=h.max}if(g<u.min){p+=(s-p)*(u.min-g)/(f-g);g=u.min}if(f>u.max){s+=(s-p)*(u.max-f)/(f-g);f=u.max}w=h.p2c(w);v=h.p2c(v);g=u.p2c(g);f=u.p2c(f);if(w>v){x=v;v=w;w=x}if(g>f){x=f;f=g;g=x}x=o.globalAlpha;o.globalAlpha*=l.images.alpha;o.drawImage(y,k,s,j-k,p-s,w+m.left,g+m.top,v-w,f-g);o.globalAlpha=x}}function b(i,f,g,h){if(!f.images.show){return}h.format=[{required:true},{x:true,number:true,required:true},{y:true,number:true,required:true},{x:true,number:true,required:true},{y:true,number:true,required:true}]}function e(f){f.hooks.processRawData.push(b);f.hooks.drawSeries.push(d)}c.plot.plugins.push({init:e,options:a,name:"image",version:"1.1"})})(jQuery);
--- /dev/null
+++ b/js/flot/jquery.flot.js
@@ -1,1 +1,2600 @@
-
+/*! Javascript plotting library for jQuery, v. 0.7.
+ *
+ * Released under the MIT license by IOLA, December 2007.
+ *
+ */
+
+// first an inline dependency, jquery.colorhelpers.js, we inline it here
+// for convenience
+
+/* Plugin for jQuery for working with colors.
+ *
+ * Version 1.1.
+ *
+ * Inspiration from jQuery color animation plugin by John Resig.
+ *
+ * Released under the MIT license by Ole Laursen, October 2009.
+ *
+ * Examples:
+ *
+ * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString()
+ * var c = $.color.extract($("#mydiv"), 'background-color');
+ * console.log(c.r, c.g, c.b, c.a);
+ * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)"
+ *
+ * Note that .scale() and .add() return the same modified object
+ * instead of making a new one.
+ *
+ * V. 1.1: Fix error handling so e.g. parsing an empty string does
+ * produce a color rather than just crashing.
+ */
+(function(B){B.color={};B.color.make=function(F,E,C,D){var G={};G.r=F||0;G.g=E||0;G.b=C||0;G.a=D!=null?D:1;G.add=function(J,I){for(var H=0;H<J.length;++H){G[J.charAt(H)]+=I}return G.normalize()};G.scale=function(J,I){for(var H=0;H<J.length;++H){G[J.charAt(H)]*=I}return G.normalize()};G.toString=function(){if(G.a>=1){return"rgb("+[G.r,G.g,G.b].join(",")+")"}else{return"rgba("+[G.r,G.g,G.b,G.a].join(",")+")"}};G.normalize=function(){function H(J,K,I){return K<J?J:(K>I?I:K)}G.r=H(0,parseInt(G.r),255);G.g=H(0,parseInt(G.g),255);G.b=H(0,parseInt(G.b),255);G.a=H(0,G.a,1);return G};G.clone=function(){return B.color.make(G.r,G.b,G.g,G.a)};return G.normalize()};B.color.extract=function(D,C){var E;do{E=D.css(C).toLowerCase();if(E!=""&&E!="transparent"){break}D=D.parent()}while(!B.nodeName(D.get(0),"body"));if(E=="rgba(0, 0, 0, 0)"){E="transparent"}return B.color.parse(E)};B.color.parse=function(F){var E,C=B.color.make;if(E=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10))}if(E=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10),parseFloat(E[4]))}if(E=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55)}if(E=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55,parseFloat(E[4]))}if(E=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(F)){return C(parseInt(E[1],16),parseInt(E[2],16),parseInt(E[3],16))}if(E=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(F)){return C(parseInt(E[1]+E[1],16),parseInt(E[2]+E[2],16),parseInt(E[3]+E[3],16))}var D=B.trim(F).toLowerCase();if(D=="transparent"){return C(255,255,255,0)}else{E=A[D]||[0,0,0];return C(E[0],E[1],E[2])}};var A={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);
+
+// the actual Flot code
+(function($) {
+ function Plot(placeholder, data_, options_, plugins) {
+ // data is on the form:
+ // [ series1, series2 ... ]
+ // where series is either just the data as [ [x1, y1], [x2, y2], ... ]
+ // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... }
+
+ var series = [],
+ options = {
+ // the color theme used for graphs
+ colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"],
+ legend: {
+ show: true,
+ noColumns: 1, // number of colums in legend table
+ labelFormatter: null, // fn: string -> string
+ labelBoxBorderColor: "#ccc", // border color for the little label boxes
+ container: null, // container (as jQuery object) to put legend in, null means default on top of graph
+ position: "ne", // position of default legend container within plot
+ margin: 5, // distance from grid edge to default legend container within plot
+ backgroundColor: null, // null means auto-detect
+ backgroundOpacity: 0.85 // set to 0 to avoid background
+ },
+ xaxis: {
+ show: null, // null = auto-detect, true = always, false = never
+ position: "bottom", // or "top"
+ mode: null, // null or "time"
+ color: null, // base color, labels, ticks
+ tickColor: null, // possibly different color of ticks, e.g. "rgba(0,0,0,0.15)"
+ transform: null, // null or f: number -> number to transform axis
+ inverseTransform: null, // if transform is set, this should be the inverse function
+ min: null, // min. value to show, null means set automatically
+ max: null, // max. value to show, null means set automatically
+ autoscaleMargin: null, // margin in % to add if auto-setting min/max
+ ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks
+ tickFormatter: null, // fn: number -> string
+ labelWidth: null, // size of tick labels in pixels
+ labelHeight: null,
+ reserveSpace: null, // whether to reserve space even if axis isn't shown
+ tickLength: null, // size in pixels of ticks, or "full" for whole line
+ alignTicksWithAxis: null, // axis number or null for no sync
+
+ // mode specific options
+ tickDecimals: null, // no. of decimals, null means auto
+ tickSize: null, // number or [number, "unit"]
+ minTickSize: null, // number or [number, "unit"]
+ monthNames: null, // list of names of months
+ timeformat: null, // format string to use
+ twelveHourClock: false // 12 or 24 time in time mode
+ },
+ yaxis: {
+ autoscaleMargin: 0.02,
+ position: "left" // or "right"
+ },
+ xaxes: [],
+ yaxes: [],
+ series: {
+ points: {
+ show: false,
+ radius: 3,
+ lineWidth: 2, // in pixels
+ fill: true,
+ fillColor: "#ffffff",
+ symbol: "circle" // or callback
+ },
+ lines: {
+ // we don't put in show: false so we can see
+ // whether lines were actively disabled
+ lineWidth: 2, // in pixels
+ fill: false,
+ fillColor: null,
+ steps: false
+ },
+ bars: {
+ show: false,
+ lineWidth: 2, // in pixels
+ barWidth: 1, // in units of the x axis
+ fill: true,
+ fillColor: null,
+ align: "left", // or "center"
+ horizontal: false
+ },
+ shadowSize: 3
+ },
+ grid: {
+ show: true,
+ aboveData: false,
+ color: "#545454", // primary color used for outline and labels
+ backgroundColor: null, // null for transparent, else color
+ borderColor: null, // set if different from the grid color
+ tickColor: null, // color for the ticks, e.g. "rgba(0,0,0,0.15)"
+ labelMargin: 5, // in pixels
+ axisMargin: 8, // in pixels
+ borderWidth: 2, // in pixels
+ minBorderMargin: null, // in pixels, null means taken from points radius
+ markings: null, // array of ranges or fn: axes -> array of ranges
+ markingsColor: "#f4f4f4",
+ markingsLineWidth: 2,
+ // interactive stuff
+ clickable: false,
+ hoverable: false,
+ autoHighlight: true, // highlight in case mouse is near
+ mouseActiveRadius: 10 // how far the mouse can be away to activate an item
+ },
+ hooks: {}
+ },
+ canvas = null, // the canvas for the plot itself
+ overlay = null, // canvas for interactive stuff on top of plot
+ eventHolder = null, // jQuery object that events should be bound to
+ ctx = null, octx = null,
+ xaxes = [], yaxes = [],
+ plotOffset = { left: 0, right: 0, top: 0, bottom: 0},
+ canvasWidth = 0, canvasHeight = 0,
+ plotWidth = 0, plotHeight = 0,
+ hooks = {
+ processOptions: [],
+ processRawData: [],
+ processDatapoints: [],
+ drawSeries: [],
+ draw: [],
+ bindEvents: [],
+ drawOverlay: [],
+ shutdown: []
+ },
+ plot = this;
+
+ // public functions
+ plot.setData = setData;
+ plot.setupGrid = setupGrid;
+ plot.draw = draw;
+ plot.getPlaceholder = function() { return placeholder; };
+ plot.getCanvas = function() { return canvas; };
+ plot.getPlotOffset = function() { return plotOffset; };
+ plot.width = function () { return plotWidth; };
+ plot.height = function () { return plotHeight; };
+ plot.offset = function () {
+ var o = eventHolder.offset();
+ o.left += plotOffset.left;
+ o.top += plotOffset.top;
+ return o;
+ };
+ plot.getData = function () { return series; };
+ plot.getAxes = function () {
+ var res = {}, i;
+ $.each(xaxes.concat(yaxes), function (_, axis) {
+ if (axis)
+ res[axis.direction + (axis.n != 1 ? axis.n : "") + "axis"] = axis;
+ });
+ return res;
+ };
+ plot.getXAxes = function () { return xaxes; };
+ plot.getYAxes = function () { return yaxes; };
+ plot.c2p = canvasToAxisCoords;
+ plot.p2c = axisToCanvasCoords;
+ plot.getOptions = function () { return options; };
+ plot.highlight = highlight;
+ plot.unhighlight = unhighlight;
+ plot.triggerRedrawOverlay = triggerRedrawOverlay;
+ plot.pointOffset = function(point) {
+ return {
+ left: parseInt(xaxes[axisNumber(point, "x") - 1].p2c(+point.x) + plotOffset.left),
+ top: parseInt(yaxes[axisNumber(point, "y") - 1].p2c(+point.y) + plotOffset.top)
+ };
+ };
+ plot.shutdown = shutdown;
+ plot.resize = function () {
+ getCanvasDimensions();
+ resizeCanvas(canvas);
+ resizeCanvas(overlay);
+ };
+
+ // public attributes
+ plot.hooks = hooks;
+
+ // initialize
+ initPlugins(plot);
+ parseOptions(options_);
+ setupCanvases();
+ setData(data_);
+ setupGrid();
+ draw();
+ bindEvents();
+
+
+ function executeHooks(hook, args) {
+ args = [plot].concat(args);
+ for (var i = 0; i < hook.length; ++i)
+ hook[i].apply(this, args);
+ }
+
+ function initPlugins() {
+ for (var i = 0; i < plugins.length; ++i) {
+ var p = plugins[i];
+ p.init(plot);
+ if (p.options)
+ $.extend(true, options, p.options);
+ }
+ }
+
+ function parseOptions(opts) {
+ var i;
+
+ $.extend(true, options, opts);
+
+ if (options.xaxis.color == null)
+ options.xaxis.color = options.grid.color;
+ if (options.yaxis.color == null)
+ options.yaxis.color = options.grid.color;
+
+ if (options.xaxis.tickColor == null) // backwards-compatibility
+ options.xaxis.tickColor = options.grid.tickColor;
+ if (options.yaxis.tickColor == null) // backwards-compatibility
+ options.yaxis.tickColor = options.grid.tickColor;
+
+ if (options.grid.borderColor == null)
+ options.grid.borderColor = options.grid.color;
+ if (options.grid.tickColor == null)
+ options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString();
+
+ // fill in defaults in axes, copy at least always the
+ // first as the rest of the code assumes it'll be there
+ for (i = 0; i < Math.max(1, options.xaxes.length); ++i)
+ options.xaxes[i] = $.extend(true, {}, options.xaxis, options.xaxes[i]);
+ for (i = 0; i < Math.max(1, options.yaxes.length); ++i)
+ options.yaxes[i] = $.extend(true, {}, options.yaxis, options.yaxes[i]);
+
+ // backwards compatibility, to be removed in future
+ if (options.xaxis.noTicks && options.xaxis.ticks == null)
+ options.xaxis.ticks = options.xaxis.noTicks;
+ if (options.yaxis.noTicks && options.yaxis.ticks == null)
+ options.yaxis.ticks = options.yaxis.noTicks;
+ if (options.x2axis) {
+ options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis);
+ options.xaxes[1].position = "top";
+ }
+ if (options.y2axis) {
+ options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis);
+ options.yaxes[1].position = "right";
+ }
+ if (options.grid.coloredAreas)
+ options.grid.markings = options.grid.coloredAreas;
+ if (options.grid.coloredAreasColor)
+ options.grid.markingsColor = options.grid.coloredAreasColor;
+ if (options.lines)
+ $.extend(true, options.series.lines, options.lines);
+ if (options.points)
+ $.extend(true, options.series.points, options.points);
+ if (options.bars)
+ $.extend(true, options.series.bars, options.bars);
+ if (options.shadowSize != null)
+ options.series.shadowSize = options.shadowSize;
+
+ // save options on axes for future reference
+ for (i = 0; i < options.xaxes.length; ++i)
+ getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i];
+ for (i = 0; i < options.yaxes.length; ++i)
+ getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i];
+
+ // add hooks from options
+ for (var n in hooks)
+ if (options.hooks[n] && options.hooks[n].length)
+ hooks[n] = hooks[n].concat(options.hooks[n]);
+
+ executeHooks(hooks.processOptions, [options]);
+ }
+
+ function setData(d) {
+ series = parseData(d);
+ fillInSeriesOptions();
+ processData();
+ }
+
+ function parseData(d) {
+ var res = [];
+ for (var i = 0; i < d.length; ++i) {
+ var s = $.extend(true, {}, options.series);
+
+ if (d[i].data != null) {
+ s.data = d[i].data; // move the data instead of deep-copy
+ delete d[i].data;
+
+ $.extend(true, s, d[i]);
+
+ d[i].data = s.data;
+ }
+ else
+ s.data = d[i];
+ res.push(s);
+ }
+
+ return res;
+ }
+
+ function axisNumber(obj, coord) {
+ var a = obj[coord + "axis"];
+ if (typeof a == "object") // if we got a real axis, extract number
+ a = a.n;
+ if (typeof a != "number")
+ a = 1; // default to first axis
+ return a;
+ }
+
+ function allAxes() {
+ // return flat array without annoying null entries
+ return $.grep(xaxes.concat(yaxes), function (a) { return a; });
+ }
+
+ function canvasToAxisCoords(pos) {
+ // return an object with x/y corresponding to all used axes
+ var res = {}, i, axis;
+ for (i = 0; i < xaxes.length; ++i) {
+ axis = xaxes[i];
+ if (axis && axis.used)
+ res["x" + axis.n] = axis.c2p(pos.left);
+ }
+
+ for (i = 0; i < yaxes.length; ++i) {
+ axis = yaxes[i];
+ if (axis && axis.used)
+ res["y" + axis.n] = axis.c2p(pos.top);
+ }
+
+ if (res.x1 !== undefined)
+ res.x = res.x1;
+ if (res.y1 !== undefined)
+ res.y = res.y1;
+
+ return res;
+ }
+
+ function axisToCanvasCoords(pos) {
+ // get canvas coords from the first pair of x/y found in pos
+ var res = {}, i, axis, key;
+
+ for (i = 0; i < xaxes.length; ++i) {
+ axis = xaxes[i];
+ if (axis && axis.used) {
+ key = "x" + axis.n;
+ if (pos[key] == null && axis.n == 1)
+ key = "x";
+
+ if (pos[key] != null) {
+ res.left = axis.p2c(pos[key]);
+ break;
+ }
+ }
+ }
+
+ for (i = 0; i < yaxes.length; ++i) {
+ axis = yaxes[i];
+ if (axis && axis.used) {
+ key = "y" + axis.n;
+ if (pos[key] == null && axis.n == 1)
+ key = "y";
+
+ if (pos[key] != null) {
+ res.top = axis.p2c(pos[key]);
+ break;
+ }
+ }
+ }
+
+ return res;
+ }
+
+ function getOrCreateAxis(axes, number) {
+ if (!axes[number - 1])
+ axes[number - 1] = {
+ n: number, // save the number for future reference
+ direction: axes == xaxes ? "x" : "y",
+ options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis)
+ };
+
+ return axes[number - 1];
+ }
+
+ function fillInSeriesOptions() {
+ var i;
+
+ // collect what we already got of colors
+ var neededColors = series.length,
+ usedColors = [],
+ assignedColors = [];
+ for (i = 0; i < series.length; ++i) {
+ var sc = series[i].color;
+ if (sc != null) {
+ --neededColors;
+ if (typeof sc == "number")
+ assignedColors.push(sc);
+ else
+ usedColors.push($.color.parse(series[i].color));
+ }
+ }
+
+ // we might need to generate more colors if higher indices
+ // are assigned
+ for (i = 0; i < assignedColors.length; ++i) {
+ neededColors = Math.max(neededColors, assignedColors[i] + 1);
+ }
+
+ // produce colors as needed
+ var colors = [], variation = 0;
+ i = 0;
+ while (colors.length < neededColors) {
+ var c;
+ if (options.colors.length == i) // check degenerate case
+ c = $.color.make(100, 100, 100);
+ else
+ c = $.color.parse(options.colors[i]);
+
+ // vary color if needed
+ var sign = variation % 2 == 1 ? -1 : 1;
+ c.scale('rgb', 1 + sign * Math.ceil(variation / 2) * 0.2)
+
+ // FIXME: if we're getting to close to something else,
+ // we should probably skip this one
+ colors.push(c);
+
+ ++i;
+ if (i >= options.colors.length) {
+ i = 0;
+ ++variation;
+ }
+ }
+
+ // fill in the options
+ var colori = 0, s;
+ for (i = 0; i < series.length; ++i) {
+ s = series[i];
+
+ // assign colors
+ if (s.color == null) {
+ s.color = colors[colori].toString();
+ ++colori;
+ }
+ else if (typeof s.color == "number")
+ s.color = colors[s.color].toString();
+
+ // turn on lines automatically in case nothing is set
+ if (s.lines.show == null) {
+ var v, show = true;
+ for (v in s)
+ if (s[v] && s[v].show) {
+ show = false;
+ break;
+ }
+ if (show)
+ s.lines.show = true;
+ }
+
+ // setup axes
+ s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, "x"));
+ s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, "y"));
+ }
+ }
+
+ function processData() {
+ var topSentry = Number.POSITIVE_INFINITY,
+ bottomSentry = Number.NEGATIVE_INFINITY,
+ fakeInfinity = Number.MAX_VALUE,
+ i, j, k, m, length,
+ s, points, ps, x, y, axis, val, f, p;
+
+ function updateAxis(axis, min, max) {
+ if (min < axis.datamin && min != -fakeInfinity)
+ axis.datamin = min;
+ if (max > axis.datamax && max != fakeInfinity)
+ axis.datamax = max;
+ }
+
+ $.each(allAxes(), function (_, axis) {
+ // init axis
+ axis.datamin = topSentry;
+ axis.datamax = bottomSentry;
+ axis.used = false;
+ });
+
+ for (i = 0; i < series.length; ++i) {
+ s = series[i];
+ s.datapoints = { points: [] };
+
+ executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]);
+ }
+
+ // first pass: clean and copy data
+ for (i = 0; i < series.length; ++i) {
+ s = series[i];
+
+ var data = s.data, format = s.datapoints.format;
+
+ if (!format) {
+ format = [];
+ // find out how to copy
+ format.push({ x: true, number: true, required: true });
+ format.push({ y: true, number: true, required: true });
+
+ if (s.bars.show || (s.lines.show && s.lines.fill)) {
+ format.push({ y: true, number: true, required: false, defaultValue: 0 });
+ if (s.bars.horizontal) {
+ delete format[format.length - 1].y;
+ format[format.length - 1].x = true;
+ }
+ }
+
+ s.datapoints.format = format;
+ }
+
+ if (s.datapoints.pointsize != null)
+ continue; // already filled in
+
+ s.datapoints.pointsize = format.length;
+
+ ps = s.datapoints.pointsize;
+ points = s.datapoints.points;
+
+ insertSteps = s.lines.show && s.lines.steps;
+ s.xaxis.used = s.yaxis.used = true;
+
+ for (j = k = 0; j < data.length; ++j, k += ps) {
+ p = data[j];
+
+ var nullify = p == null;
+ if (!nullify) {
+ for (m = 0; m < ps; ++m) {
+ val = p[m];
+ f = format[m];
+
+ if (f) {
+ if (f.number && val != null) {
+ val = +val; // convert to number
+ if (isNaN(val))
+ val = null;
+ else if (val == Infinity)
+ val = fakeInfinity;
+ else if (val == -Infinity)
+ val = -fakeInfinity;
+ }
+
+ if (val == null) {
+ if (f.required)
+ nullify = true;
+
+ if (f.defaultValue != null)
+ val = f.defaultValue;
+ }
+ }
+
+ points[k + m] = val;
+ }
+ }
+
+ if (nullify) {
+ for (m = 0; m < ps; ++m) {
+ val = points[k + m];
+ if (val != null) {
+ f = format[m];
+ // extract min/max info
+ if (f.x)
+ updateAxis(s.xaxis, val, val);
+ if (f.y)
+ updateAxis(s.yaxis, val, val);
+ }
+ points[k + m] = null;
+ }
+ }
+ else {
+ // a little bit of line specific stuff that
+ // perhaps shouldn't be here, but lacking
+ // better means...
+ if (insertSteps && k > 0
+ && points[k - ps] != null
+ && points[k - ps] != points[k]
+ && points[k - ps + 1] != points[k + 1]) {
+ // copy the point to make room for a middle point
+ for (m = 0; m < ps; ++m)
+ points[k + ps + m] = points[k + m];
+
+ // middle point has same y
+ points[k + 1] = points[k - ps + 1];
+
+ // we've added a point, better reflect that
+ k += ps;
+ }
+ }
+ }
+ }
+
+ // give the hooks a chance to run
+ for (i = 0; i < series.length; ++i) {
+ s = series[i];
+
+ executeHooks(hooks.processDatapoints, [ s, s.datapoints]);
+ }
+
+ // second pass: find datamax/datamin for auto-scaling
+ for (i = 0; i < series.length; ++i) {
+ s = series[i];
+ points = s.datapoints.points,
+ ps = s.datapoints.pointsize;
+
+ var xmin = topSentry, ymin = topSentry,
+ xmax = bottomSentry, ymax = bottomSentry;
+
+ for (j = 0; j < points.length; j += ps) {
+ if (points[j] == null)
+ continue;
+
+ for (m = 0; m < ps; ++m) {
+ val = points[j + m];
+ f = format[m];
+ if (!f || val == fakeInfinity || val == -fakeInfinity)
+ continue;
+
+ if (f.x) {
+ if (val < xmin)
+ xmin = val;
+ if (val > xmax)
+ xmax = val;
+ }
+ if (f.y) {
+ if (val < ymin)
+ ymin = val;
+ if (val > ymax)
+ ymax = val;
+ }
+ }
+ }
+
+ if (s.bars.show) {
+ // make sure we got room for the bar on the dancing floor
+ var delta = s.bars.align == "left" ? 0 : -s.bars.barWidth/2;
+ if (s.bars.horizontal) {
+ ymin += delta;
+ ymax += delta + s.bars.barWidth;
+ }
+ else {
+ xmin += delta;
+ xmax += delta + s.bars.barWidth;
+ }
+ }
+
+ updateAxis(s.xaxis, xmin, xmax);
+ updateAxis(s.yaxis, ymin, ymax);
+ }
+
+ $.each(allAxes(), function (_, axis) {
+ if (axis.datamin == topSentry)
+ axis.datamin = null;
+ if (axis.datamax == bottomSentry)
+ axis.datamax = null;
+ });
+ }
+
+ function makeCanvas(skipPositioning, cls) {
+ var c = document.createElement('canvas');
+ c.className = cls;
+ c.width = canvasWidth;
+ c.height = canvasHeight;
+
+ if (!skipPositioning)
+ $(c).css({ position: 'absolute', left: 0, top: 0 });
+
+ $(c).appendTo(placeholder);
+
+ if (!c.getContext) // excanvas hack
+ c = window.G_vmlCanvasManager.initElement(c);
+
+ // used for resetting in case we get replotted
+ c.getContext("2d").save();
+
+ return c;
+ }
+
+ function getCanvasDimensions() {
+ canvasWidth = placeholder.width();
+ canvasHeight = placeholder.height();
+
+ if (canvasWidth <= 0 || canvasHeight <= 0)
+ throw "Invalid dimensions for plot, width = " + canvasWidth + ", height = " + canvasHeight;
+ }
+
+ function resizeCanvas(c) {
+ // resizing should reset the state (excanvas seems to be
+ // buggy though)
+ if (c.width != canvasWidth)
+ c.width = canvasWidth;
+
+ if (c.height != canvasHeight)
+ c.height = canvasHeight;
+
+ // so try to get back to the initial state (even if it's
+ // gone now, this should be safe according to the spec)
+ var cctx = c.getContext("2d");
+ cctx.restore();
+
+ // and save again
+ cctx.save();
+ }
+
+ function setupCanvases() {
+ var reused,
+ existingCanvas = placeholder.children("canvas.base"),
+ existingOverlay = placeholder.children("canvas.overlay");
+
+ if (existingCanvas.length == 0 || existingOverlay == 0) {
+ // init everything
+
+ placeholder.html(""); // make sure placeholder is clear
+
+ placeholder.css({ padding: 0 }); // padding messes up the positioning
+
+ if (placeholder.css("position") == 'static')
+ placeholder.css("position", "relative"); // for positioning labels and overlay
+
+ getCanvasDimensions();
+
+ canvas = makeCanvas(true, "base");
+ overlay = makeCanvas(false, "overlay"); // overlay canvas for interactive features
+
+ reused = false;
+ }
+ else {
+ // reuse existing elements
+
+ canvas = existingCanvas.get(0);
+ overlay = existingOverlay.get(0);
+
+ reused = true;
+ }
+
+ ctx = canvas.getContext("2d");
+ octx = overlay.getContext("2d");
+
+ // we include the canvas in the event holder too, because IE 7
+ // sometimes has trouble with the stacking order
+ eventHolder = $([overlay, canvas]);
+
+ if (reused) {
+ // run shutdown in the old plot object
+ placeholder.data("plot").shutdown();
+
+ // reset reused canvases
+ plot.resize();
+
+ // make sure overlay pixels are cleared (canvas is cleared when we redraw)
+ octx.clearRect(0, 0, canvasWidth, canvasHeight);
+
+ // then whack any remaining obvious garbage left
+ eventHolder.unbind();
+ placeholder.children().not([canvas, overlay]).remove();
+ }
+
+ // save in case we get replotted
+ placeholder.data("plot", plot);
+ }
+
+ function bindEvents() {
+ // bind events
+ if (options.grid.hoverable) {
+ eventHolder.mousemove(onMouseMove);
+ eventHolder.mouseleave(onMouseLeave);
+ }
+
+ if (options.grid.clickable)
+ eventHolder.click(onClick);
+
+ executeHooks(hooks.bindEvents, [eventHolder]);
+ }
+
+ function shutdown() {
+ if (redrawTimeout)
+ clearTimeout(redrawTimeout);
+
+ eventHolder.unbind("mousemove", onMouseMove);
+ eventHolder.unbind("mouseleave", onMouseLeave);
+ eventHolder.unbind("click", onClick);
+
+ executeHooks(hooks.shutdown, [eventHolder]);
+ }
+
+ function setTransformationHelpers(axis) {
+ // set helper functions on the axis, assumes plot area
+ // has been computed already
+
+ function identity(x) { return x; }
+
+ var s, m, t = axis.options.transform || identity,
+ it = axis.options.inverseTransform;
+
+ // precompute how much the axis is scaling a point
+ // in canvas space
+ if (axis.direction == "x") {
+ s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min));
+ m = Math.min(t(axis.max), t(axis.min));
+ }
+ else {
+ s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min));
+ s = -s;
+ m = Math.max(t(axis.max), t(axis.min));
+ }
+
+ // data point to canvas coordinate
+ if (t == identity) // slight optimization
+ axis.p2c = function (p) { return (p - m) * s; };
+ else
+ axis.p2c = function (p) { return (t(p) - m) * s; };
+ // canvas coordinate to data point
+ if (!it)
+ axis.c2p = function (c) { return m + c / s; };
+ else
+ axis.c2p = function (c) { return it(m + c / s); };
+ }
+
+ function measureTickLabels(axis) {
+ var opts = axis.options, i, ticks = axis.ticks || [], labels = [],
+ l, w = opts.labelWidth, h = opts.labelHeight, dummyDiv;
+
+ function makeDummyDiv(labels, width) {
+ return $('<div style="position:absolute;top:-10000px;' + width + 'font-size:smaller">' +
+ '<div class="' + axis.direction + 'Axis ' + axis.direction + axis.n + 'Axis">'
+ + labels.join("") + '</div></div>')
+ .appendTo(placeholder);
+ }
+
+ if (axis.direction == "x") {
+ // to avoid measuring the widths of the labels (it's slow), we
+ // construct fixed-size boxes and put the labels inside
+ // them, we don't need the exact figures and the
+ // fixed-size box content is easy to center
+ if (w == null)
+ w = Math.floor(canvasWidth / (ticks.length > 0 ? ticks.length : 1));
+
+ // measure x label heights
+ if (h == null) {
+ labels = [];
+ for (i = 0; i < ticks.length; ++i) {
+ l = ticks[i].label;
+ if (l)
+ labels.push('<div class="tickLabel" style="float:left;width:' + w + 'px">' + l + '</div>');
+ }
+
+ if (labels.length > 0) {
+ // stick them all in the same div and measure
+ // collective height
+ labels.push('<div style="clear:left"></div>');
+ dummyDiv = makeDummyDiv(labels, "width:10000px;");
+ h = dummyDiv.height();
+ dummyDiv.remove();
+ }
+ }
+ }
+ else if (w == null || h == null) {
+ // calculate y label dimensions
+ for (i = 0; i < ticks.length; ++i) {
+ l = ticks[i].label;
+ if (l)
+ labels.push('<div class="tickLabel">' + l + '</div>');
+ }
+
+ if (labels.length > 0) {
+ dummyDiv = makeDummyDiv(labels, "");
+ if (w == null)
+ w = dummyDiv.children().width();
+ if (h == null)
+ h = dummyDiv.find("div.tickLabel").height();
+ dummyDiv.remove();
+ }
+ }
+
+ if (w == null)
+ w = 0;
+ if (h == null)
+ h = 0;
+
+ axis.labelWidth = w;
+ axis.labelHeight = h;
+ }
+
+ function allocateAxisBoxFirstPhase(axis) {
+ // find the bounding box of the axis by looking at label
+ // widths/heights and ticks, make room by diminishing the
+ // plotOffset
+
+ var lw = axis.labelWidth,
+ lh = axis.labelHeight,
+ pos = axis.options.position,
+ tickLength = axis.options.tickLength,
+ axismargin = options.grid.axisMargin,
+ padding = options.grid.labelMargin,
+ all = axis.direction == "x" ? xaxes : yaxes,
+ index;
+
+ // determine axis margin
+ var samePosition = $.grep(all, function (a) {
+ return a && a.options.position == pos && a.reserveSpace;
+ });
+ if ($.inArray(axis, samePosition) == samePosition.length - 1)
+ axismargin = 0; // outermost
+
+ // determine tick length - if we're innermost, we can use "full"
+ if (tickLength == null)
+ tickLength = "full";
+
+ var sameDirection = $.grep(all, function (a) {
+ return a && a.reserveSpace;
+ });
+
+ var innermost = $.inArray(axis, sameDirection) == 0;
+ if (!innermost && tickLength == "full")
+ tickLength = 5;
+
+ if (!isNaN(+tickLength))
+ padding += +tickLength;
+
+ // compute box
+ if (axis.direction == "x") {
+ lh += padding;
+
+ if (pos == "bottom") {
+ plotOffset.bottom += lh + axismargin;
+ axis.box = { top: canvasHeight - plotOffset.bottom, height: lh };
+ }
+ else {
+ axis.box = { top: plotOffset.top + axismargin, height: lh };
+ plotOffset.top += lh + axismargin;
+ }
+ }
+ else {
+ lw += padding;
+
+ if (pos == "left") {
+ axis.box = { left: plotOffset.left + axismargin, width: lw };
+ plotOffset.left += lw + axismargin;
+ }
+ else {
+ plotOffset.right += lw + axismargin;
+ axis.box = { left: canvasWidth - plotOffset.right, width: lw };
+ }
+ }
+
+ // save for future reference
+ axis.position = pos;
+ axis.tickLength = tickLength;
+ axis.box.padding = padding;
+ axis.innermost = innermost;
+ }
+
+ function allocateAxisBoxSecondPhase(axis) {
+ // set remaining bounding box coordinates
+ if (axis.direction == "x") {
+ axis.box.left = plotOffset.left;
+ axis.box.width = plotWidth;
+ }
+ else {
+ axis.box.top = plotOffset.top;
+ axis.box.height = plotHeight;
+ }
+ }
+
+ function setupGrid() {
+ var i, axes = allAxes();
+
+ // first calculate the plot and axis box dimensions
+
+ $.each(axes, function (_, axis) {
+ axis.show = axis.options.show;
+ if (axis.show == null)
+ axis.show = axis.used; // by default an axis is visible if it's got data
+
+ axis.reserveSpace = axis.show || axis.options.reserveSpace;
+
+ setRange(axis);
+ });
+
+ allocatedAxes = $.grep(axes, function (axis) { return axis.reserveSpace; });
+
+ plotOffset.left = plotOffset.right = plotOffset.top = plotOffset.bottom = 0;
+ if (options.grid.show) {
+ $.each(allocatedAxes, function (_, axis) {
+ // make the ticks
+ setupTickGeneration(axis);
+ setTicks(axis);
+ snapRangeToTicks(axis, axis.ticks);
+
+ // find labelWidth/Height for axis
+ measureTickLabels(axis);
+ });
+
+ // with all dimensions in house, we can compute the
+ // axis boxes, start from the outside (reverse order)
+ for (i = allocatedAxes.length - 1; i >= 0; --i)
+ allocateAxisBoxFirstPhase(allocatedAxes[i]);
+
+ // make sure we've got enough space for things that
+ // might stick out
+ var minMargin = options.grid.minBorderMargin;
+ if (minMargin == null) {
+ minMargin = 0;
+ for (i = 0; i < series.length; ++i)
+ minMargin = Math.max(minMargin, series[i].points.radius + series[i].points.lineWidth/2);
+ }
+
+ for (var a in plotOffset) {
+ plotOffset[a] += options.grid.borderWidth;
+ plotOffset[a] = Math.max(minMargin, plotOffset[a]);
+ }
+ }
+
+ plotWidth = canvasWidth - plotOffset.left - plotOffset.right;
+ plotHeight = canvasHeight - plotOffset.bottom - plotOffset.top;
+
+ // now we got the proper plotWidth/Height, we can compute the scaling
+ $.each(axes, function (_, axis) {
+ setTransformationHelpers(axis);
+ });
+
+ if (options.grid.show) {
+ $.each(allocatedAxes, function (_, axis) {
+ allocateAxisBoxSecondPhase(axis);
+ });
+
+ insertAxisLabels();
+ }
+
+ insertLegend();
+ }
+
+ function setRange(axis) {
+ var opts = axis.options,
+ min = +(opts.min != null ? opts.min : axis.datamin),
+ max = +(opts.max != null ? opts.max : axis.datamax),
+ delta = max - min;
+
+ if (delta == 0.0) {
+ // degenerate case
+ var widen = max == 0 ? 1 : 0.01;
+
+ if (opts.min == null)
+ min -= widen;
+ // always widen max if we couldn't widen min to ensure we
+ // don't fall into min == max which doesn't work
+ if (opts.max == null || opts.min != null)
+ max += widen;
+ }
+ else {
+ // consider autoscaling
+ var margin = opts.autoscaleMargin;
+ if (margin != null) {
+ if (opts.min == null) {
+ min -= delta * margin;
+ // make sure we don't go below zero if all values
+ // are positive
+ if (min < 0 && axis.datamin != null && axis.datamin >= 0)
+ min = 0;
+ }
+ if (opts.max == null) {
+ max += delta * margin;
+ if (max > 0 && axis.datamax != null && axis.datamax <= 0)
+ max = 0;
+ }
+ }
+ }
+ axis.min = min;
+ axis.max = max;
+ }
+
+ function setupTickGeneration(axis) {
+ var opts = axis.options;
+
+ // estimate number of ticks
+ var noTicks;
+ if (typeof opts.ticks == "number" && opts.ticks > 0)
+ noTicks = opts.ticks;
+ else
+ // heuristic based on the model a*sqrt(x) fitted to
+ // some data points that seemed reasonable
+ noTicks = 0.3 * Math.sqrt(axis.direction == "x" ? canvasWidth : canvasHeight);
+
+ var delta = (axis.max - axis.min) / noTicks,
+ size, generator, unit, formatter, i, magn, norm;
+
+ if (opts.mode == "time") {
+ // pretty handling of time
+
+ // map of app. size of time units in milliseconds
+ var timeUnitSize = {
+ "second": 1000,
+ "minute": 60 * 1000,
+ "hour": 60 * 60 * 1000,
+ "day": 24 * 60 * 60 * 1000,
+ "month": 30 * 24 * 60 * 60 * 1000,
+ "year": 365.2425 * 24 * 60 * 60 * 1000
+ };
+
+
+ // the allowed tick sizes, after 1 year we use
+ // an integer algorithm
+ var spec = [
+ [1, "second"], [2, "second"], [5, "second"], [10, "second"],
+ [30, "second"],
+ [1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"],
+ [30, "minute"],
+ [1, "hour"], [2, "hour"], [4, "hour"],
+ [8, "hour"], [12, "hour"],
+ [1, "day"], [2, "day"], [3, "day"],
+ [0.25, "month"], [0.5, "month"], [1, "month"],
+ [2, "month"], [3, "month"], [6, "month"],
+ [1, "year"]
+ ];
+
+ var minSize = 0;
+ if (opts.minTickSize != null) {
+ if (typeof opts.tickSize == "number")
+ minSize = opts.tickSize;
+ else
+ minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]];
+ }
+
+ for (var i = 0; i < spec.length - 1; ++i)
+ if (delta < (spec[i][0] * timeUnitSize[spec[i][1]]
+ + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2
+ && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize)
+ break;
+ size = spec[i][0];
+ unit = spec[i][1];
+
+ // special-case the possibility of several years
+ if (unit == "year") {
+ magn = Math.pow(10, Math.floor(Math.log(delta / timeUnitSize.year) / Math.LN10));
+ norm = (delta / timeUnitSize.year) / magn;
+ if (norm < 1.5)
+ size = 1;
+ else if (norm < 3)
+ size = 2;
+ else if (norm < 7.5)
+ size = 5;
+ else
+ size = 10;
+
+ size *= magn;
+ }
+
+ axis.tickSize = opts.tickSize || [size, unit];
+
+ generator = function(axis) {
+ var ticks = [],
+ tickSize = axis.tickSize[0], unit = axis.tickSize[1],
+ d = new Date(axis.min);
+
+ var step = tickSize * timeUnitSize[unit];
+
+ if (unit == "second")
+ d.setUTCSeconds(floorInBase(d.getUTCSeconds(), tickSize));
+ if (unit == "minute")
+ d.setUTCMinutes(floorInBase(d.getUTCMinutes(), tickSize));
+ if (unit == "hour")
+ d.setUTCHours(floorInBase(d.getUTCHours(), tickSize));
+ if (unit == "month")
+ d.setUTCMonth(floorInBase(d.getUTCMonth(), tickSize));
+ if (unit == "year")
+ d.setUTCFullYear(floorInBase(d.getUTCFullYear(), tickSize));
+
+ // reset smaller components
+ d.setUTCMilliseconds(0);
+ if (step >= timeUnitSize.minute)
+ d.setUTCSeconds(0);
+ if (step >= timeUnitSize.hour)
+ d.setUTCMinutes(0);
+ if (step >= timeUnitSize.day)
+ d.setUTCHours(0);
+ if (step >= timeUnitSize.day * 4)
+ d.setUTCDate(1);
+ if (step >= timeUnitSize.year)
+ d.setUTCMonth(0);
+
+
+ var carry = 0, v = Number.NaN, prev;
+ do {
+ prev = v;
+ v = d.getTime();
+ ticks.push(v);
+ if (unit == "month") {
+ if (tickSize < 1) {
+ // a bit complicated - we'll divide the month
+ // up but we need to take care of fractions
+ // so we don't end up in the middle of a day
+ d.setUTCDate(1);
+ var start = d.getTime();
+ d.setUTCMonth(d.getUTCMonth() + 1);
+ var end = d.getTime();
+ d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize);
+ carry = d.getUTCHours();
+ d.setUTCHours(0);
+ }
+ else
+ d.setUTCMonth(d.getUTCMonth() + tickSize);
+ }
+ else if (unit == "year") {
+ d.setUTCFullYear(d.getUTCFullYear() + tickSize);
+ }
+ else
+ d.setTime(v + step);
+ } while (v < axis.max && v != prev);
+
+ return ticks;
+ };
+
+ formatter = function (v, axis) {
+ var d = new Date(v);
+
+ // first check global format
+ if (opts.timeformat != null)
+ return $.plot.formatDate(d, opts.timeformat, opts.monthNames);
+
+ var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]];
+ var span = axis.max - axis.min;
+ var suffix = (opts.twelveHourClock) ? " %p" : "";
+
+ if (t < timeUnitSize.minute)
+ fmt = "%h:%M:%S" + suffix;
+ else if (t < timeUnitSize.day) {
+ if (span < 2 * timeUnitSize.day)
+ fmt = "%h:%M" + suffix;
+ else
+ fmt = "%b %d %h:%M" + suffix;
+ }
+ else if (t < timeUnitSize.month)
+ fmt = "%b %d";
+ else if (t < timeUnitSize.year) {
+ if (span < timeUnitSize.year)
+ fmt = "%b";
+ else
+ fmt = "%b %y";
+ }
+ else
+ fmt = "%y";
+
+ return $.plot.formatDate(d, fmt, opts.monthNames);
+ };
+ }
+ else {
+ // pretty rounding of base-10 numbers
+ var maxDec = opts.tickDecimals;
+ var dec = -Math.floor(Math.log(delta) / Math.LN10);
+ if (maxDec != null && dec > maxDec)
+ dec = maxDec;
+
+ magn = Math.pow(10, -dec);
+ norm = delta / magn; // norm is between 1.0 and 10.0
+
+ if (norm < 1.5)
+ size = 1;
+ else if (norm < 3) {
+ size = 2;
+ // special case for 2.5, requires an extra decimal
+ if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) {
+ size = 2.5;
+ ++dec;
+ }
+ }
+ else if (norm < 7.5)
+ size = 5;
+ else
+ size = 10;
+
+ size *= magn;
+
+ if (opts.minTickSize != null && size < opts.minTickSize)
+ size = opts.minTickSize;
+
+ axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec);
+ axis.tickSize = opts.tickSize || size;
+
+ generator = function (axis) {
+ var ticks = [];
+
+ // spew out all possible ticks
+ var start = floorInBase(axis.min, axis.tickSize),
+ i = 0, v = Number.NaN, prev;
+ do {
+ prev = v;
+ v = start + i * axis.tickSize;
+ ticks.push(v);
+ ++i;
+ } while (v < axis.max && v != prev);
+ return ticks;
+ };
+
+ formatter = function (v, axis) {
+ return v.toFixed(axis.tickDecimals);
+ };
+ }
+
+ if (opts.alignTicksWithAxis != null) {
+ var otherAxis = (axis.direction == "x" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1];
+ if (otherAxis && otherAxis.used && otherAxis != axis) {
+ // consider snapping min/max to outermost nice ticks
+ var niceTicks = generator(axis);
+ if (niceTicks.length > 0) {
+ if (opts.min == null)
+ axis.min = Math.min(axis.min, niceTicks[0]);
+ if (opts.max == null && niceTicks.length > 1)
+ axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]);
+ }
+
+ generator = function (axis) {
+ // copy ticks, scaled to this axis
+ var ticks = [], v, i;
+ for (i = 0; i < otherAxis.ticks.length; ++i) {
+ v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min);
+ v = axis.min + v * (axis.max - axis.min);
+ ticks.push(v);
+ }
+ return ticks;
+ };
+
+ // we might need an extra decimal since forced
+ // ticks don't necessarily fit naturally
+ if (axis.mode != "time" && opts.tickDecimals == null) {
+ var extraDec = Math.max(0, -Math.floor(Math.log(delta) / Math.LN10) + 1),
+ ts = generator(axis);
+
+ // only proceed if the tick interval rounded
+ // with an extra decimal doesn't give us a
+ // zero at end
+ if (!(ts.length > 1 && /\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec))))
+ axis.tickDecimals = extraDec;
+ }
+ }
+ }
+
+ axis.tickGenerator = generator;
+ if ($.isFunction(opts.tickFormatter))
+ axis.tickFormatter = function (v, axis) { return "" + opts.tickFormatter(v, axis); };
+ else
+ axis.tickFormatter = formatter;
+ }
+
+ function setTicks(axis) {
+ var oticks = axis.options.ticks, ticks = [];
+ if (oticks == null || (typeof oticks == "number" && oticks > 0))
+ ticks = axis.tickGenerator(axis);
+ else if (oticks) {
+ if ($.isFunction(oticks))
+ // generate the ticks
+ ticks = oticks({ min: axis.min, max: axis.max });
+ else
+ ticks = oticks;
+ }
+
+ // clean up/labelify the supplied ticks, copy them over
+ var i, v;
+ axis.ticks = [];
+ for (i = 0; i < ticks.length; ++i) {
+ var label = null;
+ var t = ticks[i];
+ if (typeof t == "object") {
+ v = +t[0];
+ if (t.length > 1)
+ label = t[1];
+ }
+ else
+ v = +t;
+ if (label == null)
+ label = axis.tickFormatter(v, axis);
+ if (!isNaN(v))
+ axis.ticks.push({ v: v, label: label });
+ }
+ }
+
+ function snapRangeToTicks(axis, ticks) {
+ if (axis.options.autoscaleMargin && ticks.length > 0) {
+ // snap to ticks
+ if (axis.options.min == null)
+ axis.min = Math.min(axis.min, ticks[0].v);
+ if (axis.options.max == null && ticks.length > 1)
+ axis.max = Math.max(axis.max, ticks[ticks.length - 1].v);
+ }
+ }
+
+ function draw() {
+ ctx.clearRect(0, 0, canvasWidth, canvasHeight);
+
+ var grid = options.grid;
+
+ // draw background, if any
+ if (grid.show && grid.backgroundColor)
+ drawBackground();
+
+ if (grid.show && !grid.aboveData)
+ drawGrid();
+
+ for (var i = 0; i < series.length; ++i) {
+ executeHooks(hooks.drawSeries, [ctx, series[i]]);
+ drawSeries(series[i]);
+ }
+
+ executeHooks(hooks.draw, [ctx]);
+
+ if (grid.show && grid.aboveData)
+ drawGrid();
+ }
+
+ function extractRange(ranges, coord) {
+ var axis, from, to, key, axes = allAxes();
+
+ for (i = 0; i < axes.length; ++i) {
+ axis = axes[i];
+ if (axis.direction == coord) {
+ key = coord + axis.n + "axis";
+ if (!ranges[key] && axis.n == 1)
+ key = coord + "axis"; // support x1axis as xaxis
+ if (ranges[key]) {
+ from = ranges[key].from;
+ to = ranges[key].to;
+ break;
+ }
+ }
+ }
+
+ // backwards-compat stuff - to be removed in future
+ if (!ranges[key]) {
+ axis = coord == "x" ? xaxes[0] : yaxes[0];
+ from = ranges[coord + "1"];
+ to = ranges[coord + "2"];
+ }
+
+ // auto-reverse as an added bonus
+ if (from != null && to != null && from > to) {
+ var tmp = from;
+ from = to;
+ to = tmp;
+ }
+
+ return { from: from, to: to, axis: axis };
+ }
+
+ function drawBackground() {
+ ctx.save();
+ ctx.translate(plotOffset.left, plotOffset.top);
+
+ ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)");
+ ctx.fillRect(0, 0, plotWidth, plotHeight);
+ ctx.restore();
+ }
+
+ function drawGrid() {
+ var i;
+
+ ctx.save();
+ ctx.translate(plotOffset.left, plotOffset.top);
+
+ // draw markings
+ var markings = options.grid.markings;
+ if (markings) {
+ if ($.isFunction(markings)) {
+ var axes = plot.getAxes();
+ // xmin etc. is backwards compatibility, to be
+ // removed in the future
+ axes.xmin = axes.xaxis.min;
+ axes.xmax = axes.xaxis.max;
+ axes.ymin = axes.yaxis.min;
+ axes.ymax = axes.yaxis.max;
+
+ markings = markings(axes);
+ }
+
+ for (i = 0; i < markings.length; ++i) {
+ var m = markings[i],
+ xrange = extractRange(m, "x"),
+ yrange = extractRange(m, "y");
+
+ // fill in missing
+ if (xrange.from == null)
+ xrange.from = xrange.axis.min;
+ if (xrange.to == null)
+ xrange.to = xrange.axis.max;
+ if (yrange.from == null)
+ yrange.from = yrange.axis.min;
+ if (yrange.to == null)
+ yrange.to = yrange.axis.max;
+
+ // clip
+ if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max ||
+ yrange.to < yrange.axis.min || yrange.from > yrange.axis.max)
+ continue;
+
+ xrange.from = Math.max(xrange.from, xrange.axis.min);
+ xrange.to = Math.min(xrange.to, xrange.axis.max);
+ yrange.from = Math.max(yrange.from, yrange.axis.min);
+ yrange.to = Math.min(yrange.to, yrange.axis.max);
+
+ if (xrange.from == xrange.to && yrange.from == yrange.to)
+ continue;
+
+ // then draw
+ xrange.from = xrange.axis.p2c(xrange.from);
+ xrange.to = xrange.axis.p2c(xrange.to);
+ yrange.from = yrange.axis.p2c(yrange.from);
+ yrange.to = yrange.axis.p2c(yrange.to);
+
+ if (xrange.from == xrange.to || yrange.from == yrange.to) {
+ // draw line
+ ctx.beginPath();
+ ctx.strokeStyle = m.color || options.grid.markingsColor;
+ ctx.lineWidth = m.lineWidth || options.grid.markingsLineWidth;
+ ctx.moveTo(xrange.from, yrange.from);
+ ctx.lineTo(xrange.to, yrange.to);
+ ctx.stroke();
+ }
+ else {
+ // fill area
+ ctx.fillStyle = m.color || options.grid.markingsColor;
+ ctx.fillRect(xrange.from, yrange.to,
+ xrange.to - xrange.from,
+ yrange.from - yrange.to);
+ }
+ }
+ }
+
+ // draw the ticks
+ var axes = allAxes(), bw = options.grid.borderWidth;
+
+ for (var j = 0; j < axes.length; ++j) {
+ var axis = axes[j], box = axis.box,
+ t = axis.tickLength, x, y, xoff, yoff;
+ if (!axis.show || axis.ticks.length == 0)
+ continue
+
+ ctx.strokeStyle = axis.options.tickColor || $.color.parse(axis.options.color).scale('a', 0.22).toString();
+ ctx.lineWidth = 1;
+
+ // find the edges
+ if (axis.direction == "x") {
+ x = 0;
+ if (t == "full")
+ y = (axis.position == "top" ? 0 : plotHeight);
+ else
+ y = box.top - plotOffset.top + (axis.position == "top" ? box.height : 0);
+ }
+ else {
+ y = 0;
+ if (t == "full")
+ x = (axis.position == "left" ? 0 : plotWidth);
+ else
+ x = box.left - plotOffset.left + (axis.position == "left" ? box.width : 0);
+ }
+
+ // draw tick bar
+ if (!axis.innermost) {
+ ctx.beginPath();
+ xoff = yoff = 0;
+ if (axis.direction == "x")
+ xoff = plotWidth;
+ else
+ yoff = plotHeight;
+
+ if (ctx.lineWidth == 1) {
+ x = Math.floor(x) + 0.5;
+ y = Math.floor(y) + 0.5;
+ }
+
+ ctx.moveTo(x, y);
+ ctx.lineTo(x + xoff, y + yoff);
+ ctx.stroke();
+ }
+
+ // draw ticks
+ ctx.beginPath();
+ for (i = 0; i < axis.ticks.length; ++i) {
+ var v = axis.ticks[i].v;
+
+ xoff = yoff = 0;
+
+ if (v < axis.min || v > axis.max
+ // skip those lying on the axes if we got a border
+ || (t == "full" && bw > 0
+ && (v == axis.min || v == axis.max)))
+ continue;
+
+ if (axis.direction == "x") {
+ x = axis.p2c(v);
+ yoff = t == "full" ? -plotHeight : t;
+
+ if (axis.position == "top")
+ yoff = -yoff;
+ }
+ else {
+ y = axis.p2c(v);
+ xoff = t == "full" ? -plotWidth : t;
+
+ if (axis.position == "left")
+ xoff = -xoff;
+ }
+
+ if (ctx.lineWidth == 1) {
+ if (axis.direction == "x")
+ x = Math.floor(x) + 0.5;
+ else
+ y = Math.floor(y) + 0.5;
+ }
+
+ ctx.moveTo(x, y);
+ ctx.lineTo(x + xoff, y + yoff);
+ }
+
+ ctx.stroke();
+ }
+
+
+ // draw border
+ if (bw) {
+ ctx.lineWidth = bw;
+ ctx.strokeStyle = options.grid.borderColor;
+ ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw);
+ }
+
+ ctx.restore();
+ }
+
+ function insertAxisLabels() {
+ placeholder.find(".tickLabels").remove();
+
+ var html = ['<div class="tickLabels" style="font-size:smaller">'];
+
+ var axes = allAxes();
+ for (var j = 0; j < axes.length; ++j) {
+ var axis = axes[j], box = axis.box;
+ if (!axis.show)
+ continue;
+ //debug: html.push('<div style="position:absolute;opacity:0.10;background-color:red;left:' + box.left + 'px;top:' + box.top + 'px;width:' + box.width + 'px;height:' + box.height + 'px"></div>')
+ html.push('<div class="' + axis.direction + 'Axis ' + axis.direction + axis.n + 'Axis" style="color:' + axis.options.color + '">');
+ for (var i = 0; i < axis.ticks.length; ++i) {
+ var tick = axis.ticks[i];
+ if (!tick.label || tick.v < axis.min || tick.v > axis.max)
+ continue;
+
+ var pos = {}, align;
+
+ if (axis.direction == "x") {
+ align = "center";
+ pos.left = Math.round(plotOffset.left + axis.p2c(tick.v) - axis.labelWidth/2);
+ if (axis.position == "bottom")
+ pos.top = box.top + box.padding;
+ else
+ pos.bottom = canvasHeight - (box.top + box.height - box.padding);
+ }
+ else {
+ pos.top = Math.round(plotOffset.top + axis.p2c(tick.v) - axis.labelHeight/2);
+ if (axis.position == "left") {
+ pos.right = canvasWidth - (box.left + box.width - box.padding)
+ align = "right";
+ }
+ else {
+ pos.left = box.left + box.padding;
+ align = "left";
+ }
+ }
+
+ pos.width = axis.labelWidth;
+
+ var style = ["position:absolute", "text-align:" + align ];
+ for (var a in pos)
+ style.push(a + ":" + pos[a] + "px")
+
+ html.push('<div class="tickLabel" style="' + style.join(';') + '">' + tick.label + '</div>');
+ }
+ html.push('</div>');
+ }
+
+ html.push('</div>');
+
+ placeholder.append(html.join(""));
+ }
+
+ function drawSeries(series) {
+ if (series.lines.show)
+ drawSeriesLines(series);
+ if (series.bars.show)
+ drawSeriesBars(series);
+ if (series.points.show)
+ drawSeriesPoints(series);
+ }
+
+ function drawSeriesLines(series) {
+ function plotLine(datapoints, xoffset, yoffset, axisx, axisy) {
+ var points = datapoints.points,
+ ps = datapoints.pointsize,
+ prevx = null, prevy = null;
+
+ ctx.beginPath();
+ for (var i = ps; i < points.length; i += ps) {
+ var x1 = points[i - ps], y1 = points[i - ps + 1],
+ x2 = points[i], y2 = points[i + 1];
+
+ if (x1 == null || x2 == null)
+ continue;
+
+ // clip with ymin
+ if (y1 <= y2 && y1 < axisy.min) {
+ if (y2 < axisy.min)
+ continue; // line segment is outside
+ // compute new intersection point
+ x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
+ y1 = axisy.min;
+ }
+ else if (y2 <= y1 && y2 < axisy.min) {
+ if (y1 < axisy.min)
+ continue;
+ x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
+ y2 = axisy.min;
+ }
+
+ // clip with ymax
+ if (y1 >= y2 && y1 > axisy.max) {
+ if (y2 > axisy.max)
+ continue;
+ x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
+ y1 = axisy.max;
+ }
+ else if (y2 >= y1 && y2 > axisy.max) {
+ if (y1 > axisy.max)
+ continue;
+ x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
+ y2 = axisy.max;
+ }
+
+ // clip with xmin
+ if (x1 <= x2 && x1 < axisx.min) {
+ if (x2 < axisx.min)
+ continue;
+ y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
+ x1 = axisx.min;
+ }
+ else if (x2 <= x1 && x2 < axisx.min) {
+ if (x1 < axisx.min)
+ continue;
+ y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
+ x2 = axisx.min;
+ }
+
+ // clip with xmax
+ if (x1 >= x2 && x1 > axisx.max) {
+ if (x2 > axisx.max)
+ continue;
+ y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
+ x1 = axisx.max;
+ }
+ else if (x2 >= x1 && x2 > axisx.max) {
+ if (x1 > axisx.max)
+ continue;
+ y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
+ x2 = axisx.max;
+ }
+
+ if (x1 != prevx || y1 != prevy)
+ ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset);
+
+ prevx = x2;
+ prevy = y2;
+ ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset);
+ }
+ ctx.stroke();
+ }
+
+ function plotLineArea(datapoints, axisx, axisy) {
+ var points = datapoints.points,
+ ps = datapoints.pointsize,
+ bottom = Math.min(Math.max(0, axisy.min), axisy.max),
+ i = 0, top, areaOpen = false,
+ ypos = 1, segmentStart = 0, segmentEnd = 0;
+
+ // we process each segment in two turns, first forward
+ // direction to sketch out top, then once we hit the
+ // end we go backwards to sketch the bottom
+ while (true) {
+ if (ps > 0 && i > points.length + ps)
+ break;
+
+ i += ps; // ps is negative if going backwards
+
+ var x1 = points[i - ps],
+ y1 = points[i - ps + ypos],
+ x2 = points[i], y2 = points[i + ypos];
+
+ if (areaOpen) {
+ if (ps > 0 && x1 != null && x2 == null) {
+ // at turning point
+ segmentEnd = i;
+ ps = -ps;
+ ypos = 2;
+ continue;
+ }
+
+ if (ps < 0 && i == segmentStart + ps) {
+ // done with the reverse sweep
+ ctx.fill();
+ areaOpen = false;
+ ps = -ps;
+ ypos = 1;
+ i = segmentStart = segmentEnd + ps;
+ continue;
+ }
+ }
+
+ if (x1 == null || x2 == null)
+ continue;
+
+ // clip x values
+
+ // clip with xmin
+ if (x1 <= x2 && x1 < axisx.min) {
+ if (x2 < axisx.min)
+ continue;
+ y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
+ x1 = axisx.min;
+ }
+ else if (x2 <= x1 && x2 < axisx.min) {
+ if (x1 < axisx.min)
+ continue;
+ y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1;
+ x2 = axisx.min;
+ }
+
+ // clip with xmax
+ if (x1 >= x2 && x1 > axisx.max) {
+ if (x2 > axisx.max)
+ continue;
+ y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
+ x1 = axisx.max;
+ }
+ else if (x2 >= x1 && x2 > axisx.max) {
+ if (x1 > axisx.max)
+ continue;
+ y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1;
+ x2 = axisx.max;
+ }
+
+ if (!areaOpen) {
+ // open area
+ ctx.beginPath();
+ ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom));
+ areaOpen = true;
+ }
+
+ // now first check the case where both is outside
+ if (y1 >= axisy.max && y2 >= axisy.max) {
+ ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max));
+ ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max));
+ continue;
+ }
+ else if (y1 <= axisy.min && y2 <= axisy.min) {
+ ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min));
+ ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min));
+ continue;
+ }
+
+ // else it's a bit more complicated, there might
+ // be a flat maxed out rectangle first, then a
+ // triangular cutout or reverse; to find these
+ // keep track of the current x values
+ var x1old = x1, x2old = x2;
+
+ // clip the y values, without shortcutting, we
+ // go through all cases in turn
+
+ // clip with ymin
+ if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) {
+ x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
+ y1 = axisy.min;
+ }
+ else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) {
+ x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1;
+ y2 = axisy.min;
+ }
+
+ // clip with ymax
+ if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) {
+ x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
+ y1 = axisy.max;
+ }
+ else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) {
+ x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1;
+ y2 = axisy.max;
+ }
+
+ // if the x value was changed we got a rectangle
+ // to fill
+ if (x1 != x1old) {
+ ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1));
+ // it goes to (x1, y1), but we fill that below
+ }
+
+ // fill triangular section, this sometimes result
+ // in redundant points if (x1, y1) hasn't changed
+ // from previous line to, but we just ignore that
+ ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1));
+ ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));
+
+ // fill the other rectangle if it's there
+ if (x2 != x2old) {
+ ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2));
+ ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2));
+ }
+ }
+ }
+
+ ctx.save();
+ ctx.translate(plotOffset.left, plotOffset.top);
+ ctx.lineJoin = "round";
+
+ var lw = series.lines.lineWidth,
+ sw = series.shadowSize;
+ // FIXME: consider another form of shadow when filling is turned on
+ if (lw > 0 && sw > 0) {
+ // draw shadow as a thick and thin line with transparency
+ ctx.lineWidth = sw;
+ ctx.strokeStyle = "rgba(0,0,0,0.1)";
+ // position shadow at angle from the mid of line
+ var angle = Math.PI/18;
+ plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis);
+ ctx.lineWidth = sw/2;
+ plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis);
+ }
+
+ ctx.lineWidth = lw;
+ ctx.strokeStyle = series.color;
+ var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight);
+ if (fillStyle) {
+ ctx.fillStyle = fillStyle;
+ plotLineArea(series.datapoints, series.xaxis, series.yaxis);
+ }
+
+ if (lw > 0)
+ plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis);
+ ctx.restore();
+ }
+
+ function drawSeriesPoints(series) {
+ function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) {
+ var points = datapoints.points, ps = datapoints.pointsize;
+
+ for (var i = 0; i < points.length; i += ps) {
+ var x = points[i], y = points[i + 1];
+ if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max)
+ continue;
+
+ ctx.beginPath();
+ x = axisx.p2c(x);
+ y = axisy.p2c(y) + offset;
+ if (symbol == "circle")
+ ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false);
+ else
+ symbol(ctx, x, y, radius, shadow);
+ ctx.closePath();
+
+ if (fillStyle) {
+ ctx.fillStyle = fillStyle;
+ ctx.fill();
+ }
+ ctx.stroke();
+ }
+ }
+
+ ctx.save();
+ ctx.translate(plotOffset.left, plotOffset.top);
+
+ var lw = series.points.lineWidth,
+ sw = series.shadowSize,
+ radius = series.points.radius,
+ symbol = series.points.symbol;
+ if (lw > 0 && sw > 0) {
+ // draw shadow in two steps
+ var w = sw / 2;
+ ctx.lineWidth = w;
+ ctx.strokeStyle = "rgba(0,0,0,0.1)";
+ plotPoints(series.datapoints, radius, null, w + w/2, true,
+ series.xaxis, series.yaxis, symbol);
+
+ ctx.strokeStyle = "rgba(0,0,0,0.2)";
+ plotPoints(series.datapoints, radius, null, w/2, true,
+ series.xaxis, series.yaxis, symbol);
+ }
+
+ ctx.lineWidth = lw;
+ ctx.strokeStyle = series.color;
+ plotPoints(series.datapoints, radius,
+ getFillStyle(series.points, series.color), 0, false,
+ series.xaxis, series.yaxis, symbol);
+ ctx.restore();
+ }
+
+ function drawBar(x, y, b, barLeft, barRight, offset, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) {
+ var left, right, bottom, top,
+ drawLeft, drawRight, drawTop, drawBottom,
+ tmp;
+
+ // in horizontal mode, we start the bar from the left
+ // instead of from the bottom so it appears to be
+ // horizontal rather than vertical
+ if (horizontal) {
+ drawBottom = drawRight = drawTop = true;
+ drawLeft = false;
+ left = b;
+ right = x;
+ top = y + barLeft;
+ bottom = y + barRight;
+
+ // account for negative bars
+ if (right < left) {
+ tmp = right;
+ right = left;
+ left = tmp;
+ drawLeft = true;
+ drawRight = false;
+ }
+ }
+ else {
+ drawLeft = drawRight = drawTop = true;
+ drawBottom = false;
+ left = x + barLeft;
+ right = x + barRight;
+ bottom = b;
+ top = y;
+
+ // account for negative bars
+ if (top < bottom) {
+ tmp = top;
+ top = bottom;
+ bottom = tmp;
+ drawBottom = true;
+ drawTop = false;
+ }
+ }
+
+ // clip
+ if (right < axisx.min || left > axisx.max ||
+ top < axisy.min || bottom > axisy.max)
+ return;
+
+ if (left < axisx.min) {
+ left = axisx.min;
+ drawLeft = false;
+ }
+
+ if (right > axisx.max) {
+ right = axisx.max;
+ drawRight = false;
+ }
+
+ if (bottom < axisy.min) {
+ bottom = axisy.min;
+ drawBottom = false;
+ }
+
+ if (top > axisy.max) {
+ top = axisy.max;
+ drawTop = false;
+ }
+
+ left = axisx.p2c(left);
+ bottom = axisy.p2c(bottom);
+ right = axisx.p2c(right);
+ top = axisy.p2c(top);
+
+ // fill the bar
+ if (fillStyleCallback) {
+ c.beginPath();
+ c.moveTo(left, bottom);
+ c.lineTo(left, top);
+ c.lineTo(right, top);
+ c.lineTo(right, bottom);
+ c.fillStyle = fillStyleCallback(bottom, top);
+ c.fill();
+ }
+
+ // draw outline
+ if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) {
+ c.beginPath();
+
+ // FIXME: inline moveTo is buggy with excanvas
+ c.moveTo(left, bottom + offset);
+ if (drawLeft)
+ c.lineTo(left, top + offset);
+ else
+ c.moveTo(left, top + offset);
+ if (drawTop)
+ c.lineTo(right, top + offset);
+ else
+ c.moveTo(right, top + offset);
+ if (drawRight)
+ c.lineTo(right, bottom + offset);
+ else
+ c.moveTo(right, bottom + offset);
+ if (drawBottom)
+ c.lineTo(left, bottom + offset);
+ else
+ c.moveTo(left, bottom + offset);
+ c.stroke();
+ }
+ }
+
+ function drawSeriesBars(series) {
+ function plotBars(datapoints, barLeft, barRight, offset, fillStyleCallback, axisx, axisy) {
+ var points = datapoints.points, ps = datapoints.pointsize;
+
+ for (var i = 0; i < points.length; i += ps) {
+ if (points[i] == null)
+ continue;
+ drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, offset, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth);
+ }
+ }
+
+ ctx.save();
+ ctx.translate(plotOffset.left, plotOffset.top);
+
+ // FIXME: figure out a way to add shadows (for instance along the right edge)
+ ctx.lineWidth = series.bars.lineWidth;
+ ctx.strokeStyle = series.color;
+ var barLeft = series.bars.align == "left" ? 0 : -series.bars.barWidth/2;
+ var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null;
+ plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, 0, fillStyleCallback, series.xaxis, series.yaxis);
+ ctx.restore();
+ }
+
+ function getFillStyle(filloptions, seriesColor, bottom, top) {
+ var fill = filloptions.fill;
+ if (!fill)
+ return null;
+
+ if (filloptions.fillColor)
+ return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor);
+
+ var c = $.color.parse(seriesColor);
+ c.a = typeof fill == "number" ? fill : 0.4;
+ c.normalize();
+ return c.toString();
+ }
+
+ function insertLegend() {
+ placeholder.find(".legend").remove();
+
+ if (!options.legend.show)
+ return;
+
+ var fragments = [], rowStarted = false,
+ lf = options.legend.labelFormatter, s, label;
+ for (var i = 0; i < series.length; ++i) {
+ s = series[i];
+ label = s.label;
+ if (!label)
+ continue;
+
+ if (i % options.legend.noColumns == 0) {
+ if (rowStarted)
+ fragments.push('</tr>');
+ fragments.push('<tr>');
+ rowStarted = true;
+ }
+
+ if (lf)
+ label = lf(label, s);
+
+ fragments.push(
+ '<td class="legendColorBox"><div style="border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px"><div style="width:4px;height:0;border:5px solid ' + s.color + ';overflow:hidden"></div></div></td>' +
+ '<td class="legendLabel">' + label + '</td>');
+ }
+ if (rowStarted)
+