<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 1995-2025 held by the author(s).  All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer
      in the documentation and/or other materials provided with the
      distribution.
    * Neither the names of the Naval Postgraduate School (NPS)
      Modeling Virtual Environments and Simulation (MOVES) Institute
      (https://www.nps.edu and https://MovesInstitute.nps.edu)
      nor the names of its contributors may be used to endorse or
      promote products derived from this software without specific
      prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-->

<!--
    Document   : build.xml
    Created on : 25 April 2006
    Author     : Don Brutzman
    Description: Creation and customization of Ant build.xml files for each X3D examples archive using common template
    Version    : $Id: build.xml 37498 2025-08-29 21:43:31Z brutzman $
-->

<project name="X3D examples: archive top level" default="all" basedir=".">
    <description>Creation and customization of Ant build.xml files for each X3D examples archive using a common template.</description>

    <!-- private configuration properties:  server names, user names and passwords ====================== -->

    <property name=  "access.properties.filename"  value="access.properties"/>
    <property file="${access.properties.filename}"/> <!-- loads the properties defined in the .properties file -->
    <echo message="access.properties.filename=${access.properties.filename}"/>

    <!-- ======================================================================================== -->

    <property environment="env"/>

    <!-- note that Netbeans default path is built in and will have to be overridden by going to   -->
    <!-- Tools > Options > Java > Ant                                                             -->
    <!-- and then pointing to C:\apache-ant-1.10.5 (or somesuch locally installed directory)      -->

    <property name="VERBOSE"        value="true"/>
    <property name="VERBOSE_UPLOAD" value="true"/>

    <!-- ANT Contrib archive at https://sourceforge.net/project/showfiles.php?group_id=36177       -->
    <!-- must have ant-contrib.jar in ANT_HOME/lib (or else specify path)                         -->
    <taskdef resource="net/sf/antcontrib/antlib.xml"/>

    <!-- https://stackoverflow.com/questions/919692/how-to-execute-xslt-2-0-with-ant -->
    <!-- https://sourceforge.net/projects/saxon/files/Saxon-HE jar download handled in X3DJSAIL build -->
    <!-- https://github.com/Saxonica/Saxon-HE/tree/main/12/Java -->
    <!-- https://www.saxonica.com/documentation10/#!about/gettingstarted/gettingstartedjava -->
    <!-- SaxonHE 11 (java.lang.NoClassDefFoundError: org/xmlresolver/Resolver) https://saxonica.plan.io/boards/3/topics/8478?r=8480 -->
    <property name="saxon.dir"         location="X3dForWebAuthors/lib" description="relative path from stylesheets directory"/>
    <property name="saxon.jar"            value="saxon-he-12.5.jar"/><!-- previously saxon-he-12.4.jar saxon-he-11.4.jar saxon-he-10.6.jar saxon9he.jar -->
    <property name="xmlresolver.jar"      value="xmlresolver-5.2.2.jar"/><!-- required with saxon-he-11+.jar -->
    <property name="xmlresolver-data.jar" value="xmlresolver-5.2.2-data.jar"/>
    <property name="saxon-jline.jar"      value="jline-2.14.6.jar"/>
    <property name="saxon.classpath"      value="${saxon.dir}/${saxon.jar};${saxon.dir}/${xmlresolver.jar};${saxon.dir}/${xmlresolver-data.jar};${saxon.dir}/${saxon-jline.jar};."/>

    <target name="get.saxon" description="get saxon.jar if not checked out" depends="get.saxon.check" unless="saxon.found">
        <echo message="get saxon.jar if not checked out"/>
        <mkdir dir="${saxon.dir}"/>
        <get src="https://svn.code.sf.net/p/x3d/code/www.web3d.org/x3d/stylesheets/java/lib/${saxon.jar}"
            dest="${saxon.dir}/${saxon.jar}"       verbose="${VERBOSE}" ignoreerrors="${ignoreSetupDownloadErrors}"/>
        <get src="https://svn.code.sf.net/p/x3d/code/www.web3d.org/x3d/stylesheets/java/lib/${xmlresolver.jar}"
            dest="${saxon.dir}/${xmlresolver.jar}" verbose="${VERBOSE}" ignoreerrors="${ignoreSetupDownloadErrors}"/>
        <get src="https://svn.code.sf.net/p/x3d/code/www.web3d.org/x3d/stylesheets/java/lib/${xmlresolver-data.jar}"
            dest="${saxon.dir}/${xmlresolver-data.jar}" verbose="${VERBOSE}" ignoreerrors="${ignoreSetupDownloadErrors}"/>
    </target>
    <target name="get.saxon.check">
        <condition property="saxon.found" else="false">
            <available file="${saxon.dir}/${saxon.jar}"/>
        </condition>
        <echo message="found ${saxon.dir}/${saxon.jar}: ${saxon.found}"/>
        <condition property="xmlresolver.found" else="false">
            <available file="${saxon.dir}/${xmlresolver.jar}"/>
        </condition>
        <echo message="found ${saxon.dir}/${xmlresolver.jar}: ${xmlresolver.found}"/>
        <condition property="xmlresolver-data.found" else="false">
            <available file="${saxon.dir}/${xmlresolver-data.jar}"/>
        </condition>
        <echo message="found ${saxon.dir}/${xmlresolver-data.jar}: ${xmlresolver-data.found}"/>
    </target>

    <target name="get.web3d.saxon.check.all" depends=""
          description="get.web3d.saxon.check for all of the example archives" >
        <echo message="get.web3d.saxon.check for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="get.web3d.saxon.check" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="get.web3d.saxon.check" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="get.web3d.saxon.check" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="get.web3d.saxon.check" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="get.web3d.saxon.check" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="get.web3d.saxon.check" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="get.web3d.saxon.check" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="get.web3d.saxon.check" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="get.web3d.saxon.check.all complete."/>
    </target>

    <!-- Version-control source at https://gitlab.nps.edu/Savage/xj3d  -->
    <!-- Version-control source at https://svn.code.sf.net/p/xj3d/code -->
    <property name="xj3d.dir"            location="C:/x3d-nps-gitlab/xj3d"/>        <!-- formerly C:/xj3d-code/branches/NPS, C:/j3d-code/xj3d, C:/xj3d-code/xj3d -->

    <property name="X3dToXhtml"                   location="../../stylesheets/X3dToXhtml"/>
    <property name="X3dToX3domX_ITE"              location="../../stylesheets/X3dToX3domX_ITE"/>
    <property name="X3dToVrml97"                  location="../../stylesheets/X3dToVrml97"/>
    <property name="X3dToX3dvClassicVrmlEncoding" location="../../stylesheets/X3dToX3dvClassicVrmlEncoding"/>

    <property name="X3dDtdsSchemas.dir"       location="../../specifications"/>

    <xmlcatalog id="X3dXmlCatalog">
        <dtd    publicId="ISO//Web3D//DTD X3D 3.0//EN"                                  location="${X3dDtdsSchemas.dir}/x3d-3.0.dtd"/>
        <dtd    publicId="ISO//Web3D//DTD X3D 3.1//EN"                                  location="${X3dDtdsSchemas.dir}/x3d-3.1.dtd"/>
        <dtd    publicId="ISO//Web3D//DTD X3D 3.2//EN"                                  location="${X3dDtdsSchemas.dir}/x3d-3.2.dtd"/>
        <dtd    publicId="ISO//Web3D//DTD X3D 3.3//EN"                                  location="${X3dDtdsSchemas.dir}/x3d-3.3.dtd"/>
        <dtd    publicId="ISO//Web3D//DTD X3D 4.0//EN"                                  location="${X3dDtdsSchemas.dir}/x3d-4.0.dtd"/>
        <dtd    publicId="http://www.web3d.org/specifications/x3d-3.0.dtd"              location="${X3dDtdsSchemas.dir}/x3d-3.0.dtd"/>
        <dtd    publicId="http://www.web3d.org/specifications/x3d-3.1.dtd"              location="${X3dDtdsSchemas.dir}/x3d-3.1.dtd"/>
        <dtd    publicId="http://www.web3d.org/specifications/x3d-3.2.dtd"              location="${X3dDtdsSchemas.dir}/x3d-3.2.dtd"/>
        <dtd    publicId="http://www.web3d.org/specifications/x3d-3.3.dtd"              location="${X3dDtdsSchemas.dir}/x3d-3.3.dtd"/>
        <dtd    publicId="http://www.web3d.org/specifications/x3d-4.0.dtd"              location="${X3dDtdsSchemas.dir}/x3d-4.0.dtd"/>
        <entity publicId="http://www.web3d.org/specifications/x3d-3.0.xsd"              location="${X3dDtdsSchemas.dir}/x3d-3.0.xsd"/>
        <entity publicId="http://www.web3d.org/specifications/x3d-3.1.xsd"              location="${X3dDtdsSchemas.dir}/x3d-3.1.xsd"/>
        <entity publicId="http://www.web3d.org/specifications/x3d-3.2.xsd"              location="${X3dDtdsSchemas.dir}/x3d-3.2.xsd"/>
        <entity publicId="http://www.web3d.org/specifications/x3d-3.3.xsd"              location="${X3dDtdsSchemas.dir}/x3d-3.3.xsd"/>
        <entity publicId="http://www.web3d.org/specifications/x3d-4.0.xsd"              location="${X3dDtdsSchemas.dir}/x3d-4.0.xsd"/>
        <dtd    publicId="https://www.web3D.org/specifications/x3d-3.0.dtd"             location="${X3dDtdsSchemas.dir}/x3d-3.0.dtd"/>
        <dtd    publicId="https://www.web3D.org/specifications/x3d-3.1.dtd"             location="${X3dDtdsSchemas.dir}/x3d-3.1.dtd"/>
        <dtd    publicId="https://www.web3D.org/specifications/x3d-3.2.dtd"             location="${X3dDtdsSchemas.dir}/x3d-3.2.dtd"/>
        <dtd    publicId="https://www.web3D.org/specifications/x3d-3.3.dtd"             location="${X3dDtdsSchemas.dir}/x3d-3.3.dtd"/>
        <dtd    publicId="https://www.web3D.org/specifications/x3d-4.0.dtd"             location="${X3dDtdsSchemas.dir}/x3d-4.0.dtd"/>
        <entity publicId="https://www.web3D.org/specifications/x3d-3.0.xsd"             location="${X3dDtdsSchemas.dir}/x3d-3.0.xsd"/>
        <entity publicId="https://www.web3D.org/specifications/x3d-3.1.xsd"             location="${X3dDtdsSchemas.dir}/x3d-3.1.xsd"/>
        <entity publicId="https://www.web3D.org/specifications/x3d-3.2.xsd"             location="${X3dDtdsSchemas.dir}/x3d-3.2.xsd"/>
        <entity publicId="https://www.web3D.org/specifications/x3d-3.3.xsd"             location="${X3dDtdsSchemas.dir}/x3d-3.3.xsd"/>
        <entity publicId="https://www.web3D.org/specifications/x3d-4.0.xsd"             location="${X3dDtdsSchemas.dir}/x3d-4.0.xsd"/>
        <!-- Transitional DTD, versions 3.0 and 3.1 only -->
        <dtd    publicId="file:///www.web3d.org/TaskGroups/x3d/translation/x3d-3.0.dtd" location="${X3dDtdsSchemas.dir}/x3d-3.0.dtd"/>
        <dtd    publicId="file:///www.web3d.org/TaskGroups/x3d/translation/x3d-3.1.dtd" location="${X3dDtdsSchemas.dir}/x3d-3.1.dtd"/>
    </xmlcatalog>

    <!-- TODO:  warning if Ant version is earlier than apache-ant-1.10.5 -->

    <!-- Ant macro definitions ===================================================================================== -->

    <!-- excerpted/adapted from "SAXON XSLT Processing with Ant" by James Fuller, http://ablog.apress.com/?p=753 -->
    <!-- https://www.saxonica.com/documentation9.5/using-xsl/commandline.html -->
    <macrodef name="Saxon12" description="Invoke XSLT transformation on passed scene using passed stylesheet">
        <attribute name="scene"/>
        <attribute name="stylesheet"/>
        <attribute name="extension"/>
		<!-- TODO omit: compiled stylesheets are a Saxon feature, false means regular .xslt -->
        <attribute name="compiled"/>
        <sequential>
            <!-- <echo message="Saxon12 processing @{scene}.@{extension}"/> -->
            <echo message="$saxon.classpath=${saxon.classpath}"/>
            <if>
                <equals arg1="@{compiled}" arg2="true" />
                <then>
                    <java classname="net.sf.saxon.Transform" classpath="${saxon.classpath}" fork="false" failonerror="false">
                        <!-- https://stackoverflow.com/questions/19322484/java-entityexpansionlimit-where-do-i-set-this -->
                        <!-- https://ant.apache.org/manual/Tasks/java.html -->
                        <!-- https://docs.oracle.com/javase/tutorial/jaxp/limits/limits.html -->
                        <!-- also needs to be set in netbeans.conf and NetBeans Tools Options Java Ant Properties entityExpansionLimit=120000 -->
                        <jvmarg value="-Djdk.xml.entityExpansionLimit=120000"/>
                        <jvmarg value="-Djdk.xml.totalEntitySizeLimit=50000000"/>
                        <jvmarg value="-Djdk.xml.maxGeneralEntitySizeLimit=50000000"/>
                    <!-- https://www.saxonica.com/documentation12/index.html#!using-xsl/commandline -->
                        
                        <!--<arg value="-t"/> timing information -->
                        <arg value="-warnings:recover"/> <!-- recover after writing a warning message -->
                        <arg value="-c"/>  <!-- compiled stylesheet -->
                        <arg value="-o"/>
                        <arg value="@{scene}.@{extension}"/>
                        <arg value="@{scene}.x3d"/>
                        <arg value="@{stylesheet}"/>
                    </java>
                </then>
                <else>
                    <java classname="net.sf.saxon.Transform" classpath="${saxon.classpath}" fork="false" failonerror="false">
                        <!-- https://stackoverflow.com/questions/19322484/java-entityexpansionlimit-where-do-i-set-this -->
                        <!-- https://ant.apache.org/manual/Tasks/java.html -->
                        <!-- https://docs.oracle.com/javase/tutorial/jaxp/limits/limits.html -->
                        <!-- also needs to be set in netbeans.conf and NetBeans Tools Options Java Ant Properties entityExpansionLimit=120000 -->
                        <jvmarg value="-Djdk.xml.entityExpansionLimit=120000"/>
                        <jvmarg value="-Djdk.xml.totalEntitySizeLimit=50000000"/>
                        <jvmarg value="-Djdk.xml.maxGeneralEntitySizeLimit=50000000"/>
                    <!-- https://www.saxonica.com/documentation12/index.html#!using-xsl/commandline -->
                        
                        <!--<arg value="-t"/> timing information -->
                        <arg value="-warnings:recover"/> <!-- recover after writing a warning message -->
                        <arg value="-o"/>
                        <arg value="@{scene}.@{extension}"/>
                        <arg value="@{scene}.x3d"/>
                        <arg value="@{stylesheet}"/>
                    </java>
                </else>
            </if>
        </sequential>
    </macrodef>

    <!-- target tasks ===================================================================== -->

    <target name="all" depends="clean.backups.all,clean.javaExport.all,commonSetup,convertCmlChemistryMarkupLanguageScenes,validate.full.all,create.buildFile.all,catalog.retrieve.CreateContentCatalog.jar.all"
          description="fully rebuild and zip all of the example archives" >
        <echo message="fully rebuild and zip all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage"/><!-- ,SavageDefense -->
        <!-- output directory is relative to specified base dir -->
    <!--
            <ant dir="Basic"              target="all" output="build.out.txt"/>
            <ant dir="HumanoidAnimation"  target="all" output="build.out.txt"/>
            <ant dir="ConformanceNist"    target="all" output="build.out.txt"/>
            <ant dir="Savage"             target="all" output="build.out.txt"/>
            <ant dir="Vrml2Sourcebook"    target="all" output="build.out.txt"/>
            <ant dir="X3dForAdvancedModeling"   target="all" output="build.out.txt"/>
            <ant dir="X3dForWebAuthors"   target="all" output="build.out.txt"/>
        </parallel>
        <antcall target="sftp.uploadExampleUpdates"/>
    -->
        <antcall target="catalog.all"/>
        <antcall target="all.web3d"/>
    <!--<antcall target="all.savage.nps"/>-->
    <!--<antcall target="scp.uploadExampleUpdates.json.refresh.all"/>-->
        <echo message="X3D Example Archives target 'all' complete."/>
    </target>

    <target name="all.faster" depends="clean.backups.all,commonSetup,convertCmlChemistryMarkupLanguageScenes,validate.full.all,create.buildFile.all,processScenes.all,catalog.generateHtmlIndexPages.all,zip.all,scp.uploadExampleUpdates.all"
        description="faster update all and upload, catalogs not rebuilt" >
    </target>

    <target name="newScene.all" description="Copy newScene example from common example archives and convert to other encodings">
        <echo message="Run master newScene task then copy results to root directory of example archives"/>
        <copy todir="." force="true" verbose="${VERBOSE}">
            <fileset dir="X3dForWebAuthors/Chapter01TechnicalOverview" includes="newScene.x3d"/>
        </copy>
        <!-- now copy key files from root to each archive -->
        <copy todir="X3dForAdvancedModeling" force="true" verbose="${VERBOSE}">
            <fileset dir="." includes="newScene.x3d"/>
        </copy>
        <copy todir="X3dForWebAuthors" force="true" verbose="${VERBOSE}">
            <fileset dir="." includes="newScene.x3d"/>
        </copy>
        <copy todir="Vrml2Sourcebook" force="true" verbose="${VERBOSE}">
            <fileset dir="." includes="newScene.x3d"/>
        </copy>
        <copy todir="HumanoidAnimation" force="true" verbose="${VERBOSE}">
            <fileset dir="." includes="newScene.x3d"/>
        </copy>
        <copy todir="ConformanceNist" force="true" verbose="${VERBOSE}">
            <fileset dir="." includes="newScene.x3d"/>
        </copy>
        <copy todir="Basic" force="true" verbose="${VERBOSE}">
            <fileset dir="." includes="newScene.x3d"/>
        </copy>
        <copy todir="Savage" force="true" verbose="${VERBOSE}">
            <fileset dir="." includes="newScene.x3d"/>
        </copy>
        <!--
        <copy todir="SavageDefense" force="true" verbose="${VERBOSE}">
            <fileset dir="." includes="newScene.x3d"/>
        </copy>
        -->
        <!-- now refresh local archive directories -->
        <ant dir="X3dForAdvancedModeling" target="newScene" inheritAll="false"/>
        <ant dir="X3dForWebAuthors"       target="newScene" inheritAll="false"/>
        <ant dir="Vrml2Sourcebook"        target="newScene" inheritAll="false"/>
        <ant dir="HumanoidAnimation"      target="newScene" inheritAll="false"/>
        <ant dir="ConformanceNist"        target="newScene" inheritAll="false"/>
        <ant dir="Basic"                  target="newScene" inheritAll="false"/>
        <ant dir="Savage"                 target="newScene" inheritAll="false"/>
    <!--<ant dir="SavageDefense"          target="newScene" inheritAll="false"/>-->
        <echo message="X3D Example Archives newScene.all complete."/>
        <echo message="X3D Example Archives validate.full.all complete."/>
    </target>

    <target name="ant.fetch.contrib.manual">
        <echo message="Fetch ant-contrib and include in local Ant installation"/>
        <property name="ant-contrib-bin.zip" value="ant-contrib-1.0b3-bin.zip"/>
        <property name="ant-contrib.jar" value="ant-contrib-1.0b3.jar"/>
        <get src="https://sourceforge.net/projects/ant-contrib/files/ant-contrib/1.0b3/${ant-contrib-bin.zip}/download"
            dest=  "${env.ANT_HOME}/${ant-contrib-bin.zip}" verbose="${VERBOSE}" ignoreerrors="${ignoreSetupDownloadErrors}"/>
        <mkdir dir="${env.ANT_HOME}/ant-contrib"/>
        <echo message="Unzip ant-contrib..."/>
        <unzip src="${env.ANT_HOME}/${ant-contrib-bin.zip}" dest="${env.ANT_HOME}"/>
        <echo message="Copy ${ant-contrib.jar} to lib/ subdirectory..."/>
        <copy file="${env.ANT_HOME}/ant-contrib/${ant-contrib.jar}" todir="${env.ANT_HOME}/lib" verbose="true"/>
        <echo message="Fetch ant manual and include in local Ant installation"/>
        <property name="dest" value="system"/>
        <ant dir="${env.ANT_HOME}" antfile="fetch.xml"/>
    </target>

    <target name="ant.view.manual" description="view Ant and ant-contrib manuals in web browser (Netbeans only)">
        <nbbrowse file="${env.ANT_HOME}/manual/index.html" />
        <nbbrowse file="${env.ANT_HOME}/ant-contrib/docs/manual/index.html" />
        <!-- TODO implementation-independent approach if possible.  other Ant approachs have to be customized for each OS -->
    </target>

    <target name="all.savage.nps" depends="commonSetup,create.buildFile.Savage,create.buildFile.SavageDefense" description="fully rebuild and zip each of the Savage example archives" >
		<ant dir="Savage"             target="all" output="build.out.txt" inheritAll="false"/>
		<ant dir="SavageDefense"      target="all" output="build.out.txt" inheritAll="false"/>
        <echo message="all.savage.nps complete."/>
    </target>

    <target name="all.web3d" depends="commonSetup,convertCmlChemistryMarkupLanguageScenes" description="fully rebuild and zip each of the Web3D example archives" >
        <!-- output directory is relative to specified base dir -->
        <ant dir="X3dForAdvancedModeling" target="all" output="build.out.txt" inheritAll="false"/>
        <ant dir="X3dForWebAuthors"       target="all" output="build.out.txt" inheritAll="false"/>
        <ant dir="Vrml2Sourcebook"        target="all" output="build.out.txt" inheritAll="false"/>
        <ant dir="HumanoidAnimation"      target="all" output="build.out.txt" inheritAll="false"/>
        <ant dir="ConformanceNist"        target="all" output="build.out.txt" inheritAll="false"/>
        <ant dir="Basic"                  target="all" output="build.out.txt" inheritAll="false"/>
        <ant dir="Savage"                 target="all" output="build.out.txt" inheritAll="false"/>
        <antcall target="scp.uploadExampleUpdates.web3d.all"/>
        <echo message="all.web3d complete."/>
    </target>

    <target name="catalog.all" depends=""
          description="run catalog task for all of the example archives" >
        <echo message="run catalog task for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <ant dir="X3dForAdvancedModeling"  target="catalog.retrieve.CreateContentCatalog.jar" inheritAll="false"/>
        <ant dir="X3dForWebAuthors"        target="catalog.retrieve.CreateContentCatalog.jar" inheritAll="false"/>
        <ant dir="Vrml2Sourcebook"         target="catalog.retrieve.CreateContentCatalog.jar" inheritAll="false"/>
        <ant dir="HumanoidAnimation"       target="catalog.retrieve.CreateContentCatalog.jar" inheritAll="false"/>
        <ant dir="ConformanceNist"         target="catalog.retrieve.CreateContentCatalog.jar" inheritAll="false"/>
        <ant dir="Basic"                   target="catalog.retrieve.CreateContentCatalog.jar" inheritAll="false"/>
        <ant dir="Savage"                  target="catalog.retrieve.CreateContentCatalog.jar" inheritAll="false"/>
    <!--<ant dir="SavageDefense"           target="catalog.retrieve.CreateContentCatalog.jar" inheritAll="false"/>-->
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="catalog" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="catalog" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="catalog" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="catalog" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="catalog" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="catalog" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="catalog" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="catalog" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="catalog.all complete."/>
    </target>

    <target name="catalog.generateHtmlIndexPages.all" depends="catalog.retrieve.CreateContentCatalog.jar.all"
          description="run catalog.generateHtmlIndexPages task for all of the example archives" >
        <echo message="run catalog.generateHtmlIndexPages task for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="catalog.generateHtmlIndexPages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="catalog.generateHtmlIndexPages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="catalog.generateHtmlIndexPages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="catalog.generateHtmlIndexPages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="catalog.generateHtmlIndexPages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="catalog.generateHtmlIndexPages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="catalog.generateHtmlIndexPages" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="catalog.generateHtmlIndexPages" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="catalog.generateHtmlIndexPages.all complete."/>
    </target>

    <target name="catalog.generateXMLSpyProject.all" depends="catalog.retrieve.CreateContentCatalog.jar.all"
          description="run catalog.generateXMLSpyProject task for all of the example archives" >
        <echo message="run catalog.generateXMLSpyProject task for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="catalog.generateXMLSpyProject" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="catalog.generateXMLSpyProject" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="catalog.generateXMLSpyProject" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="catalog.generateXMLSpyProject" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="catalog.generateXMLSpyProject" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="catalog.generateXMLSpyProject" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="catalog.generateXMLSpyProject" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="catalog.generateXMLSpyProject" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="catalog.generateXMLSpyProject.all complete."/>
    </target>

    <target name="catalog.retrieve.CreateContentCatalog.jar.all" depends=""
          description="run catalog.retrieve.CreateContentCatalog.jar task for all of the example archives" >
        <echo message="run catalog.retrieve.CreateContentCatalog.jar task for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <ant dir="X3dForAdvancedModeling"  target="catalog.retrieve.CreateContentCatalog.jar" inheritAll="false"/>
        <ant dir="X3dForWebAuthors"        target="catalog.retrieve.CreateContentCatalog.jar" inheritAll="false"/>
        <ant dir="Vrml2Sourcebook"         target="catalog.retrieve.CreateContentCatalog.jar" inheritAll="false"/>
        <ant dir="HumanoidAnimation"       target="catalog.retrieve.CreateContentCatalog.jar" inheritAll="false"/>
        <ant dir="ConformanceNist"         target="catalog.retrieve.CreateContentCatalog.jar" inheritAll="false"/>
        <ant dir="Basic"                   target="catalog.retrieve.CreateContentCatalog.jar" inheritAll="false"/>
        <ant dir="Savage"                  target="catalog.retrieve.CreateContentCatalog.jar" inheritAll="false"/>
    <!--<ant dir="SavageDefense"           target="catalog.retrieve.CreateContentCatalog.jar" inheritAll="false"/>-->
        <echo message="catalog.retrieve.CreateContentCatalog.jar.all complete."/>
    </target>

    <target name="processScenes.all" depends=""
          description="processScenes for all of the example archives" >
        <echo message="processScenes for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="processScenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="processScenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="processScenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="processScenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="processScenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="processScenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="processScenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="processScenes" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScenes.all complete."/>
    </target>

    <target name="processScenes.htmlDocumentation.all" depends="clean.backups.all"
          description="processScenes.htmlDocumentation for all of the example archives" >
        <echo message="processScenes.htmlDocumentation for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling" target="processScenes.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"       target="processScenes.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"        target="processScenes.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"      target="processScenes.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"        target="processScenes.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                  target="processScenes.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                 target="processScenes.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"          target="processScenes.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScenes.htmlDocumentation.all complete."/>
        <echo message="* build.html.all.log.txt maintained at"/>
        <echo message="* https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/build.html.all.log.txt"/>
    </target>

     <target name="processScenes.X3dToX3domXhtml.all" depends="clean.backups.all"
          description="processScenes.X3dToX3domXhtml for all of the example archives" >
        <echo message="processScenes.X3dToX3domXhtml for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="processScenes.X3dToX3domXhtml in all example archives"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling" target="processScenes.X3dToX3domXhtml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"       target="processScenes.X3dToX3domXhtml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"        target="processScenes.X3dToX3domXhtml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"      target="processScenes.X3dToX3domXhtml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"        target="processScenes.X3dToX3domXhtml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                  target="processScenes.X3dToX3domXhtml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                 target="processScenes.X3dToX3domXhtml" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"          target="processScenes.X3dToX3domXhtml" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScenes.X3dToX3domXhtml.all complete."/>
    </target>

     <target name="processScenes.X3dToX_ITE.html.all" depends="clean.backups.all"
          description="processScenes.X3dToX_ITE.html for all of the example archives" >
        <echo message="processScenes.X3dToX_ITE.html for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling" target="processScenes.X3dToX_ITE.html" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"       target="processScenes.X3dToX_ITE.html" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"        target="processScenes.X3dToX_ITE.html" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"      target="processScenes.X3dToX_ITE.html" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"        target="processScenes.X3dToX_ITE.html" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                  target="processScenes.X3dToX_ITE.html" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                 target="processScenes.X3dToX_ITE.html" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"          target="processScenes.X3dToX_ITE.html" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScenes.X3dToX_ITE.html.all complete."/>
    </target>

     <target name="processScenes.X3DJSAIL.DomLoaderTests.all"
		  description="test DOM-based scene loading by X3DJSAIL.X3DLoader">
        <echo message="test DOM-based scene loading by X3DJSAIL.X3DLoader for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="processScenes.X3DJSAIL.DomLoaderTests in all example archives"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling" target="processScenes.X3DJSAIL.DomLoaderTests" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"       target="processScenes.X3DJSAIL.DomLoaderTests" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"        target="processScenes.X3DJSAIL.DomLoaderTests" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"      target="processScenes.X3DJSAIL.DomLoaderTests" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"        target="processScenes.X3DJSAIL.DomLoaderTests" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                  target="processScenes.X3DJSAIL.DomLoaderTests" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                 target="processScenes.X3DJSAIL.DomLoaderTests" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"          target="processScenes.X3DJSAIL.DomLoaderTests" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScenes.X3DJSAIL.DomLoaderTests.all complete."/>
    </target>

     <target name="processScenes.java.all" depends="clean.backups.all,clean.RoundTrip.all"
          description="processScenes.java for all of the example archives to generate java source, .class files, javadoc" >
          <!-- ,HelloWorld.all,newScene.all -->
        <echo message="========================================================================================"/>
        <echo message="processScenes.java for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="... results maintained at http://www.web3d.org/x3d/content/examples/build.java.all.log.txt"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling" target="processScenes.java" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"       target="processScenes.java" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"        target="processScenes.java" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"      target="processScenes.java" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"        target="processScenes.java" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                  target="processScenes.java" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                 target="processScenes.java" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"          target="processScenes.java" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <antcall target="processScenes.javadoc.all"/>
        <echo message="processScenes.java.all complete."/>
    </target>

     <target name="processScenes.python.all" depends="clean.backups.all,clean.RoundTrip.all"
          description="processScenes.python for all of the example archives" >
        <echo message="========================================================================================"/>
        <echo message="processScenes.python for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="... results maintained at http://www.web3d.org/x3d/content/examples/build.python.all.log.txt"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling" target="processScenes.python" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"       target="processScenes.python" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"        target="processScenes.python" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"      target="processScenes.python" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"        target="processScenes.python" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                  target="processScenes.python" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                 target="processScenes.python" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"          target="processScenes.python" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="next steps: save output as build.python.all.log.txt and then run zip.python.combined"/>
        <echo message="destinations:"/>
        <echo message="http://www.web3d.org/x3d/content/examples/build.python.all.log.txt"/>
        <echo message="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/build.python.all.log.txt"/>
        <echo message="processScenes.python.all complete."/>
    </target>

     <target name="processScenes.touch.X3dModels.all" depends=""
          description="processScenes.touch.X3dModels for all of the example archives: update timestamp on X3D scenes to allow reshooting images and processing scenes" >
        <echo message="========================================================================================"/>
        <echo message="processScenes.touch.X3dModels for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling" target="processScenes.touch.X3dModels" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"       target="processScenes.touch.X3dModels" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"        target="processScenes.touch.X3dModels" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"      target="processScenes.touch.X3dModels" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"        target="processScenes.touch.X3dModels" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                  target="processScenes.touch.X3dModels" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                 target="processScenes.touch.X3dModels" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"          target="processScenes.touch.X3dModels" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScenes.touch.X3dModels.all complete."/>
    </target>

     <target name="processScenes.touch.htmlDocumentation.all" depends=""
          description="processScenes.touch.htmlDocumentation for all of the example archives: update timestamp on X3D Model Documentation pages to allow reshooting images and processing scenes" >
        <echo message="========================================================================================"/>
        <echo message="processScenes.touch.htmlDocumentation for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling" target="processScenes.touch.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"       target="processScenes.touch.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"        target="processScenes.touch.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"      target="processScenes.touch.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"        target="processScenes.touch.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                  target="processScenes.touch.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                 target="processScenes.touch.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"          target="processScenes.touch.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScenes.touch.htmlDocumentation.all complete."/>
    </target>

     <target name="processScenes.touch.conversions.all" depends=""
          description="processScenes.touch.conversions for all of the example archives: update timestamp on converted X3D models (java json python) to allow selectively rerunning other tasks" >
        <echo message="========================================================================================"/>
        <echo message="processScenes.touch.conversions for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling" target="processScenes.touch.conversions" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"       target="processScenes.touch.conversions" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"        target="processScenes.touch.conversions" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"      target="processScenes.touch.conversions" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"        target="processScenes.touch.conversions" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                  target="processScenes.touch.conversions" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                 target="processScenes.touch.conversions" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"          target="processScenes.touch.conversions" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScenes.touch.conversions.all complete."/>
    </target>

     <target name="processScenes.turtle.all" depends="clean.backups.all"
          description="processScenes.turtle for all of the example archives" >
        <echo message="========================================================================================"/>
        <echo message="Before running these conversions, be sure to install and configure path for Apache JENA"/>
        <echo message="     JENA_HOME=${env.JENA_HOME}"/>
        <echo message="   Apache JENA https://jena.apache.org"/>
        <echo message="  X3D Ontology https://www.web3d.org/x3d/content/semantics/semantics.html#Tools"/>
        <echo message="========================================================================================"/>
        <echo message="processScenes.turtle for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="... results maintained at http://www.web3d.org/x3d/content/examples/build.turtle.all.log.txt"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling" target="processScenes.turtle" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"       target="processScenes.turtle" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"        target="processScenes.turtle" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"      target="processScenes.turtle" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"        target="processScenes.turtle" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                  target="processScenes.turtle" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                 target="processScenes.turtle" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"          target="processScenes.turtle" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="next steps: save output as build.turtle.all.log.txt and then run zip.turtle.combined"/>
        <echo message="destinations:"/>
        <echo message="http://www.web3d.org/x3d/content/examples/build.turtle.all.log.txt"/>
        <echo message="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/build.turtle.all.log.txt"/>
        <echo message="processScenes.turtle.all complete."/>
    </target>

     <target name="processScenes.javadoc.all" depends="clean.backups.all"
          description="processScenes.javadoc for all of the example archives" >
        <echo message="processScenes.javadoc for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <ant dir="X3dForAdvancedModeling" target="processScenes.javadoc" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"       target="processScenes.javadoc" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"        target="processScenes.javadoc" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"      target="processScenes.javadoc" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"        target="processScenes.javadoc" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                  target="processScenes.javadoc" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                 target="processScenes.javadoc" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"          target="processScenes.javadoc" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScenes.javadoc.all complete."/>
    </target>

     <target name="processScenes.json.all" depends="clean.backups.all,clean.RoundTrip.all"
          description="processScenes.json for all of the example archives" >
        <echo message="========================================================================================"/>
        <echo message="processScenes.json for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="... results maintained at http://www.web3d.org/x3d/content/examples/build.json.all.log.txt"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling" target="processScenes.json" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"       target="processScenes.json" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"        target="processScenes.json" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"      target="processScenes.json" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"        target="processScenes.json" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                  target="processScenes.json" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                 target="processScenes.json" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"          target="processScenes.json" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScenes.json.all complete."/>
    </target>

    <target name="processScenes.X3dTidy.all" description="processScenes.X3dTidy for all of the example archives" depends="clean.RoundTrip.all">
        <echo message="processScenes.X3dTidy in all example archives"/>
        <echo message="Apply X3D-Tidy.xslt to clean up X3D scene errors (when .x3d is more recent than .html)"/>
        <echo message="...special characters in HelloTaiwan.x3d clobber X3dTidy, so hide it."/>
        <!-- TODO fix the file-move problem -->
        <echo message="========================================================================================"/>
        <move file="X3dForAdvancedModeling/HelloWorldScenes/HelloTaiwan.x3d"      todir="X3dForAdvancedModeling/HelloWorldScenes/hold/" overwrite="true" failonerror="false" verbose="${VERBOSE}"/>
        <ant  dir="X3dForAdvancedModeling" target="processScenes.X3dTidy" inheritAll="false"/>
        <move file="X3dForAdvancedModeling/HelloWorldScenes/hold/HelloTaiwan.x3d" todir="X3dForAdvancedModeling/HelloWorldScenes/"      overwrite="true" failonerror="false" verbose="${VERBOSE}"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="processScenes.X3dTidy" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="processScenes.X3dTidy" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="processScenes.X3dTidy" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="processScenes.X3dTidy" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="processScenes.X3dTidy" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="processScenes.X3dTidy" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="processScenes.X3dTidy" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScenes.X3dTidy.all complete."/>
    </target>

    <target name="processScenes.canonicalX3D.all" description="processScenes.canonicalX3D for all of the example archives" >
        <echo message="processScenes.canonicalX3D in all example archives"/>
        <ant dir="X3dForAdvancedModeling"  target="processScenes.canonicalX3D" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="processScenes.canonicalX3D" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="processScenes.canonicalX3D" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="processScenes.canonicalX3D" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="processScenes.canonicalX3D" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="processScenes.canonicalX3D" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="processScenes.canonicalX3D" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="processScenes.canonicalX3D" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScenes.canonicalX3D.all complete."/>
    </target>

    <target name="processScenes.regularExpressionChecks.all" description="processScenes.regularExpressionChecks for all of the example archives" >
        <echo message="processScenes.regularExpressionChecks in all example archives"/>
        <ant dir="X3dForAdvancedModeling"  target="processScenes.regularExpressionChecks" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="processScenes.regularExpressionChecks" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="processScenes.regularExpressionChecks" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="processScenes.regularExpressionChecks" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="processScenes.regularExpressionChecks" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="processScenes.regularExpressionChecks" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="processScenes.regularExpressionChecks" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="processScenes.regularExpressionChecks" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScenes.regularExpressionChecks.all complete."/>
    </target>

    <target name="processScenes.captureImages.all"
          description="processScenes.captureImages for all of the example archives, use Xj3D to create snapshot pictures of each thumbnail and viewpoint" >
        <echo message="processScenes.captureImages for all of the example archives, use Xj3D to create snapshot pictures of each thumbnail and viewpoint"/>
        <echo message="optional: processScenes.touch.X3dModels.all to force full updates, or processScenes.touch.htmlDocumentation.all to accept all existing images as current"/>
        <ant dir="X3dForAdvancedModeling"  target="processScenes.captureImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="processScenes.captureImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="processScenes.captureImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="processScenes.captureImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="processScenes.captureImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="processScenes.captureImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="processScenes.captureImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="processScenes.captureImages" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScenes.captureImages.all complete."/>
    </target>

    <target name="processScenes.X3DtoVRML97.all" description="processScenes.X3DtoVRML97 for all of the example archives, convert each .x3d scene to .wrl VRML97 encoding" >
        <echo message="processScenes.X3DtoVRML97 in all example archives"/>
        <ant dir="X3dForAdvancedModeling"  target="processScenes.X3DtoVRML97" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="processScenes.X3DtoVRML97" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="processScenes.X3DtoVRML97" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="processScenes.X3DtoVRML97" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="processScenes.X3DtoVRML97" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="processScenes.X3DtoVRML97" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="processScenes.X3DtoVRML97" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="processScenes.X3DtoVRML97" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScenes.X3DtoVRML97.all complete."/>
        <echo message="* build.vrml97.all.log.txt maintained at"/>
        <echo message="* https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/build.vrml97.all.log.txt"/>
    </target>

    <target name="processScenes.X3dToX3dbCompressedBinaryEncoding.all" description="processScenes.X3dToX3dbCompressedBinaryEncoding for all of the example archives, convert each .x3d scene to .wrl VRML97 encoding" >
        <echo message="processScenes.X3dToX3dbCompressedBinaryEncoding in all example archives"/>
        <ant dir="X3dForAdvancedModeling"  target="processScenes.X3dToX3dbCompressedBinaryEncoding" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="processScenes.X3dToX3dbCompressedBinaryEncoding" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="processScenes.X3dToX3dbCompressedBinaryEncoding" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="processScenes.X3dToX3dbCompressedBinaryEncoding" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="processScenes.X3dToX3dbCompressedBinaryEncoding" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="processScenes.X3dToX3dbCompressedBinaryEncoding" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="processScenes.X3dToX3dbCompressedBinaryEncoding" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="processScenes.X3dToX3dbCompressedBinaryEncoding" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScenes.X3dToX3dbCompressedBinaryEncoding.all complete."/>
    </target>

    <target name="processScenes.X3dToX3dvClassicVrmlEncoding.all" description="processScenes.X3dToX3dvClassicVrmlEncoding for all of the example archives, convert each .x3d scene to .x3dv ClassicVrml encoding" >
        <echo message="processScenes.X3dToX3dvClassicVrmlEncoding in all example archives"/>
        <echo message="* build.x3dv.all.log.txt maintained at"/>
        <echo message="* https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/build.x3dv.all.log.txt"/>
        <echo message="Castle Game Engine castle-model-viewer.exe castle-model-converter.exe is used for ClassicVRML model validation"/>
        <echo message="* castle-model-viewer builds https://castle-engine.io/castle-model-viewer"/>
        <echo message="* castle-model-viewer issues https://github.com/castle-engine/castle-model-viewer/issues"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="processScenes.X3dToX3dvClassicVrmlEncoding" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="processScenes.X3dToX3dvClassicVrmlEncoding" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="processScenes.X3dToX3dvClassicVrmlEncoding" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="processScenes.X3dToX3dvClassicVrmlEncoding" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="processScenes.X3dToX3dvClassicVrmlEncoding" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="processScenes.X3dToX3dvClassicVrmlEncoding" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="processScenes.X3dToX3dvClassicVrmlEncoding" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="processScenes.X3dToX3dvClassicVrmlEncoding" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScenes.X3dToX3dvClassicVrmlEncoding.all complete."/>
        <echo message="* build.x3dv.all.log.txt maintained at"/>
        <echo message="* https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/build.x3dv.all.log.txt"/>
    </target>

    <target name="processScripts.jslint.all" description="processScripts.jslint for all of the example archives, testing javascript correctness" >
        <!-- TODO Xj3D bug:  these tasks launch a window for each scene to perform offline rendering, instead needs to work headless -->
        <echo message="processScripts.jslint in all example archives"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="processScripts.jslint" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="processScripts.jslint" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="processScripts.jslint" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="processScripts.jslint" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="processScripts.jslint" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="processScripts.jslint" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="processScripts.jslint" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="processScripts.jslint" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="processScripts.jslint.all complete."/>
    </target>

    <target name="refresh.local.web3D" depends=""
          description="refresh.local all of the web3D.org example archives" >
        <echo message="refresh.local all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Basic,ConformanceNist,HumanoidAnimation,Vrml2Sourcebook"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="refresh.local" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="refresh.local" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="refresh.local" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="refresh.local" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="refresh.local" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="refresh.local" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="refresh.local" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <echo message="refresh.local.web3D complete."/>
    </target>

    <target name="refresh.local.all" depends=""
          description="refresh.local all of the example archives" >
        <echo message="refresh.local all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="refresh.local" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="refresh.local" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="refresh.local" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="refresh.local" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="refresh.local" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="refresh.local" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="refresh.local" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="refresh.local" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="refresh.local.all complete."/>
    </target>

    <target name="refresh.upload.all" depends=""
          description="refresh.upload all of the example archives" >
        <echo message="refresh.upload all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="refresh.upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="refresh.upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="refresh.upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="refresh.upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="refresh.upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="refresh.upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="refresh.upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="refresh.upload" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="refresh.upload.all complete."/>
    </target>

    <target name="refresh.upload.web3D" depends=""
          description="refresh.upload all of the web3d example archives" >
        <echo message="refresh.upload all of the web3d example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="refresh.upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="refresh.upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="refresh.upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="refresh.upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="refresh.upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="refresh.upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="refresh.upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <echo message="refresh.upload.web3d complete."/>
    </target>

    <target name="upload.all"
          description="upload all example archives" depends="">
        <!--  depends="scp.uploadExampleUpdates.json.build.out.zip" -->
        <echo message="prerequisite: first ssh into servers of interest (to establish authenticity of host key fingerprint) by using bash, Netbeans terminal, or Netbeans terminal host connection"/>
        <!-- can also remove key from known_hosts (file ~/.ssh/known_hosts) and be sure to verify permissions afterwards
             https://superuser.com/questions/30087/remove-key-from-known-hosts -->
        <echo message="upload all example archives"/>
        <echo message="warning: zip uploads may require a separate tool (such as winscp) to handle server timeouts on large files"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="upload" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="upload" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="upload.all complete."/>
    </target>

    <target name="upload.scenes.all"
          description="upload all example archive files, not including .zips" depends="">
        <!--  depends="scp.uploadExampleUpdates.json.build.out.zip" -->
        <echo message="prerequisite: first ssh into servers of interest (to establish authenticity of host key fingerprint) by using bash, Netbeans terminal, or Netbeans terminal host connection"/>
        <!-- can also remove key from known_hosts (file ~/.ssh/known_hosts) and be sure to verify permissions afterwards
             https://superuser.com/questions/30087/remove-key-from-known-hosts -->
        <echo message="upload all example archive files, not including .zips"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="upload.scenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="upload.scenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="upload.scenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="upload.scenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="upload.scenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="upload.scenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="upload.scenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="upload.scenes" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="upload.scenes.all complete."/>
    </target>

    <target name="upload.scenes.web3d"
          description="upload all web3d example archive files, not including .zips" depends="">
        <!--  depends="scp.uploadExampleUpdates.json.build.out.zip" -->
        <echo message="prerequisite: first ssh into servers of interest (to establish authenticity of host key fingerprint) by using bash, Netbeans terminal, or Netbeans terminal host connection"/>
        <!-- can also remove key from known_hosts (file ~/.ssh/known_hosts) and be sure to verify permissions afterwards
             https://superuser.com/questions/30087/remove-key-from-known-hosts -->
        <echo message="upload all web3d example archive files, not including .zips"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="upload.scenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="upload.scenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="upload.scenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="upload.scenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="upload.scenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="upload.scenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <!-- TODO
        <ant dir="Savage"                  target="upload.scenes" inheritAll="false"/>
        <echo message="========================================================================================"/>
        -->
        <echo message="upload.scenes.web3d complete."/>
    </target>

    <target name="upload.rebuilt.zip.all" depends="catalog.all,upload.rebuilt.zip.Web3D"
          description="zip and upload all of the example archive .zips" >
        <!-- ,upload.rebuilt.zip.NPS no longer supported -->
        <echo message="upload.rebuilt.zip.all complete."/>
    </target>

    <target name="upload.rebuilt.zip.Web3D" depends="catalog.all"
          description="zip and upload Web3D example archive .zips" >
        <echo message="zip and upload Web3D example archive .zips"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target=       "zip" inheritAll="false"/>
        <ant dir="X3dForAdvancedModeling"  target="upload.zip" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target=       "zip" inheritAll="false"/>
        <ant dir="X3dForWebAuthors"        target="upload.zip" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target=       "zip" inheritAll="false"/>
        <ant dir="Vrml2Sourcebook"         target="upload.zip" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target=       "zip" inheritAll="false"/>
        <ant dir="ConformanceNist"         target="upload.zip" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target=       "zip" inheritAll="false"/>
        <ant dir="HumanoidAnimation"       target="upload.zip" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target=       "zip" inheritAll="false"/>
        <ant dir="Basic"                   target="upload.zip" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target=       "zip" inheritAll="false"/>
        <ant dir="Savage"                  target="upload.zip" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <echo message="upload.rebuilt.zip.Web3D complete."/>
    </target>

    <!--<target name="upload.rebuilt.zip.NPS" depends="catalog.all"
          description="zip and upload NPS example archive .zips" >
        <echo message="zip and upload NPS example archive .zips"/>
        <echo message="..Savage,SavageDefense"/>
        <ant dir="Savage"                  target=       "zip" inheritAll="false"/>
        <ant dir="Savage"                  target="upload.zip" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="SavageDefense"           target=       "zip" inheritAll="false"/>
        <ant dir="SavageDefense"           target="upload.zip" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <echo message="upload.rebuilt.zip.NPS complete."/>
    </target>-->

    <target name="clean.all" depends="clean.backups.all"
          description="clean/delete autogenerated and backup files in all example archives" >
        <echo message="clean/delete autogenerated and backup files in all example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2SourcebookHumanoidAnimation,HumanoidAnimation,,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.all" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.all" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.all" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.all" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.all" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.all" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.all" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.all" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.all complete."/>
    </target>

    <target name="clean.htmlDocumentation.all" depends="clean.backups.all"
          description="clean/delete autogenerated .html files in all example archives" >
        <echo message="clean/delete autogenerated .html files in all example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2SourcebookHumanoidAnimation,HumanoidAnimation,,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.htmlDocumentation" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.htmlDocumentation.all complete."/>
    </target>

    <target name="clean.wrl.all" depends="clean.backups.all"
          description="clean/delete autogenerated .html files in all example archives" >
        <echo message="clean/delete autogenerated .html files in all example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2SourcebookHumanoidAnimation,HumanoidAnimation,,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.wrl" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.wrl" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.wrl" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.wrl" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.wrl" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.wrl" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.wrl" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.wrl" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.wrl.all complete."/>
    </target>

    <target name="clean.x3db.all" depends="clean.backups.all"
          description="clean/delete autogenerated .html files in all example archives" >
        <echo message="clean/delete autogenerated .html files in all example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.x3db" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.x3db" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.x3db" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.x3db" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.x3db" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.x3db" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.x3db" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.x3db" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.x3db.all complete."/>
    </target>

    <target name="clean.x3dv.all" depends="clean.backups.all"
          description="clean/delete autogenerated .html files in all example archives" >
        <echo message="clean/delete autogenerated .html files in all example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.x3dv" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.x3dv" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.x3dv" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.x3dv" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.x3dv" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.x3dv" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.x3dv" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.x3dv" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.x3dv.all complete."/>
    </target>

    <target name="clean.Canonical.xml.all" depends="clean.backups.all"
          description="clean/delete autogenerated Canonical.xml files in all example archives" >
        <echo message="clean/delete autogenerated Canonical.xml files in all example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.Canonical.xml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.Canonical.xml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.Canonical.xml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.Canonical.xml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.Canonical.xml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.Canonical.xml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.Canonical.xml" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.Canonical.xml" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.Canonical.xml.all complete."/>
    </target>

    <target name="clean.java.all" depends="clean.backups.all,clean.javaExport.all"
          description="clean/delete autogenerated .java files in all example archives" >
        <echo message="clean/delete autogenerated .java files in all example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.java" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.java" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.java" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.java" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.java" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.java" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.java" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.java" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.java.all complete."/>
    </target>

    <target name="clean.javaExport.all" depends="clean.backups.all"
          description="clean/delete autogenerated *_JavaExport.* models in all example archives" >
        <echo message="clean/delete autogenerated *_JavaExport.* models in all example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.javaExport" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.javaExport" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.javaExport" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.javaExport" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.javaExport" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.javaExport" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.javaExport" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.javaExport" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.javaExport.all complete."/>
    </target>

    <target name="clean.python.all" depends="clean.backups.all,clean.RoundTrip.all"
          description="clean/delete autogenerated .python files in all example archives" >
        <echo message="clean/delete autogenerated .python files in all example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.python" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.python" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.python" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.python" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.python" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.python" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.python" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.python" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.python.all complete."/>
    </target>

    <target name="clean.turtle.all" depends="clean.backups.all"
          description="clean/delete autogenerated .turtle files in all example archives" >
        <echo message="clean/delete autogenerated .turtle files in all example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.turtle" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.turtle" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.turtle" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.turtle" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.turtle" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.turtle" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.turtle" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.turtle" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.turtle.all complete."/>
    </target>

    <target name="clean.RoundTrip.all" depends="clean.backups.all"
          description="clean/delete autogenerated RoundTrip. files in all example archives" >
        <echo message="clean/delete autogenerated RoundTrip.* files in all example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.RoundTrip" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.RoundTrip" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.RoundTrip" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.RoundTrip" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.RoundTrip" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.RoundTrip" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.RoundTrip" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.RoundTrip" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.RoundTrip.all complete."/>
    </target>

    <target name="clean.json.all" depends="clean.backups.all"
          description="clean/delete autogenerated .json files in all example archives" >
        <echo message="clean/delete autogenerated .json files in all example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.json" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.json" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.json" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.json" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.json" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.json" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.json" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.json" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.json.all complete."/>
    </target>

    <target name="clean.X3domXhtml.all" depends="clean.backups.all"
          description="clean/delete autogenerated x3dom .xhtml files in all example archives" >
        <echo message="clean/delete autogenerated x3dom .xhtml files in all example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.X3domXhtml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.X3domXhtml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.X3domXhtml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.X3domXhtml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.X3domXhtml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.X3domXhtml" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.X3domXhtml" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.X3domXhtml" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.X3domXhtml.all complete."/>
    </target>

    <target name="clean.X3dTidy.all" depends="clean.backups.all"
          description="clean/delete autogenerated x3dom .xhtml files in all example archives" >
        <echo message="clean/delete autogenerated x3dom .xhtml files in all example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.X3dTidy" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.X3dTidy" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.X3dTidy" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.X3dTidy" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.X3dTidy" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.X3dTidy" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.X3dTidy" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.X3dTidy" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.X3dTidy.all complete."/>
    </target>

    <target name="clean.X_ITE.html.all" depends="clean.backups.all"
          description="clean/delete autogenerated X_ITE .html files in all example archives" >
        <echo message="clean/delete autogenerated X_ITE .html files in all example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.X_ITE.html" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.X_ITE.html" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.X_ITE.html" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.X_ITE.html" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.X_ITE.html" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.X_ITE.html" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.X_ITE.html" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.X_ITE.html" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.X_ITE.html.all complete."/>
    </target>

    <target name="clean.SVG.all" depends="clean.backups.all"
          description="clean/delete autogenerated .svg files in all example archives" >
        <echo message="clean/delete autogenerated .svg files in all example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.SVG" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.SVG" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.SVG" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.SVG" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.SVG" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.SVG" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.SVG" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.SVG" inheritAll="false"/>-->
        <echo message="clean.SVG.all complete."/>
    </target>

    <target name="clean.thumbnailImages.all" depends="clean.backups.all"
          description="clean/delete autogenerated viewpoint image files (only)" >
        <echo message="clean/delete autogenerated viewpoint image files (only)"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.thumbnailImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.thumbnailImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.thumbnailImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.thumbnailImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.thumbnailImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.thumbnailImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.thumbnailImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.thumbnailImages" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.thumbnailImages.all complete."/>
    </target>

    <target name="clean.viewpointImages.all" depends="clean.backups.all"
          description="clean/delete autogenerated viewpoint image files (only)" >
        <echo message="clean/delete autogenerated viewpoint image files (only)"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.viewpointImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.viewpointImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.viewpointImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.viewpointImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.viewpointImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.viewpointImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.viewpointImages" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.viewpointImages" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.viewpointImages.all complete."/>
    </target>

    <target name="clean.archiveSubdirectories.all" depends=""
          description="clean/delete archiveSubdirectorie" >
        <echo message="clean/delete archiveSubdirectorie"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.archiveSubdirectories" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="X3dForWebAuthors"        target="clean.archiveSubdirectories" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Vrml2Sourcebook"         target="clean.archiveSubdirectories" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="HumanoidAnimation"       target="clean.archiveSubdirectories" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="ConformanceNist"         target="clean.archiveSubdirectories" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Basic"                   target="clean.archiveSubdirectories" inheritAll="false"/>
        <echo message="========================================================================================"/>
        <ant dir="Savage"                  target="clean.archiveSubdirectories" inheritAll="false"/>
        <echo message="========================================================================================"/>
    <!--<ant dir="SavageDefense"           target="clean.archiveSubdirectories" inheritAll="false"/>
        <echo message="========================================================================================"/>-->
        <echo message="clean.archiveSubdirectories.all complete."/>
    </target>

    <target name="clean.archives.all" depends="clean.archiveSubdirectories.all"
          description="clean/delete autogenerated files in example archive/ and _archive/ subdirectories" >
        <echo message="clean/delete autogenerated files in example archive/ and _archive/ subdirectories"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <delete includeEmptyDirs="true" failonerror="false" verbose="true">
            <fileset dir="archive/"/>
            <fileset dir="**/archive/"/>
            <fileset dir="_archive/"/>
            <fileset dir="**/_archive/"/>
        </delete>
        <echo message="Note that individual targets for clean.archiveSubdirectories also exist in all of the examples projects"/>
        <echo message="clean.archives.all complete."/>
    </target>

    <target name="clean.pageSubdirectories.legacy.all" description="clean/delete legacy _pages subdirectories for all projects">
        <echo message="clean/delete legacy _pages subdirectories for all projects"/>
        <delete includeemptydirs="true" verbose="true">
            <fileset dir="." includes="**/_pages/**"/>
        </delete>
    </target>

    <target name="copy.licenses.web3d.all" description="copy license files to all Web3D Consortium example archives" >
        <echo message="copy license files to all Web3D Consortium example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Basic,ConformanceNist,Vrml2Sourcebook,Savage"/>
        <copy todir="X3dForAdvancedModeling" verbose="true" force="true" overwrite="true">
            <fileset dir="." id="licenses">
                <include name="license.html"/>
                <include name="license.txt"/>
            </fileset>
        </copy>
        <copy todir="X3dForWebAuthors"        verbose="true" force="true" overwrite="true"><fileset refid="licenses"/></copy>
        <copy todir="Vrml2Sourcebook"         verbose="true" force="true" overwrite="true"><fileset refid="licenses"/></copy>
        <copy todir="HumanoidAnimation"       verbose="true" force="true" overwrite="true"><fileset refid="licenses"/></copy>
        <copy todir="ConformanceNist"         verbose="true" force="true" overwrite="true"><fileset refid="licenses"/></copy>
        <copy todir="Basic"                   verbose="true" force="true" overwrite="true"><fileset refid="licenses"/></copy>
        <copy todir="Savage"                  verbose="true" force="true" overwrite="true"><fileset refid="licenses"/></copy>
        <copy todir="../../"                  verbose="true" force="true" overwrite="true"><fileset refid="licenses"/></copy>
        <copy todir="../../stylesheets"       verbose="true" force="true" overwrite="true"><fileset refid="licenses"/></copy>
        <copy todir="../../tooltips"          verbose="true" force="true" overwrite="true"><fileset refid="licenses"/></copy>
        <copy todir="../../../"               verbose="true" force="true" overwrite="true"><fileset refid="licenses"/></copy>
        <copy todir="../../../specifications" verbose="true" force="true" overwrite="true"><fileset refid="licenses"/></copy>
        <copy todir="../../../semantics"      verbose="true" force="true" overwrite="true"><fileset refid="licenses"/></copy>
        <echo message="copy.licenses.web3d.all complete."/>
    </target>

    <target name="update.slideshowTools.all" description="clean/delete downloaded slideshow tools" >
        <echo message="clean/delete downloaded slideshow tools in all example archives"/>
        <ant dir="X3dForAdvancedModeling"  target="clean.slideshowTools" inheritAll="false"/>
        <ant dir="X3dForWebAuthors"        target="clean.slideshowTools" inheritAll="false"/>
        <ant dir="Vrml2Sourcebook"         target="clean.slideshowTools" inheritAll="false"/>
        <ant dir="HumanoidAnimation"       target="clean.slideshowTools" inheritAll="false"/>
        <ant dir="ConformanceNist"         target="clean.slideshowTools" inheritAll="false"/>
        <ant dir="Basic"                   target="clean.slideshowTools" inheritAll="false"/>
        <ant dir="Savage"                  target="clean.slideshowTools" inheritAll="false"/>
    <!--<ant dir="SavageDefense"           target="clean.slideshowTools" inheritAll="false"/>-->
        <echo message="download currently tested slideshow tools into example archives"/>
        <ant dir="X3dForAdvancedModeling"  target="get.slideshowTools" inheritAll="false"/>
        <ant dir="X3dForWebAuthors"        target="get.slideshowTools" inheritAll="false"/>
        <ant dir="Vrml2Sourcebook"         target="get.slideshowTools" inheritAll="false"/>
        <ant dir="HumanoidAnimation"       target="get.slideshowTools" inheritAll="false"/>
        <ant dir="ConformanceNist"         target="get.slideshowTools" inheritAll="false"/>
        <ant dir="Basic"                   target="get.slideshowTools" inheritAll="false"/>
        <ant dir="Savage"                  target="get.slideshowTools" inheritAll="false"/>
    <!--<ant dir="SavageDefense"           target="get.slideshowTools" inheritAll="false"/>-->
        <echo message="update.slideshowTools.all complete."/>
    </target>

    <target name="clean.backups.all" depends=""
          description="clean/delete residual backup files" >
        <echo message="clean/delete residual backup files"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <delete verbose="${VERBOSE}">
          <fileset dir="." includes="_new_pretty_print.html"/>
            <fileset dir="." includes="_new_result.wrl"/>
            <fileset dir="." includes="_new_result.x3dv"/>
            <fileset dir="." includes="_new_result.x3db"/>
            <fileset dir="." includes="_new_resultCanonical.xml"/>
            <fileset dir="." includes="Thumb.db"/>
            <fileset dir="." includes="*.bak"/>
            <fileset dir="." includes="*.$$$$$$"/> <!--escaped .$$$ -->
            <fileset dir="." includes="**/Untitled-?.x3d"/>
        </delete>
        <echo message="clean.backups.all complete."/>
    </target>

    <target name="commonSetup" depends="" description="HelloWorld and newScene preparation for examples directory" >
        <!-- process master HelloWorld.x3d and newScene.x3d source to produce alternate versions, then bring results back to this directory -->
        <copy file="HelloWorld.x3d" todir="Basic" verbose="${VERBOSE}"/>
        <ant dir="Basic" target="HelloWorld" inheritAll="false"/>
        <copy todir="." verbose="${VERBOSE}">
            <fileset dir="Basic" includes="HelloWorld.*"/>
        </copy>
        <copy file="newScene.x3d" todir="Basic" verbose="${VERBOSE}"/>
        <ant dir="Basic" target="newScene" inheritAll="false"/>
        <copy todir="." verbose="${VERBOSE}">
            <fileset dir="Basic" includes="newScene.*"/>
        </copy>
        <!-- copy master newECMAscript.js for use by test scene newECMAscriptTest.x3d -->
        <copy file="newECMAscript.js" todir="X3dForWebAuthors/Chapter09EventUtilitiesScripting" verbose="${VERBOSE}"/>
        <echo message="commonSetup complete."/>
    </target>

	<!-- TODO omit: compiled stylesheets are a Saxon feature, false means regular .xslt -->
    <target name="clean.stylesheets" depends="" description="remove compiled stylesheets" >
        <ant dir="../../stylesheets/" target="clean.stylesheets" inheritAll="false"/>
    </target>

	<!-- Compiled stylesheets are no longer a Saxon feature, can omit
    <target name="" depends="" description="compile stylesheets using Saxon" >
        <ant dir="../../stylesheets/" target="compile.stylesheets" inheritAll="false"/>
    </target> -->

    <target   name="create.buildFile.all" description="create and customize each X3D archive build.xml"
           depends="create.buildFile.Basic,
                    create.buildFile.ConformanceNist,
                    create.buildFile.HumanoidAnimation,
                    create.buildFile.Vrml2Sourcebook,
                    create.buildFile.Savage,
                    create.buildFile.X3dForAdvancedModeling,
                    create.buildFile.X3dForWebAuthors">
                <!--create.buildFile.SavageDefense,-->
        <!-- all work performed by dependency targets -->
    </target>

    <macrodef name="create.buildFile.xml" description="Invoke XSLT transformation on passed scene using passed stylesheet">
        <attribute name="archive.name"/>
        <attribute name="archive.site"/>
        <sequential>
            <!-- TODO:  output needs updated directory name, directory title, directory filters, creation timestamp -->
            <copy    file="@{archive.name}/build.xml" todir="@{archive.name}/_archive/" overwrite="true" failonerror="false"/>
            <copy  tofile="@{archive.name}/build.xml" file="buildExamplesTemplate.xml" overwrite="true"/>
            <if>
                <or>
                    <equals arg1="@{archive.name}" arg2="Basic" />
                    <equals arg1="@{archive.name}" arg2="HumanoidAnimation" />
                    <equals arg1="@{archive.name}" arg2="Vrml2Sourcebook"   />
                    <equals arg1="@{archive.name}" arg2="X3dForAdvancedModeling" />
                    <equals arg1="@{archive.name}" arg2="X3dForWebAuthors" />
                </or>
                <then>
                    <echo>Set numberOfSections="1":</echo>
                    <replace file="@{archive.name}/build.xml" token="_numberOfSections_" value="1" summary="true"/>
                    <replace file="@{archive.name}/build.xml" token="_subdir_"  value="*" summary="true"/>
                    <echo>Set X3D and XML fileset filters:</echo>
                    <replace file="@{archive.name}/build.xml" token="_x3dScenes_"   value="*/*.x3d"  summary="true"/>
                    <replace file="@{archive.name}/build.xml" token="_xmlFiles_"    value="*/*.xml"  summary="true"/>
                    <replace file="@{archive.name}/build.xml" token="_jsFiles_"     value="*/*.js"   summary="true"/>
                    <replace file="@{archive.name}/build.xml" token="_regexp2_"     value="()()()"   summary="true"/>
                    <replace file="@{archive.name}/build.xml" token="_pathToRoot_"  value=".."       summary="true"/>
                    <replace file="@{archive.name}/build.xml" token="_packageSep2_" value=""         summary="true"/>
                </then>
                <else>
                    <!-- archive.name: ConformanceNIST, Savage, SavageDefense -->
                    <echo>Set numberOfSections="2":</echo>
                    <replace file="@{archive.name}/build.xml" token="_numberOfSections_" value="2" summary="true"/>
                    <replace file="@{archive.name}/build.xml" token="_subdir_" value="*/*" summary="true"/>
                    <echo>Set X3D and XML fileset filters:</echo>
                    <replace file="@{archive.name}/build.xml" token="_x3dScenes_"   value="*/*/*.x3d"  summary="true"/>
                    <replace file="@{archive.name}/build.xml" token="_xmlFiles_"    value="*/*/*.xml"  summary="true"/>
                    <replace file="@{archive.name}/build.xml" token="_jsFiles_"     value="*/*/*.js"   summary="true"/>
                    <replace file="@{archive.name}/build.xml" token="_regexp2_"     value="([^\n]*)_archiveName_[\\/]([^\n^\\^/]*)[\\/]([^\n^\\^/]*)([\\/][^\n]*)\.x3d"   summary="true"/>
                    <replace file="@{archive.name}/build.xml" token="_pathToRoot_"  value="../.."      summary="true"/>
                    <replace file="@{archive.name}/build.xml" token="_packageSep2_" value="."          summary="true"/>
                </else>
            </if>
            <echo>Set archive name to @{archive.name}:</echo>
            <replace file="@{archive.name}/build.xml" token="_archiveName_"      value="@{archive.name}" summary="true"/>
            <replace file="@{archive.name}/build.xml" token="_archiveSite_"      value="@{archive.site}" summary="true"/>
            <echo>Validate @{archive.name}/build.xml:</echo>
            <xmlvalidate failonerror="true" warn="true" lenient="yes">
                <fileset dir=".">
                    <include name="@{archive.name}/build.xml"/>
                </fileset>
            </xmlvalidate>
            <echo>create.buildFile.xml @{archive.name} complete</echo>
            <echo>==================================</echo>
        </sequential>
    </macrodef>

    <target name="validate.buildExamplesTemplate.xml" depends="" description="validate buildExamplesTemplate.xml" >
        <xmlvalidate failonerror="true" warn="true" lenient="yes">
            <fileset dir=".">
                <include name="buildExamplesTemplate.xml"/>
            </fileset>
        </xmlvalidate>
    </target>

    <target name="create.buildFile.Basic" depends="validate.buildExamplesTemplate.xml" description="create and customize archive build.xml for www.web3d.org/x3d/content/examples/Basic/" >
        <create.buildFile.xml archive.name="Basic" archive.site="https://www.web3d.org/x3d/content/examples/"/>
    </target>

    <target name="create.buildFile.ConformanceNist" depends="validate.buildExamplesTemplate.xml" description="create and customize archive build.xml for www.web3d.org/x3d/content/examples/ConformanceNist/" >
        <create.buildFile.xml archive.name="ConformanceNist" archive.site="https://www.web3d.org/x3d/content/examples/"/>
    </target>

    <target name="create.buildFile.HumanoidAnimation" depends="validate.buildExamplesTemplate.xml" description="create and customize archive build.xml for www.web3d.org/x3d/content/examples/HumanoidAnimation/" >
        <create.buildFile.xml archive.name="HumanoidAnimation" archive.site="https://www.web3d.org/x3d/content/examples/"/>
    </target>

    <target name="create.buildFile.Vrml2Sourcebook" depends="validate.buildExamplesTemplate.xml" description="create and customize archive build.xml for www.web3d.org/x3d/content/examples/Vrml2Sourcebook/" >
        <create.buildFile.xml archive.name="Vrml2Sourcebook" archive.site="https://www.web3d.org/x3d/content/examples/"/>
    </target>

    <target name="create.buildFile.Savage" depends="validate.buildExamplesTemplate.xml" description="create and customize archive build.xml for www.web3d.org/x3d/content/examples/Savage/" >
        <create.buildFile.xml archive.name="Savage" archive.site="https://www.web3d.org/x3d/content/examples/"/>
    </target>

    <target name="create.buildFile.SavageDefense" depends="validate.buildExamplesTemplate.xml" description="create and customize archive build.xml for www.web3d.org/x3d/content/examples/SavageDefense/" >
        <create.buildFile.xml archive.name="SavageDefense" archive.site="https://savageDefense.nps.edu/"/>
    </target>

    <target name="create.buildFile.X3dForAdvancedModeling" depends="validate.buildExamplesTemplate.xml" description="create and customize archive build.xml for www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/" >
        <create.buildFile.xml archive.name="X3dForAdvancedModeling" archive.site="https://www.web3d.org/x3d/content/examples/"/>
        <!-- originally https://x3dGraphics.com/examples/ -->
    </target>

    <target name="create.buildFile.X3dForWebAuthors" depends="validate.buildExamplesTemplate.xml" description="create and customize archive build.xml for www.web3d.org/x3d/content/examples/X3dForWebAuthors/" >
        <create.buildFile.xml archive.name="X3dForWebAuthors" archive.site="https://www.web3d.org/x3d/content/examples/"/>
        <!-- originally https://x3dGraphics.com/examples/ -->
    </target>

    <target name="scp.askUsernamePassword.savage"
        description="If needed, ask for username, password">
        <if>
            <not>
                <and>
                    <isset property="username.savage"/>
                    <isset property="password.savage"/>
                </and>
            </not>
            <then>
                <echo  message="username.savage, password.savage not obtained via file ${access.properties.filename}"/>
                <input message="username.savage:"
                   addproperty="username.savage" />
                <input message="password.savage:"
                   addproperty="password.savage" />
                <echo  message="username.savage=${username.savage}"/>
                <echo  message="password.savage=################"/>
            <!--<echo  message="password.savage=${password.savage}"/> debug -->
            </then>
            <else>
                <echo  message="username.savage, password.savage obtained from file ${access.properties.filename}"/>
            </else>
        </if>
    </target>

    <target name="scp.askUsernamePassword.savageDefense"
        description="If needed, ask for username, password">
        <if>
            <not>
                <and>
                    <isset property="username.savageDefense"/>
                    <isset property="password.savageDefense"/>
                </and>
            </not>
            <then>
                <echo  message="username.savageDefense, password.savageDefense not obtained via file ${access.properties.filename}"/>
                <input message="username.savageDefense:"
                   addproperty="username.savageDefense" />
                <input message="password.savageDefense:"
                   addproperty="password.savageDefense" />
                <echo  message="username.savageDefense=${username.savageDefense}"/>
                <echo  message="password.savageDefense=################"/>
            <!--<echo  message="password.savageDefense=${password.savageDefense}"/> debug -->
            </then>
            <else>
                <echo  message="username.savageDefense, password.savageDefense obtained from file ${access.properties.filename}"/>
            </else>
        </if>
        <!-- debug
        -->
        <echo  message="$ {sftpServer.savageDefense}$ {sftpDirectory.savageDefense}=${sftpServer.savageDefense}${sftpDirectory.savageDefense}"/>
        <echo  message="username.savageDefense=${username.savageDefense}"/>
        <echo  message="password.savageDefense=################"/>
    <!--<echo  message="password.savageDefense=${password.savageDefense}"/>-->
    </target>

    <target name="scp.askUsernamePassword.web3d"
        description="If needed, ask for username, password">
        <if>
            <not>
                <and>
                    <isset property="username.web3d"/>
                    <isset property="password.web3d"/>
                </and>
            </not>
            <then>
                <echo  message="username.web3d, password.web3d not obtained via file ${access.properties.filename}"/>
                <input message="username.web3d:"
                   addproperty="username.web3d" />
                <input message="password.web3d:"
                   addproperty="password.web3d" />
                <echo  message="username.web3d=${username.web3d}"/>
                <echo  message="password.web3d=################"/>
            <!--<echo  message="password.web3d=${password.web3d}"/> debug -->
            </then>
            <else>
                <echo  message="username.web3d, password.web3d obtained from file ${access.properties.filename}"/>
            </else>
        </if>
    </target>

    <target name="scp.askUsernamePassword.X3dForAdvancedModeling"
        description="If needed, ask for username, password">
        <if>
            <not>
                <and>
                    <isset property="username.X3dForWebAuthors"/>
                    <isset property="password.X3dForWebAuthors"/>
                </and>
            </not>
            <then>
                <echo  message="username.X3dForWebAuthors, password.X3dForWebAuthors not obtained via file ${access.properties.filename}"/>
                <input message="username.X3dForWebAuthors:"
                   addproperty="username.X3dForWebAuthors" />
                <input message="password.X3dForWebAuthors:"
                   addproperty="password.X3dForWebAuthors" />
                <echo  message="username.X3dForWebAuthors=${username.X3dForWebAuthors}"/>
                <echo  message="password.X3dForWebAuthors=################"/>
            <!--<echo  message="password.X3dForWebAuthors=${password.X3dForWebAuthors}"/> debug -->
            </then>
            <else>
                <echo  message="username.X3dForWebAuthors, password.X3dForWebAuthors obtained from file ${access.properties.filename}"/>
            </else>
        </if>
    </target>

    <target name="scp.askUsernamePassword.X3dForWebAuthors"
        description="If needed, ask for username, password">
        <if>
            <not>
                <and>
                    <isset property="username.X3dForWebAuthors"/>
                    <isset property="password.X3dForWebAuthors"/>
                </and>
            </not>
            <then>
                <echo  message="username.X3dForWebAuthors, password.X3dForWebAuthors not obtained via file ${access.properties.filename}"/>
                <input message="username.X3dForWebAuthors:"
                   addproperty="username.X3dForWebAuthors" />
                <input message="password.X3dForWebAuthors:"
                   addproperty="password.X3dForWebAuthors" />
                <echo  message="username.X3dForWebAuthors=${username.X3dForWebAuthors}"/>
                <echo  message="password.X3dForWebAuthors=################"/>
            <!--<echo  message="password.X3dForWebAuthors=${password.X3dForWebAuthors}"/> debug -->
            </then>
            <else>
                <echo  message="username.X3dForWebAuthors, password.X3dForWebAuthors obtained from file ${access.properties.filename}"/>
            </else>
        </if>
    </target>

    <target name="scp.uploadExampleUpdates.all" depends="scp.uploadExampleUpdates.web3d.all"
          description="scp upload all updated X3D archive files">
        <echo message="... scp.uploadExampleUpdates.all complete."/>
        <!-- ,scp.uploadExampleUpdates.SavageDefense -->
        <!-- TODO: consider converting other scp.uploadExampleUpdates tasks into macros -->
    </target>

    <target name="scp.uploadExampleUpdates.Savage" depends="scp.uploadExampleUpdates.Savage.scenes,scp.uploadExampleUpdates.Savage.pages,scp.uploadExampleUpdates.Savage.zip"
        description="scp upload of updated X3D archive files of all types, including .zip">
        <!-- Fixing server permissions and ownership for files and directories:
             sudo find           -type f -exec chmod 664 {} \;
             sudo find -name '*' -type d -exec chmod 775 {} \;
             sudo chown -R jenkins:jenkins *
          -->
    </target>

    <target name="scp.uploadExampleUpdates.Savage.pages" depends="scp.askUsernamePassword.savage"
        description="scp upload of updated Savage X3D catalog and javadoc pages, not including .zip">
        <echo  message="scp upload catalog and javadoc pages to sftp://${sftpServer.savage}${sftpDirectory.savage}"/>
        <scp remotetodir="${username.savage}@${sftpServer.savage}:${sftpDirectory.savage}" password="${password.savage}"
               trust="yes"
             verbose="true" filemode="664" dirmode="775">
            <fileset dir="Savage">
                <include name="**/index.html"/>
                <include name="**/viewpointSlideshow.html"/>
                <include name="**/*.html"/>
                <include name="**/*.md"/>
                <include name="**/*.txt"/>
                <include name="**/package.html"/><!-- javadoc version -->
                <include name="**/package-catalog.html"/>
                <include name="javadoc/**/*"/>
                <!-- viewpoint capture snapshots
                <include name="**/_thumbnails/*.png"/>
                <include name="**/_viewpoints/*.png"/> -->
                <exclude name="**/services"/>
                <exclude name="**/services/*"/>
                <exclude name="**/services/**/*"/>
            </fileset>
            <fileset dir="Savage/images">
                <include name="images/*"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.savage}/Savage"/>
        <echo  message="scp.uploadExampleUpdates.Savage.pages complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.Savage.scenes" depends="scp.askUsernamePassword.savage"
        description="scp upload of updated Savage X3D archive files of all types, not including .zip">
        <echo  message="scp upload scenes to sftp://${sftpServer.savage}${sftpDirectory.savage}"/>
        <scp remotetodir="${username.savage}@${sftpServer.savage}:${sftpDirectory.savage}" password="${password.savage}"
               trust="yes"
             verbose="true" filemode="664" dirmode="775">
            <!-- means use SSH2 file copy protocol, must be installed on server -->
            <fileset refid="web3d.common.fileset"/>
            <!-- top level -->
            <fileset dir="Savage">
                <include name="indexSavage.redirect.html"/>
                <include name="help.html"/>
                <include name="license.*"/>
                <include name="README.txt"/>
                <include name="images/*"/>
                <include name="*.*"/>
                <include name="**/*.*"/>
                <!-- excluding these -->
                <exclude name="access.properties"/>
                <exclude name="**/services"/>
                <exclude name="**/services/*"/>
                <exclude name="**/services/**/*"/>
                <exclude name="*.zip"/>
                <exclude name="**/X3dResources.html"/>
                <exclude name="**/X3dSceneAuthoringHints.html"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="_schematron/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/_hide/*"/>
                <exclude name="**/hide/*"/>
                <exclude name="**/CVS/*"/>
                <exclude name="**/.svn/*"/>
                <exclude name="**/_new*.*"/>
                <exclude name="**/*.bak"/>
                <exclude name="**/Thumbs.db"/>
                <exclude name="CVS/"/>
                <exclude name="*/CVS/"/>
                <exclude name=".svn/"/>
                <exclude name="**/.svn"/>
                <exclude name="**/*.$$$"/>
                <exclude name="**/*.\$\$\$"/>
                <!-- Microsoft office temp files -->
                <exclude name="**/~$*.*"/>
                <exclude name="**/~\$*.*"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.savage}/Savage"/>
        <echo  message="scp.uploadExampleUpdates.Savage.scenes complete."/>
    </target>

    <target name="scp.uploadSavageStudioExcerpt.zip" depends="scp.askUsernamePassword.savage"
        description="scp upload of updated X3D X3dExamplesSavageStudioExcerpt.zip archive">
        <echo  message="scp upload zip to sftp://${sftpServer.savage}${sftpDirectory.savage}"/>
        <scp
             todir="${username.savage}@${sftpServer.savage}:${sftpDirectory.savage}"
             password="${password.savage}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false"

             file="X3dExamplesSavageStudioExcerpt.zip"/>
            <!-- means use SSH2 file copy protocol, must be installed on server -->
        <echo  message="upload available at https://${sftpServer.savage}/X3dExamplesSavageStudioExcerpt.zip"/>
        <echo  message="scp.uploadSavageStudioExcerpt.zip complete."/>
    </target>

    <!-- website utility task, changes infrequently -->
    <target name="scp.uploadX3dRedirect" depends="scp.askUsernamePassword.web3d"
            description="scp upload of updated X3D X3dExamplesSavageStudioExcerpt.zip archive">
        <echo  message="scp upload x3d index.html redirect to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <copy   file="../../indexX3d.redirect.html" tofile="../../index.html" verbose="true"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}/../.." password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false" file="../../indexX3d.redirect.html"/>
        <delete file="../../index.html" verbose="true"/>
    </target>

    <!-- ensure that you have already connected to this host via ssh and saved the server key -->
    <target name="upload.CommonFiles" depends="scp.askUsernamePassword.web3d,scp.askUsernamePassword.X3dForWebAuthors,scp.askUsernamePassword.savage,HelloWorld.all,newScene.all"
        description="scp upload of X3dResources.html and other common files to all online example archives">
        <!-- ,scp.askUsernamePassword.savageDefense , then update savageDefense... -->
        <echo message="first update web3d.org, then update savage"/>
        <echo message="scp upload common files to Web3D.org scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="HelloWorld.*"/>
                <include name="newScene.*"/>
                <include name="newStylesheet.*"/>
                <include name="newX3dScript.*"/>
                <include name="newECMAscript.*"/>
                <include name="newXhtmlWithEmbeddedX3dom.xhtml"/>
                <include name="newHtmlPageWithX3dObject.html"/>
                <include name="HtmlObjectTagForX3d.html"/>
                <include name="license.*"/>
                <include name="README.txt"/>
                <!-- these files are only updated as master versions on web3d.org, redirect pages are used elsewhere -->
                <include name="X3dResources.html"/>
                <include name="X3dSceneAuthoringHints.html"/>
                <include name="access.properties.blocker.txt"/>
                <include name="access.properties.template"/>
                <!-- excluding these -->
                <exclude name="access.properties"/>
                <exclude name="build.*.txt"/>
            </fileset>
            <!-- the following files are common to all of the example archive sites -->
            <fileset refid="web3d.common.fileset"/>
        </scp>
        <echo message="scp upload X3dSecurityReadMe.html to Web3D.org scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}/Basic/Security"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}/Basic/Security" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="Basic/Security">
                <include name="X3dSecurityReadMe.html"/>
            </fileset>
        </scp>
        <echo  message="scp upload common files to Web3D.org scp://${sftpServer.X3dForWebAuthors}/${sftpDirectory.X3dForWebAuthors.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForWebAuthors.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset refid="web3d.common.fileset"/>
        </scp>
        <echo  message="scp upload common files to Web3D.org scp://${sftpServer.X3dForWebAuthors}/${sftpDirectory.X3dForAdvancedModeling.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForAdvancedModeling.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset refid="web3d.common.fileset"/>
        </scp>
        <echo  message="scp upload common files to savage scp://${sftpServer.savage}${sftpDirectory.savage}"/>
        <scp remotetodir="${username.savage}@${sftpServer.savage}:${sftpDirectory.savage}" password="${password.savage}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <!-- means use SSH2 file copy protocol, must be installed on server -->
            <fileset refid="web3d.common.fileset"/>
        </scp>
        <!--
        <echo  message="scp upload common files to savageDefense.nps.navy.mil scp://${sftpServer.savageDefense}${sftpDirectory.savageDefense}"/>
        <scp remotetodir="${username.savageDefense}@${sftpServer.savageDefense}:${sftpDirectory.savageDefense}" password="${password.savageDefense}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            < ! - - means use SSH2 file copy protocol, must be installed on server - - >
            <fileset refid="web3d.common.fileset"/>
        </scp>
        -->
        <echo message="upload.CommonFiles complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.X3dForAdvancedModeling" depends="scp.uploadExampleUpdates.X3dForAdvancedModeling.scenes,scp.uploadExampleUpdates.X3dForAdvancedModeling.pages,scp.uploadExampleUpdates.X3dForAdvancedModeling.zip"
        description="scp upload of updated X3D archive files of all types, including .zip">
    </target>

    <target name="scp.uploadExampleUpdates.X3dForAdvancedModeling.pages" depends="scp.askUsernamePassword.web3d,scp.askUsernamePassword.X3dForAdvancedModeling"
        description="scp upload of updated X3D archive files of all types, not including .zip">
        <echo  message="   $username.X3dForWebAuthors=${username.X3dForWebAuthors} $password.X3dForWebAuthors=################"/>
    <!--<echo  message="   $username.X3dForWebAuthors=${username.X3dForWebAuthors} $password.X3dForWebAuthors=${password.X3dForWebAuthors}"/>-->
        <echo  message="scp upload catalog and javadoc pages to scp://${sftpServer.X3dForWebAuthors}/${sftpDirectory.X3dForAdvancedModeling.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForAdvancedModeling.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="X3dForAdvancedModeling">
                <include name="**/index.html"/>
                <include name="**/viewpointSlideshow.html"/>
                <include name="**/*.html"/>
                <include name="**/*.md"/>
                <include name="**/*.txt"/>
                <include name="**/package.html"/><!-- javadoc version -->
                <include name="**/package-catalog.html"/>
                <include name="javadoc/**/*"/>
                <!-- viewpoint capture snapshots
                <include name="**/_thumbnails/*.png"/>
                <include name="**/_viewpoints/*.png"/> -->
            </fileset>
            <fileset dir="X3dForAdvancedModeling/images">
                <include name="images/*"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.X3dForWebAuthors}/examples/X3dForAdvancedModeling"/>
        <echo  message="scp.uploadExampleUpdates.X3dForAdvancedModeling.pages complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.X3dForAdvancedModeling.thumbnails" depends="scp.askUsernamePassword.web3d,scp.askUsernamePassword.X3dForAdvancedModeling"
        description="scp upload of updated X3D viewpoint thumbnails and viewpoint images">
        <echo  message="   $username.X3dForWebAuthors=${username.X3dForWebAuthors} $password.X3dForWebAuthors=################"/>
    <!--<echo  message="   $username.X3dForWebAuthors=${username.X3dForWebAuthors} $password.X3dForWebAuthors=${password.X3dForWebAuthors}"/>-->
        <echo  message="scp upload catalog and javadoc pages to scp://${sftpServer.X3dForWebAuthors}/${sftpDirectory.X3dForAdvancedModeling.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForAdvancedModeling.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="X3dForAdvancedModeling">
                <include name="**/_thumbnails/*"/>
                <include name="**/_viewpoints/*"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.X3dForWebAuthors}/examples/X3dForAdvancedModeling"/>
        <echo  message="scp.uploadExampleUpdates.X3dForAdvancedModeling.pages complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.X3dForAdvancedModeling.scenes" depends="scp.askUsernamePassword.web3d,scp.askUsernamePassword.X3dForAdvancedModeling"
        description="scp upload of updated X3D archive files of all types, not including .zip">
        <echo  message="scp upload scenes to scp://${sftpServer.X3dForWebAuthors}/${sftpDirectory.X3dForAdvancedModeling.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForAdvancedModeling.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
                <fileset refid="web3d.common.fileset"/>
                <fileset dir="X3dForAdvancedModeling">
                    <!-- future book directories will immediately follow the next include entries -->
                    <include name="javadoc/**/*"/>
		</fileset>
                <fileset dir="X3dForAdvancedModeling">
                    <!-- future book directories will immediately follow the next include entries -->
                    <include name="*.*"/>
                    <include name="**/*.*"/>
                    <!-- excluding these -->
                    <exclude name="*.zip"/>
                    <exclude name="**/X3dResources.html"/>
                    <exclude name="**/X3dSceneAuthoringHints.html"/>
                    <exclude name="indexSavage.*redirect.html"/>
                    <exclude name="indexSavageDefense.*redirect.html"/>
                    <exclude name="**/archive/*"/>
                    <exclude name="**/_archive/*"/>
                    <exclude name="_schematron/*"/>
                    <exclude name="**/_schematron/*"/>
                    <exclude name="**/_hide/*"/>
                    <exclude name="**/hide/*"/>
                    <exclude name="**/CVS/*"/>
                    <exclude name="**/.svn/*"/>
                    <exclude name="**/_new*.*"/>
                    <exclude name="**/*.bak"/>
                    <exclude name="**/Thumbs.db"/>
                    <exclude name="nbproject/"/>
                    <exclude name="**/nbproject"/>
                    <exclude name=".svn/"/>
                    <exclude name="**/.svn"/>
                    <exclude name="**/*.$$$"/>
                    <exclude name="**/*.\$\$\$"/>
                    <!-- Microsoft office temp files -->
                    <exclude name="**/~$*.*"/>
                    <exclude name="**/~\$*.*"/>
                    <!-- other archive-unique excludes -->
                    <exclude name="SanCarlosCathedral/photographs/"/>
                </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.X3dForWebAuthors}/examples/X3dForAdvancedModeling"/>
        <echo  message="scp.uploadExampleUpdates.X3dForAdvancedModeling.scenes complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.X3dForAdvancedModeling.zip" depends="scp.askUsernamePassword.web3d,scp.askUsernamePassword.X3dForAdvancedModeling"
        description="scp upload of updated X3dForAdvancedModeling.zip archive">
        <echo  message="scp upload zip to scp://${sftpServer.X3dForWebAuthors}/${sftpDirectory.X3dForAdvancedModeling.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForAdvancedModeling.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="true">
            <fileset dir=".">
                <include name="X3dExamplesX3dForAdvancedModeling.zip"/>
                <include name="X3dExamplesX3dForAdvancedModeling.zip.MD5"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.X3dForWebAuthors}/X3dExamplesX3dForAdvancedModeling.zip"/>
        <echo  message="scp.uploadExampleUpdates.X3dForAdvancedModeling.zip complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.X3dForWebAuthors" depends="scp.uploadExampleUpdates.X3dForWebAuthors.scenes,scp.uploadExampleUpdates.X3dForWebAuthors.pages,scp.uploadExampleUpdates.X3dForWebAuthors.zip"
        description="scp upload of updated X3D archive files of all types, including .zip">
    </target>

    <target name="scp.uploadExampleUpdates.X3dForWebAuthors.pages" depends="scp.askUsernamePassword.web3d,scp.askUsernamePassword.X3dForWebAuthors"
        description="scp upload of updated X3D archive catalog and javadoc pages, not including .zip">
        <echo  message="scp upload catalog and javadoc pages to scp://${sftpServer.X3dForWebAuthors}/${sftpDirectory.X3dForWebAuthors.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForWebAuthors.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="X3dForWebAuthors">
                <include name="**/index.html"/>
                <include name="**/viewpointSlideshow.html"/>
                <include name="**/*.html"/>
                <include name="**/*.md"/>
                <include name="**/*.txt"/>
                <include name="**/package.html"/><!-- javadoc version -->
                <include name="**/package-catalog.html"/>
                <include name="javadoc/**/*"/>
                <!-- viewpoint capture snapshots
                <include name="**/_thumbnails/*.png"/>
                <include name="**/_viewpoints/*.png"/> -->
            </fileset>
            <fileset dir="X3dForWebAuthors/images">
                <include name="images/*"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.X3dForWebAuthors}/examples/X3dForWebAuthors"/>
        <echo  message="scp.uploadExampleUpdates.X3dForWebAuthors.pages complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.X3dForWebAuthors.thumbnails" depends="scp.askUsernamePassword.web3d,scp.askUsernamePassword.X3dForWebAuthors"
        description="scp upload of updated X3D viewpoint thumbnails and viewpoint images">
        <echo  message="scp upload catalog and javadoc pages to scp://${sftpServer.X3dForWebAuthors}/${sftpDirectory.X3dForWebAuthors.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForWebAuthors.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="X3dForWebAuthors">
                <include name="**/_thumbnails/*.png"/>
                <include name="**/_viewpoints/*.png"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.X3dForWebAuthors}/examples/X3dForWebAuthors"/>
        <echo  message="scp.uploadExampleUpdates.X3dForWebAuthors.pages complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.X3dForWebAuthors.scenes" depends="scp.askUsernamePassword.web3d,scp.askUsernamePassword.X3dForWebAuthors"
        description="scp upload of updated X3D archive files of all types, not including .zip">
        <echo  message="scp upload scenes to scp://${sftpServer.X3dForWebAuthors}/${sftpDirectory.X3dForWebAuthors.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForWebAuthors.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
                <fileset refid="web3d.common.fileset"/>
                <fileset dir="X3dForWebAuthors">
                    <!-- future book directories will immediately follow the next include entries -->
                    <include name="*.*"/>
                    <include name="**/*.*"/>
                    <!-- excluding these -->
                    <exclude name="*.zip"/>
                    <exclude name="**/X3dResources.html"/>
                    <exclude name="**/X3dSceneAuthoringHints.html"/>
                    <exclude name="indexSavage.*redirect.html"/>
                    <exclude name="indexSavageDefense.*redirect.html"/>
                    <exclude name="**/archive/*"/>
                    <exclude name="**/_archive/*"/>
                    <exclude name="_schematron/*"/>
                    <exclude name="**/_schematron/*"/>
                    <exclude name="**/_hide/*"/>
                    <exclude name="**/hide/*"/>
                    <exclude name="**/CVS/*"/>
                    <exclude name="**/.svn/*"/>
                    <exclude name="**/_new*.*"/>
                    <exclude name="**/*.bak"/>
                    <exclude name="**/Thumbs.db"/>
                    <exclude name="nbproject/"/>
                    <exclude name="**/nbproject"/>
                    <exclude name=".svn/"/>
                    <exclude name="**/.svn"/>
                    <exclude name="**/*.$$$"/>
                    <exclude name="**/*.\$\$\$"/>
                    <!-- Microsoft office temp files -->
                    <exclude name="**/~$*.*"/>
                    <exclude name="**/~\$*.*"/>
                    <!-- other archive-unique excludes -->
                    <exclude name="SanCarlosCathedral/photographs/"/>
                </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.X3dForWebAuthors}/examples/X3dForWebAuthors"/>
        <echo  message="scp.uploadExampleUpdates.X3dForWebAuthors.scenes complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.X3dForWebAuthors.zip" depends="scp.askUsernamePassword.web3d,scp.askUsernamePassword.X3dForWebAuthors"
        description="scp upload of updated X3dForWebAuthors.zip archive">
        <echo  message="scp upload zip to scp://${sftpServer.X3dForWebAuthors}/${sftpDirectory.X3dForWebAuthors.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForWebAuthors.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="true">
            <fileset dir=".">
                <include name="X3dExamplesX3dForWebAuthors.zip"/>
                <include name="X3dExamplesX3dForWebAuthors.zip.MD5"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.X3dForWebAuthors}/X3dExamplesX3dForWebAuthors.zip"/>
        <echo  message="scp.uploadExampleUpdates.X3dForWebAuthors.zip complete."/>
    </target>

    <target    name="build.SavageAuvWorkbenchModelDistribution.all" depends="build.SavageAuvWorkbenchModelDistribution.zip,scp.uploadSavageAuvWorkbenchModelDistribution.zip"
        description="build, zip SavageAuvWorkbenchModelDistribution archive">
    </target>

    <target    name="build.SavageAuvWorkbenchModelDistribution.zip" depends=""
        description="build SavageAuvWorkbenchModelDistribution.zip archive">
        <ant dir="Savage" antfile="buildSavageAuvWorkbenchModelDistribution.xml" target="zip.AuvWorkbenchExcerpt"/>
    </target>

    <target name="scp.uploadExampleUpdates.Savage.zip" depends="scp.askUsernamePassword.savage"
        description="scp upload of updated X3D Savage.zip archive">
        <echo  message="scp upload zip to scp://${sftpServer.savage}${sftpDirectory.savage}"/>
        <scp  remotetodir="${username.savage}@${sftpServer.savage}:${sftpDirectory.savage}" password="${password.savage}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <!-- means use SSH2 file copy protocol, must be installed on server -->
            <!-- top level -->
            <fileset dir=".">
                    <include name="X3dExamplesSavage.zip"/>
                    <include name="X3dExamplesSavage.zip.MD5"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.savage}/X3dExamplesSavage.zip"/>
        <echo  message="scp.uploadExampleUpdates.Savage.zip complete."/>
    </target>

    <target name="scp.uploadSavageAuvWorkbenchModelDistribution.zip" depends="scp.askUsernamePassword.savage"
        description="scp upload of updated X3D SavageAuvWorkbenchModelDistribution.zip archive">
        <echo  message="scp upload zip to scp://${sftpServer.savage}${sftpDirectory.savage}"/>
        <scp remotetodir="${username.savage}@${sftpServer.savage}:${sftpDirectory.savage}" password="${password.savage}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <!-- means use SSH2 file copy protocol, must be installed on server -->
            <!-- top level -->
            <fileset dir=".">
                <include name="X3dExamplesSavageAuvWorkbenchExcerpt.zip"/>
                <include name="X3dExamplesSavageAuvWorkbenchExcerpt.zip.MD5"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.savage}/X3dExamplesSavageAuvWorkbenchExcerpt.zip"/>
        <echo  message="scp.uploadSavageAuvWorkbenchModelDistribution.zip complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.SavageDefense" depends="scp.uploadExampleUpdates.SavageDefense.scenes,scp.uploadExampleUpdates.SavageDefense.pages,scp.uploadExampleUpdates.SavageDefense.zip"
        description="scp upload of updated SavageDefense X3D archive files of all types, including .zip">
        <!-- Fixing server permissions and ownership for files and directories:
             sudo find           -type f -exec chmod 664 {} \;
             sudo find -name '*' -type d -exec chmod 775 {} \;
             sudo chown -R jenkins:jenkins *
          -->
    </target>

    <target name="scp.uploadExampleUpdates.SavageDefense.pages" depends="scp.askUsernamePassword.savageDefense"
        description="scp upload of updated X3D archive catalog and javadoc pages, not including .zip">
        <echo  message="scp upload catalog and javadoc pages to sftp://${sftpServer.savageDefense}${sftpDirectory.savageDefense}"/>
        <scp remotetodir="${username.savageDefense}@${sftpServer.savageDefense}:${sftpDirectory.savageDefense}" password="${password.savageDefense}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="SavageDefense">
                <include name="**/index.html"/>
                <include name="**/viewpointSlideshow.html"/>
                <include name="**/*.html"/>
                <include name="**/*.md"/>
                <include name="**/*.txt"/>
                <include name="**/package.html"/><!-- javadoc version -->
                <include name="**/package-catalog.html"/>
                <include name="javadoc/**/*"/>
                <!-- viewpoint capture snapshots
                <include name="**/_thumbnails/*.png"/>
                <include name="**/_viewpoints/*.png"/> -->
            </fileset>
            <fileset dir="SavageDefense/images">
                <include name="images/*"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.savageDefense}/SavageDefense"/>
        <echo  message="scp.uploadExampleUpdates.SavageDefense.pages complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.SavageDefense.scenes" depends="scp.askUsernamePassword.savageDefense"
        description="scp upload of updated X3D archive files of all types, not including .zip">
        <echo  message="scp upload scenes to sftp://${sftpServer.savageDefense}${sftpDirectory.savageDefense}"/>
        <scp remotetodir="${username.savageDefense}@${sftpServer.savageDefense}:${sftpDirectory.savageDefense}" password="${password.savageDefense}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <!-- means use SSH2 file copy protocol, must be installed on server -->
            <!-- top level -->
            <fileset dir="SavageDefense">
                <include name="indexSavageDefense.redirect.html"/>
                <include name="help.html"/>
                <include name="license.*"/>
                <include name="README.txt"/>
                <include name="images/*"/>
                <include name="*.*"/>
                <include name="**/*.*"/>
                <!-- excluding these -->
                <exclude name="*.zip"/>
                <exclude name="**/X3dResources.html"/>
                <exclude name="**/X3dSceneAuthoringHints.html"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="_schematron/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/_hide/*"/>
                <exclude name="**/hide/*"/>
                <exclude name="**/CVS/*"/>
                <exclude name="**/.svn/*"/>
                <exclude name="**/_new*.*"/>
                <exclude name="**/*.bak"/>
                <exclude name="**/Thumbs.db"/>
                <exclude name="CVS/"/>
                <exclude name="*/CVS/"/>
                <exclude name=".svn/"/>
                <exclude name="**/.svn"/>
                <exclude name="**/*.$$$"/>
                <exclude name="**/*.\$\$\$"/>
                <!-- Microsoft office temp files -->
                <exclude name="**/~$*.*"/>
                <exclude name="**/~\$*.*"/>
            </fileset>
        </scp>
        <!-- Exception:  Failed to initialise MIME mail: org.apache.tools.ant.taskdefs.email.MimeMailer
        <if>
            <isset property="notify.savageDefense"/>
            <then>
                <mail from="brutzman@nps.navy.mil(Don Brutzman)" tolist="notify.savageDefense" mailhost="${nps.mailhost}" password="${nps.password}"
                      subject="SavageDefense archive uploaded"
                      message="SavageDefense archive uploaded to https://${sftpServer.savageDefense}Defense"/>
            </then>
            <else>
                <echo  message="notification mail not sent, no value for property notify.savageDefense"/>
            </else>
        </if>
        -->
        <echo  message="upload available at https://${sftpServer.savageDefense}/SavageDefense"/>
        <echo  message="scp.uploadExampleUpdates.SavageDefense.scenes complete."/>
    </target>

    <target name="scp.uploadSavageStudioFOUOExcerpt.zip" depends="scp.askUsernamePassword.savageDefense"
        description="scp upload of updated X3D X3dExamplesSavageStudioFOUOExcerpt.zip archive">
        <echo  message="scp upload zip to sftp://${sftpServer.savageDefense}${sftpDirectory.savageDefense}"/>
        <scp todir="${username.savageDefense}@${sftpServer.savageDefense}:${sftpDirectory.savageDefense}"
             password="${password.savageDefense}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false"

             file="X3dExamplesSavageStudioFOUOExcerpt.zip"/>
        <echo  message="upload available at https://${sftpServer.savageDefense}/X3dExamplesSavageStudioFOUOExcerpt.zip"/>
        <echo  message="scp.uploadSavageStudioFOUFExcerpt.zip complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.SavageDefense.zip" depends="scp.askUsernamePassword.savageDefense"
        description="scp upload of updated X3D SavageDefense.zip archive">
        <echo  message="scp upload zip to sftp://${sftpServer.savageDefense}${sftpDirectory.savageDefense}"/>
        <scp remotetodir="${username.savageDefense}@${sftpServer.savageDefense}:${sftpDirectory.savageDefense}" password="${password.savageDefense}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <!-- means use SSH2 file copy protocol, must be installed on server -->
            <!-- top level -->
            <fileset dir=".">
                <include name="X3dExamplesSavageDefense.zip"/>
                <include name="X3dExamplesSavageDefense.zip.MD5"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.savageDefense}/X3dExamplesSavageDefense.zip"/>
        <echo  message="scp.uploadExampleUpdates.SavageDefense.zip complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.web3d.all"
        depends="scp.uploadExampleUpdates.web3d.common,scp.uploadExampleUpdates.X3dForAdvancedModeling,scp.uploadExampleUpdates.X3dForWebAuthors,scp.uploadExampleUpdates.Basic,scp.uploadExampleUpdates.HumanoidAnimation,scp.uploadExampleUpdates.Vrml2Sourcebook,scp.uploadExampleUpdates.ConformanceNist,scp.uploadExampleUpdates.Savage"
        description="scp upload of updated X3D archive files to web3d.org sites">
        <echo  message="scp.uploadExampleUpdates.web3d.all complete."/>
    </target>

    <target name="upload.pages.all" depends="scp.uploadExampleUpdates.all.pages"
        description="scp upload of updated X3D archive catalog and javadoc pages to web3d.org and Savage/SavageDefense sites">
        <echo  message="upload.pages complete."/>
    </target>

    <target name="upload.pages.web3d" depends="scp.uploadExampleUpdates.web3d.pages"
        description="scp upload of updated X3D archive catalog and javadoc pages to web3d.org and Savage/SavageDefense sites">
        <echo  message="upload.pages complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.all.pages" depends="scp.uploadExampleUpdates.X3dForAdvancedModeling.pages,scp.uploadExampleUpdates.X3dForWebAuthors.pages,scp.uploadExampleUpdates.Basic.pages,scp.uploadExampleUpdates.HumanoidAnimation.pages,scp.uploadExampleUpdates.Vrml2Sourcebook.pages,scp.uploadExampleUpdates.ConformanceNist.pages,scp.uploadExampleUpdates.Savage.pages"
        description="scp upload of updated X3D archive catalog and javadoc pages to web3d.org and Savage/SavageDefense sites">
        <!-- ,scp.uploadExampleUpdates.SavageDefense.pages -->
        <echo  message="scp.uploadExampleUpdates.all.pages complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.web3d.pages" depends="scp.uploadExampleUpdates.X3dForAdvancedModeling.pages,scp.uploadExampleUpdates.X3dForWebAuthors.pages,scp.uploadExampleUpdates.Basic.pages,scp.uploadExampleUpdates.HumanoidAnimation.pages,scp.uploadExampleUpdates.Vrml2Sourcebook.pages,scp.uploadExampleUpdates.ConformanceNist.pages,scp.uploadExampleUpdates.Savage.pages"
        description="scp upload of updated X3D archive catalog and javadoc pages to web3d.org and Savage/SavageDefense sites">
        <echo  message="scp.uploadExampleUpdates.all.pages complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.web3d.zip" depends="scp.uploadExampleUpdates.X3dForAdvancedModeling.zip,scp.uploadExampleUpdates.X3dForWebAuthors.zip,scp.uploadExampleUpdates.Basic.zip,scp.uploadExampleUpdates.HumanoidAnimation.zip,scp.uploadExampleUpdates.Vrml2Sourcebook.zip,scp.uploadExampleUpdates.ConformanceNist.zip"
        description="scp upload of updated X3D archive catalog and javadoc pages to web3d.org and Savage/SavageDefense sites">
        <echo  message="scp.uploadExampleUpdates.web3d.zip complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.web3d.scenes" depends="scp.uploadExampleUpdates.web3d.common,scp.uploadExampleUpdates.X3dForAdvancedModeling.scenes,scp.uploadExampleUpdates.X3dForWebAuthors.scenes,scp.uploadExampleUpdates.Basic.scenes,scp.uploadExampleUpdates.HumanoidAnimation.scenes,scp.uploadExampleUpdates.Vrml2Sourcebook.scenes,scp.uploadExampleUpdates.ConformanceNist.scenes"
        description="scp upload of updated X3D archive scenes to web3d.org site">
        <echo  message="scp.uploadExampleUpdates.web3d.scenes complete."/>
    </target>

    <fileset id="web3d.common.fileset" dir=".">
        <include name="license.*"/>
        <include name="README.txt"/>
        <include name="*.html"/>
        <include name="*.txt"/>
        <include name="*.xml"/>
        <include name="Hello*"/>
        <include name="earth-topo*"/>
        <include name="newScene*"/>
        <include name="images/*"/>
        <include name="access.properties.blocker.txt"/>
        <include name="access.properties.template"/>
        <include name="X3dDevelopersGuide.html"/>
        <include name="X3dResources.html"/>
        <include name="X3dSceneAuthoringHints.html"/>
        <!-- excluding these -->
        <exclude name="X3dExampleArchivesJsonScenes.zip"/>
        <exclude name="*.out"/>
        <exclude name="access.properties"/>
        <exclude name="build.*.txt"/>
        <exclude name="indexSavage.*redirect.html"/>
        <exclude name="indexSavageDefense.*redirect.html"/>
        <exclude name="indexX3dForAdvancedModeling.javadoc.*redirect.html"/>
        <exclude name="indexX3dForWebAuthors.javadoc.*redirect.html"/>
        <exclude name="**/archive/*"/>
        <exclude name="**/_archive/*"/>
        <exclude name="_schematron/*"/>
        <exclude name="**/_schematron/*"/>
        <exclude name="**/_hide/*"/>
        <exclude name="**/hide/*"/>
        <exclude name="**/CVS/*"/>
        <exclude name="**/.svn/*"/>
        <exclude name="**/_new*.*"/>
        <exclude name="**/*.bak"/>
        <exclude name="**/Thumbs.db"/>
        <exclude name="CVS/"/>
        <exclude name="*/CVS/"/>
        <exclude name=".svn/"/>
        <exclude name="**/.svn/"/>
        <exclude name="**/*.$$$"/>
        <exclude name="**/*.\$\$\$"/>
        <!-- Microsoft office temp files -->
        <exclude name="**/~$*.*"/>
        <exclude name="**/~\$*.*"/>
    </fileset>

    <target name="scp.uploadExampleUpdates.web3d.common" depends=""
        description="scp upload of shared updated X3D archive files">
        <echo  message="scp upload common files to sftp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <!-- top level -->
            <fileset refid="web3d.common.fileset"/>
        </scp>

        <echo  message="scp upload redirect pages..."/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}/X3dForWebAuthors" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
				<include name="indexX3dForWebAuthors.redirect.html"/>
            </fileset>
        </scp>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}/X3dForWebAuthors/javadoc" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
				<include name="indexX3dForWebAuthors.javadoc.redirect.html"/>
            </fileset>
        </scp>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}/X3dForAdvancedModeling" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
				<include name="indexX3dForAdvancedModeling.redirect.html"/>
            </fileset>
        </scp>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}/X3dForAdvancedModeling/javadoc" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
				<include name="indexX3dForAdvancedModeling.javadoc.redirect.html"/>
            </fileset>
        </scp>
        <echo  message="scp.uploadExampleUpdates.web3d.common complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.Basic" depends="scp.uploadExampleUpdates.Basic.scenes,scp.uploadExampleUpdates.Basic.pages,scp.uploadExampleUpdates.Basic.zip"
        description="scp upload of updated X3D Basic archive files of all types, including .zip">
    </target>

    <target name="scp.uploadExampleUpdates.Basic.pages" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D Basic archive catalog and javadoc pages, not including .zip">
        <echo  message="scp upload catalog and javadoc pages to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}/Basic"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}/Basic" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="Basic">
                <include name="**/index.html"/>
                <include name="**/viewpointSlideshow.html"/>
                <include name="**/*.html"/>
                <include name="**/*.md"/>
                <include name="**/*.txt"/>
                <include name="**/package.html"/><!-- javadoc version -->
                <include name="**/package-catalog.html"/>
                <include name="javadoc/**/*"/>
                <!-- viewpoint capture snapshots
                <include name="**/_thumbnails/*.png"/>
                <include name="**/_viewpoints/*.png"/> -->
                <!-- TODO caution: too large due to X3dToXhtml.xslt recursion problems
                <exclude name="RigidBodyPhysics/CarDemoMain.html"/> -->
                <exclude name="Followers/TestOrientationFollower.html"/>
            </fileset>
            <fileset dir="Basic/images">
                <include name="images/*"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.web3d}"/>
        <echo  message="scp.uploadExampleUpdates.Basic.pages complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.Basic.scenes" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D Basic archive files of all types, not including .zip">
        <echo  message="scp upload scenes to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}/Basic"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}/Basic" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset refid="web3d.common.fileset"/>
            <fileset dir="Basic">
                <include name="*.*"/>
                <include name="**/*.*"/>
                <!-- excluding these -->
                <exclude name="*.zip"/>
                <exclude name="**/X3dResources.html"/>
                <exclude name="**/X3dSceneAuthoringHints.html"/>
                <exclude name="indexSavage.*redirect.html"/>
                <exclude name="indexSavageDefense.*redirect.html"/>
                <exclude name="indexX3dForAdvancedModeling.*redirect.html"/>
                <exclude name="indexX3dForWebAuthors.*redirect.html"/>
                <exclude name="**/*.nrrd"/>
                <exclude name="archive/*"/>
                <exclude name="_archive/*"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="_schematron/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/_hide/*"/>
                <exclude name="**/hide/*"/>
                <exclude name="**/CVS/*"/>
                <exclude name="**/.svn/*"/>
                <exclude name="**/_new*.*"/>
                <exclude name="**/*.bak"/>
                <exclude name="**/Thumbs.db"/>
                <exclude name="CVS/"/>
                <exclude name="*/CVS/"/>
                <exclude name=".svn/"/>
                <exclude name="**/.svn/"/>
                <exclude name="**/*.$$$"/>
                <exclude name="**/*.\$\$\$"/>
                <!-- Microsoft office temp files -->
                <exclude name="**/~$*.*"/>
                <exclude name="**/~\$*.*"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.web3d}"/>
        <echo  message="scp.uploadExampleUpdates.Basic.scenes complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.X3dToX3domXhtml.all" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D archives X3DOM .xhtml pages">
        <echo  message="scp upload X3DOM .xhtml pages to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <!-- web3d.org -->
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="X3dForWebAuthors/**/*.*X3dom.xhtml"/>
                <include name="X3dForAdvancedModeling/**/*.*X3dom.xhtml"/>
                <include name="Basic/**/*.*X3dom.xhtml"/>
                <include name="ConformanceNist/**/*.*X3dom.xhtml"/>
                <include name="HumanoidAnimation/**/*.*X3dom.xhtml"/>
                <include name="Vrml2Sourcebook/**/*.*X3dom.xhtml"/>
                <include name="Savage/**/*.*X3dom.xhtml"/>
                <!-- excluding these -->
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <!--
        <echo  message="scp upload X3DOM .xhtml pages to sftp://${sftpServer.X3dForWebAuthors}${sftpDirectory.X3dForWebAuthors.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForWebAuthors.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="X3dForWebAuthors/**/*.*X3dom.xhtml"/>
                < ! - - excluding these - -> 
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <echo  message="scp upload X3DOM .xhtml pages to sftp://${sftpServer.X3dForWebAuthors}${sftpDirectory.X3dForAdvancedModeling.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForAdvancedModeling.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="X3dForAdvancedModeling/**/*.*X3dom.xhtml"/>
                < !- - excluding these - - >
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        < ! - - savage.nps.edu - - >
        <echo  message="scp upload X3DOM .xhtml pages to sftp://${sftpServer.savage}${sftpDirectory.savage}"/>
        <scp remotetodir="${username.savage}@${sftpServer.savage}:${sftpDirectory.savage}" password="${password.savage}"
               trust="yes"
             verbose="true" filemode="664" dirmode="775">
            <! - - means use SSH2 file copy protocol, must be installed on server - - >
            <fileset dir=".">
                <include name="Savage/**/*.*X3dom.xhtml"/>
                < ! - - excluding these - - >
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        -->
        <!-- SavageDefense.nps.edu 
        <echo  message="scp upload X3DOM .xhtml pages to sftp://${sftpServer.savageDefense}${sftpDirectory.savageDefense}"/>
        <scp remotetodir="${username.savageDefense}@${sftpServer.savageDefense}:${sftpDirectory.savageDefense}" password="${password.savageDefense}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            < ! - - means use SSH2 file copy protocol, must be installed on server - - >
            < ! - - top level - - >
            <fileset dir="SavageDefense">
                <include name="X3dForAdvancedModeling/**/*.*X3dom.xhtml"/>
                < ! - - excluding these - - >
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        -->
        <echo  message="upload available at https://${sftpServer.web3d}"/>
        <echo  message="scp.uploadExampleUpdates.X3dToX3domXhtml.all complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.htmlDocumentation.all" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D archives .html pretty-print listing files that document each scene">
        <echo  message="scp upload scenes to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <!-- web3d.org -->
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="X3dForWebAuthors/**/*.*X3dom.xhtml"/>
                <include name="X3dForAdvancedModeling/**/*.*X3dom.xhtml"/>
                <include name="Basic/**/*.html"/>
                <include name="ConformanceNist/**/*.html"/>
                <include name="HumanoidAnimation/**/*.html"/>
                <include name="Vrml2Sourcebook/**/*.html"/>
                <include name="Savage/**/*.html"/>
                <!-- excluding these -->
                <exclude name="**/*X_ITE.html"/>
                <exclude name="**/*Index.html"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <!--
        <echo  message="scp upload scenes to sftp://${sftpServer.X3dForWebAuthors}${sftpDirectory.X3dForWebAuthors.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForWebAuthors.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="X3dForWebAuthors/**/*.html"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <echo  message="scp upload scenes to sftp://${sftpServer.X3dForWebAuthors}${sftpDirectory.X3dForAdvancedModeling.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForAdvancedModeling.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="X3dForAdvancedModeling/**/*.html"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <echo  message="scp upload scenes to sftp://${sftpServer.savage}${sftpDirectory.savage}"/>
        <scp remotetodir="${username.savage}@${sftpServer.savage}:${sftpDirectory.savage}" password="${password.savage}"
               trust="yes"
             verbose="true" filemode="664" dirmode="775">
            <fileset dir=".">
                <include name="Savage/**/*.html"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp
        <echo  message="scp upload scenes to sftp://${sftpServer.savageDefense}${sftpDirectory.savageDefense}"/>
        <scp remotetodir="${username.savageDefense}@${sftpServer.savageDefense}:${sftpDirectory.savageDefense}" password="${password.savageDefense}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="SavageDefense">
                <include name="X3dForAdvancedModeling/**/*.html"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        -->
        <echo  message="upload available at https://${sftpServer.web3d}"/>
        <echo  message="scp.uploadExampleUpdates.htmlDocumentation.all complete."/>
    </target>

    <target name="upload.json.all" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D archives .json files">
        <echo  message="scp upload scenes to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <!--
        <echo  message="scp upload scenes to sftp://${sftpServer.X3dForWebAuthors}${sftpDirectory.X3dForWebAuthors.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForWebAuthors.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="X3dForWebAuthors">
                <include name="**/*.json"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <echo  message="scp upload scenes to sftp://${sftpServer.X3dForWebAuthors}${sftpDirectory.X3dForAdvancedModeling.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForAdvancedModeling.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="X3dForAdvancedModeling">
                <include name="**/*.json"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        -->
        <!-- web3d.org -->
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="X3dForWebAuthors/**/*.json"/>
                <include name="X3dForAdvancedModeling/*.json"/>
                <include name="ConformanceNist/**/*.json"/>
                <include name="HumanoidAnimation/**/*.json"/>
                <include name="Vrml2Sourcebook/**/*.json"/>
                <include name="Savage/**/*.json"/>
                <!-- excluding these -->
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <!-- savage.nps.edu
        <echo  message="scp upload scenes to sftp://${sftpServer.savage}${sftpDirectory.savage}"/>
        <scp remotetodir="${username.savage}@${sftpServer.savage}:${sftpDirectory.savage}" password="${password.savage}"
               trust="yes"
             verbose="true" filemode="664" dirmode="775">
            <fileset dir=".">
                <include name="Savage/**/*.json"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp> -->
        <!-- SavageDefense.nps.edu
        <echo  message="scp upload scenes to sftp://${sftpServer.savageDefense}${sftpDirectory.savageDefense}"/>
        <scp remotetodir="${username.savageDefense}@${sftpServer.savageDefense}:${sftpDirectory.savageDefense}" password="${password.savageDefense}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="SavageDefense">
                <include name="X3dForAdvancedModeling/**/*.json"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp> -->
        <echo  message="upload available at https://${sftpServer.web3d}"/>
        <echo  message="upload.json.all complete."/>
    </target>

    <target name="upload.python.all" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D archives .python files">
        <echo  message="scp upload build.python.all.log.txt to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <!--
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForWebAuthors.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="build.python.all.log.txt"/>
            </fileset>
        </scp>
        <echo  message="scp upload scenes to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <echo  message="scp upload scenes to sftp://${sftpServer.X3dForWebAuthors}${sftpDirectory.X3dForWebAuthors.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForWebAuthors.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="X3dForWebAuthors">
                <include name="**/*.py"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <echo  message="scp upload scenes to sftp://${sftpServer.X3dForWebAuthors}${sftpDirectory.X3dForAdvancedModeling.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForAdvancedModeling.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="X3dForAdvancedModeling">
                <include name="**/*.py"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        -->
        <!-- web3d.org -->
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="X3dForWebAuthors/**/*.py"/>
                <include name="X3dForAdvancedModeling/*.py"/>
                <include name="Basic/**/*.py"/>
                <include name="HumanoidAnimation/**/*.py"/>
                <include name="ConformanceNist/**/*.py"/>
                <include name="Vrml2Sourcebook/**/*.py"/>
                <include name="Savage/**/*.py"/>
                <!-- excluding these -->
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <!-- savage.nps.edu
        <echo  message="scp upload scenes to sftp://${sftpServer.savage}${sftpDirectory.savage}"/>
        <scp remotetodir="${username.savage}@${sftpServer.savage}:${sftpDirectory.savage}" password="${password.savage}"
               trust="yes"
             verbose="true" filemode="664" dirmode="775">
            <fileset dir=".">
                <include name="Savage/**/*.py"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp> -->
        <!-- SavageDefense.nps.edu
        <echo  message="scp upload scenes to sftp://${sftpServer.savageDefense}${sftpDirectory.savageDefense}"/>
        <scp remotetodir="${username.savageDefense}@${sftpServer.savageDefense}:${sftpDirectory.savageDefense}" password="${password.savageDefense}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="SavageDefense">
                <include name="X3dForAdvancedModeling/**/*.py"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp> -->
        <echo  message="upload available at https://${sftpServer.web3d}"/>
        <echo  message="upload.python.all complete."/>
    </target>

    <target name="upload.turtle.all" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D archives .turtle files">
        <echo  message="scp upload build.turtle.all.log.txt to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="build.turtle.all.log.txt"/>
            </fileset>
        </scp>
        <echo  message="scp upload scenes to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <echo  message="scp upload scenes to sftp://${sftpServer.X3dForWebAuthors}${sftpDirectory.X3dForWebAuthors.examples}"/>
        <!--
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForWebAuthors.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="X3dForWebAuthors">
                <include name="**/*.ttl"/>
                <include name="**/*.rq.txt"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <echo  message="scp upload scenes to sftp://${sftpServer.X3dForWebAuthors}${sftpDirectory.X3dForAdvancedModeling.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForAdvancedModeling.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="X3dForAdvancedModeling">
                <include name="**/*.ttl"/>
                <include name="**/*.rq.txt"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        -->
        <!-- web3d.org -->
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="X3dForWebAuthors/**/*.ttl"/>
                <include name="X3dForAdvancedModeling/*.ttl"/>
                <include name="Basic/**/*.ttl"/>
                <include name="HumanoidAnimation/**/*.ttl"/>
                <include name="ConformanceNist/**/*.ttl"/>
                <include name="Vrml2Sourcebook/**/*.ttl"/>
                <include name="Savage/**/*.ttl"/>
                <include name="X3dForWebAuthors/**/*.rq.txt"/>
                <include name="X3dForAdvancedModeling/*.rq.txt"/>
                <include name="Basic/**/*.rq.txt"/>
                <include name="HumanoidAnimation/**/*.rq.txt"/>
                <include name="ConformanceNist/**/*.rq.txt"/>
                <include name="Vrml2Sourcebook/**/*.rq.txt"/>
                <include name="Savage/**/*.rq.txt"/>
                <!-- excluding these -->
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <!-- savage.nps.edu
        <echo  message="scp upload scenes to sftp://${sftpServer.savage}${sftpDirectory.savage}"/>
        <scp remotetodir="${username.savage}@${sftpServer.savage}:${sftpDirectory.savage}" password="${password.savage}"
               trust="yes"
             verbose="true" filemode="664" dirmode="775">
            <fileset dir=".">
                <include name="Savage/**/*.ttl"/>
                <include name="Savage/**/*.rq.txt"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp> -->
        <!-- SavageDefense.nps.edu
        <echo  message="scp upload scenes to sftp://${sftpServer.savageDefense}${sftpDirectory.savageDefense}"/>
        <scp remotetodir="${username.savageDefense}@${sftpServer.savageDefense}:${sftpDirectory.savageDefense}" password="${password.savageDefense}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="SavageDefense">
                <include name="X3dForAdvancedModeling/**/*.ttl"/>
                <include name="X3dForAdvancedModeling/**/*.rq.txt"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp> -->
        <echo  message="upload available at https://${sftpServer.web3d}"/>
        <echo  message="upload.turtle.all complete."/>
    </target>

    <target name="upload.X_ITE.html.all" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D archives X_ITE.html files">
        <!-- not yet
        <echo  message="scp upload build.X_ITE.all.log.txt to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="build.X_ITE.all.log.txt"/>
            </fileset>
        </scp>
        -->
        <echo  message="scp upload scenes to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <!--
        <echo  message="scp upload scenes to sftp://${sftpServer.X3dForWebAuthors}${sftpDirectory.X3dForWebAuthors.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForWebAuthors.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="X3dForWebAuthors">
                <include name="**/*X_ITE.html"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <echo  message="scp upload scenes to sftp://${sftpServer.X3dForWebAuthors}${sftpDirectory.X3dForAdvancedModeling.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForAdvancedModeling.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="X3dForAdvancedModeling">
                <include name="**/*X_ITE.html"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        -->
        <!-- web3d.org -->
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="build.X_ITE.all.log.txt"/>
                <include name="X3dForWebAuthors/**/*X_ITE.html"/>
                <include name="X3dForAdvancedModeling/*X_ITE.html"/>
                <include name="Basic/**/*X_ITE.html"/>
                <include name="ConformanceNist/**/*X_ITE.html"/>
                <include name="HumanoidAnimation/**/*X_ITE.html"/>
                <include name="Vrml2Sourcebook/**/*X_ITE.html"/>
                <include name="Savage/**/*X_ITE.html"/>
                <!-- excluding these -->
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <!-- savage.nps.edu
        <echo  message="scp upload scenes to sftp://${sftpServer.savage}${sftpDirectory.savage}"/>
        <scp remotetodir="${username.savage}@${sftpServer.savage}:${sftpDirectory.savage}" password="${password.savage}"
               trust="yes"
             verbose="true" filemode="664" dirmode="775">
            <fileset dir=".">
                <include name="Savage/**/*X_ITE.html"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp> -->
        <!-- SavageDefense.nps.edu
        <echo  message="scp upload scenes to sftp://${sftpServer.savageDefense}${sftpDirectory.savageDefense}"/>
        <scp remotetodir="${username.savageDefense}@${sftpServer.savageDefense}:${sftpDirectory.savageDefense}" password="${password.savageDefense}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="SavageDefense">
                <include name="X3dForAdvancedModeling/**/*X_ITE.html"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp> -->
        <echo  message="upload available at https://${sftpServer.web3d}"/>
        <echo  message="upload.X_ITE.html.all complete."/>
    </target>

    <target name="upload.X3DOM.xhtml.all" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D archives X_ITE.html files">
        <!-- not yet
        <echo  message="scp upload build.X3dom.all.log.txt to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="build.X3dom.all.log.txt"/>
            </fileset>
        </scp>
        -->
        <echo  message="scp upload scenes to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <!-- web3d.org -->
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="build.X3dom.all.log.txt"/>
                <include name="X3dForWebAuthors/**/*X3dom.xhtml"/>
                <include name="X3dForAdvancedModeling/**/*X3dom.xhtml"/>
                <include name="Basic/**/*X3dom.xhtml"/>
                <include name="ConformanceNist/**/*X3dom.xhtml"/>
                <include name="HumanoidAnimation/**/*X3dom.xhtml"/>
                <include name="Vrml2Sourcebook/**/*X3dom.xhtml"/>
                <include name="Savage/**/*X3dom.xhtml"/>
                <!-- excluding these -->
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <!-- savage.nps.edu -->
        <echo  message="scp upload scenes to sftp://${sftpServer.savage}${sftpDirectory.savage}"/>
        <scp remotetodir="${username.savage}@${sftpServer.savage}:${sftpDirectory.savage}" password="${password.savage}"
               trust="yes"
             verbose="true" filemode="664" dirmode="775">
            <!-- means use SSH2 file copy protocol, must be installed on server -->
            <fileset dir=".">
                <include name="Savage/**/*X3dom.xhtml"/>
                <!-- excluding these -->
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <!-- SavageDefense.nps.edu -->
        <echo  message="scp upload scenes to sftp://${sftpServer.savageDefense}${sftpDirectory.savageDefense}"/>
        <scp remotetodir="${username.savageDefense}@${sftpServer.savageDefense}:${sftpDirectory.savageDefense}" password="${password.savageDefense}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <!-- means use SSH2 file copy protocol, must be installed on server -->
            <!-- top level -->
            <fileset dir="SavageDefense">
                <include name="X3dForAdvancedModeling/**/*X3dom.xhtml"/>
                <!-- excluding these -->
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.web3d}"/>
        <echo  message="upload.X3DOM.xhtml.all complete."/>
    </target>

    <target name="upload.x3d.all" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D archives .x3d, .x3dv files">
        <!-- not yet
        <echo  message="scp upload build.X_ITE.all.log.txt to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="build.X_ITE.all.log.txt"/>
            </fileset>
        </scp>
        -->
        <echo  message="scp upload scenes to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <echo  message="scp upload scenes to sftp://${sftpServer.X3dForWebAuthors}${sftpDirectory.X3dForWebAuthors.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForWebAuthors.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="X3dForWebAuthors">
                <include name="**/*.x3d"/>
                <include name="**/*.x3dv"/>
                <!-- excluding these -->
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <echo  message="scp upload scenes to sftp://${sftpServer.X3dForWebAuthors}${sftpDirectory.X3dForAdvancedModeling.examples}"/>
        <scp remotetodir="${username.X3dForWebAuthors}@${sftpServer.X3dForWebAuthors}:${sftpDirectory.X3dForAdvancedModeling.examples}" password="${password.X3dForWebAuthors}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="X3dForAdvancedModeling">
                <include name="**/*.x3d"/>
                <include name="**/*.x3dv"/>
                <!-- excluding these -->
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <!-- web3d.org -->
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="Basic/**/*.x3d"/>
                <include name="Basic/**/*.x3dv"/>
                <include name="ConformanceNist/**/*.x3d"/>
                <include name="ConformanceNist/**/*.x3dv"/>
                <include name="HumanoidAnimation/**/*.x3d"/>
                <include name="HumanoidAnimation/**/*.x3dv"/>
                <include name="Vrml2Sourcebook/**/*.x3d"/>
                <include name="Vrml2Sourcebook/**/*.x3dv"/>
                <!-- excluding these -->
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <!-- savage.nps.edu -->
        <echo  message="scp upload scenes to sftp://${sftpServer.savage}${sftpDirectory.savage}"/>
        <scp remotetodir="${username.savage}@${sftpServer.savage}:${sftpDirectory.savage}" password="${password.savage}"
               trust="yes"
             verbose="true" filemode="664" dirmode="775">
            <!-- means use SSH2 file copy protocol, must be installed on server -->
            <fileset dir=".">
                <include name="Savage/**/*.x3d"/>
                <include name="Savage/**/*.x3dv"/>
                <!-- excluding these -->
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <!-- SavageDefense.nps.edu -->
        <echo  message="scp upload scenes to sftp://${sftpServer.savageDefense}${sftpDirectory.savageDefense}"/>
        <scp remotetodir="${username.savageDefense}@${sftpServer.savageDefense}:${sftpDirectory.savageDefense}" password="${password.savageDefense}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <!-- means use SSH2 file copy protocol, must be installed on server -->
            <!-- top level -->
            <fileset dir="SavageDefense">
                <include name="SavageDefense/**/*.x3d"/>
                <include name="SavageDefense/**/*.x3dv"/>
                <!-- excluding these -->
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.web3d}"/>
        <echo  message="upload.x3d.all complete."/>
    </target>

    <target name="upload.java.all" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D archives .java files">
        <echo  message="scp upload scenes to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <!-- web3d.org -->
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="X3dForWebAuthors/**/*.java"/>
                <include name="X3dForAdvancedModeling/**/*.java"/>
                <include name="Basic/**/*.java"/>
                <include name="ConformanceNist/**/*.java"/>
                <include name="HumanoidAnimation/**/*.java"/>
                <include name="Vrml2Sourcebook/**/*.java"/>
                <include name="Savage/**/*.java"/>
                <include name="build.java.all.log.txt"/>
                <!-- excluding these -->
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <!-- savage.nps.edu -->
        <echo  message="scp upload scenes to sftp://${sftpServer.savage}${sftpDirectory.savage}"/>
        <scp remotetodir="${username.savage}@${sftpServer.savage}:${sftpDirectory.savage}" password="${password.savage}"
               trust="yes"
             verbose="true" filemode="664" dirmode="775">
            <!-- means use SSH2 file copy protocol, must be installed on server -->
            <fileset dir=".">
                <include name="Savage/**/*.java"/>
                <!-- excluding these -->
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <!-- SavageDefense.nps.edu -->
        <echo  message="scp upload scenes to sftp://${sftpServer.savageDefense}${sftpDirectory.savageDefense}"/>
        <scp remotetodir="${username.savageDefense}@${sftpServer.savageDefense}:${sftpDirectory.savageDefense}" password="${password.savageDefense}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <!-- means use SSH2 file copy protocol, must be installed on server -->
            <!-- top level -->
            <fileset dir="SavageDefense">
                <include name="SavageDefense/**/*.java"/>
                <!-- excluding these -->
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.web3d}"/>
        <echo  message="upload.java.all complete."/>
    </target>

    <target name="upload.javadoc.all" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D archives javadoc files">
        <echo  message="scp upload javadoc to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <!-- web3d.org -->
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="X3dForWebAuthors/javadoc/**/*.*"/>
                <include name="X3dForAdvancedModeling/javadoc/**/*.*"/>
                <include name="Basic/javadoc/**/*.*"/>
                <include name="ConformanceNist/javadoc/**/*.*"/>
                <include name="HumanoidAnimation/javadoc/**/*.*"/>
                <include name="Vrml2Sourcebook/javadoc/**/*.*"/>
                <include name="Savage/javadoc/**/*.*"/>
                <!-- excluding these -->
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp>
        <!-- savage.nps.edu
        <echo  message="scp upload scenes to sftp://${sftpServer.savage}${sftpDirectory.savage}"/>
        <scp remotetodir="${username.savage}@${sftpServer.savage}:${sftpDirectory.savage}" password="${password.savage}"
               trust="yes"
             verbose="true" filemode="664" dirmode="775">
            < ! - - means use SSH2 file copy protocol, must be installed on server - - >
            <fileset dir=".">
                <include name="Savage/javadoc/**/*.*"/>
                < ! - - excluding these - - >
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp> -->
        <!-- SavageDefense.nps.edu
        <echo  message="scp upload scenes to sftp://${sftpServer.savageDefense}${sftpDirectory.savageDefense}"/>
        <scp remotetodir="${username.savageDefense}@${sftpServer.savageDefense}:${sftpDirectory.savageDefense}" password="${password.savageDefense}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            < ! - - means use SSH2 file copy protocol, must be installed on server - - >
            < ! - - top level - - >
            <fileset dir="SavageDefense">
                <include name="SavageDefense/javadoc/**/*.*"/>
                < ! - - excluding these - - >
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/.svn/*"/>
            </fileset>
        </scp> -->
        <echo  message="upload available at https://${sftpServer.web3d}"/>
        <echo  message="upload.javadoc.all complete."/>
    </target>

<target name="scp.uploadExampleUpdates.Basic.zip" depends="scp.askUsernamePassword.web3d"
    description="scp upload of updated X3D Basic archive .zip">
    <echo  message="scp upload zip to sftp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
    <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
        <!-- top level -->
        <fileset dir=".">
            <include name="X3dExamplesBasic.zip"/>
            <include name="X3dExamplesBasic.zip.MD5"/>
        </fileset>
    </scp>
    <echo  message="upload available at https://${sftpServer.web3d}/X3dExamplesBasic.zip"/>
    <echo  message="scp.uploadExampleUpdates.Basic.zip complete."/>
</target>

<target name="scp.uploadExampleUpdates.ConformanceNist" depends="scp.uploadExampleUpdates.ConformanceNist.scenes,scp.uploadExampleUpdates.ConformanceNist.pages,scp.uploadExampleUpdates.ConformanceNist.zip"
    description="scp upload of updated X3D archive files of all types, including .zip">
</target>

<target name="scp.uploadExampleUpdates.ConformanceNist.pages" depends="scp.askUsernamePassword.web3d"
    description="scp upload of updated X3D archive catalog and javadoc pages, not including .zip">
    <echo  message="scp upload catalog and javadoc pages to sftp://${sftpServer.web3d}${sftpDirectory.web3d.examples}/ConformanceNist"/>
    <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}/ConformanceNist" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="ConformanceNist">
                <include name="**/index.html"/>
                <include name="**/viewpointSlideshow.html"/>
                <include name="**/*.html"/>
                <include name="**/*.md"/>
                <include name="**/*.txt"/>
                <include name="**/package.html"/><!-- javadoc version -->
                <include name="**/package-catalog.html"/>
                <include name="javadoc/**/*"/>
                <!-- viewpoint capture snapshots
                <include name="**/_thumbnails/*.png"/>
                <include name="**/_viewpoints/*.png"/> -->
            </fileset>
            <fileset dir="ConformanceNist/images">
                <include name="images/*"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.web3d}/ConformanceNist"/>
        <echo  message="scp.uploadExampleUpdates.ConformanceNist.pages complete."/>
    </target>

