Description: <short summary of the patch>
 TODO: Put a short summary on the line above and replace this paragraph
 with a longer explanation of this change. Complete the meta-information
 with other relevant fields (see below for details). To make it easier, the
 information below has been extracted from the changelog. Adjust it or drop
 it.
 .
 ola (0.10.5.nojsmin-1) unstable; urgency=low
 .
   * New upstream release
     - Re-remove minified javascript
Author: Simon Newton <nomis52@gmail.com>

---
The information above should follow the Patch Tagging Guidelines, please
checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:

Origin: <vendor|upstream|other>, <url of original patch>
Bug: <url in upstream bugtracker>
Bug-Debian: https://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
Forwarded: <no|not-needed|url proving that it has been forwarded>
Reviewed-By: <name and email of someone who approved the patch>
Last-Update: 2017-09-10

--- /dev/null
+++ ola-0.10.6.nojsmin/.travis-ci.sh
@@ -0,0 +1,205 @@
+#!/bin/bash
+
+# This script is triggered from the script section of .travis.yml
+# It runs the appropriate commands depending on the task requested.
+
+set -e
+
+CPP_LINT_URL="https://raw.githubusercontent.com/google/styleguide/gh-pages/cpplint/cpplint.py";
+
+COVERITY_SCAN_BUILD_URL="https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh"
+
+SPELLINGBLACKLIST=$(cat <<-BLACKLIST
+      -wholename "./.git/*" -or \
+      -wholename "./aclocal.m4" -or \
+      -wholename "./config/depcomp" -or \
+      -wholename "./config/ltmain.sh" -or \
+      -wholename "./config/config.guess" -or \
+      -wholename "./config/config.sub" -or \
+      -wholename "./config/install-sh" -or \
+      -wholename "./config/libtool.m4" -or \
+      -wholename "./config/ltoptions.m4" -or \
+      -wholename "./config/ltsugar.m4" -or \
+      -wholename "./libtool" -or \
+      -wholename "./config.status" -or \
+      -wholename "./Makefile" -or \
+      -wholename "./Makefile.in" -or \
+      -wholename "./autom4te.cache/*" -or \
+      -wholename "./java/Makefile" -or \
+      -wholename "./java/Makefile.in" -or \
+      -wholename "./olad/www/new/js/app.min.js" -or \
+      -wholename "./olad/www/new/js/app.min.js.map" -or \
+      -wholename "./olad/www/new/libs/angular/js/angular.min.js" -or \
+      -wholename "./olad/www/mobile.js" -or \
+      -wholename "./olad/www/ola.js" -or \
+      -wholename "./configure" -or \
+      -wholename "./common/protocol/Ola.pb.*" -or \
+      -wholename "./plugins/artnet/messages/ArtNetConfigMessages.pb.*" -or \
+      -wholename "./tools/ola_trigger/config.tab.*" -or \
+      -wholename "./tools/ola_trigger/lex.yy.cpp"
+BLACKLIST
+)
+
+if [[ $TASK = 'lint' ]]; then
+  # run the lint tool only if it is the requested task
+  autoreconf -i;
+  ./configure --enable-rdm-tests --enable-ja-rule --enable-e133;
+  # the following is a bit of a hack to build the files normally built during
+  # the build, so they are present for linting to run against
+  make builtfiles
+  # first check we've not got any generic NOLINTs
+  # count the number of generic NOLINTs
+  nolints=$(grep -IR NOLINT * | grep -v "NOLINT(" | wc -l)
+  if [[ $nolints -ne 0 ]]; then
+    # print the output for info
+    echo $(grep -IR NOLINT * | grep -v "NOLINT(")
+    echo "Found $nolints generic NOLINTs"
+    exit 1;
+  else
+    echo "Found $nolints generic NOLINTs"
+  fi;
+  # then fetch and run the main cpplint tool
+  wget -O cpplint.py $CPP_LINT_URL;
+  chmod u+x cpplint.py;
+  ./cpplint.py \
+    --filter=-legal/copyright,-readability/streams,-runtime/arrays \
+    $(find ./ \( -name "*.h" -or -name "*.cpp" \) -and ! \( \
+        -wholename "./common/protocol/Ola.pb.*" -or \
+        -wholename "./common/rpc/Rpc.pb.*" -or \
+        -wholename "./common/rpc/TestService.pb.*" -or \
+        -wholename "./common/rdm/Pids.pb.*" -or \
+        -wholename "./config.h" -or \
+        -wholename "./plugins/*/messages/*ConfigMessages.pb.*" -or \
+        -wholename "./tools/ola_trigger/config.tab.*" -or \
+        -wholename "./tools/ola_trigger/lex.yy.cpp" \) | xargs)
+  if [[ $? -ne 0 ]]; then
+    exit 1;
+  fi;
+elif [[ $TASK = 'check-licences' ]]; then
+  # check licences only if it is the requested task
+  autoreconf -i;
+  ./configure --enable-rdm-tests --enable-ja-rule --enable-e133;
+  # the following is a bit of a hack to build the files normally built during
+  # the build, so they are present for licence checking to run against
+  make builtfiles
+  ./scripts/enforce_licence.py
+  if [[ $? -ne 0 ]]; then
+    exit 1;
+  fi;
+elif [[ $TASK = 'spellintian' ]]; then
+  # run spellintian only if it is the requested task, ignoring duplicate words
+  autoreconf -i;
+  ./configure --enable-rdm-tests --enable-ja-rule --enable-e133;
+  # the following is a bit of a hack to build the files normally built during
+  # the build, so they are present for spellintian to run against
+  make builtfiles
+  spellingfiles=$(eval "find ./ -type f -and ! \( \
+      $SPELLINGBLACKLIST \
+      \) | xargs")
+  # count the number of spellintian errors, ignoring duplicate words
+  spellingerrors=$(zrun spellintian $spellingfiles 2>&1 | grep -v "\(duplicate word\)" | wc -l)
+  if [[ $spellingerrors -ne 0 ]]; then
+    # print the output for info
+    zrun spellintian $spellingfiles | grep -v "\(duplicate word\)"
+    echo "Found $spellingerrors spelling errors via spellintian, ignoring duplicates"
+    exit 1;
+  else
+    echo "Found $spellingerrors spelling errors via spellintian, ignoring duplicates"
+  fi;
+elif [[ $TASK = 'spellintian-duplicates' ]]; then
+  # run spellintian only if it is the requested task
+  autoreconf -i;
+  ./configure --enable-rdm-tests --enable-ja-rule --enable-e133;
+  # the following is a bit of a hack to build the files normally built during
+  # the build, so they are present for spellintian to run against
+  make builtfiles
+  spellingfiles=$(eval "find ./ -type f -and ! \( \
+      $SPELLINGBLACKLIST \
+      \) | xargs")
+  # count the number of spellintian errors
+  spellingerrors=$(zrun spellintian $spellingfiles 2>&1 | wc -l)
+  if [[ $spellingerrors -ne 0 ]]; then
+    # print the output for info
+    zrun spellintian $spellingfiles
+    echo "Found $spellingerrors spelling errors via spellintian"
+    exit 1;
+  else
+    echo "Found $spellingerrors spelling errors via spellintian"
+  fi;
+elif [[ $TASK = 'codespell' ]]; then
+  # run codespell only if it is the requested task
+  autoreconf -i;
+  ./configure --enable-rdm-tests --enable-ja-rule --enable-e133;
+  # the following is a bit of a hack to build the files normally built during
+  # the build, so they are present for codespell to run against
+  make builtfiles
+  spellingfiles=$(eval "find ./ -type f -and ! \( \
+      $SPELLINGBLACKLIST \
+      \) | xargs")
+  # count the number of codespell errors
+  spellingerrors=$(zrun codespell --check-filenames --quiet 2 --regex "[\\-'a-zA-Z0-9]+" $spellingfiles 2>&1 | wc -l)
+  if [[ $spellingerrors -ne 0 ]]; then
+    # print the output for info
+    zrun codespell --check-filenames --quiet 2 --regex "[\\-'a-zA-Z0-9]+" $spellingfiles
+    echo "Found $spellingerrors spelling errors via codespell"
+    exit 1;
+  else
+    echo "Found $spellingerrors spelling errors via codespell"
+  fi;
+elif [[ $TASK = 'doxygen' ]]; then
+  # check doxygen only if it is the requested task
+  autoreconf -i;
+  # Doxygen is C++ only, so don't bother with RDM tests
+  ./configure --enable-ja-rule --enable-e133;
+  # the following is a bit of a hack to build the files normally built during
+  # the build, so they are present for Doxygen to run against
+  make builtfiles
+  # count the number of warnings
+  warnings=$(make doxygen-doc 2>&1 >/dev/null | wc -l)
+  if [[ $warnings -ne 0 ]]; then
+    # print the output for info
+    make doxygen-doc
+    echo "Found $warnings doxygen warnings"
+    exit 1;
+  else
+    echo "Found $warnings doxygen warnings"
+  fi;
+elif [[ $TASK = 'coverage' ]]; then
+  # Compile with coverage for coveralls
+  autoreconf -i;
+  # Coverage is C++ only, so don't bother with RDM tests
+  ./configure --enable-gcov --enable-ja-rule --enable-e133;
+  make;
+  make check;
+elif [[ $TASK = 'coverity' ]]; then
+  # Run Coverity Scan unless token is zero length
+  # The Coverity Scan script also relies on a number of other COVERITY_SCAN_
+  # variables set in .travis.yml
+  if [[ ${#COVERITY_SCAN_TOKEN} -ne 0 ]]; then
+    curl -s $COVERITY_SCAN_BUILD_URL | bash
+  else
+    echo "Skipping Coverity Scan as no token found, probably a Pull Request"
+  fi;
+elif [[ $TASK = 'jshint' ]]; then
+  cd ./javascript/new-src;
+  npm install;
+  grunt test
+elif [[ $TASK = 'flake8' ]]; then
+  autoreconf -i;
+  ./configure --enable-rdm-tests
+  # the following is a bit of a hack to build the files normally built during
+  # the build, so they are present for flake8 to run against
+  make builtfiles
+  flake8 --max-line-length 80 --exclude *_pb2.py,.git,__pycache --ignore E111,E114,E121,E127,E129 data/rdm include/ola python scripts tools/ola_mon tools/rdm
+else
+  # Otherwise compile and check as normal
+  export DISTCHECK_CONFIGURE_FLAGS='--enable-rdm-tests --enable-ja-rule --enable-e133'
+  autoreconf -i;
+  ./configure $DISTCHECK_CONFIGURE_FLAGS;
+  make distcheck;
+  make dist;
+  tarball=$(ls -Ut ola*.tar.gz | head -1)
+  tar -zxf $tarball;
+  tarball_root=$(echo $tarball | sed 's/.tar.gz$//')
+  ./scripts/verify_trees.py ./ $tarball_root
+fi
--- /dev/null
+++ ola-0.10.6.nojsmin/.travis.yml
@@ -0,0 +1,282 @@
+language: cpp
+# Default to the fully visualised "sudo" GCE environments, as they are faster for longer running jobs. We don't actually need sudo
+sudo: required
+# Use the latest Travis images since they are more up to date than the stable release.
+group: edge
+script:
+ - "bash -ex .travis-ci.sh"
+
+addons:
+  apt:
+    packages: &base_build
+     # This is the absolute minimum for configure to pass
+     # Non C++ based tasks use it so they can run make builtfiles
+     - ccache
+     - libcppunit-dev
+     - bison
+     - flex
+     - uuid-dev
+     - libprotobuf-dev
+     - protobuf-compiler
+     - libprotoc-dev
+    packages: &core_build
+     # This is all the bits we need to enable all options
+     - *base_build
+     - libftdi-dev
+     - libftdi1
+     - libusb-1.0-0-dev
+     - liblo-dev
+     - libavahi-glib1
+     - libncurses5-dev
+     - libmicrohttpd-dev
+    packages: &core_build_gpp_latest
+     - *core_build
+     - g++-6
+    packages: &core_build_clang_latest
+     - *core_build
+     - clang-5.0
+
+matrix:
+  fast_finish: true
+  include:
+    - os: osx
+      osx_image: xcode9.2
+      compiler: clang
+      env:
+      - TASK='compile'
+      - CPPUNIT='1.13'
+    - os: osx
+      osx_image: xcode9.2
+      compiler: clang
+      env:
+      - TASK='compile'
+      - CPPUNIT='1.14'
+    - os: osx
+      osx_image: xcode9.2
+      compiler: gcc
+      env:
+      - TASK='compile'
+      - CPPUNIT='1.13'
+    - os: osx
+      osx_image: xcode9.2
+      compiler: gcc
+      env:
+      - TASK='compile'
+      - CPPUNIT='1.14'
+    - os: linux
+      dist: trusty
+      compiler: clang
+      env: TASK='compile'
+      python: '2.7'
+      addons:
+        apt:
+          packages:
+           - *core_build_clang_latest
+          sources:
+           - ubuntu-toolchain-r-test
+           - llvm-toolchain-precise
+    - os: linux
+      dist: trusty
+      compiler: gcc
+      env: TASK='compile'
+      python: '2.7'
+      addons:
+        apt:
+          packages:
+           - *core_build_gpp_latest
+          sources:
+           - ubuntu-toolchain-r-test
+    - os: linux
+      dist: trusty
+      compiler: gcc
+      env: TASK='coverage'
+      addons:
+        apt:
+          packages:
+           - *core_build_gpp_latest
+          sources:
+           - ubuntu-toolchain-r-test
+    - os: linux
+      dist: trusty
+      compiler: gcc
+      env: TASK='coverity'
+      addons:
+        apt:
+          packages:
+           # Coverity doesn't work with g++-5 or g++-6 yet
+           - *core_build
+           - g++-4.9
+          sources:
+           - ubuntu-toolchain-r-test
+    - os: linux
+      dist: trusty
+      # Short duration job, use the container/without sudo image as it boots faster
+      sudo: false
+      env: TASK='doxygen'
+      addons:
+        apt:
+          packages:
+           - *core_build_gpp_latest
+           - doxygen
+           - graphviz
+          sources:
+           - ubuntu-toolchain-r-test
+    - os: linux
+      dist: trusty
+      # Short duration job, use the container/without sudo image as it boots faster
+      sudo: false
+      env: TASK='lint'
+      addons:
+        apt:
+          packages:
+           - *core_build
+    - os: linux
+      dist: trusty
+      # Short duration job, use the container/without sudo image as it boots faster
+      sudo: false
+      env: TASK='check-licences'
+      addons:
+        apt:
+          packages:
+           - *core_build
+    - os: linux
+      dist: trusty
+      # Short duration job, would use the container/without sudo image as it boots faster, but we need a backported lintian, so don't
+      sudo: required
+      env: TASK='spellintian'
+      addons:
+        apt:
+          packages:
+           - *core_build
+           - moreutils
+    - os: linux
+      dist: trusty
+      # Short duration job, would use the container/without sudo image as it boots faster, but we need a backported lintian, so don't
+      sudo: required
+      env: TASK='spellintian-duplicates'
+      addons:
+        apt:
+          packages:
+           - *core_build
+           - moreutils
+    - os: linux
+      dist: trusty
+      # Short duration job, use the container/without sudo image as it boots faster
+      sudo: false
+      env: TASK='codespell'
+      addons:
+        apt:
+          packages:
+           - *core_build
+           - moreutils
+    - os: linux
+      dist: trusty
+      # Short duration job, use the container/without sudo image as it boots faster
+      sudo: false
+      env: TASK='jshint'
+      addons:
+        apt:
+          packages:
+    - os: linux
+      dist: trusty
+      # Short duration job, use the container/without sudo image as it boots faster
+      sudo: false
+      env: TASK='flake8'
+      addons:
+        apt:
+          packages:
+           - *base_build
+  allow_failures:
+    - os: linux
+      dist: trusty
+      compiler: gcc
+      env: TASK='coverage'
+    - os: linux
+      dist: trusty
+      compiler: gcc
+      env: TASK='coverity'
+    - os: linux
+      dist: trusty
+      env: TASK='spellintian'
+    - os: linux
+      dist: trusty
+      env: TASK='spellintian-duplicates'
+    - os: linux
+      dist: trusty
+      env: TASK='codespell'
+
+env:
+  global:
+   # Parallel make build
+   - MAKEFLAGS="-j 2"
+   # -- BEGIN Coverity Scan ENV
+   - COVERITY_SCAN_BUILD_COMMAND_PREPEND="cov-configure --comptype gcc --compiler gcc-4.9 --template && autoreconf -i && ./configure --enable-ja-rule --enable-e133"
+   # The build command with all of the arguments that you would apply to a manual `cov-build`
+   # Usually this is the same as STANDARD_BUILD_COMMAND, exluding the automated test arguments
+   - COVERITY_SCAN_BUILD_COMMAND="make"
+   # Name of the project
+   - COVERITY_SCAN_PROJECT_NAME="$TRAVIS_REPO_SLUG"
+   # Email address for notifications related to this build
+   - COVERITY_SCAN_NOTIFICATION_EMAIL="ola-coverity@pjnewman.co.uk"
+   # Regular expression selects on which branches to run analysis
+   # Be aware of quotas. Do not run on every branch/commit
+   - COVERITY_SCAN_BRANCH_PATTERN=".*"
+   # COVERITY_SCAN_TOKEN via "travis encrypt" using the repo's public key
+   - secure: "U+NmPtScHZ1NLmkDrzpqApHmJvELV44cXgjQsxA8N8xIATckbs+DrmWSNeECENyvuOPz+nPzglSgBvJtejf97jYJIIwAExq5TJMUAIPFS6KU3mohODW2PZSoVoUyJPzFIlhzcELQgONI+ILLm29lNdQNb7GFUVtO6+jS10AFtWY="
+   # -- END Coverity Scan ENV
+
+cache:
+  apt: true
+  directories:
+    - $HOME/.cache/pip # pip cache
+    - $HOME/.npm # npm cache
+    - $HOME/.ccache # ccache cache
+
+before_cache:
+  - rm -f $HOME/.cache/pip/log/debug.log # erase log
+  - ccache -s # see how many hits ccache got
+
+install:
+# Match the version of protobuf being installed via apt
+  - pip install --user protobuf==3.1.0
+# We need to use pip rather than apt on Trusty
+  - if [ "$TRAVIS_OS_NAME" == "linux" ]; then pip install --user numpy; fi
+  - if [ "$TASK" = "coverage" ]; then pip install --user cpp-coveralls; fi
+  - if [ "$TASK" = "flake8" ]; then pip install --user flake8; fi
+  - if [ "$TASK" = "codespell" ]; then pip install --user git+https://github.com/lucasdemarchi/codespell.git; fi
+  - if [ "$TASK" = "jshint" ]; then npm install -g grunt-cli; fi
+
+before_install:
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; fi
+#Fix a broken homebrew libtool install
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew reinstall -s libtool; fi
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install ccache bison flex protobuf@3.1 libftdi libftdi0 libusb liblo libmicrohttpd; fi # ossp-uuid, homebrew/python/numpy already present
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew link -f protobuf@3.1; export PKG_CONFIG_PATH=/usr/local/opt/protobuf@3.1/lib/pkgconfig; brew install --build-from-source --ignore-dependencies --env=std protobuf-c; fi # While protobuf is not on the latest release
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then mkdir -p ${HOME}/Library/Python/2.7/lib/python/site-packages; echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> ${HOME}/Library/Python/2.7/lib/python/site-packages/homebrew.pth; fi
+ - if [ "$TRAVIS_OS_NAME" == "osx" -a "$CPPUNIT" != "1.14" ]; then brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e6e43cf6a3%5E/Formula/cppunit.rb; fi # install a slightly older cppunit, as latest needs C++11 support
+ - if [ "$TRAVIS_OS_NAME" == "osx" -a "$CPPUNIT" == "1.14" ]; then brew install cppunit; fi # install the latest cppunit, which needs C++11
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then PATH=/usr/local/opt/ccache/libexec:$PATH; fi # Use ccache on Mac too
+#Coverity doesn't work with g++ 5 or 6, so only upgrade to g++ 4.9 for that
+ - if [ "$TRAVIS_OS_NAME" == "linux" -a \( "$TASK" = "compile" -o "$TASK" = "coverage" -o "$TASK" = "doxygen" \) -a "$CXX" = "g++" ]; then export CXX="ccache g++-6" CC="ccache gcc-6"; fi
+ - if [ "$TASK" = "coverity" -a "$CXX" = "g++" ]; then export CXX="g++-4.9" CC="gcc-4.9"; fi
+#Use the latest clang if we're compiling with clang
+ - if [ "$TRAVIS_OS_NAME" == "linux" -a "$CXX" = "clang++" ]; then export CXX="clang++-5.0" CC="clang-5.0"; fi
+#Report the compiler version
+ - $CXX --version
+ - if [ "$TASK" == "spellintian" -o "$TASK" == "spellintian-duplicates" ]; then sudo add-apt-repository ppa:waja/trusty-backports -y; sudo apt-get update -qq; sudo apt-get install lintian -y; fi # Install a late enough lintian
+
+after_failure:
+  - cat ${TRAVIS_BUILD_DIR}/ola-*/_build/sub/test-suite.log
+
+after_success:
+  - if [ "$TASK" = "coverage" ]; then coveralls --gcov /usr/bin/gcov-6 -b . -E '.*Test\.cpp$' -E '.*\.pb\.cc$' -E '.*\.pb\.cpp$' -E '.*\.pb\.h$' -E '.*\.yy\.cpp$' -E '.*\.tab\.cpp$' -E '.*\.tab\.h$' -E '.*/doxygen/examples.*$' --gcov-options '\-lp' > /dev/null; fi
+
+after_script:
+  - if [ "$TASK" = "coverity" ]; then tail -n 10000 ${TRAVIS_BUILD_DIR}/cov-int/build-log.txt; cat ${TRAVIS_BUILD_DIR}/cov-int/scm_log.txt; fi
+
+notifications:
+  irc:
+    channels:
+     - "chat.freenode.net#openlighting"
+    on_success: change
+    on_failure: change
--- /dev/null
+++ ola-0.10.6.nojsmin/common/LICENCE
@@ -0,0 +1,13 @@
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
--- /dev/null
+++ ola-0.10.6.nojsmin/examples/LICENCE
@@ -0,0 +1,13 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--- /dev/null
+++ ola-0.10.6.nojsmin/include/ola/LICENCE
@@ -0,0 +1,13 @@
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
--- /dev/null
+++ ola-0.10.6.nojsmin/include/ola/acn/LICENCE
@@ -0,0 +1,13 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--- /dev/null
+++ ola-0.10.6.nojsmin/include/ola/e133/LICENCE
@@ -0,0 +1,13 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--- /dev/null
+++ ola-0.10.6.nojsmin/include/olad/LICENCE
@@ -0,0 +1,13 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--- /dev/null
+++ ola-0.10.6.nojsmin/javascript/new-src/LICENCE
@@ -0,0 +1,13 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
\ No newline at end of file
--- /dev/null
+++ ola-0.10.6.nojsmin/javascript/ola/LICENCE
@@ -0,0 +1,13 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--- /dev/null
+++ ola-0.10.6.nojsmin/libs/LICENCE
@@ -0,0 +1,13 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--- /dev/null
+++ ola-0.10.6.nojsmin/man/generate-html.sh
@@ -0,0 +1,45 @@
+#!/bin/sh
+
+if [ $# != 1 ]; then
+  echo "Usage: $0 <output_dir>"
+  exit 1;
+fi
+
+output_dir=$1
+if [ ! -d $output_dir ]; then
+  echo $output_dir is not a directory
+  exit 1;
+fi
+
+index_file=$output_dir/index.html;
+
+echo "Output dir: $output_dir";
+echo "Index file: $index_file";
+
+cat << 'EOF' > $index_file
+<html>
+<head>
+<title>Man pages for the Open Lighting Architecture</title>
+</head>
+<body>
+<h1>Man pages for the <a href="https://openlighting.org/ola/">Open Lighting Architecture</a></h1>
+<ul>
+EOF
+
+if [ ! -d $output_dir/man1/ ]; then
+  echo $output_dir/man1/ doesn\'t exist, please create it
+  exit 1;
+fi
+for man_file in *.1; do
+  echo "Generating $man_file";
+  output_file=$output_dir/man1/$man_file.html;
+  man2html -r $man_file -M ../index.html | sed 1,2d > $output_file;
+  chmod a+r $output_file;
+  echo "<li><a href='./man1/$man_file.html'>$man_file</a></li>" >> $index_file
+done
+
+cat << 'EOF' >> $index_file
+</ul>
+</body>
+</html>
+EOF
--- /dev/null
+++ ola-0.10.6.nojsmin/ola/LICENCE
@@ -0,0 +1,13 @@
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
--- /dev/null
+++ ola-0.10.6.nojsmin/olad/LICENCE
@@ -0,0 +1,13 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--- /dev/null
+++ ola-0.10.6.nojsmin/plugins/LICENCE
@@ -0,0 +1,13 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--- /dev/null
+++ ola-0.10.6.nojsmin/plugins/kinet/kinet.cpp
@@ -0,0 +1,308 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * kinet.cpp
+ * Scratch pad for Kinet work
+ * Copyright (C) 2010 Simon Newton
+ */
+
+#include <ola/Callback.h>
+#include <ola/Logging.h>
+#include <ola/network/NetworkUtils.h>
+#include <ola/network/SelectServer.h>
+#include <ola/network/Socket.h>
+
+#include <iostream>
+#include <string>
+
+using std::cout;
+using std::endl;
+using std::string;
+using ola::network::SelectServer;
+using ola::network::UDPSocket;
+using ola::network::LittleEndianToHost;
+
+
+/*
+ * The KiNet protocol appears to be little-endian. We write the constants as
+ * they appear to a human and convert back and forth.
+ */
+
+// All packets seem to start with this number
+const uint32_t KINET_MAGIC = 0x4adc0104;
+// We haven't seen a non V1 protocol in the wild yet.
+const uint16_t KINET_VERSION = 0x0001;
+// No idea what this is, but we should send a poll reply when we see it
+const uint32_t KINET_DISCOVERY_COMMAND = 0x8988870a;
+
+// KiNet packet types
+typedef enum {
+  KINET_POLL = 0x0001,
+  KINET_POLL_REPLY = 0x0002,
+  KINET_SET_IP = 0x0003,
+  KINET_SET_UNIVERSE = 0x0005,
+  KINET_SET_NAME = 0x0006,
+  // KINET_?? = 0x000a;
+  KINET_DMX = 0x0101,
+  // KINET_PORTOUT = 0x0108;  // portout
+  // KINET_PORTOUT_SYNC = 0x0109;  // portout_sync
+  // KINET_?? = 0x0201;  // seems to be a discovery packet
+  // KINET_?? = 0x0203;  // get dmx address?
+} kinet_packet_type;
+
+
+/**
+ * The KiNet header
+ */
+PACK(
+struct kinet_header {
+  uint32_t magic;
+  uint16_t version;
+  uint16_t type;  // see kinet_packet_type above
+  uint32_t padding;  // always set to 0, seq #,
+                     // most of the time it's 0,
+                     // not implemented in most supplies
+});
+
+
+// A KiNet poll message
+PACK(
+struct kinet_poll {
+  uint32_t command;  // ??, Seems to always be KINET_DISCOVERY_COMMAND
+});
+
+
+// A KiNet poll reply message
+PACK(
+struct kinet_poll_reply {
+  uint32_t src_ip;
+  uint8_t hw_address[6];  // mac address
+  uint8_t  data[2];  // This contains non-0 data
+  uint32_t serial;  // The node serial #
+  uint32_t zero;
+  uint8_t node_name[60];
+  uint8_t node_label[31];
+  uint16_t zero2;
+});
+
+
+// A KiNet Set IP Command.
+// TODO(simon): Check what ip,mac dst this packet is sent to.
+PACK(
+struct kinet_set_ip {
+  uint32_t something;  // ef be ad de
+  uint8_t hw_address[6];  // The MAC address to match
+  uint16_t something2;  // 05 67
+  uint32_t new_ip;
+});
+
+
+// A KiNet Set Universe Command
+PACK(
+struct kinet_set_universe {
+  uint32_t something;  // ef be ad de
+  uint8_t universe;
+  uint8_t zero[3];
+});
+
+
+// A KiNet Set Name Command
+PACK(
+struct kinet_set_name {
+  uint32_t something;  // ef be ad de
+  uint8_t new_name[31];  // Null terminated.
+});
+
+
+// A KiNet Get Address command
+PACK(
+struct kinet_get_address {
+  uint32_t serial;
+  uint32_t something;  // 41 00 12 00
+});
+
+
+// A KiNet DMX packet
+PACK(
+struct kinet_dmx {
+  uint8_t port;  // should be set to 0 for v1
+  uint8_t flags;  // set to 0
+  uint16_t timerVal;  // set to 0
+  uint32_t universe;
+  uint8_t paylod[513];  // payload inc start code
+});
+
+
+struct kinet_port_out_flags {
+  uint16_t flags;
+    // little endian
+    // first bit is undefined  0:1;
+    // second bit is for 16 bit data, set to 0  :1;
+    // third is shall hold for sync packet :: 1;
+};
+
+
+struct kinet_port_out_sync {
+  uint32_t padding;
+}
+
+// A KiNet DMX port out packet
+PACK(
+struct kinet_port_out {
+  uint32_t universe;
+  uint8_t port;        // 1- 16
+  uint8_t pad;         // set to 0
+  portoutflags flags;
+  uint16_t length;     // little endian
+  uint16_t startCode;  // 0x0fff for chomASIC products, 0x0000 otherwise
+  uint8_t payload[512];
+});
+
+
+// The full kinet packet
+struct kinet_packet {
+  struct kinet_header header;
+  union {
+    struct kinet_poll poll;
+    struct kinet_poll_reply poll_reply;
+  } data;
+};
+
+
+uint8_t peer0_0[] = {
+  0x04, 0x01, 0xdc, 0x4a,  // magic number
+  0x01, 0x00,  // version #
+  0x02, 0x00,  // packet type (poll reply)
+  0x00, 0x00, 0x00, 0x00,  // sequence
+  0x0a, 0x00, 0x00, 0x01,  // 192.168.1.207
+  0x00, 0x0a, 0xc5, 0xff, 0xae, 0x01,  // mac address
+  0x01, 0x00,
+  0xff, 0xff, 0x00, 0x2d,  // serial #
+  0x00, 0x00, 0x00, 0x00,  // padding
+  // What follows is ascii text, with fields separated by new lines. Each field
+  // is in the form /[MD#R]:.*/
+  // It's unclear is this is a variable length field or not.
+  0x4d, 0x3a,  // M:
+  0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x4b, 0x69, 0x6e, 0x65, 0x74, 0x69, 0x63,
+  0x73, 0x20, 0x49, 0x6e, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x65,
+  0x64,  // Color Kinetics cs Incorporated
+  0x0a,  // \n
+  0x44, 0x3a,  // D:
+  0x50, 0x44, 0x53, 0x2d, 0x65,  // PDS-e
+  0x0a,  // \n
+  0x23, 0x3a,  // #:
+  0x53, 0x46, 0x54, 0x2d, 0x30, 0x30, 0x30, 0x30, 0x36, 0x36, 0x2d, 0x30, 0x30,
+  0x0a,  // SFT-000066-00
+  0x52, 0x3a,  // R:
+  0x30, 0x30,  // 00
+  0x0a,  // \n
+  0x00,
+  // offset 92
+  0x64, 0x73, 0x2d, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x2d, 0x72, 0x65, 0x61, 0x72,
+  0x00,  // device name?
+  0x00, 0x95, 0x8c, 0xc7, 0xb6, 0x00,
+  0x00,
+  0xff, 0x00, 0x00,
+  0xff, 0x00, 0x00,
+  0xff, 0x00, 0x00,
+  0xff, 0x00, 0x00 };
+
+
+SelectServer ss;
+UDPSocket udp_socket;
+
+/**
+ * Check if a packet is valid KiNet
+ */
+bool IsKiNet(const kinet_packet *packet, unsigned int size) {
+  return (size > sizeof(struct kinet_header) &&
+          KINET_MAGIC == LittleEndianToHost(packet->header.magic) &&
+          KINET_VERSION == LittleEndianToHost(packet->header.version));
+}
+
+
+/**
+ * Handle a KiNet poll packet
+ */
+void HandlePoll(const struct sockaddr_in &source,
+                const kinet_packet &packet,
+                unsigned int size) {
+  ssize_t r = udp_socket.SendTo(peer0_0, sizeof(peer0_0), source);
+  OLA_INFO << "sent " << r << " bytes";
+}
+
+
+/**
+ * Handle a KiNet DMX packet
+ */
+void HandleDmx(const struct sockaddr_in &source,
+               const kinet_packet &packet,
+               unsigned int size) {
+}
+
+
+void SocketReady() {
+  kinet_packet packet;
+  ssize_t data_read = sizeof(packet);
+  struct sockaddr_in source;
+  socklen_t src_size = sizeof(source);
+
+  udp_socket.RecvFrom(reinterpret_cast<uint8_t*>(&packet),
+                      &data_read,
+                      source,
+                      src_size);
+  if (IsKiNet(&packet, data_read)) {
+    uint16_t command = LittleEndianToHost(packet.header.type);
+    switch (command) {
+      case KINET_POLL:
+        HandlePoll(source, packet, data_read);
+        break;
+      case KINET_DMX:
+        HandleDmx(source, packet, data_read);
+        break;
+      default:
+        OLA_WARN << "Unknown packet 0x" << std::hex << command;
+    }
+  } else {
+    OLA_WARN << "Not a KiNet packet";
+  }
+}
+
+
+/*
+ * Main
+ */
+int main(int argc, char *argv[]) {
+  ola::InitLogging(ola::OLA_LOG_INFO, ola::OLA_LOG_STDERR);
+
+  udp_socket.SetOnData(ola::NewCallback(&SocketReady));
+  if (!udp_socket.Init()) {
+    OLA_WARN << "Failed to init";
+    return 1;
+  }
+  if (!udp_socket.Bind(6038)) {
+    OLA_WARN << "Failed to bind";
+    return 1;
+  }
+  if (!udp_socket.EnableBroadcast()) {
+    OLA_WARN << "Failed to enabl bcast";
+    return 1;
+  }
+
+  ss.AddSocket(&udp_socket);
+
+  ss.Run();
+  return 0;
+}
--- /dev/null
+++ ola-0.10.6.nojsmin/python/examples/LICENCE
@@ -0,0 +1,13 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--- /dev/null
+++ ola-0.10.6.nojsmin/python/ola/LICENCE
@@ -0,0 +1,13 @@
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
--- /dev/null
+++ ola-0.10.6.nojsmin/scripts/enforce_licence.py
@@ -0,0 +1,328 @@
+#!/usr/bin/python
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU Library General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# enforce_licence.py
+# Copyright (C) 2013 Simon Newton
+
+import difflib
+import getopt
+import glob
+import os
+import pprint
+import re
+import sys
+import textwrap
+
+CPP, JS, PROTOBUF, PYTHON = xrange(4)
+
+IGNORED_DIRECTORIES = [
+  'javascript/new-src/node_modules/',
+]
+
+IGNORED_FILES = [
+  'common/rdm/testdata/duplicate_manufacturer.proto',
+  'common/rdm/testdata/duplicate_pid_name.proto',
+  'common/rdm/testdata/duplicate_pid_value.proto',
+  'common/rdm/testdata/inconsistent_pid.proto',
+  'common/rdm/testdata/invalid_esta_pid.proto',
+  'common/rdm/testdata/test_pids.proto',
+  'common/rdm/testdata/pids/overrides.proto',
+  'common/rdm/testdata/pids/pids1.proto',
+  'common/rdm/testdata/pids/pids2.proto',
+  'examples/ola-dmxconsole.cpp',
+  'examples/ola-dmxmonitor.cpp',
+  'include/ola/gen_callbacks.py',
+  'olad/www/mobile.js',
+  'olad/www/ola.js',
+  'javascript/new-src/Gruntfile.js',
+  'olad/www/new/js/app.min.js',
+  'olad/www/new/js/app.min.js.map',
+  'python/ola/PidStoreLocation.py',
+  'python/ola/Version.py',
+  'tools/ola_trigger/config.tab.cpp',
+  'tools/ola_trigger/config.tab.h',
+  'tools/ola_trigger/lex.yy.cpp',
+  'tools/rdm/DataLocation.py',
+  'tools/rdm/static/ui.multiselect.js',
+]
+
+
+def Usage(arg0):
+  print textwrap.dedent("""\
+  Usage: %s
+
+  Walk the directory tree from the current directory, and make sure all .cpp,
+  .h, .js, .proto and .py files have the appropriate Licence. The licence is
+  determined from the LICENCE file in each branch of the directory tree.
+
+    --diff               Print the diffs.
+    --fix                Fix the files.
+    --help               Display this message.""" % arg0)
+
+
+def ParseArgs():
+  """Extract the options."""
+  try:
+    opts, args = getopt.getopt(sys.argv[1:], '',
+                               ['diff', 'fix', 'help'])
+  except getopt.GetoptError, err:
+    print str(err)
+    Usage(sys.argv[0])
+    sys.exit(2)
+
+  help = False
+  fix = False
+  diff = False
+  for o, a in opts:
+    if o in ('--diff'):
+      diff = True
+    elif o in ('--fix'):
+      fix = True
+    elif o in ('-h', '--help'):
+      Usage(sys.argv[0])
+      sys.exit()
+
+  if help:
+    Usage(sys.argv[0])
+    sys.exit(0)
+  return diff, fix
+
+
+def IgnoreFile(file_name):
+  for ignored_dir in IGNORED_DIRECTORIES:
+    if file_name.rfind(ignored_dir) != -1:
+      return True
+  for ignored_file in IGNORED_FILES:
+    if file_name.endswith(ignored_file):
+      return True
+  return False
+
+
+def TransformCppLine(line):
+  """Transform a line to within a C++ multiline style comment"""
+  line = line.strip()
+  if line:
+    return ' * %s' % line
+  else:
+    return ' *'
+
+
+def TransformLicence(licence):
+  """Wrap a licence in C++ style comments"""
+  output = []
+  output.append('/*')
+  output.extend(map(TransformCppLine, licence))
+  output.append(TransformCppLine(''))
+  return '\n'.join(output)
+
+
+def TransformJsLine(line):
+  """Transform a line to within a JS multiline style comment"""
+  return TransformCppLine(line)
+
+
+def TransformCppToJsLicence(licence):
+  """Change a C++ licence to JS style"""
+  lines = licence.split('\n')
+  output = []
+  output.append('/**')
+  for l in lines[1:]:
+    output.append(TransformJsLine(l[2:]))
+  return '\n'.join(output)
+
+
+def TransformPythonLine(line):
+  """Transform a line to within a Python multiline style comment"""
+  line = line.strip()
+  if line:
+    return '# %s' % line
+  else:
+    return '#'
+
+
+def TransformCppToPythonLicence(licence):
+  """Change a C++ licence to Python style"""
+  lines = licence.split('\n')
+  output = []
+  for l in lines[1:]:
+    output.append(TransformPythonLine(l[3:]))
+  return '\n'.join(output)
+
+
+def TransformLine(line, lang):
+  if lang == CPP or lang == PROTOBUF:
+    return TransformCppLine(line)
+  elif lang == JS:
+    return TransformJsLine(line)
+  elif lang == PYTHON:
+    return TransformPythonLine(line)
+  else:
+    return line
+
+
+def ReplaceHeader(file_name, new_header, lang):
+  f = open(file_name)
+  breaks = 0
+  line = f.readline()
+  while line != '':
+    if (lang == CPP or lang == JS or lang == PROTOBUF) and \
+       re.match(r'^ \*\s*\n$', line):
+      breaks += 1
+    if lang == PYTHON and re.match(r'^#\s*\n$', line):
+      breaks += 1
+    if breaks == 3:
+      break
+    line = f.readline()
+
+  if breaks < 3:
+    print "Couldn't find header for %s so couldn't fix it" % file_name
+    f.close()
+    return
+
+  remainder = f.read()
+  f.close()
+
+  f = open(file_name, 'w')
+  f.write(new_header)
+  f.write('\n')
+  f.write(remainder)
+  f.close()
+
+
+def GetDirectoryLicences(root_dir):
+  """Walk the directory tree and determine the licence for each directory."""
+  LICENCE_FILE = 'LICENCE'
+  licences = {}
+
+  for dir_name, subdirs, files in os.walk(root_dir):
+    # skip the root_dir since the licence file is different there
+    if dir_name == root_dir:
+      continue
+
+    # skip ignored dirs since we don't check them anyways
+    skip = False
+    for ignored_dir in IGNORED_DIRECTORIES:
+      if dir_name.rfind(ignored_dir) != -1:
+        skip = True
+
+    if skip:
+      continue
+
+    # don't descend into hidden dirs like .libs and .deps
+    subdirs[:] = [d for d in subdirs if not d.startswith('.')]
+
+    if LICENCE_FILE in files:
+      f = open(os.path.join(dir_name, LICENCE_FILE))
+      lines = f.readlines()
+      f.close()
+      licences[dir_name] = TransformLicence(lines)
+      print 'Found LICENCE for directory %s' % dir_name
+
+    # use this licence for all subdirs
+    licence = licences.get(dir_name)
+    if licence is not None:
+      for sub_dir in subdirs:
+        licences[os.path.join(dir_name, sub_dir)] = licence
+  return licences
+
+
+def CheckLicenceForDir(dir_name, licence, diff, fix):
+  """Check all files in a directory contain the correct licence."""
+  errors = 0
+  # glob doesn't support { } so we iterate instead
+  for match in ['*.h', '*.cpp']:
+    for file_name in glob.glob(os.path.join(dir_name, match)):
+      # skip the generated protobuf code
+      if '.pb.' in file_name:
+        continue
+      errors += CheckLicenceForFile(file_name, licence, CPP, diff, fix)
+
+  js_licence = TransformCppToJsLicence(licence)
+  for file_name in glob.glob(os.path.join(dir_name, '*.js')):
+    errors += CheckLicenceForFile(file_name, js_licence, JS, diff, fix)
+
+  for file_name in glob.glob(os.path.join(dir_name, '*.proto')):
+    errors += CheckLicenceForFile(file_name, licence, PROTOBUF, diff, fix)
+
+  python_licence = TransformCppToPythonLicence(licence)
+  for file_name in glob.glob(os.path.join(dir_name, '*.py')):
+    # skip the generated protobuf code
+    if file_name.endswith('__init__.py') or file_name.endswith('pb2.py'):
+      continue
+    errors += CheckLicenceForFile(file_name, python_licence, PYTHON, diff, fix)
+
+  return errors
+
+
+def CheckLicenceForFile(file_name, licence, lang, diff, fix):
+  """Check a file contains the correct licence."""
+  if IgnoreFile(file_name):
+    return 0
+
+  f = open(file_name)
+  # + 1 to include the newline to have a complete line
+  header_size = len(licence) + 1
+  first_line = None
+  if lang == PYTHON:
+    first_line = f.readline()
+    if not first_line.startswith('#!') and not first_line.startswith('# !'):
+      # First line isn't a shebang, ignore it.
+      f.seek(0, os.SEEK_SET)
+      first_line = None
+  # strip the trailing newline off as we don't actually want it
+  header = f.read(header_size).rstrip('\n')
+  file_name_line = f.readline()
+  f.close()
+  if header == licence:
+    expected_line = TransformLine(os.path.basename(file_name), lang)
+    if lang != JS and file_name_line.rstrip('\n') != expected_line:
+      print ("File %s does not have a filename line after the licence; found "
+             "\"%s\" expected \"%s\"" %
+             (file_name, file_name_line.rstrip('\n'), expected_line))
+      return 1
+    return 0
+
+  if fix:
+    print 'Fixing %s' % file_name
+    if lang == PYTHON and first_line is not None:
+      licence = first_line + licence
+    ReplaceHeader(file_name, licence, lang)
+    return 1
+  else:
+    print "File %s does not start with \"%s...\"" % (
+        file_name,
+        licence.split('\n')[(0 if (lang == PYTHON) else 1)])
+    if diff:
+      d = difflib.Differ()
+      result = list(d.compare(header.splitlines(1), licence.splitlines(1)))
+      pprint.pprint(result)
+    return 1
+
+
+def main():
+  diff, fix = ParseArgs()
+  licences = GetDirectoryLicences(os.getcwd())
+  errors = 0
+  for dir_name, licence in licences.iteritems():
+    errors += CheckLicenceForDir(dir_name, licence, diff=diff, fix=fix)
+  print 'Found %d files with incorrect licences' % errors
+  if errors > 0:
+    sys.exit(1)
+  else:
+    sys.exit()
+
+
+if __name__ == '__main__':
+  main()
--- /dev/null
+++ ola-0.10.6.nojsmin/scripts/verify_trees.py
@@ -0,0 +1,129 @@
+#!/usr/bin/python
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Library General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# verify_trees.py
+# Copyright (C) 2015 Simon Newton
+
+from __future__ import print_function
+
+import os
+import fnmatch
+import textwrap
+import sys
+
+# File & directory patterns that differ between what's in the git repo and
+# what's in the tarball.
+IGNORE_PATTERNS = [
+  '*.log',
+  '*.pc',
+  '*.swp',
+  '*.trs',
+  '*/.deps',
+  '*/.dirstamp',
+  '*/.libs',
+  '*/LICENCE',
+  '*/Makefile',
+  '*_pb2.py',
+  '*~',
+  '.git',
+  '.git/*',
+  '.gitignore',
+  '.travis-ci.sh',
+  '.travis.yml',
+  'Doxyfile',
+  'Makefile',
+  'README.md',
+  'autom4te.cache',
+  'config.h',
+  'config.status',
+  'html/*',
+  'include/ola/base/Version.h',
+  'libtool',
+  'man/generate-html.sh',
+  'ola-*.tar.gz',
+  'ola-*/*',
+  'plugins/kinet/kinet.cpp',
+  'python/ola/PidStoreLocation.py',
+  'python/ola/Version.py',
+  'scripts/*',
+  'stamp-h1',
+  'tools/rdm/DataLocation.py',
+]
+
+
+def Usage(arg0):
+  print (textwrap.dedent("""\
+  Usage: %s <treeA> <treeB>
+
+  Check for files that exist in treeA but aren't in treeB. This can be used to
+  ensure we don't miss files from the tarball.""" % arg0))
+
+
+def ShouldIgnore(path):
+  for pattern in IGNORE_PATTERNS:
+    if fnmatch.fnmatch(path, pattern):
+      return True
+  return False
+
+
+def BuildTree(root):
+  tree = set()
+  for directory, sub_dirs, files in os.walk(root):
+    rel_dir = os.path.relpath(directory, root)
+    if rel_dir == '.':
+      rel_dir = ''
+    if ShouldIgnore(rel_dir):
+      continue
+    for f in files:
+      path = os.path.join(rel_dir, f)
+      if not ShouldIgnore(path):
+        tree.add(path)
+
+  return tree
+
+
+def main():
+  if len(sys.argv) != 3:
+    Usage(sys.argv[0])
+    sys.exit(1)
+
+  tree_a_root = sys.argv[1]
+  tree_b_root = sys.argv[2]
+  for tree in (tree_a_root, tree_b_root):
+    if not os.path.isdir(tree):
+      print('Not a directory `%s`' % tree, file=sys.stderr)
+      sys.exit(2)
+
+  tree_a = BuildTree(tree_a_root)
+  tree_b = BuildTree(tree_b_root)
+
+  difference = tree_a.difference(tree_b)
+
+  if difference:
+    for file_path in difference:
+      print('Missing from tarball %s' % file_path, file=sys.stderr)
+
+    print('\n---------------------------------------', file=sys.stderr)
+    print('Either add the missing files to the appropriate Makefile.mk\n'
+          'or update IGNORE_PATTERNS in scripts/verify_trees.py',
+          file=sys.stderr)
+    print('---------------------------------------', file=sys.stderr)
+    sys.exit(1)
+
+  sys.exit()
+
+
+if __name__ == '__main__':
+  main()
--- /dev/null
+++ ola-0.10.6.nojsmin/tools/e133/LICENCE
@@ -0,0 +1,13 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--- /dev/null
+++ ola-0.10.6.nojsmin/tools/logic/LICENCE
@@ -0,0 +1,13 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--- /dev/null
+++ ola-0.10.6.nojsmin/tools/ola_mon/LICENCE
@@ -0,0 +1,13 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--- /dev/null
+++ ola-0.10.6.nojsmin/tools/ola_trigger/LICENCE
@@ -0,0 +1,13 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--- /dev/null
+++ ola-0.10.6.nojsmin/tools/rdm/LICENCE
@@ -0,0 +1,13 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--- ola-0.10.6.nojsmin.orig/tools/rdm/Makefile.mk
+++ ola-0.10.6.nojsmin/tools/rdm/Makefile.mk
@@ -17,6 +17,7 @@ module_files = \
 testserver_static_files = \
     tools/rdm/static/MIT-LICENSE.txt \
     tools/rdm/static/common.css \
+    tools/rdm/static/jquery-ui-1.8.21.custom.css \
     tools/rdm/static/rdm_tests.js \
     tools/rdm/static/rdmtests.html \
     tools/rdm/static/ui.multiselect.css \
--- ola-0.10.6.nojsmin.orig/tools/rdm/static/rdmtests.html
+++ ola-0.10.6.nojsmin/tools/rdm/static/rdmtests.html
@@ -1,10 +1,10 @@
 <!DOCTYPE html>
 <html>
   <head>
-    <link type='text/css' rel='stylesheet' href='/static/jquery-ui-1.8.21.custom.css' />
+    <link type='text/css' rel='stylesheet' href='/static/jquery-ui.css' />
     <link rel='stylesheet' href='/static/ui.multiselect.css' type='text/css'>
-    <script src='/static/jquery-1.7.2.min.js'></script>
-    <script src='/static/jquery-ui-1.8.21.custom.min.js'></script>
+    <script src='/static/jquery.min.js'></script>
+    <script src='/static/jquery-ui.min.js'></script>
     <script src='/static/ui.multiselect.js'></script>
     <script src='/static/rdm_tests.js'></script>
     <title>RDM Tests &amp; Publisher</title>
--- /dev/null
+++ ola-0.10.6.nojsmin/tools/rdmpro/LICENCE
@@ -0,0 +1,13 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--- /dev/null
+++ ola-0.10.6.nojsmin/tools/usbpro/LICENCE
@@ -0,0 +1,13 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--- /dev/null
+++ ola-0.10.6.nojsmin/tools/rdm/static/jquery-ui-1.8.21.custom.css
@@ -0,0 +1,565 @@
+/*!
+ * jQuery UI CSS Framework 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
+.ui-helper-clearfix:after { clear: both; }
+.ui-helper-clearfix { zoom: 1; }
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*!
+ * jQuery UI CSS Framework 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Helvetica,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=dddddd&bgTextureHeader=02_glass.png&bgImgOpacityHeader=35&borderColorHeader=bbbbbb&fcHeader=444444&iconColorHeader=999999&bgColorContent=c9c9c9&bgTextureContent=05_inset_soft.png&bgImgOpacityContent=50&borderColorContent=aaaaaa&fcContent=333333&iconColorContent=999999&bgColorDefault=eeeeee&bgTextureDefault=02_glass.png&bgImgOpacityDefault=60&borderColorDefault=cccccc&fcDefault=3383bb&iconColorDefault=70b2e1&bgColorHover=f8f8f8&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=bbbbbb&fcHover=599fcf&iconColorHover=3383bb&bgColorActive=999999&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=75&borderColorActive=999999&fcActive=ffffff&iconColorActive=454545&bgColorHighlight=eeeeee&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=ffffff&fcHighlight=444444&iconColorHighlight=3383bb&bgColorError=c0402a&bgTextureError=01_flat.png&bgImgOpacityError=55&borderColorError=c0402a&fcError=ffffff&iconColorError=fbc856&bgColorOverlay=eeeeee&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=80&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=60&thicknessShadow=4px&offsetTopShadow=-4px&offsetLeftShadow=-4px&cornerRadiusShadow=0px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Trebuchet MS, Helvetica, Arial, sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Helvetica, Arial, sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #aaaaaa; background: #c9c9c9 url(images/ui-bg_inset-soft_50_c9c9c9_1x100.png) 50% bottom repeat-x; color: #333333; }
+.ui-widget-content a { color: #333333; }
+.ui-widget-header { border: 1px solid #bbbbbb; background: #dddddd url(images/ui-bg_glass_35_dddddd_1x400.png) 50% 50% repeat-x; color: #444444; font-weight: bold; }
+.ui-widget-header a { color: #444444; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #eeeeee url(images/ui-bg_glass_60_eeeeee_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #3383bb; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #3383bb; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #bbbbbb; background: #f8f8f8 url(images/ui-bg_glass_100_f8f8f8_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #599fcf; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #599fcf; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #999999; background: #999999 url(images/ui-bg_inset-hard_75_999999_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #ffffff; background: #eeeeee url(images/ui-bg_flat_55_eeeeee_40x100.png) 50% 50% repeat-x; color: #444444; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #444444; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #c0402a; background: #c0402a url(images/ui-bg_flat_55_c0402a_40x100.png) 50% 50% repeat-x; color: #ffffff; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_999999_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_999999_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_999999_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_70b2e1_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_3383bb_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_3383bb_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_fbc856_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; -khtml-border-top-left-radius: 6px; border-top-left-radius: 6px; }
+.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; -khtml-border-top-right-radius: 6px; border-top-right-radius: 6px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; -khtml-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; -khtml-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #eeeeee url(images/ui-bg_flat_0_eeeeee_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); }
+.ui-widget-shadow { margin: -4px 0 0 -4px; padding: 4px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 0px; -khtml-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; }/*!
+ * jQuery UI Resizable 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.ui-resizable { position: relative;}
+.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }
+.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*!
+ * jQuery UI Selectable 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*!
+ * jQuery UI Accordion 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.ui-accordion { width: 100%; }
+.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.ui-accordion .ui-accordion-li-fix { display: inline; }
+.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.ui-accordion .ui-accordion-content-active { display: block; }
+/*!
+ * jQuery UI Autocomplete 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.ui-autocomplete { position: absolute; cursor: default; }	
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.21
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*!
+ * jQuery UI Button 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
+.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.ui-button-icons-only { width: 3.4em; } 
+button.ui-button-icons-only { width: 3.7em; } 
+
+/*button text element */
+.ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.ui-buttonset { margin-right: 7px; }
+.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*!
+ * jQuery UI Dialog 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*!
+ * jQuery UI Slider 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }/*!
+ * jQuery UI Tabs 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
+/*!
+ * jQuery UI Datepicker 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.ui-datepicker .ui-datepicker-prev { left:2px; }
+.ui-datepicker .ui-datepicker-next { right:2px; }
+.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.ui-datepicker select.ui-datepicker-month, 
+.ui-datepicker select.ui-datepicker-year { width: 49%;}
+.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.ui-datepicker td { border: 0; padding: 1px; }
+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi { width:auto; }
+.ui-datepicker-multi .ui-datepicker-group { float:left; }
+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.ui-datepicker-rtl { direction: rtl; }
+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}/*!
+ * jQuery UI Progressbar 1.8.21
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
+.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