<target name="scp.uploadExampleUpdates.ConformanceNist.scenes" depends="scp.askUsernamePassword.web3d"
    description="scp upload of updated X3D archive files of all types, not including .zip">
    <echo  message="scp upload scenes to sftp://${sftpServer.web3d}${sftpDirectory.web3d.examples}/ConformanceNist"/>
    <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}/ConformanceNist" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
        <!-- top level -->
            <fileset refid="web3d.common.fileset"/>
            <fileset dir="ConformanceNist">
                <include name="*.*"/>
                <include name="**/*.*"/>
                <!-- excluding these -->
                <exclude name="*.zip"/>
                <exclude name="**/X3dResources.html"/>
                <exclude name="**/X3dSceneAuthoringHints.html"/>
                <exclude name="indexSavage.*redirect.html"/>
                <exclude name="indexSavageDefense.*redirect.html"/>
                <exclude name="indexX3dForAdvancedModeling.*redirect.html"/>
                <exclude name="indexX3dForWebAuthors.*redirect.html"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="_schematron/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/_hide/*"/>
                <exclude name="**/hide/*"/>
                <exclude name="**/CVS/*"/>
                <exclude name="**/.svn/*"/>
                <exclude name="**/_new*.*"/>
                <exclude name="**/*.bak"/>
                <exclude name="**/Thumbs.db"/>
                <exclude name="nbproject/"/>
                <exclude name="**/nbproject"/>
                <exclude name=".svn/"/>
                <exclude name="**/.svn"/>
                <exclude name="**/*.$$$"/>
                <exclude name="**/*.\$\$\$"/>
                <!-- Microsoft office temp files -->
                <exclude name="**/~$*.*"/>
                <exclude name="**/~\$*.*"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.web3d}/ConformanceNist"/>
        <echo  message="scp.uploadExampleUpdates.ConformanceNist.scenes complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.ConformanceNist.zip" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D ConformanceNist archive .zip">
        <echo  message="scp upload zip to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <!-- top level -->
            <fileset dir=".">
                <include name="X3dExamplesConformanceNist.zip"/>
                <include name="X3dExamplesConformanceNist.zip.MD5"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.web3d}/X3dExamplesConformanceNist.zip"/>
        <echo  message="scp.uploadExampleUpdates.ConformanceNist.zip complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.HumanoidAnimation" depends="scp.uploadExampleUpdates.HumanoidAnimation.scenes,scp.uploadExampleUpdates.HumanoidAnimation.pages,scp.uploadExampleUpdates.HumanoidAnimation.zip"
        description="scp upload of updated X3D archive files of all types, including .zip">
    </target>

    <target name="scp.uploadExampleUpdates.HumanoidAnimation.pages" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D archive catalog and javadoc pages, not including .zip">
        <echo  message="scp upload catalog and javadoc pages to sftp://${sftpServer.web3d}${sftpDirectory.web3d.examples}/HumanoidAnimation"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}/HumanoidAnimation" password="${password.web3d}"
               trust="yes"
                 verbose="${VERBOSE_UPLOAD}" failonerror="false">
                <fileset dir="HumanoidAnimation">
                    <include name="**/index.html"/>
                    <include name="**/viewpointSlideshow.html"/>
                    <include name="**/*.html"/>
                    <include name="**/*.md"/>
                    <include name="**/*.txt"/>
                    <include name="**/package.html"/><!-- javadoc version -->
                    <include name="**/package-catalog.html"/>
                    <include name="javadoc/**/*"/>
                    <!-- viewpoint capture snapshots
                    <include name="**/_thumbnails/*.png"/>
                    <include name="**/_viewpoints/*.png"/> -->
                    <!-- TODO caution: too large due to X3dToXhtml.xslt recursion problems
                    <exclude name="WinterAndSpring/Leif.html"/>
                    <exclude name="WinterAndSpring/LeifAnimated.html"/>
                    <exclude name="WinterAndSpring/Lily.html"/>
                    <exclude name="WinterAndSpring/LilyAnimated.html"/>
                    <exclude name="WinterAndSpring/Tufani.html"/>
                    <exclude name="WinterAndSpring/TufaniAnimated.html"/>
                    <exclude name="WinterAndSpring/GrampsAnimations.html"/> -->
                </fileset>
                <fileset dir="HumanoidAnimation/images">
                    <include name="images/*"/>
                </fileset>
            </scp>
            <echo  message="upload available at https://${sftpServer.web3d}/HumanoidAnimation"/>
            <echo  message="scp.uploadExampleUpdates.HumanoidAnimation.pages complete."/>
        </target>

    <target name="scp.uploadExampleUpdates.HumanoidAnimation.scenes" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D archive files of all types, not including .zip">
        <echo  message="scp upload scenes to sftp://${sftpServer.web3d}${sftpDirectory.web3d.examples}/HumanoidAnimation"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}/HumanoidAnimation" password="${password.web3d}"
               trust="yes"
                 verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <!-- top level -->
                <fileset refid="web3d.common.fileset"/>
                <fileset dir="HumanoidAnimation">
                    <include name="*.*"/>
                    <include name="**/*.*"/>
                    <!-- excluding these -->
                    <exclude name="*.zip"/>
                    <exclude name="**/X3dResources.html"/>
                    <exclude name="**/X3dSceneAuthoringHints.html"/>
                    <exclude name="indexSavage.*redirect.html"/>
                    <exclude name="indexSavageDefense.*redirect.html"/>
                    <exclude name="indexX3dForAdvancedModeling.*redirect.html"/>
                    <exclude name="indexX3dForWebAuthors.*redirect.html"/>
                    <exclude name="**/archive/*"/>
                    <exclude name="**/_archive/*"/>
                    <exclude name="_schematron/*"/>
                    <exclude name="**/_schematron/*"/>
                    <exclude name="**/_hide/*"/>
                    <exclude name="**/hide/*"/>
                    <exclude name="**/CVS/*"/>
                    <exclude name="**/.svn/*"/>
                    <exclude name="**/_new*.*"/>
                    <exclude name="**/*.bak"/>
                    <exclude name="**/Thumbs.db"/>
                    <exclude name="nbproject/"/>
                    <exclude name="**/nbproject"/>
                    <exclude name=".svn/"/>
                    <exclude name="**/.svn"/>
                    <exclude name="**/*.$$$"/>
                    <exclude name="**/*.\$\$\$"/>
                    <!-- Microsoft office temp files -->
                    <exclude name="**/~$*.*"/>
                    <exclude name="**/~\$*.*"/>
                </fileset>
            </scp>
            <echo  message="upload available at https://${sftpServer.web3d}/HumanoidAnimation"/>
            <echo  message="scp.uploadExampleUpdates.HumanoidAnimation.scenes complete."/>
        </target>

    <target name="scp.uploadExampleUpdates.HumanoidAnimation.zip" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D HumanoidAnimation archive .zip">
        <echo  message="scp upload zip to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <!-- top level -->
            <fileset dir=".">
                <include name="X3dExamplesHumanoidAnimation.zip"/>
                <include name="X3dExamplesHumanoidAnimation.zip.MD5"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.web3d}/X3dExamplesHumanoidAnimation.zip"/>
        <echo  message="scp.uploadExampleUpdates.HumanoidAnimation.zip complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.Vrml2Sourcebook" depends="scp.uploadExampleUpdates.Vrml2Sourcebook.scenes,scp.uploadExampleUpdates.Vrml2Sourcebook.pages,scp.uploadExampleUpdates.Vrml2Sourcebook.zip"
        description="scp upload of updated X3D archive files of all types, including .zip">
    </target>

    <target name="scp.uploadExampleUpdates.Vrml2Sourcebook.pages" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D catalog and javadoc pages, not including .zip">
        <echo  message="scp upload scenes to sftp://${sftpServer.web3d}${sftpDirectory.web3d.examples}/Vrml2Sourcebook"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}/Vrml2Sourcebook" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir="Vrml2Sourcebook"  >
                <include name="**/index.html"/>
                <include name="**/viewpointSlideshow.html"/>
                <include name="**/*.html"/>
                <include name="**/*.md"/>
                <include name="**/*.txt"/>
                <include name="**/package.html"/><!-- javadoc version -->
                <include name="**/package-catalog.html"/>
                <include name="javadoc/**/*"/>
                <!-- viewpoint capture snapshots
                <include name="**/_thumbnails/*.png"/>
                <include name="**/_viewpoints/*.png"/> -->
            </fileset>
            <fileset dir="Vrml2Sourcebook/images">
                <include name="images/*"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.web3d}/Vrml2Sourcebook"/>
        <echo  message="scp.uploadExampleUpdates.Vrml2Sourcebook.pages complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.Vrml2Sourcebook.scenes" depends="scp.askUsernamePassword.web3d"
           description="scp upload of updated X3D archive files of all types, not including .zip">
        <echo  message="scp upload scenes to sftp://${sftpServer.web3d}${sftpDirectory.web3d.examples}/Vrml2Sourcebook"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}/Vrml2Sourcebook" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <!-- top level -->
            <fileset refid="web3d.common.fileset"/>
            <fileset dir="Vrml2Sourcebook"  >
                <include name="*.*"/>
                <include name="**/*.*"/>
                <!-- excluding these -->
                <exclude name="*.zip"/>
                <exclude name="**/X3dResources.html"/>
                <exclude name="**/X3dSceneAuthoringHints.html"/>
                <exclude name="indexSavage.*redirect.html"/>
                <exclude name="indexSavageDefense.*redirect.html"/>
                <exclude name="indexX3dForWebAuthors.*redirect.html"/>
                <exclude name="indexX3dForAdvancedModeling.*redirect.html"/>
                <exclude name="**/archive/*"/>
                <exclude name="**/_archive/*"/>
                <exclude name="_schematron/*"/>
                <exclude name="**/_schematron/*"/>
                <exclude name="**/_hide/*"/>
                <exclude name="**/hide/*"/>
                <exclude name="**/CVS/*"/>
                <exclude name="**/.svn/*"/>
                <exclude name="**/_new*.*"/>
                <exclude name="**/*.bak"/>
                <exclude name="**/Thumbs.db"/>
                <exclude name="nbproject/"/>
                <exclude name="**/nbproject"/>
                <exclude name=".svn/"/>
                <exclude name="**/.svn"/>
                <exclude name="**/*.$$$"/>
                <exclude name="**/*.\$\$\$"/>
                <!-- Microsoft office temp files -->
                <exclude name="**/~$*.*"/>
                <exclude name="**/~\$*.*"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.web3d}/Vrml2Sourcebook"/>
        <echo  message="scp.uploadExampleUpdates.Vrml2Sourcebook.scenes complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.Vrml2Sourcebook.zip" depends="scp.askUsernamePassword.web3d"
        description="scp upload of updated X3D Vrml2Sourcebook archive .zip">
        <echo  message="scp upload zip to sftp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <!-- top level -->
            <fileset dir=".">
                <include name="X3dExamplesVrml2Sourcebook.zip"/>
                <include name="X3dExamplesVrml2Sourcebook.zip.MD5"/>
            </fileset>
        </scp>
        <echo  message="upload available at https://${sftpServer.web3d}/X3dExamplesVrml2Sourcebook.zip"/>
        <echo  message="scp.uploadExampleUpdates.Vrml2Sourcebook.zip complete."/>
    </target>

    <target name="sshexec.cleanup.all" depends=""
           description="sshexec cleanup of unwanted backup files in all X3D Example archives on various servers">
        <echo  message="sshexec cleanup of unwanted backup files in all X3D Example archives on various servers"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <!-- https://stackoverflow.com/questions/2416159/ant-task-to-remotely-delete-a-directory -->
        <!-- https://ant.apache.org/manual/Tasks/sshexec.html -->
        <!-- https://ant.apache.org/manual/Tasks/sshsession.html -->
        <antcall target="sshexec.cleanup.X3dForAdvancedModeling"/>
        <antcall target="sshexec.cleanup.X3dForWebAuthors"/>
        <antcall target="sshexec.cleanup.web3d"/>
        <antcall target="sshexec.cleanup.savage"/>
        <antcall target="sshexec.cleanup.savageDefense"/>
    </target>

    <property name="backupFilesPattern" value="**/_new_pretty* **/_new_result **/Thumb.db **/*.bak **/hs_err_pid*.log **/manifest.mf **/*.$$$$$$ **/_archive **/hide **/_hide **/Untitled-?.x3d **/CVS **/.svn **/**Canonical.x3d? **/**Canonical.wrl **/**Canonical.*html"/>

    <fileset dir="." id="backupFiles">
        <include name="**/_new_pretty_print.html"/>
        <include name="**/_new_result.wrl"/>
        <include name="**/_new_result.x3d"/>
        <include name="**/_new_result.x3dv"/>
        <include name="**/_new_result.x3db"/>
        <include name="**/_new_resultCanonical.xml"/>
        <include name="**/Thumb.db"/>
        <include name="**/*.bak"/>
        <include name="**/hs_err_pid*.log"/>
        <include name="**/manifest.mf"/>
        <include name="**/*.$$$$$$"/> <!-- escaped .$$$ -->
   <!-- <include name="**/archive"/>     nightly/archive directories to be retained -->
        <include name="**/_archive"/>
   <!-- <include name="**/_schematron"/> contains latest validation results-->
        <include name="**/hide"/>
        <include name="**/_hide"/>
        <include name="Untitled-?.x3d"/>
        <include name="**/Untitled-?.x3d"/>
        <include name="CVS"/>
        <include name="**/CVS"/>
        <include name=".svn"/>
        <include name="**/.svn"/>
        <include name="**/*Canonical.x3d"/>
        <include name="**/*Canonical.x3db"/>
        <include name="**/*Canonical.x3dv"/>
        <include name="**/*Canonical.wrl"/>
        <include name="**/*Canonical.html"/>
    </fileset>

    <target name="sshexec.cleanup.savage" depends="scp.askUsernamePassword.savage"
           description="sshexec cleanup of unwanted backup files in savage X3D archives">
        <echo  message="sshexec cleanup of unwanted backup files in ssh://${sftpServer.savage}${sftpDirectory.savage}"/>
        <sshexec host="${sftpServer.savage}"
             username="${username.savage}"
             password="${password.savage}"
                trust="yes"
              command="cd ${sftpDirectory.savage}; rm -rfv ${backupFilesPattern}; echo ${sftpServer.savage} server cleanup complete"
               usepty="true"/> <!-- pseudo-tty terminal, suppresses unneeded warning -->
        <echo  message="sshexec list and then cleanup unwanted .svn directories in ssh://${sftpServer.savage}${sftpDirectory.savage}"/>
        <!-- reference: http://davidwalsh.name/delete-svn and subsequent comments -->
        <sshexec host="${sftpServer.savage}"
             username="${username.savage}"
             password="${password.savage}"
                trust="yes"
              command="cd ${sftpDirectory.savage}; ls -ald `find . -name \.svn` ; echo ${sftpServer.savage} server .svn directory listing complete"
               usepty="true"/> <!-- pseudo-tty terminal, suppresses unneeded warning -->
        <sshexec host="${sftpServer.savage}"
             username="${username.savage}"
             password="${password.savage}"
                trust="yes"
              command="cd ${sftpDirectory.savage}; rm -rfv `find . -name \.svn` ; echo ${sftpServer.savage} server .svn directory cleanup complete"
               usepty="true"/> <!-- pseudo-tty terminal, suppresses unneeded warning -->
        <echo  message="sshexec.cleanup.savage complete."/>
    </target>

    <target name="sshexec.cleanup.savageDefense" depends="scp.askUsernamePassword.savageDefense"
           description="sshexec cleanup of unwanted backup files in savageDefense X3D archives">
        <echo  message="sshexec cleanup of unwanted backup files in ssh://${sftpServer.savageDefense}${sftpDirectory.savageDefense}"/>
        <sshexec host="${sftpServer.savageDefense}"
             username="${username.savageDefense}"
             password="${password.savageDefense}"
                trust="yes"
              command="cd ${sftpDirectory.savageDefense}; rm -rfv ${backupFilesPattern}; echo ${sftpServer.savageDefense} server cleanup complete"
               usepty="true"/> <!-- pseudo-tty terminal, suppresses unneeded warning -->
    </target>

    <target name="sshexec.cleanup.web3d" depends="scp.askUsernamePassword.web3d"
           description="sshexec cleanup of unwanted backup files in web3d.org X3D archives">
        <echo  message="sshexec cleanup of unwanted backup files in ssh://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <sshexec host="${sftpServer.web3d}"
             username="${username.web3d}"
             password="${password.web3d}"
                trust="yes"
              command="cd ${sftpDirectory.web3d.examples}; rm -rfv ${backupFilesPattern}; echo ${sftpServer.web3d} server cleanup complete"
               usepty="true"/> <!-- pseudo-tty terminal, suppresses unneeded warning -->
        <echo  message="sshexec list and then cleanup of unwanted backup files in ssh://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <sshexec host="${sftpServer.web3d}"
             username="${username.web3d}"
             password="${password.web3d}"
                trust="yes"
              command="cd ${sftpDirectory.web3d.examples}; ls -ald `find . -name \.svn` ; echo ${sftpServer.web3d} server .svn directory listing complete"
               usepty="true"/> <!-- pseudo-tty terminal, suppresses unneeded warning -->
        <sshexec host="${sftpServer.web3d}"
             username="${username.web3d}"
             password="${password.web3d}"
                trust="yes"
              command="cd ${sftpDirectory.web3d.examples}; rm -rfv `find . -name \.svn` ; echo ${sftpServer.web3d} server .svn directory cleanup complete"
               usepty="true"/> <!-- pseudo-tty terminal, suppresses unneeded warning -->
        <echo  message="sshexec.cleanup.web3d complete."/>
    </target>

    <target name="sshexec.cleanup.x3dGraphics" depends="sshexec.cleanup.X3dForAdvancedModeling,sshexec.cleanup.X3dForWebAuthors"/>

    <target name="sshexec.cleanup.X3dForAdvancedModeling" depends="scp.askUsernamePassword.web3d,scp.askUsernamePassword.X3dForAdvancedModeling"
        description="scp cleanup of unwanted backup files in X3D archive">
        <echo  message="sshexec cleanup of unwanted backup files in ssh://${sftpServer.X3dForWebAuthors}${sftpDirectory.X3dForAdvancedModeling.examples}"/>
        <sshexec host="${sftpServer.X3dForWebAuthors}"
             username="${username.X3dForWebAuthors}"
             password="${password.X3dForWebAuthors}"
                trust="yes"
              command="cd ${sftpDirectory.X3dForAdvancedModeling.examples}; rm -rfv ${backupFilesPattern}; echo ${sftpServer.X3dForWebAuthors} server cleanup complete"
               usepty="true"/> <!-- pseudo-tty terminal, suppresses unneeded warning -->
        <echo  message="sshexec list and then cleanup of unwanted backup files in ssh://${sftpServer.web3d}${sftpDirectory.X3dForAdvancedModeling.examples}"/>
        <sshexec host="${sftpServer.web3d}"
             username="${username.web3d}"
             password="${password.web3d}"
                trust="yes"
              command="cd ${sftpDirectory.X3dForAdvancedModeling.examples}; ls -ald `find . -name \.svn` ; echo ${sftpServer.web3d} server .svn directory listing complete"
               usepty="true"/> <!-- pseudo-tty terminal, suppresses unneeded warning -->
        <sshexec host="${sftpServer.web3d}"
             username="${username.web3d}"
             password="${password.web3d}"
                trust="yes"
              command="cd ${sftpDirectory.X3dForAdvancedModeling.examples}; rm -rfv `find . -name \.svn` ; echo ${sftpServer.web3d} server .svn directory cleanup complete"
               usepty="true"/> <!-- pseudo-tty terminal, suppresses unneeded warning -->
        <echo  message="sshexec.cleanup.X3dForAdvancedModeling complete."/>
    </target>

    <target name="sshexec.cleanup.X3dForWebAuthors" depends="scp.askUsernamePassword.web3d,scp.askUsernamePassword.X3dForWebAuthors"
        description="scp cleanup of unwanted backup files in X3D archive">
        <echo  message="sshexec cleanup of unwanted backup files in ssh://${sftpServer.X3dForWebAuthors}${sftpDirectory.X3dForWebAuthors.examples}"/>
        <sshexec host="${sftpServer.X3dForWebAuthors}"
             username="${username.X3dForWebAuthors}"
             password="${password.X3dForWebAuthors}"
              command="cd ${sftpDirectory.X3dForWebAuthors.examples}; rm -rfv ${backupFilesPattern}; echo ${sftpServer.X3dForWebAuthors} server cleanup complete"
               usepty="true"/> <!-- pseudo-tty terminal, suppresses unneeded warning -->
        <echo  message="sshexec list and then cleanup of unwanted backup files in ssh://${sftpServer.web3d}${sftpDirectory.X3dForWebAuthors.examples}"/>
        <sshexec host="${sftpServer.web3d}"
             username="${username.web3d}"
             password="${password.web3d}"
                trust="yes"
              command="cd ${sftpDirectory.X3dForWebAuthors.examples}; ls -ald `find . -name \.svn` ; echo ${sftpServer.web3d} server .svn directory listing complete"
               usepty="true"/> <!-- pseudo-tty terminal, suppresses unneeded warning -->
        <sshexec host="${sftpServer.web3d}"
             username="${username.web3d}"
             password="${password.web3d}"
                trust="yes"
              command="cd ${sftpDirectory.X3dForWebAuthors.examples}; rm -rfv `find . -name \.svn` ; echo ${sftpServer.web3d} server .svn directory cleanup complete"
               usepty="true"/> <!-- pseudo-tty terminal, suppresses unneeded warning -->
        <echo  message="sshexec.cleanup.X3dForWebAuthors complete."/>
    </target>

    <target name="hiddenArchiveDirectoryRename" depends="" description="ensure proper naming of hidden directories" >
        <move file="*/*/*/archive/*" todir="**/_archive" overwrite="true" failonerror="false" verbose="${VERBOSE}"/>
    </target>

    <!-- move this target task down into the relevant project subdirectory; let it run there while getting invoked from here -->
    <target name="convertCmlChemistryMarkupLanguageScenes" depends=""
            description="convert XML-based molecule descriptions (protected in Basic examples archive subdirectory) from CML to X3D" >
        <ant dir="Basic/ChemicalMarkupLanguage" antfile="buildCML.xml" target="all" inheritAll="false"/>
    </target>

    <target name="validate.full.all" depends=""
          description="XML validation checks on all archives" >
        <echo message="============================================================================================="/>
        <echo message="XML validation checks on all archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <echo message="... results maintained at http://www.web3d.org/x3d/content/examples/build.validate.full.all.txt"/>
        <echo message="============================================================================================="/>
        <!-- not clear whether this uses schema or DTD.  likely DTD. -->
        <xmlvalidate failonerror="false" warn="true">
            <fileset dir=".">
                <include name="*.xml"/>
                <!-- <include name="*.xsd"/> -->
                <exclude name="build*.xml"/>
            </fileset>
        </xmlvalidate>
        <xmlvalidate file="build.xml"                 failonerror="false" warn="true" lenient="yes"/>
        <xmlvalidate file="buildExamplesTemplate.xml" failonerror="false" warn="true" lenient="yes"/>
        <ant dir="X3dForAdvancedModeling" target="validate.full"/>
        <ant dir="X3dForWebAuthors"       target="validate.full"/>
        <ant dir="Vrml2Sourcebook"        target="validate.full"/>
        <ant dir="HumanoidAnimation"      target="validate.full"/>
        <ant dir="ConformanceNist"        target="validate.full"/>
        <ant dir="Basic"                  target="validate.full"/>
        <ant dir="Savage"                 target="validate.full"/>
    <!--<ant dir="SavageDefense"          target="validate.full"/>-->
        <echo message="X3D Example Archives validate.full.all complete."/>
    </target>

    <target name="validate.DTD.all" depends="" description="XML DTD validation checks" >
        <ant dir="X3dForAdvancedModeling" target="validate.DTD"/>
        <ant dir="X3dForWebAuthors"       target="validate.DTD"/>
        <ant dir="Vrml2Sourcebook"        target="validate.DTD"/>
        <ant dir="HumanoidAnimation"      target="validate.DTD"/>
        <ant dir="ConformanceNist"        target="validate.DTD"/>
        <ant dir="Basic"                  target="validate.DTD"/>
        <ant dir="Savage"                 target="validate.DTD"/>
    <!--<ant dir="SavageDefense"          target="validate.DTD"/>-->
    </target>

    <target name="validate.VRML.all" depends="" description="VRML validation checks using view3dscene" >
        <echo message="Using https://castle-engine.io/view3dscene.php in command-line mode for VRML validation"/>
        <ant dir="X3dForAdvancedModeling" target="validate.VRML"/>
        <ant dir="X3dForWebAuthors"       target="validate.VRML"/>
        <ant dir="Vrml2Sourcebook"        target="validate.VRML"/>
        <ant dir="HumanoidAnimation"      target="validate.VRML"/>
        <ant dir="ConformanceNist"        target="validate.VRML"/>
        <ant dir="Basic"                  target="validate.VRML"/>
        <ant dir="Savage"                 target="validate.VRML"/>
    <!--<ant dir="SavageDefense"          target="validate.VRML"/>-->
    </target>

    <target name="validate.x3dv.all" depends="" description="VRML validation checks using view3dscene" >
        <ant dir="X3dForAdvancedModeling" target="validate.x3dv"/>
        <ant dir="X3dForWebAuthors"       target="validate.x3dv"/>
        <ant dir="Vrml2Sourcebook"        target="validate.x3dv"/>
        <ant dir="HumanoidAnimation"      target="validate.x3dv"/>
        <ant dir="ConformanceNist"        target="validate.x3dv"/>
        <ant dir="Basic"                  target="validate.x3dv"/>
        <ant dir="Savage"                 target="validate.x3dv"/>
    <!--<ant dir="SavageDefense"          target="validate.x3dv"/>-->
    </target>

    <target name="validate.schema.all" depends=""
          description="X3D Schematron rule checks on all archives" >
        <echo message="X3D Schematron rule checks on all archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <ant dir="X3dForAdvancedModeling" target="validate.schema.all"/>
        <ant dir="X3dForWebAuthors"       target="validate.schema.all"/>
        <ant dir="Vrml2Sourcebook"        target="validate.schema.all"/>
        <ant dir="HumanoidAnimation"      target="validate.schema.all"/>
        <ant dir="ConformanceNist"        target="validate.schema.all"/>
        <ant dir="Basic"                  target="validate.schema.all"/>
        <ant dir="Savage"                 target="validate.schema.all"/>
    <!--<ant dir="SavageDefense"          target="validate.schema.all"/>-->
    </target>

    <target name="validate.schema.wildcard.x3dv4" depends=""
          description="X3D Schematron rule checks on all archives" >
        <echo message="X3D Schematron rule checks on all archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <ant dir="X3dForAdvancedModeling" target="validate.schema.wildcard.x3dv4"/>
        <ant dir="X3dForWebAuthors"       target="validate.schema.wildcard.x3dv4"/>
        <ant dir="Vrml2Sourcebook"        target="validate.schema.wildcard.x3dv4"/>
        <ant dir="HumanoidAnimation"      target="validate.schema.wildcard.x3dv4"/>
        <ant dir="ConformanceNist"        target="validate.schema.wildcard.x3dv4"/>
        <ant dir="Basic"                  target="validate.schema.wildcard.x3dv4"/>
        <ant dir="Savage"                 target="validate.schema.wildcard.x3dv4"/>
    <!--<ant dir="SavageDefense"          target="validate.schema.wildcard.x3dv4"/>-->
    </target>

    <target name="validate.schematron.all" depends="" description="X3D Schematron rule checks" >
        <ant dir="X3dForAdvancedModeling" target="validate.schematron"/>
        <ant dir="X3dForWebAuthors"       target="validate.schematron"/>
        <ant dir="Vrml2Sourcebook"        target="validate.schematron"/>
        <ant dir="HumanoidAnimation"      target="validate.schematron"/>
        <ant dir="ConformanceNist"        target="validate.schematron"/>
        <ant dir="Basic"                  target="validate.schematron"/>
        <ant dir="Savage"                 target="validate.schematron"/>
    <!--<ant dir="SavageDefense"          target="validate.schematron"/>-->
    </target>

    <target name="renameCanonicalScenes.all" depends=""
          description="renameCanonicalScenes for all of the example archives" >
        <echo message="renameCanonicalScenes for all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <ant dir="X3dForAdvancedModeling" target="renameCanonicalScenes"/>
        <ant dir="X3dForWebAuthors"       target="renameCanonicalScenes"/>
        <ant dir="Vrml2Sourcebook"        target="renameCanonicalScenes"/>
        <ant dir="HumanoidAnimation"      target="renameCanonicalScenes"/>
        <ant dir="ConformanceNist"        target="renameCanonicalScenes"/>
        <ant dir="Basic"                  target="renameCanonicalScenes"/>
        <ant dir="Savage"                 target="renameCanonicalScenes"/>
    <!--<ant dir="SavageDefense"          target="renameCanonicalScenes"/>-->
    </target>

    <target name="zip.all" depends="zip.json.combined"
          description="zip all of the example archives" >
        <echo message="zip all of the example archives"/>
        <echo message="... X3dForAdvancedModeling,X3dForWebAuthors,Vrml2Sourcebook,HumanoidAnimation,ConformanceNist,Basic,Savage,SavageDefense"/>
        <ant dir="X3dForAdvancedModeling" target="zip"/>
        <ant dir="X3dForWebAuthors"       target="zip"/>
        <ant dir="Vrml2Sourcebook"        target="zip"/>
        <ant dir="HumanoidAnimation"      target="zip"/>
        <ant dir="ConformanceNist"        target="zip"/>
        <ant dir="Basic"                  target="zip"/>
        <ant dir="Savage"                 target="zip"/>
    <!--<ant dir="SavageDefense"          target="zip"/>--> <!-- smaller -->
    </target>

    <target name="view.examples.local"  depends="" description="view local examples in web browser (Netbeans only)" >
        <ant dir="Basic"                  target="view.examples.local"/>
        <ant dir="ConformanceNist"        target="view.examples.local"/>
        <ant dir="HumanoidAnimation"      target="view.examples.local"/>
        <ant dir="X3dForAdvancedModeling" target="view.examples.local"/>
        <ant dir="X3dForWebAuthors"       target="view.examples.local"/>
        <ant dir="Vrml2Sourcebook"        target="view.examples.local"/>
        <ant dir="Savage"                 target="view.examples.local"/>
    <!--<ant dir="SavageDefense"          target="view.examples.local"/>-->
    </target>

    <target name="view.javadoc.local.all"  depends="" description="view local examples in web browser (Netbeans only)" >
        <ant dir="Basic"                  target="view.javadoc.local"/>
        <ant dir="ConformanceNist"        target="view.javadoc.local"/>
        <ant dir="HumanoidAnimation"      target="view.javadoc.local"/>
        <ant dir="Vrml2Sourcebook"        target="view.javadoc.local"/>
        <ant dir="X3dForAdvancedModeling" target="view.javadoc.local"/>
        <ant dir="X3dForWebAuthors"       target="view.javadoc.local"/>
        <ant dir="Savage"                 target="view.javadoc.local"/>
    <!--<ant dir="SavageDefense"          target="view.javadoc.local"/>-->
    </target>

    <target name="view.javadoc.online.all"  depends="" description="view local examples in web browser (Netbeans only)" >
        <ant dir="Basic"                  target="view.javadoc.online"/>
        <ant dir="ConformanceNist"        target="view.javadoc.online"/>
        <ant dir="HumanoidAnimation"      target="view.javadoc.online"/>
        <ant dir="Vrml2Sourcebook"        target="view.javadoc.online"/>
        <ant dir="X3dForAdvancedModeling" target="view.javadoc.online"/>
        <ant dir="X3dForWebAuthors"       target="view.javadoc.online"/>
        <ant dir="Savage"                 target="view.javadoc.online"/>
    <!--<ant dir="SavageDefense"          target="view.javadoc.online"/>-->
    </target>

    <target name="view.examples.online" depends="" description="view online examples in web browser (Netbeans only)" >
        <ant dir="X3dForAdvancedModeling" target="view.examples.online"/>
        <ant dir="X3dForWebAuthors"       target="view.examples.online"/>
        <ant dir="Basic"                  target="view.examples.online"/>
        <ant dir="ConformanceNist"        target="view.examples.online"/>
        <ant dir="HumanoidAnimation"      target="view.examples.online"/>
        <ant dir="Vrml2Sourcebook"        target="view.examples.online"/>
        <ant dir="X3dForAdvancedModeling" target="view.examples.online"/>
        <ant dir="X3dForWebAuthors"       target="view.examples.online"/>
        <ant dir="Savage"                 target="view.examples.online"/>
    <!--<ant dir="SavageDefense"          target="view.examples.online"/>-->
    </target>

    <target name="view.examples.sourceforge" description="view online version control in web browser (Netbeans only)">
        <nbbrowse url="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples" />
    </target>

    <target name="copy.X3DJSAIL.update.local.all" depends="" description="get latest X3DJSAIL update" >
        <ant dir="X3dForAdvancedModeling" target="copy.X3DJSAIL.update.local"/>
        <ant dir="X3dForWebAuthors"       target="copy.X3DJSAIL.update.local"/>
        <ant dir="Vrml2Sourcebook"        target="copy.X3DJSAIL.update.local"/>
        <ant dir="HumanoidAnimation"      target="copy.X3DJSAIL.update.local"/>
        <ant dir="ConformanceNist"        target="copy.X3DJSAIL.update.local"/>
        <ant dir="Basic"                  target="copy.X3DJSAIL.update.local"/>
        <ant dir="Savage"                 target="copy.X3DJSAIL.update.local"/>
    <!--<ant dir="SavageDefense"          target="copy.X3DJSAIL.update.local"/>-->
    </target>

    <target name="HelloWorld.all" description="Copy HelloWorld.x3d example from primary location">
        <echo message="Master copy of HelloWorld.x3d scene is maintained in X3dForWebAuthors/Chapter01TechnicalOverview"/>
        <echo message="Prerequisite for this target: build master HelloWorld scene; then this target copies results to root directories of of various example archives"/>
        <!-- note that the master example is maintained under version control, and need not be placed into version control in any of the result directories -->
        <copy todir="." force="true" verbose="${VERBOSE}">
            <fileset dir="X3dForWebAuthors/Chapter01TechnicalOverview" includes="HelloWorld.x3d"/>
            <fileset dir="X3dForWebAuthors/Chapter01TechnicalOverview" includes="earth-topo*.*"/>
            <fileset dir="X3dForWebAuthors/Chapter01TechnicalOverview" includes="HelloWorld.Tall.png"/>
        </copy>
        <!-- now copy key files from root to each archive -->
        <copy todir="X3dForAdvancedModeling" force="true" verbose="${VERBOSE}">
            <fileset dir="." includes="HelloWorld.x3d"/>
            <fileset dir="." includes="earth-topo*.*"/>
            <fileset dir="." includes="HelloWorld.Tall.png"/>
        </copy>
        <copy todir="X3dForWebAuthors" force="true" verbose="${VERBOSE}">
            <fileset dir="." includes="HelloWorld.x3d"/>
            <fileset dir="." includes="earth-topo*.*"/>
            <fileset dir="." includes="HelloWorld.Tall.png"/>
        </copy>
        <copy todir="Vrml2Sourcebook" force="true" verbose="${VERBOSE}">
            <fileset dir="." includes="HelloWorld.x3d"/>
            <fileset dir="." includes="earth-topo*.*"/>
            <fileset dir="." includes="HelloWorld.Tall.png"/>
        </copy>
        <copy todir="HumanoidAnimation" force="true" verbose="${VERBOSE}">
            <fileset dir="." includes="HelloWorld.x3d"/>
            <fileset dir="." includes="earth-topo*.*"/>
            <fileset dir="." includes="HelloWorld.Tall.png"/>
        </copy>
        <copy todir="ConformanceNist" force="true" verbose="${VERBOSE}">
            <fileset dir="." includes="HelloWorld.x3d"/>
            <fileset dir="." includes="earth-topo*.*"/>
            <fileset dir="." includes="HelloWorld.Tall.png"/>
        </copy>
        <copy todir="Basic" force="true" verbose="${VERBOSE}">
            <fileset dir="." includes="HelloWorld.x3d"/>
            <fileset dir="." includes="earth-topo*.*"/>
            <fileset dir="." includes="HelloWorld.Tall.png"/>
        </copy>
        <copy todir="Savage" force="true" verbose="${VERBOSE}">
            <fileset dir="." includes="HelloWorld.x3d"/>
            <fileset dir="." includes="earth-topo*.*"/>
            <fileset dir="." includes="HelloWorld.Tall.png"/>
        </copy>
        <!--
        <copy todir="SavageDefense" force="true" verbose="${VERBOSE}">
            <fileset dir="." includes="HelloWorld.x3d"/>
            <fileset dir="." includes="earth-topo*.*"/>
            <fileset dir="." includes="HelloWorld.Tall.png"/>
        </copy>
        -->
        <!-- now refresh local archive directories -->
        <ant dir="X3dForAdvancedModeling" target="HelloWorld" inheritAll="false"/>
        <ant dir="X3dForWebAuthors"       target="HelloWorld" inheritAll="false"/>
        <ant dir="Vrml2Sourcebook"        target="HelloWorld" inheritAll="false"/>
        <ant dir="HumanoidAnimation"      target="HelloWorld" inheritAll="false"/>
        <ant dir="ConformanceNist"        target="HelloWorld" inheritAll="false"/>
        <ant dir="Basic"                  target="HelloWorld" inheritAll="false"/>
        <ant dir="Savage"                 target="HelloWorld" inheritAll="false"/>
    <!--<ant dir="SavageDefense"          target="HelloWorld" inheritAll="false"/>-->
        <echo message="X3dForWebAuthors is master version, invoked above so no need to copy"/>
        <echo message="HelloWorld.all complete."/>
    </target>

    <target name="processScenes.touch.HAnimScenes" description="update timestamp on HAnim .x3d scenes to prompt conversion updates">
        <touch verbose="${VERBOSE}"> <!-- verbose logs creation of new files -->
            <fileset dir=".">
                <include name="Basic/HumanoidAnimation/*.x3d"/>
            </fileset>
        </touch>
    </target>

    <target name="scp.uploadExampleUpdates.json.refresh.all"  depends="processScenes.json.all,zip.json.combined,scp.uploadExampleUpdates.json.build.out.zip,upload.json.all"
         description="scp upload of upjdated X3D archives .json scenes and collection .zip">
        <echo>... scp.uploadExampleUpdates.json.refresh.all scp upload of updated X3D archives .json scenes and collection .zip complete</echo>
    </target>

    <property name="jsonZipFileName" value="X3dExampleArchivesJsonScenes.zip"/>

    <target name="zip.json.combined" description="generate .zip distribution for all .json scenes">
        <property name="jsonZipFileName" value="X3dExampleArchivesJsonScenes.zip"/>
        <echo>Building ${jsonZipFileName} distribution for all .json scenes</echo>
        <zip destfile="${jsonZipFileName}">
            <zipfileset dir=".." prefix="www.web3d.org/x3d/content/">
                <include name="**/build.log.json.txt"/>
                <include name="**/*.json"/>
                <exclude name="**/SavageDefense/**/*"/>
            </zipfileset>
        </zip>

        <checksum file="${jsonZipFileName}"/>
        <checksum file="${jsonZipFileName}" property="zip.checksum"/>
    <!--<echo  message="zip.checksum="/> property value should match file -->
        <echo  message="${jsonZipFileName}.MD5 checksum:"/>
        <concat>
            <fileset file="${jsonZipFileName}.MD5"/>
        </concat>

        <length property="archive.zip.length" file="${jsonZipFileName}"/>
        <echo>Building ${jsonZipFileName} for all .json scenes (${archive.zip.length} bytes) complete</echo>
        <echo message="zip.json.combined complete."/>
    </target>

    <property name="pythonZipFileName" value="X3dExampleArchivesPythonScenes.zip"/>

    <target name="zip.python.combined" description="generate .zip distribution for all .python scenes">
        <property name="pythonZipFileName" value="X3dExampleArchivesPythonScenes.zip"/>
        <echo>Building ${pythonZipFileName} distribution for all Web3D .python scenes</echo>
        <zip destfile="${pythonZipFileName}">
            <zipfileset dir=".." prefix="www.web3d.org/x3d/content/">
            <!--<include name="**/build.log.python.txt"/> very large, currently 10MB -->
                <include name="**/*.py"/>
                <exclude name="**/Savage/**/*"/>
                <exclude name="**/SavageDefense/**/*"/>
            </zipfileset>
        </zip>

        <checksum file="${pythonZipFileName}"/>
        <checksum file="${pythonZipFileName}" property="zip.checksum"/>
    <!--<echo  message="zip.checksum="/> property value should match file -->
        <echo  message="${pythonZipFileName}.MD5 checksum:"/>
        <concat>
            <fileset file="${pythonZipFileName}.MD5"/>
        </concat>

        <length property="archive.zip.length" file="${pythonZipFileName}"/>
        <echo>Building ${pythonZipFileName} for all .python scenes (${archive.zip.length} bytes) complete</echo>
        <echo message="zip.python.combined complete."/>
    </target>

    <target name="scp.uploadExampleUpdates.json.build.out.zip" depends="zip.json.combined"
           description="scp upload of .zip distribution and build.log.json.txt for all .json scenes">
        <echo  message="scp upload of .zip distribution and build.log.json.txt for all .json scenes to scp://${sftpServer.web3d}${sftpDirectory.web3d.examples}"/>
        <scp remotetodir="${username.web3d}@${sftpServer.web3d}:${sftpDirectory.web3d.examples}" password="${password.web3d}"
               trust="yes"
             verbose="${VERBOSE_UPLOAD}" failonerror="false">
            <fileset dir=".">
                <include name="build.log.json.txt"/>
            </fileset>
            <fileset dir=".">
                <include name="${jsonZipFileName}"/>
                <include name="${jsonZipFileName}.MD5"/>
            </fileset>
        </scp>
        <echo  message="X3D JSON assets available at"/>
        <echo  message="https://www.web3d.org/x3d/content/examples/build.log.json.txt"/>
        <echo  message="http://www.web3d.org/x3d/content/examples/${jsonZipFileName}"/>
        <echo  message="http://www.web3d.org/x3d/content/examples/${jsonZipFileName}.MD5"/>
        <echo  message="scp.uploadExampleUpdates.json.build.out.zip complete."/>
    </target>

    <target name="versions">
        <ant dir="X3dForAdvancedModeling" target="versions"/>
    </target>

    <!-- Ant Subversion Task at http://sourceforge.net/projects/antsvntask                        -->
    <!-- must have antsvntask.jar in ANT_HOME/lib (or else specify path)                          -->
    <!--
    <taskdef name="subversion"
             classname="net.tralfamadore.ast.tasks.SubversionTask"
             classpath="${ANT_HOME}/antsvntask-0.1.25/antsvntask.jar"/>    -->

</project>
