From d595790d8daf185be89dc23d40b65910d2c3b94e Mon Sep 17 00:00:00 2001
From: Christian Dresen <c.dresen@fh-muenster.de>
Date: Thu, 18 Aug 2016 17:10:27 +0200
Subject: [PATCH] Refactored Everything

---
 ldap/Dockerfile                               |   42 -
 ldap/build.sh                                 |    1 -
 ldap/data/config.php                          |  576 --
 ldap/data/fusiondirectory.conf                |   26 -
 .../fusiondirectory-apache.conf               |   18 -
 .../data/fusiondirectory/fusiondirectory.conf |   26 -
 ldap/data/ldap_conf/ldap.conf                 |   17 -
 ldap/data/ldap_conf/schema/README             |   80 -
 ldap/data/ldap_conf/schema/collective.ldif    |   48 -
 ldap/data/ldap_conf/schema/collective.schema  |   65 -
 ldap/data/ldap_conf/schema/corba.ldif         |   42 -
 ldap/data/ldap_conf/schema/corba.schema       |   61 -
 ldap/data/ldap_conf/schema/core.ldif          |  603 --
 ldap/data/ldap_conf/schema/core.schema        |  622 --
 ldap/data/ldap_conf/schema/cosine.ldif        |  200 -
 ldap/data/ldap_conf/schema/cosine.schema      |  404 -
 ldap/data/ldap_conf/schema/duaconf.ldif       |   83 -
 ldap/data/ldap_conf/schema/duaconf.schema     |  153 -
 ldap/data/ldap_conf/schema/dyngroup.ldif      |   71 -
 ldap/data/ldap_conf/schema/dyngroup.schema    |   91 -
 .../fusiondirectory/core-fd-conf.schema       |  562 -
 .../schema/fusiondirectory/core-fd.schema     |  148 -
 .../schema/fusiondirectory/ldapns.schema      |   23 -
 .../schema/fusiondirectory/rfc2307bis.schema  |  288 -
 .../schema/fusiondirectory/template-fd.schema |   15 -
 ldap/data/ldap_conf/schema/inetorgperson.ldif |   69 -
 .../ldap_conf/schema/inetorgperson.schema     |  113 -
 ldap/data/ldap_conf/schema/java.ldif          |   59 -
 ldap/data/ldap_conf/schema/java.schema        |  109 -
 ldap/data/ldap_conf/schema/misc.ldif          |   45 -
 ldap/data/ldap_conf/schema/misc.schema        |   75 -
 ldap/data/ldap_conf/schema/nis.ldif           |  120 -
 ldap/data/ldap_conf/schema/nis.schema         |  237 -
 ldap/data/ldap_conf/schema/openldap.ldif      |   88 -
 ldap/data/ldap_conf/schema/openldap.schema    |   54 -
 ldap/data/ldap_conf/schema/pmi.ldif           |  123 -
 ldap/data/ldap_conf/schema/pmi.schema         |  476 -
 ldap/data/ldap_conf/schema/ppolicy.ldif       |   84 -
 ldap/data/ldap_conf/schema/ppolicy.schema     |  159 -
 ldap/data/ldap_conf/slapd.d/cn=config.ldif    |   16 -
 .../slapd.d/cn=config/cn=module{0}.ldif       |   14 -
 .../slapd.d/cn=config/cn=schema.ldif          |   12 -
 .../cn=config/cn=schema/cn={0}core.ldif       |  249 -
 .../cn=config/cn=schema/cn={1}cosine.ldif     |  178 -
 .../cn=config/cn=schema/cn={2}nis.ldif        |  108 -
 .../cn=schema/cn={3}inetorgperson.ldif        |   49 -
 .../cn=config/cn=schema/cn={4}core-fd.ldif    |   90 -
 .../cn=schema/cn={5}core-fd-conf.ldif         |  284 -
 .../cn=config/cn=schema/cn={6}ldapns.ldif     |   20 -
 .../cn=schema/cn={7}template-fd.ldif          |   17 -
 .../slapd.d/cn=config/olcBackend={0}mdb.ldif  |   12 -
 .../cn=config/olcDatabase={-1}frontend.ldif   |   18 -
 .../cn=config/olcDatabase={0}config.ldif      |   15 -
 .../slapd.d/cn=config/olcDatabase={1}mdb.ldif |   28 -
 ldap/data/ldap_db/data.mdb                    |  Bin 147456 -> 0 bytes
 ldap/data/ldap_db/lock.mdb                    |  Bin 8192 -> 0 bytes
 ldap/data/start.sh                            |   25 -
 ldap/initial_config.tar.gz                    |  Bin 0 -> 23805 bytes
 ldap/initial_database.gz                      |  Bin 0 -> 39856 bytes
 ldap/run.sh                                   |   28 +-
 ldap/stop_ldap.sh                             |    3 -
 slacktest                                     |    3 -
 web_docker/Dockerfile                         |   35 -
 web_docker/build.sh                           |    1 -
 web_docker/entrypoint.sh                      |   10 -
 web_docker/run.sh                             |    6 -
 www/build.sh                                  |    1 +
 www/docker/Dockerfile                         |   46 +
 www/docker/entrypoint.sh                      |   13 +
 www/docker/ldapdb_base.py                     |  268 +
 www/docker/ldapdb_fields.py                   |  207 +
 www/nginx/nginx_warpinfra.conf                |   39 +
 {web => www/nginx}/uwsgi.ini                  |    2 +-
 www/nginx/uwsgi_params                        |   16 +
 www/nginx/warpinfra.crt                       |   33 +
 www/nginx/warpinfra.key                       |   52 +
 www/run.sh                                    |   11 +
 www/web/.idea/.name                           |    1 +
 www/web/.idea/deployment.xml                  |   22 +
 www/web/.idea/dictionaries/dresen.xml         |   24 +
 .../inspectionProfiles/Project_Default.xml    |    6 +
 .../inspectionProfiles/profiles_settings.xml  |    7 +
 www/web/.idea/misc.xml                        |   14 +
 www/web/.idea/modules.xml                     |    8 +
 www/web/.idea/vcs.xml                         |    6 +
 www/web/.idea/web.iml                         |   26 +
 www/web/.idea/workspace.xml                   |  962 ++
 {web => www/web}/LICENSE                      |    0
 {web => www/web}/manage.py                    |    0
 www/web/static/admin/css/base.css             |  967 ++
 www/web/static/admin/css/changelists.css      |  341 +
 www/web/static/admin/css/dashboard.css        |   30 +
 www/web/static/admin/css/fonts.css            |   20 +
 www/web/static/admin/css/forms.css            |  499 +
 www/web/static/admin/css/login.css            |   78 +
 www/web/static/admin/css/rtl.css              |  256 +
 www/web/static/admin/css/widgets.css          |  565 +
 www/web/static/admin/fonts/LICENSE.txt        |  202 +
 www/web/static/admin/fonts/README.txt         |    2 +
 .../admin/fonts/Roboto-Bold-webfont.woff      |  Bin 0 -> 82564 bytes
 .../admin/fonts/Roboto-Light-webfont.woff     |  Bin 0 -> 81348 bytes
 .../admin/fonts/Roboto-Regular-webfont.woff   |  Bin 0 -> 80304 bytes
 www/web/static/admin/img/LICENSE              |   20 +
 www/web/static/admin/img/README.txt           |    7 +
 www/web/static/admin/img/calendar-icons.svg   |   14 +
 .../static/admin/img/gis/move_vertex_off.svg  |    1 +
 .../static/admin/img/gis/move_vertex_on.svg   |    1 +
 www/web/static/admin/img/icon-addlink.svg     |    3 +
 www/web/static/admin/img/icon-alert.svg       |    3 +
 www/web/static/admin/img/icon-calendar.svg    |    9 +
 www/web/static/admin/img/icon-changelink.svg  |    3 +
 www/web/static/admin/img/icon-clock.svg       |    9 +
 www/web/static/admin/img/icon-deletelink.svg  |    3 +
 www/web/static/admin/img/icon-no.svg          |    3 +
 www/web/static/admin/img/icon-unknown-alt.svg |    3 +
 www/web/static/admin/img/icon-unknown.svg     |    3 +
 www/web/static/admin/img/icon-yes.svg         |    3 +
 www/web/static/admin/img/inline-delete.svg    |    3 +
 www/web/static/admin/img/search.svg           |    3 +
 www/web/static/admin/img/selector-icons.svg   |   34 +
 www/web/static/admin/img/sorting-icons.svg    |   19 +
 www/web/static/admin/img/tooltag-add.svg      |    3 +
 .../static/admin/img/tooltag-arrowright.svg   |    3 +
 www/web/static/admin/js/SelectBox.js          |  135 +
 www/web/static/admin/js/SelectFilter2.js      |  198 +
 www/web/static/admin/js/actions.js            |  146 +
 www/web/static/admin/js/actions.min.js        |    6 +
 .../admin/js/admin/DateTimeShortcuts.js       |  364 +
 .../admin/js/admin/RelatedObjectLookups.js    |  160 +
 www/web/static/admin/js/calendar.js           |  178 +
 www/web/static/admin/js/collapse.js           |   26 +
 www/web/static/admin/js/collapse.min.js       |    2 +
 www/web/static/admin/js/core.js               |  263 +
 www/web/static/admin/js/inlines.js            |  275 +
 www/web/static/admin/js/inlines.min.js        |    9 +
 www/web/static/admin/js/jquery.init.js        |    8 +
 www/web/static/admin/js/prepopulate.js        |   42 +
 www/web/static/admin/js/prepopulate.min.js    |    1 +
 www/web/static/admin/js/timeparse.js          |  106 +
 www/web/static/admin/js/urlify.js             |  171 +
 .../admin/js/vendor/jquery/LICENSE-JQUERY.txt |   26 +
 .../static/admin/js/vendor/jquery/jquery.js   | 9210 +++++++++++++++++
 .../admin/js/vendor/jquery/jquery.min.js      |    0
 .../js/vendor/xregexp/LICENSE-XREGEXP.txt     |   21 +
 .../admin/js/vendor/xregexp/xregexp.min.js    |   18 +
 .../rest_framework/css/bootstrap-tweaks.css   |  234 +
 .../rest_framework/css/bootstrap.min.css      |    6 +
 www/web/static/rest_framework/css/default.css |   83 +
 .../static/rest_framework/css/prettify.css    |   30 +
 .../fonts/glyphicons-halflings-regular.eot    |  Bin
 .../fonts/glyphicons-halflings-regular.svg    |    0
 .../fonts/glyphicons-halflings-regular.ttf    |  Bin
 .../fonts/glyphicons-halflings-regular.woff   |  Bin
 .../fonts/glyphicons-halflings-regular.woff2  |  Bin
 .../img/glyphicons-halflings-white.png        |  Bin 0 -> 8777 bytes
 .../img/glyphicons-halflings.png              |  Bin 0 -> 12762 bytes
 www/web/static/rest_framework/img/grid.png    |  Bin 0 -> 1458 bytes
 www/web/static/rest_framework/js/ajax-form.js |  112 +
 .../static/rest_framework/js/bootstrap.min.js |    7 +
 www/web/static/rest_framework/js/csrf.js      |   52 +
 www/web/static/rest_framework/js/default.js   |   47 +
 .../rest_framework/js/jquery-1.12.4.min.js    |    5 +
 .../static/rest_framework/js/prettify-min.js  |   28 +
 {web => www/web}/templates/base.html          |    0
 .../web}/templates/licenses/bootstrap.txt     |    0
 .../web}/templates/licenses/chart_js.txt      |    0
 .../web}/templates/licenses/django.txt        |    0
 {web => www/web}/templates/licenses/gplv2.txt |    0
 .../web}/templates/media/chart_js/.gitignore  |    0
 .../web}/templates/media/chart_js/.travis.yml |    0
 .../web}/templates/media/chart_js/LICENSE     |    0
 .../web}/templates/media/chart_js/README.md   |    0
 .../templates/media/chart_js/css/demo.css     |    0
 .../web}/templates/media/chart_js/index.html  |    0
 .../web}/templates/media/chart_js/src/demo.js |    0
 .../templates/media/chart_js/src/legend.js    |    0
 .../media/chart_js/src/legend.legacy.js       |    0
 .../templates/media/chart_js/vendor/Chart.js  |    0
 .../templates/media/css/bootstrap-theme.css   |    0
 .../media/css/bootstrap-theme.css.map         |    0
 .../media/css/bootstrap-theme.min.css         |    0
 .../web}/templates/media/css/bootstrap.css    |    0
 .../templates/media/css/bootstrap.css.map     |    0
 .../templates/media/css/bootstrap.min.css     |    0
 .../web}/templates/media/django_logo.gif      |  Bin
 .../fonts/glyphicons-halflings-regular.eot    |  Bin 0 -> 20127 bytes
 .../fonts/glyphicons-halflings-regular.svg    |  288 +
 .../fonts/glyphicons-halflings-regular.ttf    |  Bin 0 -> 45404 bytes
 .../fonts/glyphicons-halflings-regular.woff   |  Bin 0 -> 23424 bytes
 .../fonts/glyphicons-halflings-regular.woff2  |  Bin 0 -> 18028 bytes
 .../web}/templates/media/js/bootstrap.js      |    0
 .../web}/templates/media/js/bootstrap.min.js  |    0
 www/web/templates/media/js/jquery.js          |    4 +
 {web => www/web}/templates/media/js/npm.js    |    0
 .../templates/media/warpzone_logo_large.png   |  Bin
 .../web}/templates/media/warpzone_medium.png  |  Bin
 .../web}/templates/media/warpzone_small.png   |  Bin
 {web => www/web}/warpauth/__init__.py         |    0
 www/web/warpauth/__init__.pyc                 |  Bin 0 -> 122 bytes
 .../__pycache__/__init__.cpython-34.pyc       |  Bin 0 -> 105 bytes
 .../warpauth/__pycache__/admin.cpython-34.pyc |  Bin 0 -> 620 bytes
 .../__pycache__/ldap_connector.cpython-34.pyc |  Bin 0 -> 1271 bytes
 .../__pycache__/models.cpython-34.pyc         |  Bin 0 -> 2393 bytes
 .../warpauth/__pycache__/urls.cpython-34.pyc  |  Bin 0 -> 732 bytes
 .../warpauth/__pycache__/util.cpython-34.pyc  |  Bin 0 -> 206 bytes
 {web => www/web}/warpauth/admin.py            |    0
 www/web/warpauth/admin.pyc                    |  Bin 0 -> 700 bytes
 {web => www/web}/warpauth/ldap_connector.py   |    0
 www/web/warpauth/ldap_connector.pyc           |  Bin 0 -> 1416 bytes
 www/web/warpauth/migrations/0001_initial.py   |   53 +
 www/web/warpauth/migrations/0001_initial.pyc  |  Bin 0 -> 1761 bytes
 .../migrations/0002_auto_20160818_1603.py     |   56 +
 .../web}/warpauth/migrations/__init__.py      |    0
 www/web/warpauth/migrations/__init__.pyc      |  Bin 0 -> 133 bytes
 .../__pycache__/0001_initial.cpython-34.pyc   |  Bin 0 -> 1557 bytes
 .../0002_auto_20160818_1603.cpython-34.pyc    |  Bin 0 -> 1323 bytes
 .../__pycache__/__init__.cpython-34.pyc       |  Bin 0 -> 129 bytes
 {web => www/web}/warpauth/models.py           |    6 +-
 www/web/warpauth/models.pyc                   |  Bin 0 -> 2744 bytes
 .../warpauth/templates/warpauth/login.html    |    0
 .../warpauth/templates/warpauth/profile.html  |    0
 .../warpauth/profile/change_password.html     |    0
 .../warpauth/profile/information.html         |    0
 .../warpauth/templates/warpauth/register.html |    0
 .../reset_password/change_password.html       |    0
 .../warpauth/reset_password/token_gen.html    |    0
 {web => www/web}/warpauth/tests.py            |    0
 {web => www/web}/warpauth/urls.py             |    0
 www/web/warpauth/urls.pyc                     |  Bin 0 -> 827 bytes
 {web => www/web}/warpauth/util.py             |    0
 www/web/warpauth/util.pyc                     |  Bin 0 -> 247 bytes
 {web => www/web}/warpauth/views/__init__.py   |    0
 www/web/warpauth/views/__init__.pyc           |  Bin 0 -> 159 bytes
 .../views/__pycache__/__init__.cpython-34.pyc |  Bin 0 -> 133 bytes
 .../views/__pycache__/login.cpython-34.pyc    |  Bin 0 -> 1409 bytes
 .../views/__pycache__/profile.cpython-34.pyc  |  Bin 0 -> 2567 bytes
 .../views/__pycache__/register.cpython-34.pyc |  Bin 0 -> 1586 bytes
 .../__pycache__/reset_password.cpython-34.pyc |  Bin 0 -> 2358 bytes
 .../web}/warpauth/views/admin/__init__.py     |    0
 {web => www/web}/warpauth/views/login.py      |    0
 www/web/warpauth/views/login.pyc              |  Bin 0 -> 1683 bytes
 {web => www/web}/warpauth/views/profile.py    |    2 +-
 www/web/warpauth/views/profile.pyc            |  Bin 0 -> 2912 bytes
 {web => www/web}/warpauth/views/register.py   |    0
 www/web/warpauth/views/register.pyc           |  Bin 0 -> 1828 bytes
 .../web}/warpauth/views/reset_password.py     |    0
 www/web/warpauth/views/reset_password.pyc     |  Bin 0 -> 2630 bytes
 {web => www/web}/warpfood/__init__.py         |    0
 www/web/warpfood/__init__.pyc                 |  Bin 0 -> 122 bytes
 .../__pycache__/__init__.cpython-34.pyc       |  Bin 0 -> 105 bytes
 .../warpfood/__pycache__/admin.cpython-34.pyc |  Bin 0 -> 778 bytes
 .../__pycache__/models.cpython-34.pyc         |  Bin 0 -> 4022 bytes
 .../warpfood/__pycache__/urls.cpython-34.pyc  |  Bin 0 -> 626 bytes
 .../warpfood/__pycache__/util.cpython-34.pyc  |  Bin 0 -> 586 bytes
 .../warpfood/__pycache__/views.cpython-34.pyc |  Bin 0 -> 3590 bytes
 {web => www/web}/warpfood/admin.py            |    0
 www/web/warpfood/admin.pyc                    |  Bin 0 -> 882 bytes
 www/web/warpfood/migrations/0001_initial.py   |   77 +
 www/web/warpfood/migrations/0001_initial.pyc  |  Bin 0 -> 2392 bytes
 .../web}/warpfood/migrations/__init__.py      |    0
 www/web/warpfood/migrations/__init__.pyc      |  Bin 0 -> 133 bytes
 .../__pycache__/0001_initial.cpython-34.pyc   |  Bin 0 -> 2125 bytes
 .../__pycache__/__init__.cpython-34.pyc       |  Bin 0 -> 129 bytes
 {web => www/web}/warpfood/models.py           |    0
 www/web/warpfood/models.pyc                   |  Bin 0 -> 4454 bytes
 .../warpfood/templates/warpfood/main.html     |    0
 .../warpfood/templates/warpfood/view.html     |    0
 {web => www/web}/warpfood/tests.py            |    0
 {web => www/web}/warpfood/urls.py             |    0
 www/web/warpfood/urls.pyc                     |  Bin 0 -> 715 bytes
 {web => www/web}/warpfood/util.py             |    0
 www/web/warpfood/util.pyc                     |  Bin 0 -> 689 bytes
 {web => www/web}/warpfood/views.py            |    2 +-
 www/web/warpfood/views.pyc                    |  Bin 0 -> 4108 bytes
 {web => www/web}/warpmain/__init__.py         |    0
 www/web/warpmain/__init__.pyc                 |  Bin 0 -> 122 bytes
 .../__pycache__/__init__.cpython-34.pyc       |  Bin 0 -> 105 bytes
 .../warpmain/__pycache__/admin.cpython-34.pyc |  Bin 0 -> 404 bytes
 .../__pycache__/models.cpython-34.pyc         |  Bin 0 -> 1064 bytes
 .../warpmain/__pycache__/urls.cpython-34.pyc  |  Bin 0 -> 501 bytes
 {web => www/web}/warpmain/admin.py            |    0
 www/web/warpmain/admin.pyc                    |  Bin 0 -> 463 bytes
 {web => www/web}/warpmain/apps.py             |    0
 www/web/warpmain/migrations/0001_initial.py   |   26 +
 www/web/warpmain/migrations/0001_initial.pyc  |  Bin 0 -> 1006 bytes
 .../web}/warpmain/migrations/__init__.py      |    0
 www/web/warpmain/migrations/__init__.pyc      |  Bin 0 -> 133 bytes
 .../__pycache__/0001_initial.cpython-34.pyc   |  Bin 0 -> 856 bytes
 .../__pycache__/__init__.cpython-34.pyc       |  Bin 0 -> 129 bytes
 {web => www/web}/warpmain/models.py           |    0
 www/web/warpmain/models.pyc                   |  Bin 0 -> 1246 bytes
 .../warpmain/templates/warpmain/about.html    |    0
 .../templates/warpmain/admin/dashboard.html   |    0
 .../templates/warpmain/admin/news.html        |    0
 .../warpmain/templates/warpmain/main.html     |    0
 {web => www/web}/warpmain/tests.py            |    0
 {web => www/web}/warpmain/urls.py             |    0
 www/web/warpmain/urls.pyc                     |  Bin 0 -> 587 bytes
 {web => www/web}/warpmain/views/__init__.py   |    0
 www/web/warpmain/views/__init__.pyc           |  Bin 0 -> 159 bytes
 .../views/__pycache__/__init__.cpython-34.pyc |  Bin 0 -> 133 bytes
 .../views/__pycache__/main.cpython-34.pyc     |  Bin 0 -> 804 bytes
 .../web}/warpmain/views/admin/__init__.py     |    0
 www/web/warpmain/views/admin/__init__.pyc     |  Bin 0 -> 134 bytes
 .../admin/__pycache__/__init__.cpython-34.pyc |  Bin 0 -> 117 bytes
 .../__pycache__/dashboard.cpython-34.pyc      |  Bin 0 -> 557 bytes
 .../admin/__pycache__/news.cpython-34.pyc     |  Bin 0 -> 1177 bytes
 .../web}/warpmain/views/admin/dashboard.py    |    0
 www/web/warpmain/views/admin/dashboard.pyc    |  Bin 0 -> 688 bytes
 {web => www/web}/warpmain/views/admin/news.py |    0
 www/web/warpmain/views/admin/news.pyc         |  Bin 0 -> 1411 bytes
 {web => www/web}/warpmain/views/main.py       |    0
 www/web/warpmain/views/main.pyc               |  Bin 0 -> 985 bytes
 {web/warpzone => www/web/warppay}/__init__.py |    0
 www/web/warppay/__init__.pyc                  |  Bin 0 -> 121 bytes
 .../__pycache__/__init__.cpython-34.pyc       |  Bin 0 -> 104 bytes
 .../warppay/__pycache__/admin.cpython-34.pyc  |  Bin 0 -> 101 bytes
 .../warppay/__pycache__/models.cpython-34.pyc |  Bin 0 -> 1460 bytes
 .../warppay/__pycache__/urls.cpython-34.pyc   |  Bin 0 -> 270 bytes
 .../warppay/__pycache__/views.cpython-34.pyc  |  Bin 0 -> 1447 bytes
 .../web/warppay/admin.py                      |    0
 www/web/warppay/admin.pyc                     |  Bin 0 -> 118 bytes
 www/web/warppay/apps.py                       |    5 +
 www/web/warppay/migrations/0001_initial.py    |   34 +
 www/web/warppay/migrations/0001_initial.pyc   |  Bin 0 -> 1179 bytes
 www/web/warppay/migrations/__init__.py        |    0
 www/web/warppay/migrations/__init__.pyc       |  Bin 0 -> 132 bytes
 .../__pycache__/0001_initial.cpython-34.pyc   |  Bin 0 -> 1015 bytes
 .../__pycache__/__init__.cpython-34.pyc       |  Bin 0 -> 128 bytes
 www/web/warppay/models.py                     |   25 +
 www/web/warppay/models.pyc                    |  Bin 0 -> 1672 bytes
 www/web/warppay/templates/warppay/main.html   |   21 +
 www/web/warppay/tests.py                      |    3 +
 www/web/warppay/urls.py                       |    7 +
 www/web/warppay/urls.pyc                      |  Bin 0 -> 320 bytes
 www/web/warppay/views.py                      |   41 +
 www/web/warppay/views.pyc                     |  Bin 0 -> 1376 bytes
 {web => www/web}/warpzone.db                  |  Bin 67584 -> 76800 bytes
 www/web/warpzone/__init__.py                  |    0
 www/web/warpzone/__init__.pyc                 |  Bin 0 -> 122 bytes
 .../__pycache__/__init__.cpython-34.pyc       |  Bin 0 -> 105 bytes
 .../__pycache__/settings.cpython-34.pyc       |  Bin 0 -> 4639 bytes
 .../warpzone/__pycache__/urls.cpython-34.pyc  |  Bin 0 -> 598 bytes
 .../warpzone/__pycache__/wsgi.cpython-34.pyc  |  Bin 0 -> 530 bytes
 {web => www/web}/warpzone/settings.py         |   37 +-
 www/web/warpzone/settings.pyc                 |  Bin 0 -> 5109 bytes
 {web => www/web}/warpzone/urls.py             |    1 +
 www/web/warpzone/urls.pyc                     |  Bin 0 -> 690 bytes
 {web => www/web}/warpzone/wsgi.py             |    0
 www/web/warpzone/wsgi.pyc                     |  Bin 0 -> 570 bytes
 350 files changed, 17539 insertions(+), 7289 deletions(-)
 delete mode 100644 ldap/Dockerfile
 delete mode 100644 ldap/build.sh
 delete mode 100644 ldap/data/config.php
 delete mode 100644 ldap/data/fusiondirectory.conf
 delete mode 100644 ldap/data/fusiondirectory/fusiondirectory-apache.conf
 delete mode 100644 ldap/data/fusiondirectory/fusiondirectory.conf
 delete mode 100644 ldap/data/ldap_conf/ldap.conf
 delete mode 100644 ldap/data/ldap_conf/schema/README
 delete mode 100644 ldap/data/ldap_conf/schema/collective.ldif
 delete mode 100644 ldap/data/ldap_conf/schema/collective.schema
 delete mode 100644 ldap/data/ldap_conf/schema/corba.ldif
 delete mode 100644 ldap/data/ldap_conf/schema/corba.schema
 delete mode 100644 ldap/data/ldap_conf/schema/core.ldif
 delete mode 100644 ldap/data/ldap_conf/schema/core.schema
 delete mode 100644 ldap/data/ldap_conf/schema/cosine.ldif
 delete mode 100644 ldap/data/ldap_conf/schema/cosine.schema
 delete mode 100644 ldap/data/ldap_conf/schema/duaconf.ldif
 delete mode 100644 ldap/data/ldap_conf/schema/duaconf.schema
 delete mode 100644 ldap/data/ldap_conf/schema/dyngroup.ldif
 delete mode 100644 ldap/data/ldap_conf/schema/dyngroup.schema
 delete mode 100644 ldap/data/ldap_conf/schema/fusiondirectory/core-fd-conf.schema
 delete mode 100644 ldap/data/ldap_conf/schema/fusiondirectory/core-fd.schema
 delete mode 100644 ldap/data/ldap_conf/schema/fusiondirectory/ldapns.schema
 delete mode 100644 ldap/data/ldap_conf/schema/fusiondirectory/rfc2307bis.schema
 delete mode 100644 ldap/data/ldap_conf/schema/fusiondirectory/template-fd.schema
 delete mode 100644 ldap/data/ldap_conf/schema/inetorgperson.ldif
 delete mode 100644 ldap/data/ldap_conf/schema/inetorgperson.schema
 delete mode 100644 ldap/data/ldap_conf/schema/java.ldif
 delete mode 100644 ldap/data/ldap_conf/schema/java.schema
 delete mode 100644 ldap/data/ldap_conf/schema/misc.ldif
 delete mode 100644 ldap/data/ldap_conf/schema/misc.schema
 delete mode 100644 ldap/data/ldap_conf/schema/nis.ldif
 delete mode 100644 ldap/data/ldap_conf/schema/nis.schema
 delete mode 100644 ldap/data/ldap_conf/schema/openldap.ldif
 delete mode 100644 ldap/data/ldap_conf/schema/openldap.schema
 delete mode 100644 ldap/data/ldap_conf/schema/pmi.ldif
 delete mode 100644 ldap/data/ldap_conf/schema/pmi.schema
 delete mode 100644 ldap/data/ldap_conf/schema/ppolicy.ldif
 delete mode 100644 ldap/data/ldap_conf/schema/ppolicy.schema
 delete mode 100644 ldap/data/ldap_conf/slapd.d/cn=config.ldif
 delete mode 100644 ldap/data/ldap_conf/slapd.d/cn=config/cn=module{0}.ldif
 delete mode 100644 ldap/data/ldap_conf/slapd.d/cn=config/cn=schema.ldif
 delete mode 100644 ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={0}core.ldif
 delete mode 100644 ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={1}cosine.ldif
 delete mode 100644 ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={2}nis.ldif
 delete mode 100644 ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={3}inetorgperson.ldif
 delete mode 100644 ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={4}core-fd.ldif
 delete mode 100644 ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={5}core-fd-conf.ldif
 delete mode 100644 ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={6}ldapns.ldif
 delete mode 100644 ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={7}template-fd.ldif
 delete mode 100644 ldap/data/ldap_conf/slapd.d/cn=config/olcBackend={0}mdb.ldif
 delete mode 100644 ldap/data/ldap_conf/slapd.d/cn=config/olcDatabase={-1}frontend.ldif
 delete mode 100644 ldap/data/ldap_conf/slapd.d/cn=config/olcDatabase={0}config.ldif
 delete mode 100644 ldap/data/ldap_conf/slapd.d/cn=config/olcDatabase={1}mdb.ldif
 delete mode 100644 ldap/data/ldap_db/data.mdb
 delete mode 100644 ldap/data/ldap_db/lock.mdb
 delete mode 100644 ldap/data/start.sh
 create mode 100644 ldap/initial_config.tar.gz
 create mode 100644 ldap/initial_database.gz
 delete mode 100644 ldap/stop_ldap.sh
 delete mode 100644 slacktest
 delete mode 100644 web_docker/Dockerfile
 delete mode 100644 web_docker/build.sh
 delete mode 100644 web_docker/entrypoint.sh
 delete mode 100644 web_docker/run.sh
 create mode 100644 www/build.sh
 create mode 100644 www/docker/Dockerfile
 create mode 100644 www/docker/entrypoint.sh
 create mode 100644 www/docker/ldapdb_base.py
 create mode 100644 www/docker/ldapdb_fields.py
 create mode 100644 www/nginx/nginx_warpinfra.conf
 rename {web => www/nginx}/uwsgi.ini (87%)
 create mode 100644 www/nginx/uwsgi_params
 create mode 100644 www/nginx/warpinfra.crt
 create mode 100644 www/nginx/warpinfra.key
 create mode 100644 www/run.sh
 create mode 100644 www/web/.idea/.name
 create mode 100644 www/web/.idea/deployment.xml
 create mode 100644 www/web/.idea/dictionaries/dresen.xml
 create mode 100644 www/web/.idea/inspectionProfiles/Project_Default.xml
 create mode 100644 www/web/.idea/inspectionProfiles/profiles_settings.xml
 create mode 100644 www/web/.idea/misc.xml
 create mode 100644 www/web/.idea/modules.xml
 create mode 100644 www/web/.idea/vcs.xml
 create mode 100644 www/web/.idea/web.iml
 create mode 100644 www/web/.idea/workspace.xml
 rename {web => www/web}/LICENSE (100%)
 rename {web => www/web}/manage.py (100%)
 create mode 100644 www/web/static/admin/css/base.css
 create mode 100644 www/web/static/admin/css/changelists.css
 create mode 100644 www/web/static/admin/css/dashboard.css
 create mode 100644 www/web/static/admin/css/fonts.css
 create mode 100644 www/web/static/admin/css/forms.css
 create mode 100644 www/web/static/admin/css/login.css
 create mode 100644 www/web/static/admin/css/rtl.css
 create mode 100644 www/web/static/admin/css/widgets.css
 create mode 100644 www/web/static/admin/fonts/LICENSE.txt
 create mode 100644 www/web/static/admin/fonts/README.txt
 create mode 100644 www/web/static/admin/fonts/Roboto-Bold-webfont.woff
 create mode 100644 www/web/static/admin/fonts/Roboto-Light-webfont.woff
 create mode 100644 www/web/static/admin/fonts/Roboto-Regular-webfont.woff
 create mode 100644 www/web/static/admin/img/LICENSE
 create mode 100644 www/web/static/admin/img/README.txt
 create mode 100644 www/web/static/admin/img/calendar-icons.svg
 create mode 100644 www/web/static/admin/img/gis/move_vertex_off.svg
 create mode 100644 www/web/static/admin/img/gis/move_vertex_on.svg
 create mode 100644 www/web/static/admin/img/icon-addlink.svg
 create mode 100644 www/web/static/admin/img/icon-alert.svg
 create mode 100644 www/web/static/admin/img/icon-calendar.svg
 create mode 100644 www/web/static/admin/img/icon-changelink.svg
 create mode 100644 www/web/static/admin/img/icon-clock.svg
 create mode 100644 www/web/static/admin/img/icon-deletelink.svg
 create mode 100644 www/web/static/admin/img/icon-no.svg
 create mode 100644 www/web/static/admin/img/icon-unknown-alt.svg
 create mode 100644 www/web/static/admin/img/icon-unknown.svg
 create mode 100644 www/web/static/admin/img/icon-yes.svg
 create mode 100644 www/web/static/admin/img/inline-delete.svg
 create mode 100644 www/web/static/admin/img/search.svg
 create mode 100644 www/web/static/admin/img/selector-icons.svg
 create mode 100644 www/web/static/admin/img/sorting-icons.svg
 create mode 100644 www/web/static/admin/img/tooltag-add.svg
 create mode 100644 www/web/static/admin/img/tooltag-arrowright.svg
 create mode 100644 www/web/static/admin/js/SelectBox.js
 create mode 100644 www/web/static/admin/js/SelectFilter2.js
 create mode 100644 www/web/static/admin/js/actions.js
 create mode 100644 www/web/static/admin/js/actions.min.js
 create mode 100644 www/web/static/admin/js/admin/DateTimeShortcuts.js
 create mode 100644 www/web/static/admin/js/admin/RelatedObjectLookups.js
 create mode 100644 www/web/static/admin/js/calendar.js
 create mode 100644 www/web/static/admin/js/collapse.js
 create mode 100644 www/web/static/admin/js/collapse.min.js
 create mode 100644 www/web/static/admin/js/core.js
 create mode 100644 www/web/static/admin/js/inlines.js
 create mode 100644 www/web/static/admin/js/inlines.min.js
 create mode 100644 www/web/static/admin/js/jquery.init.js
 create mode 100644 www/web/static/admin/js/prepopulate.js
 create mode 100644 www/web/static/admin/js/prepopulate.min.js
 create mode 100644 www/web/static/admin/js/timeparse.js
 create mode 100644 www/web/static/admin/js/urlify.js
 create mode 100644 www/web/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt
 create mode 100644 www/web/static/admin/js/vendor/jquery/jquery.js
 rename web/templates/media/js/jquery.js => www/web/static/admin/js/vendor/jquery/jquery.min.js (100%)
 create mode 100644 www/web/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt
 create mode 100644 www/web/static/admin/js/vendor/xregexp/xregexp.min.js
 create mode 100644 www/web/static/rest_framework/css/bootstrap-tweaks.css
 create mode 100644 www/web/static/rest_framework/css/bootstrap.min.css
 create mode 100644 www/web/static/rest_framework/css/default.css
 create mode 100644 www/web/static/rest_framework/css/prettify.css
 rename {web/templates/media => www/web/static/rest_framework}/fonts/glyphicons-halflings-regular.eot (100%)
 rename {web/templates/media => www/web/static/rest_framework}/fonts/glyphicons-halflings-regular.svg (100%)
 rename {web/templates/media => www/web/static/rest_framework}/fonts/glyphicons-halflings-regular.ttf (100%)
 rename {web/templates/media => www/web/static/rest_framework}/fonts/glyphicons-halflings-regular.woff (100%)
 rename {web/templates/media => www/web/static/rest_framework}/fonts/glyphicons-halflings-regular.woff2 (100%)
 create mode 100644 www/web/static/rest_framework/img/glyphicons-halflings-white.png
 create mode 100644 www/web/static/rest_framework/img/glyphicons-halflings.png
 create mode 100644 www/web/static/rest_framework/img/grid.png
 create mode 100644 www/web/static/rest_framework/js/ajax-form.js
 create mode 100644 www/web/static/rest_framework/js/bootstrap.min.js
 create mode 100644 www/web/static/rest_framework/js/csrf.js
 create mode 100644 www/web/static/rest_framework/js/default.js
 create mode 100644 www/web/static/rest_framework/js/jquery-1.12.4.min.js
 create mode 100644 www/web/static/rest_framework/js/prettify-min.js
 rename {web => www/web}/templates/base.html (100%)
 rename {web => www/web}/templates/licenses/bootstrap.txt (100%)
 rename {web => www/web}/templates/licenses/chart_js.txt (100%)
 rename {web => www/web}/templates/licenses/django.txt (100%)
 rename {web => www/web}/templates/licenses/gplv2.txt (100%)
 rename {web => www/web}/templates/media/chart_js/.gitignore (100%)
 rename {web => www/web}/templates/media/chart_js/.travis.yml (100%)
 rename {web => www/web}/templates/media/chart_js/LICENSE (100%)
 rename {web => www/web}/templates/media/chart_js/README.md (100%)
 rename {web => www/web}/templates/media/chart_js/css/demo.css (100%)
 rename {web => www/web}/templates/media/chart_js/index.html (100%)
 rename {web => www/web}/templates/media/chart_js/src/demo.js (100%)
 rename {web => www/web}/templates/media/chart_js/src/legend.js (100%)
 rename {web => www/web}/templates/media/chart_js/src/legend.legacy.js (100%)
 rename {web => www/web}/templates/media/chart_js/vendor/Chart.js (100%)
 rename {web => www/web}/templates/media/css/bootstrap-theme.css (100%)
 rename {web => www/web}/templates/media/css/bootstrap-theme.css.map (100%)
 rename {web => www/web}/templates/media/css/bootstrap-theme.min.css (100%)
 rename {web => www/web}/templates/media/css/bootstrap.css (100%)
 rename {web => www/web}/templates/media/css/bootstrap.css.map (100%)
 rename {web => www/web}/templates/media/css/bootstrap.min.css (100%)
 rename {web => www/web}/templates/media/django_logo.gif (100%)
 create mode 100644 www/web/templates/media/fonts/glyphicons-halflings-regular.eot
 create mode 100644 www/web/templates/media/fonts/glyphicons-halflings-regular.svg
 create mode 100644 www/web/templates/media/fonts/glyphicons-halflings-regular.ttf
 create mode 100644 www/web/templates/media/fonts/glyphicons-halflings-regular.woff
 create mode 100644 www/web/templates/media/fonts/glyphicons-halflings-regular.woff2
 rename {web => www/web}/templates/media/js/bootstrap.js (100%)
 rename {web => www/web}/templates/media/js/bootstrap.min.js (100%)
 create mode 100644 www/web/templates/media/js/jquery.js
 rename {web => www/web}/templates/media/js/npm.js (100%)
 rename {web => www/web}/templates/media/warpzone_logo_large.png (100%)
 rename {web => www/web}/templates/media/warpzone_medium.png (100%)
 rename {web => www/web}/templates/media/warpzone_small.png (100%)
 rename {web => www/web}/warpauth/__init__.py (100%)
 create mode 100644 www/web/warpauth/__init__.pyc
 create mode 100644 www/web/warpauth/__pycache__/__init__.cpython-34.pyc
 create mode 100644 www/web/warpauth/__pycache__/admin.cpython-34.pyc
 create mode 100644 www/web/warpauth/__pycache__/ldap_connector.cpython-34.pyc
 create mode 100644 www/web/warpauth/__pycache__/models.cpython-34.pyc
 create mode 100644 www/web/warpauth/__pycache__/urls.cpython-34.pyc
 create mode 100644 www/web/warpauth/__pycache__/util.cpython-34.pyc
 rename {web => www/web}/warpauth/admin.py (100%)
 create mode 100644 www/web/warpauth/admin.pyc
 rename {web => www/web}/warpauth/ldap_connector.py (100%)
 create mode 100644 www/web/warpauth/ldap_connector.pyc
 create mode 100644 www/web/warpauth/migrations/0001_initial.py
 create mode 100644 www/web/warpauth/migrations/0001_initial.pyc
 create mode 100644 www/web/warpauth/migrations/0002_auto_20160818_1603.py
 rename {web => www/web}/warpauth/migrations/__init__.py (100%)
 create mode 100644 www/web/warpauth/migrations/__init__.pyc
 create mode 100644 www/web/warpauth/migrations/__pycache__/0001_initial.cpython-34.pyc
 create mode 100644 www/web/warpauth/migrations/__pycache__/0002_auto_20160818_1603.cpython-34.pyc
 create mode 100644 www/web/warpauth/migrations/__pycache__/__init__.cpython-34.pyc
 rename {web => www/web}/warpauth/models.py (87%)
 create mode 100644 www/web/warpauth/models.pyc
 rename {web => www/web}/warpauth/templates/warpauth/login.html (100%)
 rename {web => www/web}/warpauth/templates/warpauth/profile.html (100%)
 rename {web => www/web}/warpauth/templates/warpauth/profile/change_password.html (100%)
 rename {web => www/web}/warpauth/templates/warpauth/profile/information.html (100%)
 rename {web => www/web}/warpauth/templates/warpauth/register.html (100%)
 rename {web => www/web}/warpauth/templates/warpauth/reset_password/change_password.html (100%)
 rename {web => www/web}/warpauth/templates/warpauth/reset_password/token_gen.html (100%)
 rename {web => www/web}/warpauth/tests.py (100%)
 rename {web => www/web}/warpauth/urls.py (100%)
 create mode 100644 www/web/warpauth/urls.pyc
 rename {web => www/web}/warpauth/util.py (100%)
 create mode 100644 www/web/warpauth/util.pyc
 rename {web => www/web}/warpauth/views/__init__.py (100%)
 create mode 100644 www/web/warpauth/views/__init__.pyc
 create mode 100644 www/web/warpauth/views/__pycache__/__init__.cpython-34.pyc
 create mode 100644 www/web/warpauth/views/__pycache__/login.cpython-34.pyc
 create mode 100644 www/web/warpauth/views/__pycache__/profile.cpython-34.pyc
 create mode 100644 www/web/warpauth/views/__pycache__/register.cpython-34.pyc
 create mode 100644 www/web/warpauth/views/__pycache__/reset_password.cpython-34.pyc
 rename {web => www/web}/warpauth/views/admin/__init__.py (100%)
 rename {web => www/web}/warpauth/views/login.py (100%)
 create mode 100644 www/web/warpauth/views/login.pyc
 rename {web => www/web}/warpauth/views/profile.py (99%)
 create mode 100644 www/web/warpauth/views/profile.pyc
 rename {web => www/web}/warpauth/views/register.py (100%)
 create mode 100644 www/web/warpauth/views/register.pyc
 rename {web => www/web}/warpauth/views/reset_password.py (100%)
 create mode 100644 www/web/warpauth/views/reset_password.pyc
 rename {web => www/web}/warpfood/__init__.py (100%)
 create mode 100644 www/web/warpfood/__init__.pyc
 create mode 100644 www/web/warpfood/__pycache__/__init__.cpython-34.pyc
 create mode 100644 www/web/warpfood/__pycache__/admin.cpython-34.pyc
 create mode 100644 www/web/warpfood/__pycache__/models.cpython-34.pyc
 create mode 100644 www/web/warpfood/__pycache__/urls.cpython-34.pyc
 create mode 100644 www/web/warpfood/__pycache__/util.cpython-34.pyc
 create mode 100644 www/web/warpfood/__pycache__/views.cpython-34.pyc
 rename {web => www/web}/warpfood/admin.py (100%)
 create mode 100644 www/web/warpfood/admin.pyc
 create mode 100644 www/web/warpfood/migrations/0001_initial.py
 create mode 100644 www/web/warpfood/migrations/0001_initial.pyc
 rename {web => www/web}/warpfood/migrations/__init__.py (100%)
 create mode 100644 www/web/warpfood/migrations/__init__.pyc
 create mode 100644 www/web/warpfood/migrations/__pycache__/0001_initial.cpython-34.pyc
 create mode 100644 www/web/warpfood/migrations/__pycache__/__init__.cpython-34.pyc
 rename {web => www/web}/warpfood/models.py (100%)
 create mode 100644 www/web/warpfood/models.pyc
 rename {web => www/web}/warpfood/templates/warpfood/main.html (100%)
 rename {web => www/web}/warpfood/templates/warpfood/view.html (100%)
 rename {web => www/web}/warpfood/tests.py (100%)
 rename {web => www/web}/warpfood/urls.py (100%)
 create mode 100644 www/web/warpfood/urls.pyc
 rename {web => www/web}/warpfood/util.py (100%)
 create mode 100644 www/web/warpfood/util.pyc
 rename {web => www/web}/warpfood/views.py (99%)
 create mode 100644 www/web/warpfood/views.pyc
 rename {web => www/web}/warpmain/__init__.py (100%)
 create mode 100644 www/web/warpmain/__init__.pyc
 create mode 100644 www/web/warpmain/__pycache__/__init__.cpython-34.pyc
 create mode 100644 www/web/warpmain/__pycache__/admin.cpython-34.pyc
 create mode 100644 www/web/warpmain/__pycache__/models.cpython-34.pyc
 create mode 100644 www/web/warpmain/__pycache__/urls.cpython-34.pyc
 rename {web => www/web}/warpmain/admin.py (100%)
 create mode 100644 www/web/warpmain/admin.pyc
 rename {web => www/web}/warpmain/apps.py (100%)
 create mode 100644 www/web/warpmain/migrations/0001_initial.py
 create mode 100644 www/web/warpmain/migrations/0001_initial.pyc
 rename {web => www/web}/warpmain/migrations/__init__.py (100%)
 create mode 100644 www/web/warpmain/migrations/__init__.pyc
 create mode 100644 www/web/warpmain/migrations/__pycache__/0001_initial.cpython-34.pyc
 create mode 100644 www/web/warpmain/migrations/__pycache__/__init__.cpython-34.pyc
 rename {web => www/web}/warpmain/models.py (100%)
 create mode 100644 www/web/warpmain/models.pyc
 rename {web => www/web}/warpmain/templates/warpmain/about.html (100%)
 rename {web => www/web}/warpmain/templates/warpmain/admin/dashboard.html (100%)
 rename {web => www/web}/warpmain/templates/warpmain/admin/news.html (100%)
 rename {web => www/web}/warpmain/templates/warpmain/main.html (100%)
 rename {web => www/web}/warpmain/tests.py (100%)
 rename {web => www/web}/warpmain/urls.py (100%)
 create mode 100644 www/web/warpmain/urls.pyc
 rename {web => www/web}/warpmain/views/__init__.py (100%)
 create mode 100644 www/web/warpmain/views/__init__.pyc
 create mode 100644 www/web/warpmain/views/__pycache__/__init__.cpython-34.pyc
 create mode 100644 www/web/warpmain/views/__pycache__/main.cpython-34.pyc
 rename {web => www/web}/warpmain/views/admin/__init__.py (100%)
 create mode 100644 www/web/warpmain/views/admin/__init__.pyc
 create mode 100644 www/web/warpmain/views/admin/__pycache__/__init__.cpython-34.pyc
 create mode 100644 www/web/warpmain/views/admin/__pycache__/dashboard.cpython-34.pyc
 create mode 100644 www/web/warpmain/views/admin/__pycache__/news.cpython-34.pyc
 rename {web => www/web}/warpmain/views/admin/dashboard.py (100%)
 create mode 100644 www/web/warpmain/views/admin/dashboard.pyc
 rename {web => www/web}/warpmain/views/admin/news.py (100%)
 create mode 100644 www/web/warpmain/views/admin/news.pyc
 rename {web => www/web}/warpmain/views/main.py (100%)
 create mode 100644 www/web/warpmain/views/main.pyc
 rename {web/warpzone => www/web/warppay}/__init__.py (100%)
 create mode 100644 www/web/warppay/__init__.pyc
 create mode 100644 www/web/warppay/__pycache__/__init__.cpython-34.pyc
 create mode 100644 www/web/warppay/__pycache__/admin.cpython-34.pyc
 create mode 100644 www/web/warppay/__pycache__/models.cpython-34.pyc
 create mode 100644 www/web/warppay/__pycache__/urls.cpython-34.pyc
 create mode 100644 www/web/warppay/__pycache__/views.cpython-34.pyc
 rename ldap/data/ldap_conf/schema/fusiondirectory/openssh-lpk.ldif => www/web/warppay/admin.py (100%)
 create mode 100644 www/web/warppay/admin.pyc
 create mode 100644 www/web/warppay/apps.py
 create mode 100644 www/web/warppay/migrations/0001_initial.py
 create mode 100644 www/web/warppay/migrations/0001_initial.pyc
 create mode 100644 www/web/warppay/migrations/__init__.py
 create mode 100644 www/web/warppay/migrations/__init__.pyc
 create mode 100644 www/web/warppay/migrations/__pycache__/0001_initial.cpython-34.pyc
 create mode 100644 www/web/warppay/migrations/__pycache__/__init__.cpython-34.pyc
 create mode 100644 www/web/warppay/models.py
 create mode 100644 www/web/warppay/models.pyc
 create mode 100644 www/web/warppay/templates/warppay/main.html
 create mode 100644 www/web/warppay/tests.py
 create mode 100644 www/web/warppay/urls.py
 create mode 100644 www/web/warppay/urls.pyc
 create mode 100644 www/web/warppay/views.py
 create mode 100644 www/web/warppay/views.pyc
 rename {web => www/web}/warpzone.db (78%)
 create mode 100644 www/web/warpzone/__init__.py
 create mode 100644 www/web/warpzone/__init__.pyc
 create mode 100644 www/web/warpzone/__pycache__/__init__.cpython-34.pyc
 create mode 100644 www/web/warpzone/__pycache__/settings.cpython-34.pyc
 create mode 100644 www/web/warpzone/__pycache__/urls.cpython-34.pyc
 create mode 100644 www/web/warpzone/__pycache__/wsgi.cpython-34.pyc
 rename {web => www/web}/warpzone/settings.py (81%)
 create mode 100644 www/web/warpzone/settings.pyc
 rename {web => www/web}/warpzone/urls.py (91%)
 create mode 100644 www/web/warpzone/urls.pyc
 rename {web => www/web}/warpzone/wsgi.py (100%)
 create mode 100644 www/web/warpzone/wsgi.pyc

diff --git a/ldap/Dockerfile b/ldap/Dockerfile
deleted file mode 100644
index 4c76e8b..0000000
--- a/ldap/Dockerfile
+++ /dev/null
@@ -1,42 +0,0 @@
-From debian:jessie
-
-RUN echo "slapd slapd/password1 password 12345" | debconf-set-selections
-RUN echo "slapd slapd/password2 password 12345" | debconf-set-selections
-
-RUN echo "slapd slapd/domain string warpzone.ms" | debconf-set-selections
-RUN echo "slapd shared/organization string warpzone.ms" | debconf-set-selections
-
-RUN echo "slapd   slapd/internal/adminpw  password warpzone.ms" | debconf-set-selections
-
-RUN apt-get update && apt-get install -y \
-	debconf-utils \
-	apt-utils \
-	ssh \
-	less \
-	ldap-utils \
-	rsyslog \
-	nano \
-	slapd
-	
-RUN cp -r /etc/ldap/ /tmp
-
-RUN echo "deb http://repos.fusiondirectory.org/debian-jessie jessie main" >> /etc/apt/sources.list
-RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E184859262B4981F
-
-
-RUN apt-get update && apt-get install -y \
-    fusiondirectory \
-    fusiondirectory-schema  \
-    fusiondirectory-plugin-ssh
-    
-RUN apt-get update && apt-get install -y phpldapadmin
-
-COPY ./data/start.sh /opt/start.sh
-COPY ./data/config.php /etc/phpldapadmin/config.php
-
-EXPOSE 22 8000 389
-
-VOLUME ["/etc/fusiondirectory","/var/lib/ldap","/etc/ldap"]
-
-ENTRYPOINT sh /opt/start.sh
-
diff --git a/ldap/build.sh b/ldap/build.sh
deleted file mode 100644
index cc759a6..0000000
--- a/ldap/build.sh
+++ /dev/null
@@ -1 +0,0 @@
-docker build -t ldap .
diff --git a/ldap/data/config.php b/ldap/data/config.php
deleted file mode 100644
index 5e7154f..0000000
--- a/ldap/data/config.php
+++ /dev/null
@@ -1,576 +0,0 @@
-<?php
-/** NOTE **
- ** Make sure that <?php is the FIRST line of this file!
- ** IE: There should NOT be any blank lines or spaces BEFORE <?php
- **/
-
-/**
- * The phpLDAPadmin config file
- * See: http://phpldapadmin.sourceforge.net/wiki/index.php/Config.php
- *
- * This is where you can customise some of the phpLDAPadmin defaults
- * that are defined in config_default.php.
- *
- * To override a default, use the $config->custom variable to do so.
- * For example, the default for defining the language in config_default.php
- *
- * $this->default->appearance['language'] = array(
- *  'desc'=>'Language',
- *  'default'=>'auto');
- *
- * to override this, use $config->custom->appearance['language'] = 'en_EN';
- *
- * This file is also used to configure your LDAP server connections.
- *
- * You must specify at least one LDAP server there. You may add
- * as many as you like. You can also specify your language, and
- * many other options.
- *
- * NOTE: Commented out values in this file prefixed by //, represent the
- * defaults that have been defined in config_default.php.
- * Commented out values prefixed by #, dont reflect their default value, you can
- * check config_default.php if you want to see what the default is.
- *
- * DONT change config_default.php, you changes will be lost by the next release
- * of PLA. Instead change this file - as it will NOT be replaced by a new
- * version of phpLDAPadmin.
- */
-
-/*********************************************
- * Useful important configuration overrides  *
- *********************************************/
-
-/* If you are asked to put PLA in debug mode, this is how you do it: */
-#  $config->custom->debug['level'] = 255;
-#  $config->custom->debug['syslog'] = true;
-#  $config->custom->debug['file'] = '/tmp/pla_debug.log';
-
-/* phpLDAPadmin can encrypt the content of sensitive cookies if you set this
-   to a big random string. */
-// $config->custom->session['blowfish'] = null;
-
-/* If your auth_type is http, you can override your HTTP Authentication Realm. */
-// $config->custom->session['http_realm'] = sprintf('%s %s',app_name(),'login');
-
-/* The language setting. If you set this to 'auto', phpLDAPadmin will attempt
-   to determine your language automatically.
-   If PLA doesnt show (all) strings in your language, then you can do some
-   translation at http://translations.launchpad.net/phpldapadmin and download
-   the translation files, replacing those provided with PLA.
-   (We'll pick up the translations before making the next release too!) */
-// $config->custom->appearance['language'] = 'auto';
-
-/* The temporary storage directory where we will put jpegPhoto data
-   This directory must be readable and writable by your web server. */
-// $config->custom->jpeg['tmpdir'] = '/tmp';     // Example for Unix systems
-#  $config->custom->jpeg['tmpdir'] = 'c:\\temp'; // Example for Windows systems
-
-/* Set this to (bool)true if you do NOT want a random salt used when
-   calling crypt().  Instead, use the first two letters of the user's
-   password.  This is insecure but unfortunately needed for some older
-   environments. */
-#  $config->custom->password['no_random_crypt_salt'] = true;
-
-/* PHP script timeout control. If php runs longer than this many seconds then
-   PHP will stop with an Maximum Execution time error. Increase this value from
-   the default if queries to your LDAP server are slow. The default is either
-   30 seconds or the setting of max_exection_time if this is null. */
-// $config->custom->session['timelimit'] = 30;
-
-/* Our local timezone
-   This is to make sure that when we ask the system for the current time, we
-   get the right local time. If this is not set, all time() calculations will
-   assume UTC if you have not set PHP date.timezone. */
-// $config->custom->appearance['timezone'] = null;
-#  $config->custom->appearance['timezone'] = 'Australia/Melbourne';
-
-/*********************************************
- * Commands                                  *
- *********************************************/
-
-/* Command availability ; if you don't authorize a command the command
-   links will not be shown and the command action will not be permitted.
-   For better security, set also ACL in your ldap directory. */
-/*
-$config->custom->commands['cmd'] = array(
-	'entry_internal_attributes_show' => true,
-	'entry_refresh' => true,
-	'oslinks' => true,
-	'switch_template' => true
-);
-
-$config->custom->commands['script'] = array(
-	'add_attr_form' => true,
-	'add_oclass_form' => true,
-	'add_value_form' => true,
-	'collapse' => true,
-	'compare' => true,
-	'compare_form' => true,
-	'copy' => true,
-	'copy_form' => true,
-	'create' => true,
-	'create_confirm' => true,
-	'delete' => true,
-	'delete_attr' => true,
-	'delete_form' => true,
-	'draw_tree_node' => true,
-	'expand' => true,
-	'export' => true,
-	'export_form' => true,
-	'import' => true,
-	'import_form' => true,
-	'login' => true,
-	'logout' => true,
-	'login_form' => true,
-	'mass_delete' => true,
-	'mass_edit' => true,
-	'mass_update' => true,
-	'modify_member_form' => true,
-	'monitor' => true,
-	'purge_cache' => true,
-	'query_engine' => true,
-	'rename' => true,
-	'rename_form' => true,
-	'rdelete' => true,
-	'refresh' => true,
-	'schema' => true,
-	'server_info' => true,
-	'show_cache' => true,
-	'template_engine' => true,
-	'update_confirm' => true,
-	'update' => true
-);
-*/
-
-/*********************************************
- * Appearance                                *
- *********************************************/
-
-/* If you want to choose the appearance of the tree, specify a class name which
-   inherits from the Tree class. */
-// $config->custom->appearance['tree'] = 'AJAXTree';
-#  $config->custom->appearance['tree'] = 'HTMLTree';
-
-/* Just show your custom templates. */
-// $config->custom->appearance['custom_templates_only'] = false;
-
-/* Disable the default template. */
-// $config->custom->appearance['disable_default_template'] = false;
-
-/* Hide the warnings for invalid objectClasses/attributes in templates. */
-// $config->custom->appearance['hide_template_warning'] = false;
-
-/* Set to true if you would like to hide header and footer parts. */
-// $config->custom->appearance['minimalMode'] = false;
-
-/* Configure what objects are shown in left hand tree */
-// $config->custom->appearance['tree_filter'] = '(objectclass=*)';
-
-/* The height and width of the tree. If these values are not set, then
-   no tree scroll bars are provided. */
-// $config->custom->appearance['tree_height'] = null;
-#  $config->custom->appearance['tree_height'] = 600;
-// $config->custom->appearance['tree_width'] = null;
-#  $config->custom->appearance['tree_width'] = 250;
-
-/* Confirm create and update operations, allowing you to review the changes
-   and optionally skip attributes during the create/update operation. */
-// $config->custom->confirm['create'] = true;
-// $config->custom->confirm['update'] = true;
-
-/* Confirm copy operations, and treat them like create operations. This allows
-   you to edit the attributes (thus changing any that might conflict with
-   uniqueness) before creating the new entry. */
-// $config->custom->confirm['copy'] = true;
-
-/*********************************************
- * User-friendly attribute translation       *
- *********************************************/
-
-/* Use this array to map attribute names to user friendly names. For example, if
-   you don't want to see "facsimileTelephoneNumber" but rather "Fax". */
-// $config->custom->appearance['friendly_attrs'] = array();
-$config->custom->appearance['friendly_attrs'] = array(
-	'facsimileTelephoneNumber' => 'Fax',
-	'gid'                      => 'Group',
-	'mail'                     => 'Email',
-	'telephoneNumber'          => 'Telephone',
-	'uid'                      => 'User Name',
-	'userPassword'             => 'Password'
-);
-
-/*********************************************
- * Hidden attributes                         *
- *********************************************/
-
-/* You may want to hide certain attributes from being edited. If you want to
-   hide attributes from the user, you should use your LDAP servers ACLs.
-   NOTE: The user must be able to read the hide_attrs_exempt entry to be
-   excluded. */
-// $config->custom->appearance['hide_attrs'] = array();
-#  $config->custom->appearance['hide_attrs'] = array('objectClass');
-
-/* Members of this list will be exempt from the hidden attributes. */
-// $config->custom->appearance['hide_attrs_exempt'] = null;
-#  $config->custom->appearance['hide_attrs_exempt'] = 'cn=PLA UnHide,ou=Groups,c=AU';
-
-/*********************************************
- * Read-only attributes                      *
- *********************************************/
-
-/* You may want to phpLDAPadmin to display certain attributes as read only,
-   meaning that users will not be presented a form for modifying those
-   attributes, and they will not be allowed to be modified on the "back-end"
-   either. You may configure this list here:
-   NOTE: The user must be able to read the readonly_attrs_exempt entry to be
-   excluded. */
-// $config->custom->appearance['readonly_attrs'] = array();
-
-/* Members of this list will be exempt from the readonly attributes. */
-// $config->custom->appearance['readonly_attrs_exempt'] = null;
-#  $config->custom->appearance['readonly_attrs_exempt'] = 'cn=PLA ReadWrite,ou=Groups,c=AU';
-
-/*********************************************
- * Group attributes                          *
- *********************************************/
-
-/* Add "modify group members" link to the attribute. */
-// $config->custom->modify_member['groupattr'] = array('member','uniqueMember','memberUid');
-
-/* Configure filter for member search. This only applies to "modify group members" feature */
-// $config->custom->modify_member['filter'] = '(objectclass=Person)';
-
-/* Attribute that is added to the group member attribute. */
-// $config->custom->modify_member['attr'] = 'dn';
-
-/* For Posix attributes */
-// $config->custom->modify_member['posixattr'] = 'uid';
-// $config->custom->modify_member['posixfilter'] = '(uid=*)';
-// $config->custom->modify_member['posixgroupattr'] = 'memberUid';
-
-/*********************************************
- * Support for attrs display order           *
- *********************************************/
-
-/* Use this array if you want to have your attributes displayed in a specific
-   order. You can use default attribute names or their fridenly names.
-   For example, "sn" will be displayed right after "givenName". All the other
-   attributes that are not specified in this array will be displayed after in
-   alphabetical order. */
-// $config->custom->appearance['attr_display_order'] = array();
-#  $config->custom->appearance['attr_display_order'] = array(
-#   'givenName',
-#   'sn',
-#   'cn',
-#   'displayName',
-#   'uid',
-#   'uidNumber',
-#   'gidNumber',
-#   'homeDirectory',
-#   'mail',
-#   'userPassword'
-#  );
-
-/*********************************************
- * Define your LDAP servers in this section  *
- *********************************************/
-
-$servers = new Datastore();
-
-/* $servers->NewServer('ldap_pla') must be called before each new LDAP server
-   declaration. */
-$servers->newServer('ldap_pla');
-
-/* A convenient name that will appear in the tree viewer and throughout
-   phpLDAPadmin to identify this LDAP server to users. */
-$servers->setValue('server','name','warpzone.ms');
-
-/* Examples:
-   'ldap.example.com',
-   'ldaps://ldap.example.com/',
-   'ldapi://%2fusr%local%2fvar%2frun%2fldapi'
-           (Unix socket at /usr/local/var/run/ldap) */
-$servers->setValue('server','host','127.0.0.1');
-
-/* The port your LDAP server listens on (no quotes). 389 is standard. */
-// $servers->setValue('server','port',389);
-
-/* Array of base DNs of your LDAP server. Leave this blank to have phpLDAPadmin
-   auto-detect it for you. */
-$servers->setValue('server','base',array('dc=warpzone,dc=ms'));
-
-/* Five options for auth_type:
-   1. 'cookie': you will login via a web form, and a client-side cookie will
-      store your login dn and password.
-   2. 'session': same as cookie but your login dn and password are stored on the
-      web server in a persistent session variable.
-   3. 'http': same as session but your login dn and password are retrieved via
-      HTTP authentication.
-   4. 'config': specify your login dn and password here in this config file. No
-      login will be required to use phpLDAPadmin for this server.
-   5. 'sasl': login will be taken from the webserver's kerberos authentication.
-      Currently only GSSAPI has been tested (using mod_auth_kerb).
-
-   Choose wisely to protect your authentication information appropriately for
-   your situation. If you choose 'cookie', your cookie contents will be
-   encrypted using blowfish and the secret your specify above as
-   session['blowfish']. */
-$servers->setValue('login','auth_type','session');
-
-/* The DN of the user for phpLDAPadmin to bind with. For anonymous binds or
-   'cookie','session' or 'sasl' auth_types, LEAVE THE LOGIN_DN AND LOGIN_PASS
-   BLANK. If you specify a login_attr in conjunction with a cookie or session
-   auth_type, then you can also specify the bind_id/bind_pass here for searching
-   the directory for users (ie, if your LDAP server does not allow anonymous
-   binds. */
-$servers->setValue('login','bind_id','cn=admin,dc=warpzone,dc=ms');
-#  $servers->setValue('login','bind_id','cn=Manager,dc=example,dc=com');
-
-/* Your LDAP password. If you specified an empty bind_id above, this MUST also
-   be blank. */
-// $servers->setValue('login','bind_pass','');
-#  $servers->setValue('login','bind_pass','secret');
-
-/* Use TLS (Transport Layer Security) to connect to the LDAP server. */
-// $servers->setValue('server','tls',false);
-
-/************************************
- *      SASL Authentication         *
- ************************************/
-
-/* Enable SASL authentication LDAP SASL authentication requires PHP 5.x
-   configured with --with-ldap-sasl=DIR. If this option is disabled (ie, set to
-   false), then all other sasl options are ignored. */
-// $servers->setValue('login','auth_type','sasl');
-
-/* SASL auth mechanism */
-// $servers->setValue('sasl','mech','GSSAPI');
-
-/* SASL authentication realm name */
-// $servers->setValue('sasl','realm','');
-#  $servers->setValue('sasl','realm','EXAMPLE.COM');
-
-/* SASL authorization ID name
-   If this option is undefined, authorization id will be computed from bind DN,
-   using authz_id_regex and authz_id_replacement. */
-// $servers->setValue('sasl','authz_id', null);
-
-/* SASL authorization id regex and replacement
-   When authz_id property is not set (default), phpLDAPAdmin will try to
-   figure out authorization id by itself from bind distinguished name (DN).
-
-   This procedure is done by calling preg_replace() php function in the
-   following way:
-
-   $authz_id = preg_replace($sasl_authz_id_regex,$sasl_authz_id_replacement,
-    $bind_dn);
-
-   For info about pcre regexes, see:
-   - pcre(3), perlre(3)
-   - http://www.php.net/preg_replace */
-// $servers->setValue('sasl','authz_id_regex',null);
-// $servers->setValue('sasl','authz_id_replacement',null);
-#  $servers->setValue('sasl','authz_id_regex','/^uid=([^,]+)(.+)/i');
-#  $servers->setValue('sasl','authz_id_replacement','$1');
-
-/* SASL auth security props.
-   See http://beepcore-tcl.sourceforge.net/tclsasl.html#anchor5 for explanation. */
-// $servers->setValue('sasl','props',null);
-
-/* Default password hashing algorithm. One of md5, ssha, sha, md5crpyt, smd5,
-   blowfish, crypt or leave blank for now default algorithm. */
-// $servers->setValue('appearance','password_hash_custom','md5');
-
-/* If you specified 'cookie' or 'session' as the auth_type above, you can
-   optionally specify here an attribute to use when logging in. If you enter
-   'uid' and login as 'dsmith', phpLDAPadmin will search for (uid=dsmith)
-   and log in as that user.
-   Leave blank or specify 'dn' to use full DN for logging in. Note also that if
-   your LDAP server requires you to login to perform searches, you can enter the
-   DN to use when searching in 'bind_id' and 'bind_pass' above. */
-// $servers->setValue('login','attr','dn');
-
-/* Base DNs to used for logins. If this value is not set, then the LDAP server
-   Base DNs are used. */
-// $servers->setValue('login','base',array());
-
-/* If 'login,attr' is used above such that phpLDAPadmin will search for your DN
-   at login, you may restrict the search to a specific objectClasses. EG, set this
-   to array('posixAccount') or array('inetOrgPerson',..), depending upon your
-   setup. */
-// $servers->setValue('login','class',array());
-
-/* If you specified something different from 'dn', for example 'uid', as the
-   login_attr above, you can optionally specify here to fall back to
-   authentication with dn.
-   This is useful, when users should be able to log in with their uid, but
-   the ldap administrator wants to log in with his root-dn, that does not
-   necessarily have the uid attribute.
-   When using this feature, login_class is ignored. */
-// $servers->setValue('login','fallback_dn',false);
-
-/* Specify true If you want phpLDAPadmin to not display or permit any
-   modification to the LDAP server. */
-// $servers->setValue('server','read_only',false);
-
-/* Specify false if you do not want phpLDAPadmin to draw the 'Create new' links
-   in the tree viewer. */
-// $servers->setValue('appearance','show_create',true);
-
-/* Set to true if you would like to initially open the first level of each tree. */
-// $servers->setValue('appearance','open_tree',false);
-
-/* This feature allows phpLDAPadmin to automatically determine the next
-   available uidNumber for a new entry. */
-// $servers->setValue('auto_number','enable',true);
-
-/* The mechanism to use when finding the next available uidNumber. Two possible
-   values: 'uidpool' or 'search'.
-   The 'uidpool' mechanism uses an existing uidPool entry in your LDAP server to
-   blindly lookup the next available uidNumber. The 'search' mechanism searches
-   for entries with a uidNumber value and finds the first available uidNumber
-   (slower). */
-// $servers->setValue('auto_number','mechanism','search');
-
-/* The DN of the search base when the 'search' mechanism is used above. */
-#  $servers->setValue('auto_number','search_base','ou=People,dc=example,dc=com');
-
-/* The minimum number to use when searching for the next available number
-   (only when 'search' is used for auto_number. */
-// $servers->setValue('auto_number','min',array('uidNumber'=>1000,'gidNumber'=>500));
-
-/* If you set this, then phpldapadmin will bind to LDAP with this user ID when
-   searching for the uidnumber. The idea is, this user id would have full
-   (readonly) access to uidnumber in your ldap directory (the logged in user
-   may not), so that you can be guaranteed to get a unique uidnumber for your
-   directory. */
-// $servers->setValue('auto_number','dn',null);
-
-/* The password for the dn above. */
-// $servers->setValue('auto_number','pass',null);
-
-/* Enable anonymous bind login. */
-// $servers->setValue('login','anon_bind',true);
-
-/* Use customized page with prefix when available. */
-#  $servers->setValue('custom','pages_prefix','custom_');
-
-/* If you set this, then only these DNs are allowed to log in. This array can
-   contain individual users, groups or ldap search filter(s). Keep in mind that
-   the user has not authenticated yet, so this will be an anonymous search to
-   the LDAP server, so make your ACLs allow these searches to return results! */
-#  $servers->setValue('login','allowed_dns',array(
-#   'uid=stran,ou=People,dc=example,dc=com',
-#   '(&(gidNumber=811)(objectClass=groupOfNames))',
-#   '(|(uidNumber=200)(uidNumber=201))',
-#   'cn=callcenter,ou=Group,dc=example,dc=com'));
-
-/* Set this if you dont want this LDAP server to show in the tree */
-// $servers->setValue('server','visible',true);
-
-/* Set this if you want to hide the base DNs that dont exist instead of
-   displaying the message "The base entry doesnt exist, create it?"
-// $servers->setValue('server','hide_noaccess_base',false);
-#  $servers->setValue('server','hide_noaccess_base',true);
-
-/* This is the time out value in minutes for the server. After as many minutes
-   of inactivity you will be automatically logged out. If not set, the default
-   value will be ( session_cache_expire()-1 ) */
-#  $servers->setValue('login','timeout',30);
-
-/* Set this if you want phpldapadmin to perform rename operation on entry which
-   has children. Certain servers are known to allow it, certain are not. */
-// $servers->setValue('server','branch_rename',false);
-
-/* If you set this, then phpldapadmin will show these attributes as
-   internal attributes, even if they are not defined in your schema. */
-// $servers->setValue('server','custom_sys_attrs',array(''));
-#  $servers->setValue('server','custom_sys_attrs',array('passwordExpirationTime','passwordAllowChangeTime'));
-
-/* If you set this, then phpldapadmin will show these attributes on
-   objects, even if they are not defined in your schema. */
-// $servers->setValue('server','custom_attrs',array(''));
-#  $servers->setValue('server','custom_attrs',array('nsRoleDN','nsRole','nsAccountLock'));
-
-/* These attributes will be forced to MAY attributes and become option in the
-   templates. If they are not defined in the templates, then they wont appear
-   as per normal template processing. You may want to do this because your LDAP
-   server may automatically calculate a default value.
-   In Fedora Directory Server using the DNA Plugin one could ignore uidNumber,
-   gidNumber and sambaSID. */
-// $servers->setValue('server','force_may',array(''));
-#  $servers->setValue('server','force_may',array('uidNumber','gidNumber','sambaSID'));
-
-/*********************************************
- * Unique attributes                         *
- *********************************************/
-
-/* You may want phpLDAPadmin to enforce some attributes to have unique values
-   (ie: not belong to other entries in your tree. This (together with
-   'unique','dn' and 'unique','pass' option will not let updates to
-   occur with other attributes have the same value. */
-#  $servers->setValue('unique','attrs',array('mail','uid','uidNumber'));
-
-/* If you set this, then phpldapadmin will bind to LDAP with this user ID when
-   searching for attribute uniqueness. The idea is, this user id would have full
-   (readonly) access to your ldap directory (the logged in user may not), so
-   that you can be guaranteed to get a unique uidnumber for your directory. */
-// $servers->setValue('unique','dn',null);
-
-/* The password for the dn above. */
-// $servers->setValue('unique','pass',null);
-
-/**************************************************************************
- * If you want to configure additional LDAP servers, do so below.         *
- * Remove the commented lines and use this section as a template for all  *
- * your other LDAP servers.                                               *
- **************************************************************************/
-
-/*
-$servers->newServer('ldap_pla');
-$servers->setValue('server','name','LDAP Server');
-$servers->setValue('server','host','127.0.0.1');
-$servers->setValue('server','port',389);
-$servers->setValue('server','base',array(''));
-$servers->setValue('login','auth_type','cookie');
-$servers->setValue('login','bind_id','');
-$servers->setValue('login','bind_pass','');
-$servers->setValue('server','tls',false);
-
-# SASL auth
-$servers->setValue('login','auth_type','sasl');
-$servers->setValue('sasl','mech','GSSAPI');
-$servers->setValue('sasl','realm','EXAMPLE.COM');
-$servers->setValue('sasl','authz_id',null);
-$servers->setValue('sasl','authz_id_regex','/^uid=([^,]+)(.+)/i');
-$servers->setValue('sasl','authz_id_replacement','$1');
-$servers->setValue('sasl','props',null);
-
-$servers->setValue('appearance','password_hash_custom','md5');
-$servers->setValue('login','attr','dn');
-$servers->setValue('login','fallback_dn',false);
-$servers->setValue('login','class',null);
-$servers->setValue('server','read_only',false);
-$servers->setValue('appearance','show_create',true);
-
-$servers->setValue('auto_number','enable',true);
-$servers->setValue('auto_number','mechanism','search');
-$servers->setValue('auto_number','search_base',null);
-$servers->setValue('auto_number','min',array('uidNumber'=>1000,'gidNumber'=>500));
-$servers->setValue('auto_number','dn',null);
-$servers->setValue('auto_number','pass',null);
-
-$servers->setValue('login','anon_bind',true);
-$servers->setValue('custom','pages_prefix','custom_');
-$servers->setValue('unique','attrs',array('mail','uid','uidNumber'));
-$servers->setValue('unique','dn',null);
-$servers->setValue('unique','pass',null);
-
-$servers->setValue('server','visible',true);
-$servers->setValue('login','timeout',30);
-$servers->setValue('server','branch_rename',false);
-$servers->setValue('server','custom_sys_attrs',array('passwordExpirationTime','passwordAllowChangeTime'));
-$servers->setValue('server','custom_attrs',array('nsRoleDN','nsRole','nsAccountLock'));
-$servers->setValue('server','force_may',array('uidNumber','gidNumber','sambaSID'));
-*/
-?>
diff --git a/ldap/data/fusiondirectory.conf b/ldap/data/fusiondirectory.conf
deleted file mode 100644
index 5df16a7..0000000
--- a/ldap/data/fusiondirectory.conf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<conf>
-  <!-- Main section **********************************************************
-       The main section defines global settings, which might be overridden by
-       each location definition inside.
-
-       For more information about the configuration parameters, take a look at
-       the FusionDirectory.conf(5) manual page.
-  -->
-  <main default="localhost"
-        logging="TRUE"
-        displayErrors="FALSE"
-        forceSSL="FALSE"
-        templateCompileDirectory="/var/spool/fusiondirectory/"
-        debugLevel="0"
-    >
-
-    <!-- Location definition -->
-    <location name="localhost"
-    >
-        <referral URI="ldap://localhost:389/dc=warpzone,dc=ms"
-                        adminDn="cn=admin,dc=warpzone,dc=ms"
-                        adminPassword="12345" />
-    </location>
-  </main>
-</conf>
diff --git a/ldap/data/fusiondirectory/fusiondirectory-apache.conf b/ldap/data/fusiondirectory/fusiondirectory-apache.conf
deleted file mode 100644
index 0d4334b..0000000
--- a/ldap/data/fusiondirectory/fusiondirectory-apache.conf
+++ /dev/null
@@ -1,18 +0,0 @@
-# Include FusionDirectory to your web service
-Alias /fusiondirectory /usr/share/fusiondirectory/html
-
-<IfModule mod_php5.c>
-<Location /fusiondirectory>
-    php_admin_flag engine on
-    php_admin_flag register_globals off
-    php_admin_flag allow_call_time_pass_reference off
-    php_admin_flag expose_php off
-    php_admin_flag zend.ze1_compatibility_mode off
-    php_admin_flag register_long_arrays off
-    php_admin_value upload_tmp_dir /var/spool/fusiondirectory/
-    php_admin_value session.cookie_lifetime 0
-# Remove the comment from the line below if you use fusiondirectory-setup --encrypt-passwords
-#   include /etc/fusiondirectory/fusiondirectory.secrets
-</Location>
-</IfModule>
-
diff --git a/ldap/data/fusiondirectory/fusiondirectory.conf b/ldap/data/fusiondirectory/fusiondirectory.conf
deleted file mode 100644
index b90fcf6..0000000
--- a/ldap/data/fusiondirectory/fusiondirectory.conf
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<conf>
-  <!-- Main section **********************************************************
-       The main section defines global settings, which might be overridden by
-       each location definition inside.
-
-       For more information about the configuration parameters, take a look at
-       the FusionDirectory.conf(5) manual page.
-  -->
-  <main default="default"
-        logging="TRUE"
-        displayErrors="FALSE"
-        forceSSL="FALSE"
-        templateCompileDirectory="/var/spool/fusiondirectory/"
-        debugLevel="0"
-    >
-
-    <!-- Location definition -->
-    <location name="default"
-    >
-        <referral URI="ldap://localhost:389/dc=warpzone,dc=ms"
-                        adminDn="cn=admin,dc=warpzone,dc=ms"
-                        adminPassword="12345" />
-    </location>
-  </main>
-</conf>
diff --git a/ldap/data/ldap_conf/ldap.conf b/ldap/data/ldap_conf/ldap.conf
deleted file mode 100644
index 42d42b0..0000000
--- a/ldap/data/ldap_conf/ldap.conf
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# LDAP Defaults
-#
-
-# See ldap.conf(5) for details
-# This file should be world readable but not world writable.
-
-#BASE	dc=example,dc=com
-#URI	ldap://ldap.example.com ldap://ldap-master.example.com:666
-
-#SIZELIMIT	12
-#TIMELIMIT	15
-#DEREF		never
-
-# TLS certificates (needed for GnuTLS)
-TLS_CACERT	/etc/ssl/certs/ca-certificates.crt
-
diff --git a/ldap/data/ldap_conf/schema/README b/ldap/data/ldap_conf/schema/README
deleted file mode 100644
index ae88756..0000000
--- a/ldap/data/ldap_conf/schema/README
+++ /dev/null
@@ -1,80 +0,0 @@
-This directory contains user application schema definitions for use
-with slapd(8).
-
-File                    Description
-----                    -----------
-collective.schema       Collective attributes (experimental)
-corba.schema            Corba Object
-core.schema             OpenLDAP "core"
-cosine.schema           COSINE Pilot
-duaconf.schema          Client Configuration (work in progress)
-dyngroup.schema			Dynamic Group (experimental)
-inetorgperson.schema    InetOrgPerson
-java.schema             Java Object
-misc.schema             Miscellaneous Schema (experimental)
-nadf.schema             North American Directory Forum (obsolete)
-nis.schema              Network Information Service (experimental)
-openldap.schema         OpenLDAP Project (FYI)
-ppolicy.schema          Password Policy Schema (work in progress)
-
-Additional "generally useful" schema definitions can be submitted
-using the OpenLDAP Issue Tracking System <http://www.openldap.org/its/>.
-Submissions should include a stable reference to a mature, open
-technical specification (e.g., an RFC) for the schema.
-
-The core.ldif and openldap.ldif files are equivalent to their
-corresponding .schema files. They have been provided as examples
-for use with the dynamic configuration backend. These example files
-are not actually necessary since slapd will automatically convert any
-included *.schema files into LDIF when converting a slapd.conf file
-to a configuration database, but they serve as a model of how to
-convert schema files in general.
-
----
-
-This notice applies to all files in this directory.
-
-Copyright 1998-2014 The OpenLDAP Foundation, Redwood City, California, USA
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted only as authorized by the OpenLDAP
-Public License.  A copy of this license is available at
-http://www.OpenLDAP.org/license.html or in file LICENSE in the
-top-level directory of the distribution.
-
----
-
-This notice applies to all schema in this directory which are derived
-from RFCs and other IETF documents.
-
-Portions Copyright 1991-2004, The Internet Society.  All Rights Reserved.
-
-This document and translations of it may be copied and furnished
-to others, and derivative works that comment on or otherwise explain
-it or assist in its implementation may be prepared, copied, published
-and distributed, in whole or in part, without restriction of any
-kind, provided that the above copyright notice and this paragraph  
-are included on all such copies and derivative works.  However,
-this document itself may not be modified in any way, such as by      
-removing the copyright notice or references to the Internet Society
-or other Internet organizations, except as needed for the  purpose
-of developing Internet standards in which case the procedures for
-copyrights defined in the Internet Standards process must be
-followed, or as required to translate it into languages other than
-English.
-
-The limited permissions granted above are perpetual and will not
-be revoked by the Internet Society or its successors or assigns.
-
-This document and the information contained herein is provided on
-an "AS IS" basis and THE AUTHORS, THE INTERNET SOCIETY, AND THE
-INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE
-OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY       
-IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
-PURPOSE.
-
-
----
-$OpenLDAP$
diff --git a/ldap/data/ldap_conf/schema/collective.ldif b/ldap/data/ldap_conf/schema/collective.ldif
deleted file mode 100644
index 34ec3db..0000000
--- a/ldap/data/ldap_conf/schema/collective.ldif
+++ /dev/null
@@ -1,48 +0,0 @@
-# collective.ldif -- Collective attribute schema
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-## Portions Copyright (C) The Internet Society (2003).
-## Please see full copyright statement below.
-#
-# From RFC 3671 [portions trimmed]:
-# 	Collective Attributes in LDAP
-#
-# This file was automatically generated from collective.schema; see that file
-# for complete references.
-#
-dn: cn=collective,cn=schema,cn=config
-objectClass: olcSchemaConfig
-cn: collective
-olcAttributeTypes: {0}( 2.5.4.7.1 NAME 'c-l' SUP l COLLECTIVE )
-olcAttributeTypes: {1}( 2.5.4.8.1 NAME 'c-st' SUP st COLLECTIVE )
-olcAttributeTypes: {2}( 2.5.4.9.1 NAME 'c-street' SUP street COLLECTIVE )
-olcAttributeTypes: {3}( 2.5.4.10.1 NAME 'c-o' SUP o COLLECTIVE )
-olcAttributeTypes: {4}( 2.5.4.11.1 NAME 'c-ou' SUP ou COLLECTIVE )
-olcAttributeTypes: {5}( 2.5.4.16.1 NAME 'c-PostalAddress' SUP postalAddress CO
- LLECTIVE )
-olcAttributeTypes: {6}( 2.5.4.17.1 NAME 'c-PostalCode' SUP postalCode COLLECTI
- VE )
-olcAttributeTypes: {7}( 2.5.4.18.1 NAME 'c-PostOfficeBox' SUP postOfficeBox CO
- LLECTIVE )
-olcAttributeTypes: {8}( 2.5.4.19.1 NAME 'c-PhysicalDeliveryOfficeName' SUP phy
- sicalDeliveryOfficeName COLLECTIVE )
-olcAttributeTypes: {9}( 2.5.4.20.1 NAME 'c-TelephoneNumber' SUP telephoneNumbe
- r COLLECTIVE )
-olcAttributeTypes: {10}( 2.5.4.21.1 NAME 'c-TelexNumber' SUP telexNumber COLLE
- CTIVE )
-olcAttributeTypes: {11}( 2.5.4.23.1 NAME 'c-FacsimileTelephoneNumber' SUP facs
- imileTelephoneNumber COLLECTIVE )
-olcAttributeTypes: {12}( 2.5.4.25.1 NAME 'c-InternationalISDNNumber' SUP inter
- nationalISDNNumber COLLECTIVE )
diff --git a/ldap/data/ldap_conf/schema/collective.schema b/ldap/data/ldap_conf/schema/collective.schema
deleted file mode 100644
index c3dc1a1..0000000
--- a/ldap/data/ldap_conf/schema/collective.schema
+++ /dev/null
@@ -1,65 +0,0 @@
-# collective.schema -- Collective attribute schema
-# $OpenLDAP: pkg/ldap/servers/slapd/schema/collective.schema,v 1.12.2.2 2007/08/31 23:14:06 quanah Exp $
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2007 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-
-# The version of this file as distributed by the OpenLDAP Foundation
-# contains text from an IETF RFC explaining the schema.  Unfortunately,
-# that text is covered by a license that doesn't meet Debian's Free
-# Software Guidelines.  This is a stripped version of the schema that
-# contains only the functional schema definition, not the text of the
-# RFC.
-#
-# For an explanation of this schema, see RFC 3671, at (among other
-# places):  http://www.ietf.org/rfc/rfc3671.txt
-
-attributeType      ( 2.5.4.7.1 NAME 'c-l'
-	SUP l COLLECTIVE )
-
-attributeType      ( 2.5.4.8.1 NAME 'c-st'
-	SUP st COLLECTIVE )
-
-attributeType      ( 2.5.4.9.1 NAME 'c-street'
-	SUP street COLLECTIVE )
-
-attributeType      ( 2.5.4.10.1 NAME 'c-o'
-	SUP o COLLECTIVE )
-
-attributeType      ( 2.5.4.11.1 NAME 'c-ou'
-	SUP ou COLLECTIVE )
-
-attributeType      ( 2.5.4.16.1 NAME 'c-PostalAddress'
-	SUP postalAddress COLLECTIVE )
-
-attributeType      ( 2.5.4.17.1 NAME 'c-PostalCode'
-	SUP postalCode COLLECTIVE )
-
-attributeType ( 2.5.4.18.1 NAME 'c-PostOfficeBox'
-	SUP postOfficeBox COLLECTIVE )
-
-attributeType ( 2.5.4.19.1 NAME 'c-PhysicalDeliveryOfficeName'
-	SUP physicalDeliveryOfficeName COLLECTIVE )
-
-attributeType ( 2.5.4.20.1 NAME 'c-TelephoneNumber'
-	SUP telephoneNumber COLLECTIVE )
-
-attributeType ( 2.5.4.21.1 NAME 'c-TelexNumber'
-	SUP telexNumber COLLECTIVE )
-
-attributeType ( 2.5.4.23.1 NAME 'c-FacsimileTelephoneNumber'
-	SUP facsimileTelephoneNumber COLLECTIVE )
-
-attributeType ( 2.5.4.25.1 NAME 'c-InternationalISDNNumber'
-	SUP internationalISDNNumber COLLECTIVE )
-
diff --git a/ldap/data/ldap_conf/schema/corba.ldif b/ldap/data/ldap_conf/schema/corba.ldif
deleted file mode 100644
index d5b4e07..0000000
--- a/ldap/data/ldap_conf/schema/corba.ldif
+++ /dev/null
@@ -1,42 +0,0 @@
-# corba.ldif -- Corba Object Schema
-#	depends upon core.ldif
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-## Portions Copyright (C) The Internet Society (1999).
-## Please see full copyright statement below.
-#
-# From RFC 2714 [portions trimmed]:
-#   Schema for Representing CORBA Object References in an LDAP Directory
-#
-# This file was automatically generated from corba.schema; see that file
-# for complete references.
-#
-dn: cn=corba,cn=schema,cn=config
-objectClass: olcSchemaConfig
-cn: corba
-olcAttributeTypes: {0}( 1.3.6.1.4.1.42.2.27.4.1.14 NAME 'corbaIor' DESC 'Strin
- gified interoperable object reference of a CORBA object' EQUALITY caseIgnoreI
- A5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-olcAttributeTypes: {1}( 1.3.6.1.4.1.42.2.27.4.1.15 NAME 'corbaRepositoryId' DE
- SC 'Repository ids of interfaces implemented by a CORBA object' EQUALITY case
- ExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-olcObjectClasses: {0}( 1.3.6.1.4.1.42.2.27.4.2.10 NAME 'corbaContainer' DESC '
- Container for a CORBA object' SUP top STRUCTURAL MUST cn )
-olcObjectClasses: {1}( 1.3.6.1.4.1.42.2.27.4.2.9 NAME 'corbaObject' DESC 'CORB
- A object representation' SUP top ABSTRACT MAY ( corbaRepositoryId $ descripti
- on ) )
-olcObjectClasses: {2}( 1.3.6.1.4.1.42.2.27.4.2.11 NAME 'corbaObjectReference' 
- DESC 'CORBA interoperable object reference' SUP corbaObject AUXILIARY MUST co
- rbaIor )
diff --git a/ldap/data/ldap_conf/schema/corba.schema b/ldap/data/ldap_conf/schema/corba.schema
deleted file mode 100644
index 918e9df..0000000
--- a/ldap/data/ldap_conf/schema/corba.schema
+++ /dev/null
@@ -1,61 +0,0 @@
-# corba.schema -- Corba Object Schema
-#	depends upon core.schema
-# $OpenLDAP: pkg/ldap/servers/slapd/schema/corba.schema,v 1.4.2.3 2007/01/02 21:44:09 kurt Exp $
-# $OpenLDAP: pkg/ldap/servers/slapd/schema/corba.schema,v 1.4.2.3 2007/01/02 21:44:09 kurt Exp $
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2007 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-
-# The version of this file as distributed by the OpenLDAP Foundation
-# contains text from an IETF RFC explaining the schema.  Unfortunately,
-# that text is covered by a license that doesn't meet Debian's Free
-# Software Guidelines.  This is a stripped version of the schema that
-# contains only the functional schema definition, not the text of the
-# RFC.
-#
-# For an explanation of this schema, see RFC 2714, at (among other
-# places):  http://www.ietf.org/rfc/rfc2714.txt
-
-attributetype ( 1.3.6.1.4.1.42.2.27.4.1.14
-	NAME 'corbaIor'
-	DESC 'Stringified interoperable object reference of a CORBA object'
-	EQUALITY caseIgnoreIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-	SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.4.1.15
-	NAME 'corbaRepositoryId'
-	DESC 'Repository ids of interfaces implemented by a CORBA object'
-	EQUALITY caseExactMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
-objectclass ( 1.3.6.1.4.1.42.2.27.4.2.10
-	NAME 'corbaContainer'
-	DESC 'Container for a CORBA object'
-	SUP top
-	STRUCTURAL
-	MUST cn )
-
-objectclass ( 1.3.6.1.4.1.42.2.27.4.2.9
-	NAME 'corbaObject'
-	DESC 'CORBA object representation'
-	SUP top
-	ABSTRACT
-	MAY ( corbaRepositoryId $ description ) )
-
-objectclass ( 1.3.6.1.4.1.42.2.27.4.2.11
-	NAME 'corbaObjectReference'
-	DESC 'CORBA interoperable object reference'
-	SUP corbaObject
-	AUXILIARY
-	MUST corbaIor )
diff --git a/ldap/data/ldap_conf/schema/core.ldif b/ldap/data/ldap_conf/schema/core.ldif
deleted file mode 100644
index cc1811f..0000000
--- a/ldap/data/ldap_conf/schema/core.ldif
+++ /dev/null
@@ -1,603 +0,0 @@
-# OpenLDAP Core schema
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-
-# The version of this file as distributed by the OpenLDAP Foundation
-# contains text claiming copyright by the Internet Society and including
-# the IETF RFC license, which does not meet Debian's Free Software
-# Guidelines.  However, apart from short and obvious comments, the text of
-# this file is purely a functional interface specification, which is not
-# subject to that license and is not copyrightable under US law.
-#
-# The license statement is retained below so as not to remove credit, but
-# as best as we can determine, it is not applicable to the contents of
-# this file.
-
-## Portions Copyright (C) The Internet Society (1997-2003).
-## All Rights Reserved.
-##
-## This document and translations of it may be copied and furnished to
-## others, and derivative works that comment on or otherwise explain it
-## or assist in its implementation may be prepared, copied, published
-## and distributed, in whole or in part, without restriction of any
-## kind, provided that the above copyright notice and this paragraph are
-## included on all such copies and derivative works.  However, this
-## document itself may not be modified in any way, such as by removing
-## the copyright notice or references to the Internet Society or other
-## Internet organizations, except as needed for the purpose of
-## developing Internet standards in which case the procedures for
-## copyrights defined in the Internet Standards process must be         
-## followed, or as required to translate it into languages other than
-## English.
-##                                                                      
-## The limited permissions granted above are perpetual and will not be  
-## revoked by the Internet Society or its successors or assigns.        
-## 
-## This document and the information contained herein is provided on an 
-## "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
-## TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
-## BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
-## HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
-## MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-#
-#
-#
-# Includes LDAPv3 schema items from:
-#	RFC 2252/2256 (LDAPv3)
-#
-# Select standard track schema items:
-#	RFC 1274 (uid/dc)
-#	RFC 2079 (URI)
-#	RFC 2247 (dc/dcObject)
-#	RFC 2587 (PKI)
-#	RFC 2589 (Dynamic Directory Services)
-#
-# Select informational schema items:
-#	RFC 2377 (uidObject)
-#
-#
-# Standard attribute types from RFC 2256
-#
-dn: cn=core,cn=schema,cn=config
-objectClass: olcSchemaConfig
-cn: core
-#
-# system schema
-#olcAttributeTypes: ( 2.5.4.0 NAME 'objectClass'
-#	DESC 'RFC2256: object classes of the entity'
-#	EQUALITY objectIdentifierMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
-#
-# system schema
-#olcAttributeTypes: ( 2.5.4.1 NAME ( 'aliasedObjectName' 'aliasedEntryName' )
-#	DESC 'RFC2256: name of aliased object'
-#	EQUALITY distinguishedNameMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE )
-#
-olcAttributeTypes: ( 2.5.4.2 NAME 'knowledgeInformation'
-  DESC 'RFC2256: knowledge information'
-  EQUALITY caseIgnoreMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
-#
-# system schema
-#olcAttributeTypes: ( 2.5.4.3 NAME ( 'cn' 'commonName' )
-#	DESC 'RFC2256: common name(s) for which the entity is known by'
-#	SUP name )
-#
-olcAttributeTypes: ( 2.5.4.4 NAME ( 'sn' 'surname' )
-  DESC 'RFC2256: last (family) name(s) for which the entity is known by'
-  SUP name )
-#
-olcAttributeTypes: ( 2.5.4.5 NAME 'serialNumber'
-  DESC 'RFC2256: serial number of the entity'
-  EQUALITY caseIgnoreMatch
-  SUBSTR caseIgnoreSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{64} )
-#
-# RFC 4519 definition ('countryName' in X.500 and RFC2256)
-olcAttributeTypes: ( 2.5.4.6 NAME ( 'c' 'countryName' )
-  DESC 'RFC4519: two-letter ISO-3166 country code'
-  SUP name
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.11
-  SINGLE-VALUE )
-#
-olcAttributeTypes: ( 2.5.4.7 NAME ( 'l' 'localityName' )
-  DESC 'RFC2256: locality which this object resides in'
-  SUP name )
-#
-olcAttributeTypes: ( 2.5.4.8 NAME ( 'st' 'stateOrProvinceName' )
-  DESC 'RFC2256: state or province which this object resides in'
-  SUP name )
-#
-olcAttributeTypes: ( 2.5.4.9 NAME ( 'street' 'streetAddress' )
-  DESC 'RFC2256: street address of this object'
-  EQUALITY caseIgnoreMatch
-  SUBSTR caseIgnoreSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
-#
-olcAttributeTypes: ( 2.5.4.10 NAME ( 'o' 'organizationName' )
-  DESC 'RFC2256: organization this object belongs to'
-  SUP name )
-#
-olcAttributeTypes: ( 2.5.4.11 NAME ( 'ou' 'organizationalUnitName' )
-  DESC 'RFC2256: organizational unit this object belongs to'
-  SUP name )
-#
-olcAttributeTypes: ( 2.5.4.12 NAME 'title'
-  DESC 'RFC2256: title associated with the entity'
-  SUP name )
-#
-# system schema
-#olcAttributeTypes: ( 2.5.4.13 NAME 'description'
-#	DESC 'RFC2256: descriptive information'
-#	EQUALITY caseIgnoreMatch
-#	SUBSTR caseIgnoreSubstringsMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
-#
-# Deprecated by enhancedSearchGuide
-olcAttributeTypes: ( 2.5.4.14 NAME 'searchGuide'
-  DESC 'RFC2256: search guide, deprecated by enhancedSearchGuide'
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.25 )
-#
-olcAttributeTypes: ( 2.5.4.15 NAME 'businessCategory'
-  DESC 'RFC2256: business category'
-  EQUALITY caseIgnoreMatch
-  SUBSTR caseIgnoreSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
-#
-olcAttributeTypes: ( 2.5.4.16 NAME 'postalAddress'
-  DESC 'RFC2256: postal address'
-  EQUALITY caseIgnoreListMatch
-  SUBSTR caseIgnoreListSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
-#
-olcAttributeTypes: ( 2.5.4.17 NAME 'postalCode'
-  DESC 'RFC2256: postal code'
-  EQUALITY caseIgnoreMatch
-  SUBSTR caseIgnoreSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40} )
-#
-olcAttributeTypes: ( 2.5.4.18 NAME 'postOfficeBox'
-  DESC 'RFC2256: Post Office Box'
-  EQUALITY caseIgnoreMatch
-  SUBSTR caseIgnoreSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40} )
-#
-olcAttributeTypes: ( 2.5.4.19 NAME 'physicalDeliveryOfficeName'
-  DESC 'RFC2256: Physical Delivery Office Name'
-  EQUALITY caseIgnoreMatch
-  SUBSTR caseIgnoreSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
-#
-olcAttributeTypes: ( 2.5.4.20 NAME 'telephoneNumber'
-  DESC 'RFC2256: Telephone Number'
-  EQUALITY telephoneNumberMatch
-  SUBSTR telephoneNumberSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.50{32} )
-#
-olcAttributeTypes: ( 2.5.4.21 NAME 'telexNumber'
-  DESC 'RFC2256: Telex Number'
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.52 )
-#
-olcAttributeTypes: ( 2.5.4.22 NAME 'teletexTerminalIdentifier'
-  DESC 'RFC2256: Teletex Terminal Identifier'
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.51 )
-#
-olcAttributeTypes: ( 2.5.4.23 NAME ( 'facsimileTelephoneNumber' 'fax' )
-  DESC 'RFC2256: Facsimile (Fax) Telephone Number'
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.22 )
-#
-olcAttributeTypes: ( 2.5.4.24 NAME 'x121Address'
-  DESC 'RFC2256: X.121 Address'
-  EQUALITY numericStringMatch
-  SUBSTR numericStringSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{15} )
-#
-olcAttributeTypes: ( 2.5.4.25 NAME 'internationaliSDNNumber'
-  DESC 'RFC2256: international ISDN number'
-  EQUALITY numericStringMatch
-  SUBSTR numericStringSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{16} )
-#
-olcAttributeTypes: ( 2.5.4.26 NAME 'registeredAddress'
-  DESC 'RFC2256: registered postal address'
-  SUP postalAddress
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
-#
-olcAttributeTypes: ( 2.5.4.27 NAME 'destinationIndicator'
-  DESC 'RFC2256: destination indicator'
-  EQUALITY caseIgnoreMatch
-  SUBSTR caseIgnoreSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{128} )
-#
-olcAttributeTypes: ( 2.5.4.28 NAME 'preferredDeliveryMethod'
-  DESC 'RFC2256: preferred delivery method'
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.14
-  SINGLE-VALUE )
-#
-olcAttributeTypes: ( 2.5.4.29 NAME 'presentationAddress'
-  DESC 'RFC2256: presentation address'
-  EQUALITY presentationAddressMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.43
-  SINGLE-VALUE )
-#
-olcAttributeTypes: ( 2.5.4.30 NAME 'supportedApplicationContext'
-  DESC 'RFC2256: supported application context'
-  EQUALITY objectIdentifierMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
-#
-olcAttributeTypes: ( 2.5.4.31 NAME 'member'
-  DESC 'RFC2256: member of a group'
-  SUP distinguishedName )
-#
-olcAttributeTypes: ( 2.5.4.32 NAME 'owner'
-  DESC 'RFC2256: owner (of the object)'
-  SUP distinguishedName )
-#
-olcAttributeTypes: ( 2.5.4.33 NAME 'roleOccupant'
-  DESC 'RFC2256: occupant of role'
-  SUP distinguishedName )
-#
-# system schema
-#olcAttributeTypes: ( 2.5.4.34 NAME 'seeAlso'
-#	DESC 'RFC2256: DN of related object'
-#	SUP distinguishedName )
-#
-# system schema
-#olcAttributeTypes: ( 2.5.4.35 NAME 'userPassword'
-#	DESC 'RFC2256/2307: password of user'
-#	EQUALITY octetStringMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{128} )
-#
-# Must be transferred using ;binary
-# with certificateExactMatch rule (per X.509)
-olcAttributeTypes: ( 2.5.4.36 NAME 'userCertificate'
-  DESC 'RFC2256: X.509 user certificate, use ;binary'
-  EQUALITY certificateExactMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )
-#
-# Must be transferred using ;binary
-# with certificateExactMatch rule (per X.509)
-olcAttributeTypes: ( 2.5.4.37 NAME 'cACertificate'
-  DESC 'RFC2256: X.509 CA certificate, use ;binary'
-  EQUALITY certificateExactMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )
-#
-# Must be transferred using ;binary
-olcAttributeTypes: ( 2.5.4.38 NAME 'authorityRevocationList'
-  DESC 'RFC2256: X.509 authority revocation list, use ;binary'
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
-#
-# Must be transferred using ;binary
-olcAttributeTypes: ( 2.5.4.39 NAME 'certificateRevocationList'
-  DESC 'RFC2256: X.509 certificate revocation list, use ;binary'
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
-#
-# Must be stored and requested in the binary form
-olcAttributeTypes: ( 2.5.4.40 NAME 'crossCertificatePair'
-  DESC 'RFC2256: X.509 cross certificate pair, use ;binary'
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.10 )
-#
-# 2.5.4.41 is defined above as it's used for subtyping
-#olcAttributeTypes: ( 2.5.4.41 NAME 'name'
-#	EQUALITY caseIgnoreMatch
-#	SUBSTR caseIgnoreSubstringsMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
-#
-olcAttributeTypes: ( 2.5.4.42 NAME ( 'givenName' 'gn' )
-  DESC 'RFC2256: first name(s) for which the entity is known by'
-  SUP name )
-#
-olcAttributeTypes: ( 2.5.4.43 NAME 'initials'
-  DESC 'RFC2256: initials of some or all of names, but not the surname(s).'
-  SUP name )
-#
-olcAttributeTypes: ( 2.5.4.44 NAME 'generationQualifier'
-  DESC 'RFC2256: name qualifier indicating a generation'
-  SUP name )
-#
-olcAttributeTypes: ( 2.5.4.45 NAME 'x500UniqueIdentifier'
-  DESC 'RFC2256: X.500 unique identifier'
-  EQUALITY bitStringMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.6 )
-#
-olcAttributeTypes: ( 2.5.4.46 NAME 'dnQualifier'
-  DESC 'RFC2256: DN qualifier'
-  EQUALITY caseIgnoreMatch
-  ORDERING caseIgnoreOrderingMatch
-  SUBSTR caseIgnoreSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 )
-#
-olcAttributeTypes: ( 2.5.4.47 NAME 'enhancedSearchGuide'
-  DESC 'RFC2256: enhanced search guide'
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.21 )
-#
-olcAttributeTypes: ( 2.5.4.48 NAME 'protocolInformation'
-  DESC 'RFC2256: protocol information'
-  EQUALITY protocolInformationMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.42 )
-#
-# 2.5.4.49 is defined above as it's used for subtyping
-#olcAttributeTypes: ( 2.5.4.49 NAME 'distinguishedName'
-#	EQUALITY distinguishedNameMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-#
-olcAttributeTypes: ( 2.5.4.50 NAME 'uniqueMember'
-  DESC 'RFC2256: unique member of a group'
-  EQUALITY uniqueMemberMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.34 )
-#
-olcAttributeTypes: ( 2.5.4.51 NAME 'houseIdentifier'
-  DESC 'RFC2256: house identifier'
-  EQUALITY caseIgnoreMatch
-  SUBSTR caseIgnoreSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
-#
-# Must be transferred using ;binary
-olcAttributeTypes: ( 2.5.4.52 NAME 'supportedAlgorithms'
-  DESC 'RFC2256: supported algorithms'
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.49 )
-#
-# Must be transferred using ;binary
-olcAttributeTypes: ( 2.5.4.53 NAME 'deltaRevocationList'
-  DESC 'RFC2256: delta revocation list; use ;binary'
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
-#
-olcAttributeTypes: ( 2.5.4.54 NAME 'dmdName'
-  DESC 'RFC2256: name of DMD'
-  SUP name )
-#
-olcAttributeTypes: ( 2.5.4.65 NAME 'pseudonym'
-  DESC 'X.520(4th): pseudonym for the object'
-  SUP name )
-#
-# Standard object classes from RFC2256
-#
-# system schema
-#olcObjectClasses: ( 2.5.6.1 NAME 'alias'
-#	DESC 'RFC2256: an alias'
-#	SUP top STRUCTURAL
-#	MUST aliasedObjectName )
-#
-olcObjectClasses: ( 2.5.6.2 NAME 'country'
-  DESC 'RFC2256: a country'
-  SUP top STRUCTURAL
-  MUST c
-  MAY ( searchGuide $ description ) )
-#
-olcObjectClasses: ( 2.5.6.3 NAME 'locality'
-  DESC 'RFC2256: a locality'
-  SUP top STRUCTURAL
-  MAY ( street $ seeAlso $ searchGuide $ st $ l $ description ) )
-#
-olcObjectClasses: ( 2.5.6.4 NAME 'organization'
-  DESC 'RFC2256: an organization'
-  SUP top STRUCTURAL
-  MUST o
-  MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $
-  x121Address $ registeredAddress $ destinationIndicator $
-  preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
-  telephoneNumber $ internationaliSDNNumber $ 
-  facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $
-  postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) )
-#
-olcObjectClasses: ( 2.5.6.5 NAME 'organizationalUnit'
-  DESC 'RFC2256: an organizational unit'
-  SUP top STRUCTURAL
-  MUST ou
-  MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $
-  x121Address $ registeredAddress $ destinationIndicator $
-  preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
-  telephoneNumber $ internationaliSDNNumber $
-  facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $
-  postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) )
-#
-olcObjectClasses: ( 2.5.6.6 NAME 'person'
-  DESC 'RFC2256: a person'
-  SUP top STRUCTURAL
-  MUST ( sn $ cn )
-  MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )
-#
-olcObjectClasses: ( 2.5.6.7 NAME 'organizationalPerson'
-  DESC 'RFC2256: an organizational person'
-  SUP person STRUCTURAL
-  MAY ( title $ x121Address $ registeredAddress $ destinationIndicator $
-  preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
-  telephoneNumber $ internationaliSDNNumber $ 
-  facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $
-  postalAddress $ physicalDeliveryOfficeName $ ou $ st $ l ) )
-#
-olcObjectClasses: ( 2.5.6.8 NAME 'organizationalRole'
-  DESC 'RFC2256: an organizational role'
-  SUP top STRUCTURAL
-  MUST cn
-  MAY ( x121Address $ registeredAddress $ destinationIndicator $
-  preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
-  telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $
-  seeAlso $ roleOccupant $ preferredDeliveryMethod $ street $
-  postOfficeBox $ postalCode $ postalAddress $
-  physicalDeliveryOfficeName $ ou $ st $ l $ description ) )
-#
-olcObjectClasses: ( 2.5.6.9 NAME 'groupOfNames'
-  DESC 'RFC2256: a group of names (DNs)'
-  SUP top STRUCTURAL
-  MUST ( member $ cn )
-  MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ description ) )
-#
-olcObjectClasses: ( 2.5.6.10 NAME 'residentialPerson'
-  DESC 'RFC2256: an residential person'
-  SUP person STRUCTURAL
-  MUST l
-  MAY ( businessCategory $ x121Address $ registeredAddress $
-  destinationIndicator $ preferredDeliveryMethod $ telexNumber $
-  teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumber $
-  facsimileTelephoneNumber $ preferredDeliveryMethod $ street $
-  postOfficeBox $ postalCode $ postalAddress $
-  physicalDeliveryOfficeName $ st $ l ) )
-#
-olcObjectClasses: ( 2.5.6.11 NAME 'applicationProcess'
-  DESC 'RFC2256: an application process'
-  SUP top STRUCTURAL
-  MUST cn
-  MAY ( seeAlso $ ou $ l $ description ) )
-#
-olcObjectClasses: ( 2.5.6.12 NAME 'applicationEntity'
-  DESC 'RFC2256: an application entity'
-  SUP top STRUCTURAL
-  MUST ( presentationAddress $ cn )
-  MAY ( supportedApplicationContext $ seeAlso $ ou $ o $ l $
-  description ) )
-#
-olcObjectClasses: ( 2.5.6.13 NAME 'dSA'
-  DESC 'RFC2256: a directory system agent (a server)'
-  SUP applicationEntity STRUCTURAL
-  MAY knowledgeInformation )
-#
-olcObjectClasses: ( 2.5.6.14 NAME 'device'
-  DESC 'RFC2256: a device'
-  SUP top STRUCTURAL
-  MUST cn
-  MAY ( serialNumber $ seeAlso $ owner $ ou $ o $ l $ description ) )
-#
-olcObjectClasses: ( 2.5.6.15 NAME 'strongAuthenticationUser'
-  DESC 'RFC2256: a strong authentication user'
-  SUP top AUXILIARY
-  MUST userCertificate )
-#
-olcObjectClasses: ( 2.5.6.16 NAME 'certificationAuthority'
-  DESC 'RFC2256: a certificate authority'
-  SUP top AUXILIARY
-  MUST ( authorityRevocationList $ certificateRevocationList $
-  cACertificate ) MAY crossCertificatePair )
-#
-olcObjectClasses: ( 2.5.6.17 NAME 'groupOfUniqueNames'
-  DESC 'RFC2256: a group of unique names (DN and Unique Identifier)'
-  SUP top STRUCTURAL
-  MUST ( uniqueMember $ cn )
-  MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ description ) )
-#
-olcObjectClasses: ( 2.5.6.18 NAME 'userSecurityInformation'
-  DESC 'RFC2256: a user security information'
-  SUP top AUXILIARY
-  MAY ( supportedAlgorithms ) )
-#
-olcObjectClasses: ( 2.5.6.16.2 NAME 'certificationAuthority-V2'
-  SUP certificationAuthority
-  AUXILIARY MAY ( deltaRevocationList ) )
-#
-olcObjectClasses: ( 2.5.6.19 NAME 'cRLDistributionPoint'
-  SUP top STRUCTURAL
-  MUST ( cn )
-  MAY ( certificateRevocationList $ authorityRevocationList $
-  deltaRevocationList ) )
-#
-olcObjectClasses: ( 2.5.6.20 NAME 'dmd'
-  SUP top STRUCTURAL
-  MUST ( dmdName )
-  MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $
-  x121Address $ registeredAddress $ destinationIndicator $
-  preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
-  telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $
-  street $ postOfficeBox $ postalCode $ postalAddress $
-  physicalDeliveryOfficeName $ st $ l $ description ) )
-#
-#
-# Object Classes from RFC 2587
-#
-olcObjectClasses: ( 2.5.6.21 NAME 'pkiUser'
-  DESC 'RFC2587: a PKI user'
-  SUP top AUXILIARY
-  MAY userCertificate )
-#
-olcObjectClasses: ( 2.5.6.22 NAME 'pkiCA'
-  DESC 'RFC2587: PKI certificate authority'
-  SUP top AUXILIARY
-  MAY ( authorityRevocationList $ certificateRevocationList $
-  cACertificate $ crossCertificatePair ) )
-#
-olcObjectClasses: ( 2.5.6.23 NAME 'deltaCRL'
-  DESC 'RFC2587: PKI user'
-  SUP top AUXILIARY
-  MAY deltaRevocationList )
-#
-#
-# Standard Track URI label schema from RFC 2079
-# system schema
-#olcAttributeTypes: ( 1.3.6.1.4.1.250.1.57 NAME 'labeledURI'
-#	DESC 'RFC2079: Uniform Resource Identifier with optional label'
-#	EQUALITY caseExactMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-#
-olcObjectClasses: ( 1.3.6.1.4.1.250.3.15 NAME 'labeledURIObject'
-  DESC 'RFC2079: object that contains the URI attribute type'
-  MAY ( labeledURI )
-  SUP top AUXILIARY )
-#
-#
-# Derived from RFC 1274, but with new "short names"
-#
-#olcAttributeTypes: ( 0.9.2342.19200300.100.1.1
-#	NAME ( 'uid' 'userid' )
-#	DESC 'RFC1274: user identifier'
-#	EQUALITY caseIgnoreMatch
-#	SUBSTR caseIgnoreSubstringsMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-#
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.3
-  NAME ( 'mail' 'rfc822Mailbox' )
-  DESC 'RFC1274: RFC822 Mailbox'
-    EQUALITY caseIgnoreIA5Match
-    SUBSTR caseIgnoreIA5SubstringsMatch
-    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-#
-olcObjectClasses: ( 0.9.2342.19200300.100.4.19 NAME 'simpleSecurityObject'
-  DESC 'RFC1274: simple security object'
-  SUP top AUXILIARY
-  MUST userPassword )
-#
-# RFC 1274 + RFC 2247
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.25
-  NAME ( 'dc' 'domainComponent' )
-  DESC 'RFC1274/2247: domain component'
-  EQUALITY caseIgnoreIA5Match
-  SUBSTR caseIgnoreIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-#
-# RFC 2247
-olcObjectClasses: ( 1.3.6.1.4.1.1466.344 NAME 'dcObject'
-  DESC 'RFC2247: domain component object'
-  SUP top AUXILIARY MUST dc )
-#
-# RFC 2377
-olcObjectClasses: ( 1.3.6.1.1.3.1 NAME 'uidObject'
-  DESC 'RFC2377: uid object'
-  SUP top AUXILIARY MUST uid )
-#
-# From COSINE Pilot
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.37
-  NAME 'associatedDomain'
-  DESC 'RFC1274: domain associated with object'
-  EQUALITY caseIgnoreIA5Match
-  SUBSTR caseIgnoreIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-#
-# RFC 2459 -- deprecated in favor of 'mail' (in cosine.schema)
-olcAttributeTypes: ( 1.2.840.113549.1.9.1
-  NAME ( 'email' 'emailAddress' 'pkcs9email' )
-  DESC 'RFC3280: legacy attribute for email addresses in DNs'
-  EQUALITY caseIgnoreIA5Match
-  SUBSTR caseIgnoreIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} )
-#
diff --git a/ldap/data/ldap_conf/schema/core.schema b/ldap/data/ldap_conf/schema/core.schema
deleted file mode 100644
index cf0968a..0000000
--- a/ldap/data/ldap_conf/schema/core.schema
+++ /dev/null
@@ -1,622 +0,0 @@
-# OpenLDAP Core schema
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-
-# The version of this file as distributed by the OpenLDAP Foundation
-# contains text claiming copyright by the Internet Society and including
-# the IETF RFC license, which does not meet Debian's Free Software
-# Guidelines.  However, apart from short and obvious comments, the text of
-# this file is purely a functional interface specification, which is not
-# subject to that license and is not copyrightable under US law.
-#
-# The license statement is retained below so as not to remove credit, but
-# as best as we can determine, it is not applicable to the contents of
-# this file.
-
-## Portions Copyright (C) The Internet Society (1997-2006).
-## All Rights Reserved.
-##
-## This document and translations of it may be copied and furnished to
-## others, and derivative works that comment on or otherwise explain it
-## or assist in its implementation may be prepared, copied, published
-## and distributed, in whole or in part, without restriction of any
-## kind, provided that the above copyright notice and this paragraph are
-## included on all such copies and derivative works.  However, this
-## document itself may not be modified in any way, such as by removing
-## the copyright notice or references to the Internet Society or other
-## Internet organizations, except as needed for the purpose of
-## developing Internet standards in which case the procedures for
-## copyrights defined in the Internet Standards process must be         
-## followed, or as required to translate it into languages other than
-## English.
-##                                                                      
-## The limited permissions granted above are perpetual and will not be  
-## revoked by the Internet Society or its successors or assigns.        
-## 
-## This document and the information contained herein is provided on an 
-## "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
-## TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
-## BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
-## HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
-## MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-#
-#
-# Includes LDAPv3 schema items from:
-#	RFC 2252/2256 (LDAPv3)
-#
-# Select standard track schema items:
-#	RFC 1274 (uid/dc)
-#	RFC 2079 (URI)
-#	RFC 2247 (dc/dcObject)
-#	RFC 2587 (PKI)
-#	RFC 2589 (Dynamic Directory Services)
-#	RFC 4524 (associatedDomain)
-#
-# Select informational schema items:
-#	RFC 2377 (uidObject)
-
-#
-# Standard attribute types from RFC 2256
-#
-
-# system schema
-#attributetype ( 2.5.4.0 NAME 'objectClass'
-#	DESC 'RFC2256: object classes of the entity'
-#	EQUALITY objectIdentifierMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
-
-# system schema
-#attributetype ( 2.5.4.1 NAME ( 'aliasedObjectName' 'aliasedEntryName' )
-#	DESC 'RFC2256: name of aliased object'
-#	EQUALITY distinguishedNameMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE )
-
-attributetype ( 2.5.4.2 NAME 'knowledgeInformation'
-	DESC 'RFC2256: knowledge information'
-	EQUALITY caseIgnoreMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
-
-# system schema
-#attributetype ( 2.5.4.3 NAME ( 'cn' 'commonName' )
-#	DESC 'RFC2256: common name(s) for which the entity is known by'
-#	SUP name )
-
-attributetype ( 2.5.4.4 NAME ( 'sn' 'surname' )
-	DESC 'RFC2256: last (family) name(s) for which the entity is known by'
-	SUP name )
-
-attributetype ( 2.5.4.5 NAME 'serialNumber'
-	DESC 'RFC2256: serial number of the entity'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{64} )
-
-# RFC 4519 definition ('countryName' in X.500 and RFC2256)
-attributetype ( 2.5.4.6 NAME ( 'c' 'countryName' )
-	DESC 'RFC4519: two-letter ISO-3166 country code'
-	SUP name
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.11
-	SINGLE-VALUE )
-
-#attributetype ( 2.5.4.6 NAME ( 'c' 'countryName' )
-#	DESC 'RFC2256: ISO-3166 country 2-letter code'
-#	SUP name SINGLE-VALUE )
-
-attributetype ( 2.5.4.7 NAME ( 'l' 'localityName' )
-	DESC 'RFC2256: locality which this object resides in'
-	SUP name )
-
-attributetype ( 2.5.4.8 NAME ( 'st' 'stateOrProvinceName' )
-	DESC 'RFC2256: state or province which this object resides in'
-	SUP name )
-
-attributetype ( 2.5.4.9 NAME ( 'street' 'streetAddress' )
-	DESC 'RFC2256: street address of this object'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
-
-attributetype ( 2.5.4.10 NAME ( 'o' 'organizationName' )
-	DESC 'RFC2256: organization this object belongs to'
-	SUP name )
-
-attributetype ( 2.5.4.11 NAME ( 'ou' 'organizationalUnitName' )
-	DESC 'RFC2256: organizational unit this object belongs to'
-	SUP name )
-
-attributetype ( 2.5.4.12 NAME 'title'
-	DESC 'RFC2256: title associated with the entity'
-	SUP name )
-
-# system schema
-#attributetype ( 2.5.4.13 NAME 'description'
-#	DESC 'RFC2256: descriptive information'
-#	EQUALITY caseIgnoreMatch
-#	SUBSTR caseIgnoreSubstringsMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
-
-# Deprecated by enhancedSearchGuide
-attributetype ( 2.5.4.14 NAME 'searchGuide'
-	DESC 'RFC2256: search guide, deprecated by enhancedSearchGuide'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.25 )
-
-attributetype ( 2.5.4.15 NAME 'businessCategory'
-	DESC 'RFC2256: business category'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
-
-attributetype ( 2.5.4.16 NAME 'postalAddress'
-	DESC 'RFC2256: postal address'
-	EQUALITY caseIgnoreListMatch
-	SUBSTR caseIgnoreListSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
-
-attributetype ( 2.5.4.17 NAME 'postalCode'
-	DESC 'RFC2256: postal code'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40} )
-
-attributetype ( 2.5.4.18 NAME 'postOfficeBox'
-	DESC 'RFC2256: Post Office Box'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40} )
-
-attributetype ( 2.5.4.19 NAME 'physicalDeliveryOfficeName'
-	DESC 'RFC2256: Physical Delivery Office Name'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
-
-attributetype ( 2.5.4.20 NAME 'telephoneNumber'
-	DESC 'RFC2256: Telephone Number'
-	EQUALITY telephoneNumberMatch
-	SUBSTR telephoneNumberSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.50{32} )
-
-attributetype ( 2.5.4.21 NAME 'telexNumber'
-	DESC 'RFC2256: Telex Number'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.52 )
-
-attributetype ( 2.5.4.22 NAME 'teletexTerminalIdentifier'
-	DESC 'RFC2256: Teletex Terminal Identifier'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.51 )
-
-attributetype ( 2.5.4.23 NAME ( 'facsimileTelephoneNumber' 'fax' )
-	DESC 'RFC2256: Facsimile (Fax) Telephone Number'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.22 )
-
-attributetype ( 2.5.4.24 NAME 'x121Address'
-	DESC 'RFC2256: X.121 Address'
-	EQUALITY numericStringMatch
-	SUBSTR numericStringSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{15} )
-
-attributetype ( 2.5.4.25 NAME 'internationaliSDNNumber'
-	DESC 'RFC2256: international ISDN number'
-	EQUALITY numericStringMatch
-	SUBSTR numericStringSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{16} )
-
-attributetype ( 2.5.4.26 NAME 'registeredAddress'
-	DESC 'RFC2256: registered postal address'
-	SUP postalAddress
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
-
-attributetype ( 2.5.4.27 NAME 'destinationIndicator'
-	DESC 'RFC2256: destination indicator'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{128} )
-
-attributetype ( 2.5.4.28 NAME 'preferredDeliveryMethod'
-	DESC 'RFC2256: preferred delivery method'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.14
-	SINGLE-VALUE )
-
-attributetype ( 2.5.4.29 NAME 'presentationAddress'
-	DESC 'RFC2256: presentation address'
-	EQUALITY presentationAddressMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.43
-	SINGLE-VALUE )
-
-attributetype ( 2.5.4.30 NAME 'supportedApplicationContext'
-	DESC 'RFC2256: supported application context'
-	EQUALITY objectIdentifierMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
-
-attributetype ( 2.5.4.31 NAME 'member'
-	DESC 'RFC2256: member of a group'
-	SUP distinguishedName )
-
-attributetype ( 2.5.4.32 NAME 'owner'
-	DESC 'RFC2256: owner (of the object)'
-	SUP distinguishedName )
-
-attributetype ( 2.5.4.33 NAME 'roleOccupant'
-	DESC 'RFC2256: occupant of role'
-	SUP distinguishedName )
-
-# system schema
-#attributetype ( 2.5.4.34 NAME 'seeAlso'
-#	DESC 'RFC2256: DN of related object'
-#	SUP distinguishedName )
-
-# system schema
-#attributetype ( 2.5.4.35 NAME 'userPassword'
-#	DESC 'RFC2256/2307: password of user'
-#	EQUALITY octetStringMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{128} )
-
-# Must be transferred using ;binary
-# with certificateExactMatch rule (per X.509)
-attributetype ( 2.5.4.36 NAME 'userCertificate'
-	DESC 'RFC2256: X.509 user certificate, use ;binary'
-	EQUALITY certificateExactMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )
-
-# Must be transferred using ;binary
-# with certificateExactMatch rule (per X.509)
-attributetype ( 2.5.4.37 NAME 'cACertificate'
-	DESC 'RFC2256: X.509 CA certificate, use ;binary'
-	EQUALITY certificateExactMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )
-
-# Must be transferred using ;binary
-attributetype ( 2.5.4.38 NAME 'authorityRevocationList'
-	DESC 'RFC2256: X.509 authority revocation list, use ;binary'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
-
-# Must be transferred using ;binary
-attributetype ( 2.5.4.39 NAME 'certificateRevocationList'
-	DESC 'RFC2256: X.509 certificate revocation list, use ;binary'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
-
-# Must be stored and requested in the binary form
-attributetype ( 2.5.4.40 NAME 'crossCertificatePair'
-	DESC 'RFC2256: X.509 cross certificate pair, use ;binary'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.10 )
-
-# system schema
-#attributetype ( 2.5.4.41 NAME 'name'
-#	EQUALITY caseIgnoreMatch
-#	SUBSTR caseIgnoreSubstringsMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
-
-attributetype ( 2.5.4.42 NAME ( 'givenName' 'gn' )
-	DESC 'RFC2256: first name(s) for which the entity is known by'
-	SUP name )
-
-attributetype ( 2.5.4.43 NAME 'initials'
-	DESC 'RFC2256: initials of some or all of names, but not the surname(s).'
-	SUP name )
-
-attributetype ( 2.5.4.44 NAME 'generationQualifier'
-	DESC 'RFC2256: name qualifier indicating a generation'
-	SUP name )
-
-attributetype ( 2.5.4.45 NAME 'x500UniqueIdentifier'
-	DESC 'RFC2256: X.500 unique identifier'
-	EQUALITY bitStringMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.6 )
-
-attributetype ( 2.5.4.46 NAME 'dnQualifier'
-	DESC 'RFC2256: DN qualifier'
-	EQUALITY caseIgnoreMatch
-	ORDERING caseIgnoreOrderingMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 )
-
-attributetype ( 2.5.4.47 NAME 'enhancedSearchGuide'
-	DESC 'RFC2256: enhanced search guide'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.21 )
-
-attributetype ( 2.5.4.48 NAME 'protocolInformation'
-	DESC 'RFC2256: protocol information'
-	EQUALITY protocolInformationMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.42 )
-
-# system schema
-#attributetype ( 2.5.4.49 NAME 'distinguishedName'
-#	EQUALITY distinguishedNameMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-
-attributetype ( 2.5.4.50 NAME 'uniqueMember'
-	DESC 'RFC2256: unique member of a group'
-	EQUALITY uniqueMemberMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.34 )
-
-attributetype ( 2.5.4.51 NAME 'houseIdentifier'
-	DESC 'RFC2256: house identifier'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
-
-# Must be transferred using ;binary
-attributetype ( 2.5.4.52 NAME 'supportedAlgorithms'
-	DESC 'RFC2256: supported algorithms'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.49 )
-
-# Must be transferred using ;binary
-attributetype ( 2.5.4.53 NAME 'deltaRevocationList'
-	DESC 'RFC2256: delta revocation list; use ;binary'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
-
-attributetype ( 2.5.4.54 NAME 'dmdName'
-	DESC 'RFC2256: name of DMD'
-	SUP name )
-
-attributetype ( 2.5.4.65 NAME 'pseudonym'
-	DESC 'X.520(4th): pseudonym for the object'
-	SUP name )
-
-# Standard object classes from RFC2256
-
-# system schema
-#objectclass ( 2.5.6.0 NAME 'top'
-#	DESC 'RFC2256: top of the superclass chain'
-#	ABSTRACT
-#	MUST objectClass )
-
-# system schema
-#objectclass ( 2.5.6.1 NAME 'alias'
-#	DESC 'RFC2256: an alias'
-#	SUP top STRUCTURAL
-#	MUST aliasedObjectName )
-
-objectclass ( 2.5.6.2 NAME 'country'
-	DESC 'RFC2256: a country'
-	SUP top STRUCTURAL
-	MUST c
-	MAY ( searchGuide $ description ) )
-
-objectclass ( 2.5.6.3 NAME 'locality'
-	DESC 'RFC2256: a locality'
-	SUP top STRUCTURAL
-	MAY ( street $ seeAlso $ searchGuide $ st $ l $ description ) )
-
-objectclass ( 2.5.6.4 NAME 'organization'
-	DESC 'RFC2256: an organization'
-	SUP top STRUCTURAL
-	MUST o
-	MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $
-		x121Address $ registeredAddress $ destinationIndicator $
-		preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
-		telephoneNumber $ internationaliSDNNumber $ 
-		facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $
-		postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) )
-
-objectclass ( 2.5.6.5 NAME 'organizationalUnit'
-	DESC 'RFC2256: an organizational unit'
-	SUP top STRUCTURAL
-	MUST ou
-	MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $
-		x121Address $ registeredAddress $ destinationIndicator $
-		preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
-		telephoneNumber $ internationaliSDNNumber $
-		facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $
-		postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) )
-
-objectclass ( 2.5.6.6 NAME 'person'
-	DESC 'RFC2256: a person'
-	SUP top STRUCTURAL
-	MUST ( sn $ cn )
-	MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )
-
-objectclass ( 2.5.6.7 NAME 'organizationalPerson'
-	DESC 'RFC2256: an organizational person'
-	SUP person STRUCTURAL
-	MAY ( title $ x121Address $ registeredAddress $ destinationIndicator $
-		preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
-		telephoneNumber $ internationaliSDNNumber $ 
-		facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $
-		postalAddress $ physicalDeliveryOfficeName $ ou $ st $ l ) )
-
-objectclass ( 2.5.6.8 NAME 'organizationalRole'
-	DESC 'RFC2256: an organizational role'
-	SUP top STRUCTURAL
-	MUST cn
-	MAY ( x121Address $ registeredAddress $ destinationIndicator $
-		preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
-		telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $
-		seeAlso $ roleOccupant $ preferredDeliveryMethod $ street $
-		postOfficeBox $ postalCode $ postalAddress $
-		physicalDeliveryOfficeName $ ou $ st $ l $ description ) )
-
-objectclass ( 2.5.6.9 NAME 'groupOfNames'
-	DESC 'RFC2256: a group of names (DNs)'
-	SUP top STRUCTURAL
-	MUST ( member $ cn )
-	MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ description ) )
-
-objectclass ( 2.5.6.10 NAME 'residentialPerson'
-	DESC 'RFC2256: an residential person'
-	SUP person STRUCTURAL
-	MUST l
-	MAY ( businessCategory $ x121Address $ registeredAddress $
-		destinationIndicator $ preferredDeliveryMethod $ telexNumber $
-		teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumber $
-		facsimileTelephoneNumber $ preferredDeliveryMethod $ street $
-		postOfficeBox $ postalCode $ postalAddress $
-		physicalDeliveryOfficeName $ st $ l ) )
-
-objectclass ( 2.5.6.11 NAME 'applicationProcess'
-	DESC 'RFC2256: an application process'
-	SUP top STRUCTURAL
-	MUST cn
-	MAY ( seeAlso $ ou $ l $ description ) )
-
-objectclass ( 2.5.6.12 NAME 'applicationEntity'
-	DESC 'RFC2256: an application entity'
-	SUP top STRUCTURAL
-	MUST ( presentationAddress $ cn )
-	MAY ( supportedApplicationContext $ seeAlso $ ou $ o $ l $
-	description ) )
-
-objectclass ( 2.5.6.13 NAME 'dSA'
-	DESC 'RFC2256: a directory system agent (a server)'
-	SUP applicationEntity STRUCTURAL
-	MAY knowledgeInformation )
-
-objectclass ( 2.5.6.14 NAME 'device'
-	DESC 'RFC2256: a device'
-	SUP top STRUCTURAL
-	MUST cn
-	MAY ( serialNumber $ seeAlso $ owner $ ou $ o $ l $ description ) )
-
-objectclass ( 2.5.6.15 NAME 'strongAuthenticationUser'
-	DESC 'RFC2256: a strong authentication user'
-	SUP top AUXILIARY
-	MUST userCertificate )
-
-objectclass ( 2.5.6.16 NAME 'certificationAuthority'
-	DESC 'RFC2256: a certificate authority'
-	SUP top AUXILIARY
-	MUST ( authorityRevocationList $ certificateRevocationList $
-		cACertificate ) MAY crossCertificatePair )
-
-objectclass ( 2.5.6.17 NAME 'groupOfUniqueNames'
-	DESC 'RFC2256: a group of unique names (DN and Unique Identifier)'
-	SUP top STRUCTURAL
-	MUST ( uniqueMember $ cn )
-	MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ description ) )
-
-objectclass ( 2.5.6.18 NAME 'userSecurityInformation'
-	DESC 'RFC2256: a user security information'
-	SUP top AUXILIARY
-	MAY ( supportedAlgorithms ) )
-
-objectclass ( 2.5.6.16.2 NAME 'certificationAuthority-V2'
-	SUP certificationAuthority
-	AUXILIARY MAY ( deltaRevocationList ) )
-
-objectclass ( 2.5.6.19 NAME 'cRLDistributionPoint'
-	SUP top STRUCTURAL
-	MUST ( cn )
-	MAY ( certificateRevocationList $ authorityRevocationList $
-		deltaRevocationList ) )
-
-objectclass ( 2.5.6.20 NAME 'dmd'
-	SUP top STRUCTURAL
-	MUST ( dmdName )
-	MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $
-		x121Address $ registeredAddress $ destinationIndicator $
-		preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
-		telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $
-		street $ postOfficeBox $ postalCode $ postalAddress $
-		physicalDeliveryOfficeName $ st $ l $ description ) )
-
-#
-# Object Classes from RFC 2587
-#
-objectclass ( 2.5.6.21 NAME 'pkiUser'
-	DESC 'RFC2587: a PKI user'
-	SUP top AUXILIARY
-	MAY userCertificate )
-
-objectclass ( 2.5.6.22 NAME 'pkiCA'
-	DESC 'RFC2587: PKI certificate authority'
-	SUP top AUXILIARY
-	MAY ( authorityRevocationList $ certificateRevocationList $
-		cACertificate $ crossCertificatePair ) )
-
-objectclass ( 2.5.6.23 NAME 'deltaCRL'
-	DESC 'RFC2587: PKI user'
-	SUP top AUXILIARY
-	MAY deltaRevocationList )
-
-#
-# Standard Track URI label schema from RFC 2079
-# system schema
-#attributetype ( 1.3.6.1.4.1.250.1.57 NAME 'labeledURI'
-#	DESC 'RFC2079: Uniform Resource Identifier with optional label'
-#	EQUALITY caseExactMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
-objectclass ( 1.3.6.1.4.1.250.3.15 NAME 'labeledURIObject'
-	DESC 'RFC2079: object that contains the URI attribute type'
-	SUP top AUXILIARY
-	MAY ( labeledURI ) )
-
-#
-# Derived from RFC 1274, but with new "short names"
-#
-#attributetype ( 0.9.2342.19200300.100.1.1
-#	NAME ( 'uid' 'userid' )
-#	DESC 'RFC1274: user identifier'
-#	EQUALITY caseIgnoreMatch
-#	SUBSTR caseIgnoreSubstringsMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.3
-	NAME ( 'mail' 'rfc822Mailbox' )
-	DESC 'RFC1274: RFC822 Mailbox'
-    EQUALITY caseIgnoreIA5Match
-    SUBSTR caseIgnoreIA5SubstringsMatch
-    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-
-objectclass ( 0.9.2342.19200300.100.4.19 NAME 'simpleSecurityObject'
-	DESC 'RFC1274: simple security object'
-	SUP top AUXILIARY
-	MUST userPassword )
-
-# RFC 1274 + RFC 2247
-attributetype ( 0.9.2342.19200300.100.1.25
-	NAME ( 'dc' 'domainComponent' )
-	DESC 'RFC1274/2247: domain component'
-	EQUALITY caseIgnoreIA5Match
-	SUBSTR caseIgnoreIA5SubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-
-# RFC 2247
-objectclass ( 1.3.6.1.4.1.1466.344 NAME 'dcObject'
-	DESC 'RFC2247: domain component object'
-	SUP top AUXILIARY MUST dc )
-
-# RFC 2377
-objectclass ( 1.3.6.1.1.3.1 NAME 'uidObject'
-	DESC 'RFC2377: uid object'
-	SUP top AUXILIARY MUST uid )
-
-# RFC 4524
-#   The 'associatedDomain' attribute specifies DNS [RFC1034][RFC2181]
-#   host names [RFC1123] that are associated with an object.   That is,
-#   values of this attribute should conform to the following ABNF:
-#
-#    domain = root / label *( DOT label )
-#    root   = SPACE
-#    label  = LETDIG [ *61( LETDIG / HYPHEN ) LETDIG ]
-#    LETDIG = %x30-39 / %x41-5A / %x61-7A ; "0" - "9" / "A"-"Z" / "a"-"z"
-#    SPACE  = %x20                        ; space (" ")
-#    HYPHEN = %x2D                        ; hyphen ("-")
-#    DOT    = %x2E                        ; period (".")
-attributetype ( 0.9.2342.19200300.100.1.37
-	NAME 'associatedDomain'
-	DESC 'RFC1274: domain associated with object'
-	EQUALITY caseIgnoreIA5Match
-	SUBSTR caseIgnoreIA5SubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-# RFC 2459 -- deprecated in favor of 'mail' (in cosine.schema)
-attributetype ( 1.2.840.113549.1.9.1
-	NAME ( 'email' 'emailAddress' 'pkcs9email' )
-	DESC 'RFC3280: legacy attribute for email addresses in DNs'
-	EQUALITY caseIgnoreIA5Match
-	SUBSTR caseIgnoreIA5SubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} )
-
diff --git a/ldap/data/ldap_conf/schema/cosine.ldif b/ldap/data/ldap_conf/schema/cosine.ldif
deleted file mode 100644
index d207111..0000000
--- a/ldap/data/ldap_conf/schema/cosine.ldif
+++ /dev/null
@@ -1,200 +0,0 @@
-# RFC1274: Cosine and Internet X.500 schema
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-# RFC1274: Cosine and Internet X.500 schema
-#
-# This file contains LDAPv3 schema derived from X.500 COSINE "pilot"
-# schema.  As this schema was defined for X.500(89), some
-# oddities were introduced in the mapping to LDAPv3.  The
-# mappings were based upon: draft-ietf-asid-ldapv3-attributes-03.txt
-# (a work in progress)
-#
-# Note: It seems that the pilot schema evolved beyond what was
-# described in RFC1274.  However, this document attempts to describes
-# RFC1274 as published.
-#
-# Depends on core.ldif
-#
-# This file was automatically generated from cosine.schema; see that
-# file for complete background.
-#
-dn: cn=cosine,cn=schema,cn=config
-objectClass: olcSchemaConfig
-cn: cosine
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.2 NAME 'textEncodedORAddress' 
- EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.
- 1466.115.121.1.15{256} )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.4 NAME 'info' DESC 'RFC1274: g
- eneral information' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{2048} )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.5 NAME ( 'drink' 'favouriteDri
- nk' ) DESC 'RFC1274: favorite drink' EQUALITY caseIgnoreMatch SUBSTR caseIgno
- reSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.6 NAME 'roomNumber' DESC 'RFC1
- 274: room number' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch S
- YNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.7 NAME 'photo' DESC 'RFC1274: 
- photo (G3 fax)' SYNTAX 1.3.6.1.4.1.1466.115.121.1.23{25000} )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.8 NAME 'userClass' DESC 'RFC12
- 74: category of user' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMat
- ch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.9 NAME 'host' DESC 'RFC1274: h
- ost computer' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTA
- X 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.10 NAME 'manager' DESC 'RFC127
- 4: DN of manager' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115
- .121.1.12 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.11 NAME 'documentIdentifier' D
- ESC 'RFC1274: unique identifier of document' EQUALITY caseIgnoreMatch SUBSTR 
- caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.12 NAME 'documentTitle' DESC '
- RFC1274: title of document' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstri
- ngsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.13 NAME 'documentVersion' DES
- C 'RFC1274: version of document' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSu
- bstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.14 NAME 'documentAuthor' DESC
-  'RFC1274: DN of author of document' EQUALITY distinguishedNameMatch SYNTAX 1
- .3.6.1.4.1.1466.115.121.1.12 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.15 NAME 'documentLocation' DE
- SC 'RFC1274: location of document original' EQUALITY caseIgnoreMatch SUBSTR c
- aseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.20 NAME ( 'homePhone' 'homeTe
- lephoneNumber' ) DESC 'RFC1274: home telephone number' EQUALITY telephoneNumb
- erMatch SUBSTR telephoneNumberSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121
- .1.50 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.21 NAME 'secretary' DESC 'RFC
- 1274: DN of secretary' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.146
- 6.115.121.1.12 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.22 NAME 'otherMailbox' SYNTAX
-  1.3.6.1.4.1.1466.115.121.1.39 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.26 NAME 'aRecord' EQUALITY ca
- seIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.27 NAME 'mDRecord' EQUALITY c
- aseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.28 NAME 'mXRecord' EQUALITY c
- aseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.29 NAME 'nSRecord' EQUALITY c
- aseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.30 NAME 'sOARecord' EQUALITY 
- caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.31 NAME 'cNAMERecord' EQUALIT
- Y caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.38 NAME 'associatedName' DESC
-  'RFC1274: DN of entry associated with domain' EQUALITY distinguishedNameMatc
- h SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.39 NAME 'homePostalAddress' D
- ESC 'RFC1274: home postal address' EQUALITY caseIgnoreListMatch SUBSTR caseIg
- noreListSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.40 NAME 'personalTitle' DESC 
- 'RFC1274: personal title' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstring
- sMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.41 NAME ( 'mobile' 'mobileTel
- ephoneNumber' ) DESC 'RFC1274: mobile telephone number' EQUALITY telephoneNum
- berMatch SUBSTR telephoneNumberSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.12
- 1.1.50 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.42 NAME ( 'pager' 'pagerTelep
- honeNumber' ) DESC 'RFC1274: pager telephone number' EQUALITY telephoneNumber
- Match SUBSTR telephoneNumberSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1
- .50 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.43 NAME ( 'co' 'friendlyCount
- ryName' ) DESC 'RFC1274: friendly country name' EQUALITY caseIgnoreMatch SUBS
- TR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.44 NAME 'uniqueIdentifier' DE
- SC 'RFC1274: unique identifer' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.14
- 66.115.121.1.15{256} )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.45 NAME 'organizationalStatus
- ' DESC 'RFC1274: organizational status' EQUALITY caseIgnoreMatch SUBSTR caseI
- gnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.46 NAME 'janetMailbox' DESC '
- RFC1274: Janet mailbox' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5Subst
- ringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.47 NAME 'mailPreferenceOption
- ' DESC 'RFC1274: mail preference option' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.48 NAME 'buildingName' DESC '
- RFC1274: name of building' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstrin
- gsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.49 NAME 'dSAQuality' DESC 'RF
- C1274: DSA Quality' SYNTAX 1.3.6.1.4.1.1466.115.121.1.19 SINGLE-VALUE )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.50 NAME 'singleLevelQuality' 
- DESC 'RFC1274: Single Level Quality' SYNTAX 1.3.6.1.4.1.1466.115.121.1.13 SIN
- GLE-VALUE )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.51 NAME 'subtreeMinimumQualit
- y' DESC 'RFC1274: Subtree Mininum Quality' SYNTAX 1.3.6.1.4.1.1466.115.121.1.
- 13 SINGLE-VALUE )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.52 NAME 'subtreeMaximumQualit
- y' DESC 'RFC1274: Subtree Maximun Quality' SYNTAX 1.3.6.1.4.1.1466.115.121.1.
- 13 SINGLE-VALUE )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.53 NAME 'personalSignature' D
- ESC 'RFC1274: Personal Signature (G3 fax)' SYNTAX 1.3.6.1.4.1.1466.115.121.1.
- 23 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.54 NAME 'dITRedirect' DESC 'R
- FC1274: DIT Redirect' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466
- .115.121.1.12 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.55 NAME 'audio' DESC 'RFC1274
- : audio (u-law)' SYNTAX 1.3.6.1.4.1.1466.115.121.1.4{25000} )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.56 NAME 'documentPublisher' D
- ESC 'RFC1274: publisher of document' EQUALITY caseIgnoreMatch SUBSTR caseIgno
- reSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-olcObjectClasses: ( 0.9.2342.19200300.100.4.4 NAME ( 'pilotPerson' 'newPilo
- tPerson' ) SUP person STRUCTURAL MAY ( userid $ textEncodedORAddress $ rfc822
- Mailbox $ favouriteDrink $ roomNumber $ userClass $ homeTelephoneNumber $ hom
- ePostalAddress $ secretary $ personalTitle $ preferredDeliveryMethod $ busine
- ssCategory $ janetMailbox $ otherMailbox $ mobileTelephoneNumber $ pagerTelep
- honeNumber $ organizationalStatus $ mailPreferenceOption $ personalSignature 
- ) )
-olcObjectClasses: ( 0.9.2342.19200300.100.4.5 NAME 'account' SUP top STRUCT
- URAL MUST userid MAY ( description $ seeAlso $ localityName $ organizationNam
- e $ organizationalUnitName $ host ) )
-olcObjectClasses: ( 0.9.2342.19200300.100.4.6 NAME 'document' SUP top STRUC
- TURAL MUST documentIdentifier MAY ( commonName $ description $ seeAlso $ loca
- lityName $ organizationName $ organizationalUnitName $ documentTitle $ docume
- ntVersion $ documentAuthor $ documentLocation $ documentPublisher ) )
-olcObjectClasses: ( 0.9.2342.19200300.100.4.7 NAME 'room' SUP top STRUCTURA
- L MUST commonName MAY ( roomNumber $ description $ seeAlso $ telephoneNumber 
- ) )
-olcObjectClasses: ( 0.9.2342.19200300.100.4.9 NAME 'documentSeries' SUP top
-  STRUCTURAL MUST commonName MAY ( description $ seeAlso $ telephonenumber $ l
- ocalityName $ organizationName $ organizationalUnitName ) )
-olcObjectClasses: ( 0.9.2342.19200300.100.4.13 NAME 'domain' SUP top STRUCT
- URAL MUST domainComponent MAY ( associatedName $ organizationName $ descripti
- on $ businessCategory $ seeAlso $ searchGuide $ userPassword $ localityName $
-  stateOrProvinceName $ streetAddress $ physicalDeliveryOfficeName $ postalAdd
- ress $ postalCode $ postOfficeBox $ streetAddress $ facsimileTelephoneNumber 
- $ internationalISDNNumber $ telephoneNumber $ teletexTerminalIdentifier $ tel
- exNumber $ preferredDeliveryMethod $ destinationIndicator $ registeredAddress
-  $ x121Address ) )
-olcObjectClasses: ( 0.9.2342.19200300.100.4.14 NAME 'RFC822localPart' SUP d
- omain STRUCTURAL MAY ( commonName $ surname $ description $ seeAlso $ telepho
- neNumber $ physicalDeliveryOfficeName $ postalAddress $ postalCode $ postOffi
- ceBox $ streetAddress $ facsimileTelephoneNumber $ internationalISDNNumber $ 
- telephoneNumber $ teletexTerminalIdentifier $ telexNumber $ preferredDelivery
- Method $ destinationIndicator $ registeredAddress $ x121Address ) )
-olcObjectClasses: ( 0.9.2342.19200300.100.4.15 NAME 'dNSDomain' SUP domain 
- STRUCTURAL MAY ( ARecord $ MDRecord $ MXRecord $ NSRecord $ SOARecord $ CNAME
- Record ) )
-olcObjectClasses: ( 0.9.2342.19200300.100.4.17 NAME 'domainRelatedObject' D
- ESC 'RFC1274: an object related to an domain' SUP top AUXILIARY MUST associat
- edDomain )
-olcObjectClasses: ( 0.9.2342.19200300.100.4.18 NAME 'friendlyCountry' SUP c
- ountry STRUCTURAL MUST friendlyCountryName )
-olcObjectClasses: ( 0.9.2342.19200300.100.4.20 NAME 'pilotOrganization' SU
- P ( organization $ organizationalUnit ) STRUCTURAL MAY buildingName )
-olcObjectClasses: ( 0.9.2342.19200300.100.4.21 NAME 'pilotDSA' SUP dsa STR
- UCTURAL MAY dSAQuality )
-olcObjectClasses: ( 0.9.2342.19200300.100.4.22 NAME 'qualityLabelledData' 
- SUP top AUXILIARY MUST dsaQuality MAY ( subtreeMinimumQuality $ subtreeMaximu
- mQuality ) )
diff --git a/ldap/data/ldap_conf/schema/cosine.schema b/ldap/data/ldap_conf/schema/cosine.schema
deleted file mode 100644
index a0f5ae2..0000000
--- a/ldap/data/ldap_conf/schema/cosine.schema
+++ /dev/null
@@ -1,404 +0,0 @@
-# RFC1274: Cosine and Internet X.500 schema
-# $OpenLDAP: pkg/ldap/servers/slapd/schema/cosine.schema,v 1.19.2.5 2007/01/02 21:44:09 kurt Exp $
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2007 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-
-# RFC1274: Cosine and Internet X.500 schema
-#
-# This file contains LDAPv3 schema derived from X.500 COSINE "pilot"
-# schema.  As this schema was defined for X.500(89), some
-# oddities were introduced in the mapping to LDAPv3.  The
-# mappings were based upon: draft-ietf-asid-ldapv3-attributes-03.txt
-# (a work in progress)
-#
-# Note: It seems that the pilot schema evolved beyond what was
-# described in RFC1274.  However, this document attempts to describes
-# RFC1274 as published.
-#
-# Depends on core.schema
-
-# The version of this file as distributed by the OpenLDAP Foundation
-# contains text from an IETF RFC explaining the schema.  Unfortunately,
-# that text is covered by a license that doesn't meet Debian's Free
-# Software Guidelines.  This is a stripped version of the schema that
-# contains only the functional schema definition, not the text of the
-# RFC.
-#
-# For an explanation of this schema, see RFC 1274, at (among other
-# places):  http://www.ietf.org/rfc/rfc1274.txt
-
-#(in core.schema)
-##attributetype ( 0.9.2342.19200300.100.1.1 NAME ( 'uid' 'userid' )
-##	EQUALITY caseIgnoreMatch
-##	SUBSTR caseIgnoreSubstringsMatch
-##	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.2 NAME 'textEncodedORAddress'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-#(in core.schema)
-##attributetype ( 0.9.2342.19200300.100.1.3 NAME ( 'mail' 'rfc822Mailbox' )
-##	EQUALITY caseIgnoreIA5Match
-##	SUBSTR caseIgnoreIA5SubstringsMatch
-##	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.4 NAME 'info'
-	DESC 'RFC1274: general information'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{2048} )
-
-attributetype ( 0.9.2342.19200300.100.1.5
-	NAME ( 'drink' 'favouriteDrink' )
-	DESC 'RFC1274: favorite drink'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.6 NAME 'roomNumber'
-	DESC 'RFC1274: room number'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.7 NAME 'photo'
-	DESC 'RFC1274: photo (G3 fax)'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.23{25000} )
-
-attributetype ( 0.9.2342.19200300.100.1.8 NAME 'userClass'
-	DESC 'RFC1274: category of user'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.9 NAME 'host'
-	DESC 'RFC1274: host computer'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.10 NAME 'manager'
-	DESC 'RFC1274: DN of manager'
-	EQUALITY distinguishedNameMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-
-attributetype ( 0.9.2342.19200300.100.1.11 NAME 'documentIdentifier'
-	DESC 'RFC1274: unique identifier of document'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.12 NAME 'documentTitle'
-	DESC 'RFC1274: title of document'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.13 NAME 'documentVersion'
-	DESC 'RFC1274: version of document'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.14 NAME 'documentAuthor'
-	DESC 'RFC1274: DN of author of document'
-	EQUALITY distinguishedNameMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-
-attributetype ( 0.9.2342.19200300.100.1.15 NAME 'documentLocation'
-	DESC 'RFC1274: location of document original'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.20
-	NAME ( 'homePhone' 'homeTelephoneNumber' )
-	DESC 'RFC1274: home telephone number'
-	EQUALITY telephoneNumberMatch
-	SUBSTR telephoneNumberSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )
-
-attributetype ( 0.9.2342.19200300.100.1.21 NAME 'secretary'
-	DESC 'RFC1274: DN of secretary'
-	EQUALITY distinguishedNameMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-
-attributetype ( 0.9.2342.19200300.100.1.22 NAME 'otherMailbox'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.39 )
-
-## Deprecated in favor of modifyTimeStamp
-#attributetype ( 0.9.2342.19200300.100.1.23 NAME 'lastModifiedTime'
-#	DESC 'RFC1274: time of last modify, replaced by modifyTimestamp'
-#	OBSOLETE
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.53
-#	USAGE directoryOperation )
-
-## Deprecated in favor of modifiersName
-#attributetype ( 0.9.2342.19200300.100.1.24 NAME 'lastModifiedBy'
-#	DESC 'RFC1274: last modifier, replaced by modifiersName'
-#	OBSOLETE
-#	EQUALITY distinguishedNameMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
-#	USAGE directoryOperation )
-
-##(in core.schema)
-##attributetype ( 0.9.2342.19200300.100.1.25 NAME ( 'dc' 'domainComponent' )
-##	EQUALITY caseIgnoreIA5Match
-##	SUBSTR caseIgnoreIA5SubstringsMatch
-##	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-
-## incorrect syntax?
-attributetype ( 0.9.2342.19200300.100.1.26 NAME 'aRecord'
-	EQUALITY caseIgnoreIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-## missing from RFC1274
-## incorrect syntax?
-attributetype ( 0.9.2342.19200300.100.1.27 NAME 'mDRecord'
-	EQUALITY caseIgnoreIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-## incorrect syntax!!
-attributetype ( 0.9.2342.19200300.100.1.28 NAME 'mXRecord'
-	EQUALITY caseIgnoreIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-## incorrect syntax!!
-attributetype ( 0.9.2342.19200300.100.1.29 NAME 'nSRecord'
-	EQUALITY caseIgnoreIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-## incorrect syntax!!
-attributetype ( 0.9.2342.19200300.100.1.30 NAME 'sOARecord'
-	EQUALITY caseIgnoreIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-## incorrect syntax!!
-attributetype ( 0.9.2342.19200300.100.1.31 NAME 'cNAMERecord'
-	EQUALITY caseIgnoreIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-#attributetype ( 0.9.2342.19200300.100.1.37 NAME 'associatedDomain'
-#	EQUALITY caseIgnoreIA5Match
-#	SUBSTR caseIgnoreIA5SubstringsMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 0.9.2342.19200300.100.1.38 NAME 'associatedName'
-	DESC 'RFC1274: DN of entry associated with domain'
-	EQUALITY distinguishedNameMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-
-attributetype ( 0.9.2342.19200300.100.1.39 NAME 'homePostalAddress'
-	DESC 'RFC1274: home postal address'
-	EQUALITY caseIgnoreListMatch
-	SUBSTR caseIgnoreListSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
-
-attributetype ( 0.9.2342.19200300.100.1.40 NAME 'personalTitle'
-	DESC 'RFC1274: personal title'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.41
-	NAME ( 'mobile' 'mobileTelephoneNumber' )
-	DESC 'RFC1274: mobile telephone number'
-	EQUALITY telephoneNumberMatch
-	SUBSTR telephoneNumberSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )
-
-attributetype ( 0.9.2342.19200300.100.1.42
-	NAME ( 'pager' 'pagerTelephoneNumber' )
-	DESC 'RFC1274: pager telephone number'
-	EQUALITY telephoneNumberMatch
-	SUBSTR telephoneNumberSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )
-
-attributetype ( 0.9.2342.19200300.100.1.43
-	NAME ( 'co' 'friendlyCountryName' )
-	DESC 'RFC1274: friendly country name'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
-attributetype ( 0.9.2342.19200300.100.1.44 NAME 'uniqueIdentifier'
-	DESC 'RFC1274: unique identifer'
-	EQUALITY caseIgnoreMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.45 NAME 'organizationalStatus'
-	DESC 'RFC1274: organizational status'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.46 NAME 'janetMailbox'
-	DESC 'RFC1274: Janet mailbox'
-	EQUALITY caseIgnoreIA5Match
-	SUBSTR caseIgnoreIA5SubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.47
-	NAME 'mailPreferenceOption'
-	DESC 'RFC1274: mail preference option'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
-
-attributetype ( 0.9.2342.19200300.100.1.48 NAME 'buildingName'
-	DESC 'RFC1274: name of building'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.49 NAME 'dSAQuality'
-	DESC 'RFC1274: DSA Quality'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.19 SINGLE-VALUE )
-
-attributetype ( 0.9.2342.19200300.100.1.50 NAME 'singleLevelQuality'
-	DESC 'RFC1274: Single Level Quality'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.13 SINGLE-VALUE )
-
-attributetype ( 0.9.2342.19200300.100.1.51 NAME 'subtreeMinimumQuality'
-	DESC 'RFC1274: Subtree Mininum Quality'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.13 SINGLE-VALUE )
-
-attributetype ( 0.9.2342.19200300.100.1.52 NAME 'subtreeMaximumQuality'
-	DESC 'RFC1274: Subtree Maximun Quality'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.13 SINGLE-VALUE )
-
-attributetype ( 0.9.2342.19200300.100.1.53 NAME 'personalSignature'
-	DESC 'RFC1274: Personal Signature (G3 fax)'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.23 )
-
-attributetype ( 0.9.2342.19200300.100.1.54 NAME 'dITRedirect'
-	DESC 'RFC1274: DIT Redirect'
-	EQUALITY distinguishedNameMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-
-attributetype ( 0.9.2342.19200300.100.1.55 NAME 'audio'
-	DESC 'RFC1274: audio (u-law)'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.4{25000} )
-
-attributetype ( 0.9.2342.19200300.100.1.56 NAME 'documentPublisher'
-	DESC 'RFC1274: publisher of document'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
-#objectclass ( 0.9.2342.19200300.100.4.3 NAME 'pilotObject'
-#	DESC 'RFC1274: pilot object'
-#	SUP top AUXILIARY
-#	MAY ( info $ photo $ manager $ uniqueIdentifier $
-#		lastModifiedTime $ lastModifiedBy $ dITRedirect $ audio )
-#	)
-
-objectclass ( 0.9.2342.19200300.100.4.4
-	NAME ( 'pilotPerson' 'newPilotPerson' )
-	SUP person STRUCTURAL
-	MAY ( userid $ textEncodedORAddress $ rfc822Mailbox $
-		favouriteDrink $ roomNumber $ userClass $
-		homeTelephoneNumber $ homePostalAddress $ secretary $
-		personalTitle $ preferredDeliveryMethod $ businessCategory $
-		janetMailbox $ otherMailbox $ mobileTelephoneNumber $
-		pagerTelephoneNumber $ organizationalStatus $
-		mailPreferenceOption $ personalSignature )
-	)
-
-objectclass ( 0.9.2342.19200300.100.4.5 NAME 'account'
-	SUP top STRUCTURAL
-	MUST userid
-	MAY ( description $ seeAlso $ localityName $
-		organizationName $ organizationalUnitName $ host )
-	)
-
-objectclass ( 0.9.2342.19200300.100.4.6 NAME 'document'
-	SUP top STRUCTURAL
-	MUST documentIdentifier
-	MAY ( commonName $ description $ seeAlso $ localityName $
-		organizationName $ organizationalUnitName $
-		documentTitle $ documentVersion $ documentAuthor $
-		documentLocation $ documentPublisher )
-	)
-
-objectclass ( 0.9.2342.19200300.100.4.7 NAME 'room'
-	SUP top STRUCTURAL
-	MUST commonName
-	MAY ( roomNumber $ description $ seeAlso $ telephoneNumber )
-	)
-
-objectclass ( 0.9.2342.19200300.100.4.9 NAME 'documentSeries'
-	SUP top STRUCTURAL
-	MUST commonName
-	MAY ( description $ seeAlso $ telephonenumber $
-		localityName $ organizationName $ organizationalUnitName )
-	)
-
-objectclass ( 0.9.2342.19200300.100.4.13 NAME 'domain'
-	SUP top STRUCTURAL
-	MUST domainComponent
-	MAY ( associatedName $ organizationName $ description $
-		businessCategory $ seeAlso $ searchGuide $ userPassword $
-		localityName $ stateOrProvinceName $ streetAddress $
-		physicalDeliveryOfficeName $ postalAddress $ postalCode $
-		postOfficeBox $ streetAddress $
-		facsimileTelephoneNumber $ internationalISDNNumber $
-		telephoneNumber $ teletexTerminalIdentifier $ telexNumber $
-		preferredDeliveryMethod $ destinationIndicator $
-		registeredAddress $ x121Address )
-	)
-
-objectclass ( 0.9.2342.19200300.100.4.14 NAME 'RFC822localPart'
-	SUP domain STRUCTURAL
-	MAY ( commonName $ surname $ description $ seeAlso $ telephoneNumber $
-		physicalDeliveryOfficeName $ postalAddress $ postalCode $
-		postOfficeBox $ streetAddress $
-		facsimileTelephoneNumber $ internationalISDNNumber $
-		telephoneNumber $ teletexTerminalIdentifier $
-		telexNumber $ preferredDeliveryMethod $ destinationIndicator $
-		registeredAddress $ x121Address )
-	)
-
-objectclass ( 0.9.2342.19200300.100.4.15 NAME 'dNSDomain'
-	SUP domain STRUCTURAL
-	MAY ( ARecord $ MDRecord $ MXRecord $ NSRecord $
-		SOARecord $ CNAMERecord )
-	)
-
-objectclass ( 0.9.2342.19200300.100.4.17 NAME 'domainRelatedObject'
-	DESC 'RFC1274: an object related to an domain'
-	SUP top AUXILIARY
-	MUST associatedDomain )
-
-objectclass ( 0.9.2342.19200300.100.4.18 NAME 'friendlyCountry'
-	SUP country STRUCTURAL
-	MUST friendlyCountryName )
-
-## (in core.schema)
-## objectclass ( 0.9.2342.19200300.100.4.19 NAME 'simpleSecurityObject'
-##	SUP top AUXILIARY
-##	MUST userPassword )
-
-objectclass ( 0.9.2342.19200300.100.4.20 NAME 'pilotOrganization'
-	SUP ( organization $ organizationalUnit ) STRUCTURAL
-	MAY buildingName )
-
-objectclass ( 0.9.2342.19200300.100.4.21 NAME 'pilotDSA'
-	SUP dsa STRUCTURAL
-	MAY dSAQuality )
-
-objectclass ( 0.9.2342.19200300.100.4.22 NAME 'qualityLabelledData'
-	SUP top AUXILIARY
-	MUST dsaQuality
-	MAY ( subtreeMinimumQuality $ subtreeMaximumQuality )
-	)
diff --git a/ldap/data/ldap_conf/schema/duaconf.ldif b/ldap/data/ldap_conf/schema/duaconf.ldif
deleted file mode 100644
index aae45c7..0000000
--- a/ldap/data/ldap_conf/schema/duaconf.ldif
+++ /dev/null
@@ -1,83 +0,0 @@
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-# DUA schema from draft-joslin-config-schema (a work in progress)
-#
-# This file was automatically generated from duaconf.schema; see that file
-# for complete references.
-#
-dn: cn=duaconf,cn=schema,cn=config
-objectClass: olcSchemaConfig
-cn: duaconf
-olcObjectIdentifier: {0}DUAConfSchemaOID 1.3.6.1.4.1.11.1.3.1
-olcAttributeTypes: {0}( DUAConfSchemaOID:1.0 NAME 'defaultServerList' DESC 'De
- fault LDAP server host address used by a DUA' EQUALITY caseIgnoreMatch SYNTAX
-  1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
-olcAttributeTypes: {1}( DUAConfSchemaOID:1.1 NAME 'defaultSearchBase' DESC 'De
- fault LDAP base DN used by a DUA' EQUALITY distinguishedNameMatch SYNTAX 1.3.
- 6.1.4.1.1466.115.121.1.12 SINGLE-VALUE )
-olcAttributeTypes: {2}( DUAConfSchemaOID:1.2 NAME 'preferredServerList' DESC '
- Preferred LDAP server host addresses to be used by a            DUA' EQUALITY
-  caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
-olcAttributeTypes: {3}( DUAConfSchemaOID:1.3 NAME 'searchTimeLimit' DESC 'Maxi
- mum time in seconds a DUA should allow for a            search to complete' E
- QUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: {4}( DUAConfSchemaOID:1.4 NAME 'bindTimeLimit' DESC 'Maximu
- m time in seconds a DUA should allow for the            bind operation to com
- plete' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALU
- E )
-olcAttributeTypes: {5}( DUAConfSchemaOID:1.5 NAME 'followReferrals' DESC 'Tell
- s DUA if it should follow referrals            returned by a DSA search resul
- t' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {6}( DUAConfSchemaOID:1.16 NAME 'dereferenceAliases' DESC '
- Tells DUA if it should dereference aliases' EQUALITY booleanMatch SYNTAX 1.3.
- 6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {7}( DUAConfSchemaOID:1.6 NAME 'authenticationMethod' DESC 
- 'A keystring which identifies the type of            authentication method us
- ed to contact the DSA' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.1
- 21.1.15 SINGLE-VALUE )
-olcAttributeTypes: {8}( DUAConfSchemaOID:1.7 NAME 'profileTTL' DESC 'Time to l
- ive, in seconds, before a client DUA            should re-read this configura
- tion profile' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SING
- LE-VALUE )
-olcAttributeTypes: {9}( DUAConfSchemaOID:1.14 NAME 'serviceSearchDescriptor' D
- ESC 'LDAP search descriptor list used by a DUA' EQUALITY caseExactMatch SYNTA
- X 1.3.6.1.4.1.1466.115.121.1.15 )
-olcAttributeTypes: {10}( DUAConfSchemaOID:1.9 NAME 'attributeMap' DESC 'Attrib
- ute mappings used by a DUA' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.14
- 66.115.121.1.26 )
-olcAttributeTypes: {11}( DUAConfSchemaOID:1.10 NAME 'credentialLevel' DESC 'Id
- entifies type of credentials a DUA should            use when binding to the 
- LDAP server' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE )
-olcAttributeTypes: {12}( DUAConfSchemaOID:1.11 NAME 'objectclassMap' DESC 'Obj
- ectclass mappings used by a DUA' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4
- .1.1466.115.121.1.26 )
-olcAttributeTypes: {13}( DUAConfSchemaOID:1.12 NAME 'defaultSearchScope' DESC 
- 'Default search scope used by a DUA' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6
- .1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-olcAttributeTypes: {14}( DUAConfSchemaOID:1.13 NAME 'serviceCredentialLevel' D
- ESC 'Identifies type of credentials a DUA            should use when binding 
- to the LDAP server for a            specific service' EQUALITY caseIgnoreIA5M
- atch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: {15}( DUAConfSchemaOID:1.15 NAME 'serviceAuthenticationMeth
- od' DESC 'Authentication method used by a service of the DUA' EQUALITY caseIg
- noreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-olcObjectClasses: {0}( DUAConfSchemaOID:2.5 NAME 'DUAConfigProfile' DESC 'Abst
- raction of a base configuration for a DUA' SUP top STRUCTURAL MUST cn MAY ( d
- efaultServerList $ preferredServerList $ defaultSearchBase $ defaultSearchSco
- pe $ searchTimeLimit $ bindTimeLimit $ credentialLevel $ authenticationMethod
-  $ followReferrals $ dereferenceAliases $ serviceSearchDescriptor $ serviceCr
- edentialLevel $ serviceAuthenticationMethod $ objectclassMap $ attributeMap $
-  profileTTL ) )
diff --git a/ldap/data/ldap_conf/schema/duaconf.schema b/ldap/data/ldap_conf/schema/duaconf.schema
deleted file mode 100644
index 8c1683f..0000000
--- a/ldap/data/ldap_conf/schema/duaconf.schema
+++ /dev/null
@@ -1,153 +0,0 @@
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-
-# DUA schema from draft-joslin-config-schema (a work in progress)
-
-# Contents of this file are subject to change (including deletion)
-# without notice.
-#
-# Not recommended for production use!
-# Use with extreme caution!
-
-## Notes:
-## - The matching rule for attributes followReferrals and dereferenceAliases
-##   has been changed to booleanMatch since their syntax is boolean
-## - There was a typo in the name of the dereferenceAliases attributeType
-##   in the DUAConfigProfile objectClass definition
-## - Credit goes to the original Authors
-
-# The version of this file as distributed by the OpenLDAP Foundation
-# contains text from an IETF Internet-Draft explaining the schema.
-# Unfortunately, that text is covered by a license that doesn't meet
-# Debian's Free Software Guidelines.  This is a stripped version of the
-# schema that contains only the functional schema definition, not the text
-# of the Internet-Draft.
-#
-# For an explanation of this schema, see
-# draft-joslin-config-schema-07.txt.
-
-objectidentifier DUAConfSchemaOID 1.3.6.1.4.1.11.1.3.1
-
-attributeType ( DUAConfSchemaOID:1.0 NAME 'defaultServerList'
-            DESC 'Default LDAP server host address used by a DUA'
-            EQUALITY caseIgnoreMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-            SINGLE-VALUE )
-
-attributeType ( DUAConfSchemaOID:1.1 NAME 'defaultSearchBase'
-            DESC 'Default LDAP base DN used by a DUA'
-            EQUALITY distinguishedNameMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
-            SINGLE-VALUE )
-
-attributeType ( DUAConfSchemaOID:1.2 NAME 'preferredServerList'
-            DESC 'Preferred LDAP server host addresses to be used by a
-            DUA'
-            EQUALITY caseIgnoreMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-            SINGLE-VALUE )
-
-attributeType ( DUAConfSchemaOID:1.3 NAME 'searchTimeLimit'
-            DESC 'Maximum time in seconds a DUA should allow for a
-            search to complete'
-            EQUALITY integerMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-            SINGLE-VALUE )
-
-attributeType ( DUAConfSchemaOID:1.4 NAME 'bindTimeLimit'
-            DESC 'Maximum time in seconds a DUA should allow for the
-            bind operation to complete'
-            EQUALITY integerMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-            SINGLE-VALUE )
-
-attributeType ( DUAConfSchemaOID:1.5 NAME 'followReferrals'
-            DESC 'Tells DUA if it should follow referrals
-            returned by a DSA search result'
-            EQUALITY booleanMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-            SINGLE-VALUE )
-
-attributeType ( DUAConfSchemaOID:1.16 NAME 'dereferenceAliases'
-            DESC 'Tells DUA if it should dereference aliases'
-            EQUALITY booleanMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-            SINGLE-VALUE )
-
-attributeType ( DUAConfSchemaOID:1.6 NAME 'authenticationMethod'
-            DESC 'A keystring which identifies the type of
-            authentication method used to contact the DSA'
-            EQUALITY caseIgnoreMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-            SINGLE-VALUE )
-
-attributeType ( DUAConfSchemaOID:1.7 NAME 'profileTTL'
-            DESC 'Time to live, in seconds, before a client DUA
-            should re-read this configuration profile'
-            EQUALITY integerMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-            SINGLE-VALUE )
-
-attributeType ( DUAConfSchemaOID:1.14 NAME 'serviceSearchDescriptor'
-            DESC 'LDAP search descriptor list used by a DUA'
-            EQUALITY caseExactMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
-attributeType ( DUAConfSchemaOID:1.9 NAME 'attributeMap'
-            DESC 'Attribute mappings used by a DUA'
-            EQUALITY caseIgnoreIA5Match
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributeType ( DUAConfSchemaOID:1.10 NAME 'credentialLevel'
-            DESC 'Identifies type of credentials a DUA should
-            use when binding to the LDAP server'
-            EQUALITY caseIgnoreIA5Match
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-            SINGLE-VALUE )
-
-attributeType ( DUAConfSchemaOID:1.11 NAME 'objectclassMap'
-            DESC 'Objectclass mappings used by a DUA'
-            EQUALITY caseIgnoreIA5Match
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributeType ( DUAConfSchemaOID:1.12 NAME 'defaultSearchScope'
-            DESC 'Default search scope used by a DUA'
-            EQUALITY caseIgnoreIA5Match
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-            SINGLE-VALUE )
-
-attributeType ( DUAConfSchemaOID:1.13 NAME 'serviceCredentialLevel'
-            DESC 'Identifies type of credentials a DUA
-            should use when binding to the LDAP server for a
-            specific service'
-            EQUALITY caseIgnoreIA5Match
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributeType ( DUAConfSchemaOID:1.15 NAME 'serviceAuthenticationMethod'
-            DESC 'Authentication method used by a service of the DUA'
-            EQUALITY caseIgnoreMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
-objectClass ( DUAConfSchemaOID:2.5 NAME 'DUAConfigProfile'
-          SUP top STRUCTURAL
-          DESC 'Abstraction of a base configuration for a DUA'
-          MUST ( cn )
-          MAY ( defaultServerList $ preferredServerList $
-                defaultSearchBase $ defaultSearchScope $
-                searchTimeLimit $ bindTimeLimit $
-                credentialLevel $ authenticationMethod $
-                followReferrals $ dereferenceAliases $
-                serviceSearchDescriptor $ serviceCredentialLevel $
-                serviceAuthenticationMethod $ objectclassMap $
-                attributeMap $ profileTTL ) )
diff --git a/ldap/data/ldap_conf/schema/dyngroup.ldif b/ldap/data/ldap_conf/schema/dyngroup.ldif
deleted file mode 100644
index 1f7070d..0000000
--- a/ldap/data/ldap_conf/schema/dyngroup.ldif
+++ /dev/null
@@ -1,71 +0,0 @@
-# dyngroup.schema -- Dynamic Group schema
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-# Dynamic Group schema (experimental), as defined by Netscape.  See
-# http://www.redhat.com/docs/manuals/ent-server/pdf/esadmin611.pdf
-# page 70 for details on how these groups were used.
-#
-# A description of the objectclass definition is available here:
-# http://www.redhat.com/docs/manuals/dir-server/schema/7.1/oc_dir.html#1303745
-#
-# depends upon:
-#       core.schema
-#
-# These definitions are considered experimental due to the lack of
-# a formal specification (e.g., RFC).
-#
-# NOT RECOMMENDED FOR PRODUCTION USE!  USE WITH CAUTION!
-#
-# The Netscape documentation describes this as an auxiliary objectclass
-# but their implementations have always defined it as a structural class.
-# The sloppiness here is because Netscape-derived servers don't actually
-# implement the X.500 data model, and they don't honor the distinction
-# between structural and auxiliary classes. This fact is noted here:
-# http://forum.java.sun.com/thread.jspa?threadID=5016864&messageID=9034636
-#
-# In accordance with other existing implementations, we define it as a
-# structural class.
-#
-# Our definition of memberURL also does not match theirs but again
-# their published definition and what works in practice do not agree.
-# In other words, the Netscape definitions are broken and interoperability
-# is not guaranteed.
-#
-# Also see the new DynGroup proposed spec at
-# http://tools.ietf.org/html/draft-haripriya-dynamicgroup-02
-dn: cn=dyngroup,cn=schema,cn=config
-objectClass: olcSchemaConfig
-cn: dyngroup
-olcObjectIdentifier: {0}NetscapeRoot 2.16.840.1.113730
-olcObjectIdentifier: {1}NetscapeLDAP NetscapeRoot:3
-olcObjectIdentifier: {2}NetscapeLDAPattributeType NetscapeLDAP:1
-olcObjectIdentifier: {3}NetscapeLDAPobjectClass NetscapeLDAP:2
-olcObjectIdentifier: {4}OpenLDAPExp11 1.3.6.1.4.1.4203.666.11
-olcObjectIdentifier: {5}DynGroupBase OpenLDAPExp11:8
-olcObjectIdentifier: {6}DynGroupAttr DynGroupBase:1
-olcObjectIdentifier: {7}DynGroupOC DynGroupBase:2
-olcAttributeTypes: {0}( NetscapeLDAPattributeType:198 NAME 'memberURL' DESC 'I
- dentifies an URL associated with each member of a group. Any type of labeled 
- URL can be used.' SUP labeledURI )
-olcAttributeTypes: {1}( DynGroupAttr:1 NAME 'dgIdentity' DESC 'Identity to use
-  when processing the memberURL' SUP distinguishedName SINGLE-VALUE )
-olcAttributeTypes: {2}( DynGroupAttr:2 NAME 'dgAuthz' DESC 'Optional authoriza
- tion rules that determine who is allowed to assume the dgIdentity' EQUALITY a
- uthzMatch SYNTAX 1.3.6.1.4.1.4203.666.2.7 X-ORDERED 'VALUES' )
-olcObjectClasses: {0}( NetscapeLDAPobjectClass:33 NAME 'groupOfURLs' SUP top S
- TRUCTURAL MUST cn MAY ( memberURL $ businessCategory $ description $ o $ ou $
-  owner $ seeAlso ) )
-olcObjectClasses: {1}( DynGroupOC:1 NAME 'dgIdentityAux' SUP top AUXILIARY MAY
-  ( dgIdentity $ dgAuthz ) )
diff --git a/ldap/data/ldap_conf/schema/dyngroup.schema b/ldap/data/ldap_conf/schema/dyngroup.schema
deleted file mode 100644
index ab8e6a0..0000000
--- a/ldap/data/ldap_conf/schema/dyngroup.schema
+++ /dev/null
@@ -1,91 +0,0 @@
-# dyngroup.schema -- Dynamic Group schema
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-# Dynamic Group schema (experimental), as defined by Netscape.  See
-# http://www.redhat.com/docs/manuals/ent-server/pdf/esadmin611.pdf
-# page 70 for details on how these groups were used.
-#
-# A description of the objectclass definition is available here:
-# http://www.redhat.com/docs/manuals/dir-server/schema/7.1/oc_dir.html#1303745
-#
-# depends upon:
-#	core.schema
-#
-# These definitions are considered experimental due to the lack of
-# a formal specification (e.g., RFC).
-#
-# NOT RECOMMENDED FOR PRODUCTION USE!  USE WITH CAUTION!
-#
-# The Netscape documentation describes this as an auxiliary objectclass
-# but their implementations have always defined it as a structural class.
-# The sloppiness here is because Netscape-derived servers don't actually
-# implement the X.500 data model, and they don't honor the distinction
-# between structural and auxiliary classes. This fact is noted here:
-# http://forum.java.sun.com/thread.jspa?threadID=5016864&messageID=9034636
-#
-# In accordance with other existing implementations, we define it as a
-# structural class.
-#
-# Our definition of memberURL also does not match theirs but again
-# their published definition and what works in practice do not agree.
-# In other words, the Netscape definitions are broken and interoperability
-# is not guaranteed.
-#
-# Also see the new DynGroup proposed spec at
-# http://tools.ietf.org/html/draft-haripriya-dynamicgroup-02
-
-objectIdentifier NetscapeRoot 2.16.840.1.113730
-
-objectIdentifier NetscapeLDAP NetscapeRoot:3
-objectIdentifier NetscapeLDAPattributeType NetscapeLDAP:1
-objectIdentifier NetscapeLDAPobjectClass NetscapeLDAP:2
-
-objectIdentifier OpenLDAPExp11	1.3.6.1.4.1.4203.666.11
-objectIdentifier DynGroupBase	OpenLDAPExp11:8
-objectIdentifier DynGroupAttr	DynGroupBase:1
-objectIdentifier DynGroupOC	DynGroupBase:2
-
-attributetype ( NetscapeLDAPattributeType:198
-	NAME 'memberURL'
-	DESC 'Identifies an URL associated with each member of a group. Any type of labeled URL can be used.'
-	SUP labeledURI )
-
-attributetype ( DynGroupAttr:1
-	NAME 'dgIdentity'
-	DESC 'Identity to use when processing the memberURL'
-	SUP distinguishedName SINGLE-VALUE )
-
-attributeType ( DynGroupAttr:2
-	NAME 'dgAuthz'
-	DESC 'Optional authorization rules that determine who is allowed to assume the dgIdentity'
-	EQUALITY authzMatch
-	SYNTAX 1.3.6.1.4.1.4203.666.2.7
-	X-ORDERED 'VALUES' )
-
-objectClass ( NetscapeLDAPobjectClass:33
-	NAME 'groupOfURLs'
-	SUP top STRUCTURAL
-	MUST cn
-	MAY ( memberURL $ businessCategory $ description $ o $ ou $
-		owner $ seeAlso ) )
-
-# The Haripriya dyngroup schema still needs a lot of work.
-# We're just adding support for the dgIdentity attribute for now...
-objectClass ( DynGroupOC:1
-	NAME 'dgIdentityAux'
-	SUP top AUXILIARY
-	MAY ( dgIdentity $ dgAuthz ) )
-
-
diff --git a/ldap/data/ldap_conf/schema/fusiondirectory/core-fd-conf.schema b/ldap/data/ldap_conf/schema/fusiondirectory/core-fd-conf.schema
deleted file mode 100644
index 0db3f0f..0000000
--- a/ldap/data/ldap_conf/schema/fusiondirectory/core-fd-conf.schema
+++ /dev/null
@@ -1,562 +0,0 @@
-##
-## fusiondirectory-conf.schema - Needed by FusionDirectory for its configuration
-##
-
-#~ ldapTLS="true"
-
-# Attributes
-
-# Schema setup
-
-attributetype ( 1.3.6.1.4.1.38414.8.10.1 NAME 'fdRfc2307bis'
-  DESC 'FusionDirectory - rfc2307bis'
-  OBSOLETE
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.10.2 NAME 'fdSchemaCheck'
-  DESC 'FusionDirectory - Schema check'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-# Look n feel
-
-attributetype ( 1.3.6.1.4.1.38414.8.11.1 NAME 'fdLanguage'
-  DESC 'FusionDirectory - language'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.11.2 NAME 'fdTheme'
-  DESC 'FusionDirectory - theme'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.11.3 NAME 'fdTimezone'
-  DESC 'FusionDirectory - timezone'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-# People and group storage
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.1 NAME 'fdAccountPrimaryAttribute'
-  DESC 'FusionDirectory - attribute that should be used in user dn'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.2 NAME 'fdAccountRDN'
-  DESC 'FusionDirectory - use a placeholder pattern for generating account RDNs'
-  OBSOLETE
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.3 NAME 'fdNextIdHook'
-  DESC 'FusionDirectory - A script to be called for finding the next free id for users or groups'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.4 NAME 'fdIdGenerator'
-  DESC 'FusionDirectory - An automatic way to generate new user ids'
-  OBSOLETE
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.5 NAME 'fdPersonalTitleInDN'
-  OBSOLETE
-  DESC 'FusionDirectory - Personal title in dn'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.6 NAME 'fdStrictNamingRules'
-  DESC 'FusionDirectory - Strict naming rules'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.7 NAME 'fdMinId'
-  DESC 'FusionDirectory - minimum user id'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.8 NAME 'fdUidNumberBase'
-  DESC 'FusionDirectory - uid number base'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.9 NAME 'fdGidNumberBase'
-  DESC 'FusionDirectory - gid number base'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.10 NAME 'fdUserRDN'
-  DESC 'FusionDirectory - User RDN'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.11 NAME 'fdGroupRDN'
-  DESC 'FusionDirectory - Group RDN'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.12 NAME 'fdIdAllocationMethod'
-  DESC 'FusionDirectory - id allocation method traditional/pool'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.13 NAME 'fdGidNumberPoolMin'
-  DESC 'FusionDirectory - pool gid number min'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.14 NAME 'fdUidNumberPoolMin'
-  DESC 'FusionDirectory - pool uid number min'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.15 NAME 'fdGidNumberPoolMax'
-  DESC 'FusionDirectory - pool gid number max'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.16 NAME 'fdUidNumberPoolMax'
-  DESC 'FusionDirectory - pool uid number max'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.17 NAME 'fdAclRoleRDN'
-  DESC 'FusionDirectory - ACL role RDN'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.12.18 NAME 'fdCnPattern'
-  DESC 'FusionDirectory - Common Name pattern'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-# Password
-
-attributetype ( 1.3.6.1.4.1.38414.8.13.1 NAME 'fdPasswordDefaultHash'
-  DESC 'FusionDirectory - Password default hash'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.13.2 NAME 'fdPasswordMinLength'
-  DESC 'FusionDirectory - Password min length'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.13.3 NAME 'fdPasswordMinDiffer'
-  DESC 'FusionDirectory - password min differ'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.13.4 NAME 'fdPasswordHook'
-  DESC 'FusionDirectory - Password hook (external command)'
-  OBSOLETE
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.13.5 NAME 'fdHandleExpiredAccounts'
-  DESC 'FusionDirectory - Handle expired accounts'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.13.6 NAME 'fdSaslRealm'
-  DESC 'FusionDirectory - SASL Realm'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.13.7 NAME 'fdSaslExop'
-  DESC 'FusionDirectory - SASL Exop'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.13.8 NAME 'fdForcePasswordDefaultHash'
-  DESC 'FusionDirectory - Force password default hash'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-# Core settings
-
-attributetype ( 1.3.6.1.4.1.38414.8.14.1 NAME 'fdPrimaryGroupFilter'
-  DESC 'FusionDirectory - Primary group filter'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.14.2 NAME 'fdListSummary'
-  DESC 'FusionDirectory - Show list summary'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.14.4 NAME 'fdModificationDetectionAttribute'
-  DESC 'FusionDirectory - Modification detection attribute'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.14.5 NAME 'fdCopyPaste'
-  DESC 'FusionDirectory - (de)Activate copy/paste'
-  OBSOLETE
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.14.6 NAME 'fdLogging'
-  DESC 'FusionDirectory - Logging'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.14.7 NAME 'fdLdapSizeLimit'
-  DESC 'FusionDirectory - LDAP size limit'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE)
-
-# Login and session
-
-attributetype ( 1.3.6.1.4.1.38414.8.15.1 NAME 'fdLoginAttribute'
-  DESC 'FusionDirectory attribute that will be used for login'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.15.2 NAME 'fdForceSSL'
-  DESC 'FusionDirectory - Force SSL'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.15.3 NAME 'fdWarnSSL'
-  DESC 'FusionDirectory - Warn user when SSL is not used'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.15.4 NAME 'fdStoreFilterSettings'
-  DESC 'FusionDirectory - Store filter settings'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.15.5 NAME 'fdSessionLifeTime'
-  DESC 'FusionDirectory - Session life time in seconds'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE)
-
-# Debugging
-
-attributetype ( 1.3.6.1.4.1.38414.8.16.1 NAME 'fdDisplayErrors'
-  DESC 'FusionDirectory - Weither or not to display errors'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.16.2 NAME 'fdLdapMaxQueryTime'
-  DESC 'FusionDirectory - Maximum LDAP query time'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.16.3 NAME 'fdLdapStats'
-  DESC 'FusionDirectory - Weither or not to activate ldap stats'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.16.4 NAME 'fdDebugLevel'
-  DESC 'FusionDirectory - Debug level'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE)
-
-# Snapshots
-
-attributetype ( 1.3.6.1.4.1.38414.8.17.1 NAME 'fdEnableSnapshots'
-  DESC 'FusionDirectory - Weither or not to enable snapshots'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.17.2 NAME 'fdSnapshotBase'
-  DESC 'FusionDirectory - Snaphost base'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.17.3 NAME 'fdSnapshotURI'
-  DESC 'FusionDirectory - Snaphost URI'
-  OBSOLETE
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.17.4 NAME 'fdSnapshotAdminDn'
-  DESC 'FusionDirectory - Snaphost admin dn'
-  OBSOLETE
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.17.5 NAME 'fdSnapshotAdminPassword'
-  DESC 'FusionDirectory - Snaphost admin password'
-  OBSOLETE
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-# Miscellaneous
-
-attributetype ( 1.3.6.1.4.1.38414.8.18.2 NAME 'fdTabHook'
-  DESC 'FusionDirectory - tab hook'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 1.3.6.1.4.1.38414.8.18.3 NAME 'fdShells'
-  DESC 'FusionDirectory - available shell'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 1.3.6.1.4.1.38414.8.18.4 NAME 'fusionConfigMd5'
-  DESC 'FusionDirectory - md5sum of class.cache'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 1.3.6.1.4.1.38414.8.18.5 NAME 'fdDisplayHookOutput'
-  DESC 'FusionDirectory - display hook execution output to the user'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.18.6 NAME 'fdAclTabOnObjects'
-  DESC 'FusionDirectory - Should acl tabs be shown on all objects'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-# Plugins
-
-attributetype ( 1.3.6.1.4.1.38414.8.19.1 NAME 'fdOGroupRDN'
-  DESC 'FusionDirectory - OGroup RDN'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.19.2 NAME 'fdForceSaslPasswordAsk'
-  DESC 'FusionDirectory - Force password ask for SASL users'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-# SSL
-
-attributetype ( 1.3.6.1.4.1.38414.8.20.1 NAME 'fdSslCaCertPath'
-  DESC 'FusionDirectory - CA certificate path'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.20.2 NAME 'fdSslKeyPath'
-  DESC 'FusionDirectory - SSL key path'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.38414.8.20.3 NAME 'fdSslCertPath'
-  DESC 'FusionDirectory - SSL certificate path'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE)
-
-# merged from dashboard-fd.schema - Needed by Fusion Directory for dashboard options
-
-attributetype ( 1.3.6.1.4.1.38414.27.1.1 NAME 'fdDashboardPrefix'
-  DESC 'FusionDirectory - Dashboard computer name prefix'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)
-
-attributetype ( 1.3.6.1.4.1.38414.27.1.2 NAME 'fdDashboardNumberOfDigit'
-  DESC 'FusionDirectory - Dashboard number of digits after prefixes in computer names'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.27.1.3 NAME 'fdDashboardExpiredAccountsDays'
-  DESC 'FusionDirectory - Dashboard number of days before expiration to be shown in board user tab'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE )
-
-# merged from recovery-fd.schema - Needed by Fusion Directory for password recovery options
-
-attributetype ( 1.3.6.1.4.1.38414.8.110.1 NAME 'fdPasswordRecoveryActivated'
-  DESC 'Fusion Directory - Password recovery enabled/disabled'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.110.2 NAME 'fdPasswordRecoveryEmail'
-  DESC 'Fusion Directory - Password recovery sender email'
-  EQUALITY caseExactIA5Match
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.110.3 NAME 'fdPasswordRecoveryMailSubject'
-  DESC 'Fusion Directory - Password recovery first email subject'
-  EQUALITY caseExactMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.110.4 NAME 'fdPasswordRecoveryMailBody'
-  DESC 'Fusion Directory - Password recovery first email body'
-  EQUALITY caseExactMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.110.5 NAME 'fdPasswordRecoveryMail2Subject'
-  DESC 'Fusion Directory - Password recovery second email subject'
-  EQUALITY caseExactMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.110.6 NAME 'fdPasswordRecoveryMail2Body'
-  DESC 'Fusion Directory - Password recovery second email body'
-  EQUALITY caseExactMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.110.7 NAME 'fdPasswordRecoveryValidity'
-  DESC 'Fusion Directory - Password recovery link validity in minutes'
-  EQUALITY integerMatch
-  ORDERING integerOrderingMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.110.8 NAME 'fdPasswordRecoverySalt'
-  DESC 'Fusion Directory - Password recovery token salt'
-  EQUALITY caseExactIA5Match
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.38414.8.110.9 NAME 'fdPasswordRecoveryUseAlternate'
-  DESC 'Fusion Directory - Allow/disallow the use of alternate addresses for password recovery'
-  EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-  SINGLE-VALUE )
-
-
-# Object Class
-objectclass ( 1.3.6.1.4.1.38414.8.2.1 NAME 'fusionDirectoryConf'
-  DESC 'FusionDirectory configuration'
-  SUP top STRUCTURAL
-  MUST ( cn )
-  MAY (
-    fusionConfigMd5 $
-    fdSchemaCheck $
-    fdLanguage $ fdTheme $ fdTimezone $
-    fdAccountPrimaryAttribute $ fdNextIdHook $ fdIdGenerator $
-    fdStrictNamingRules $ fdMinId $ fdUidNumberBase $
-    fdGidNumberBase $ fdUserRDN $ fdGroupRDN $ fdIdAllocationMethod $
-    fdGidNumberPoolMin $ fdUidNumberPoolMin $ fdGidNumberPoolMax $ fdUidNumberPoolMax $
-    fdAclRoleRDN $ fdCnPattern $
-    fdPasswordDefaultHash $ fdPasswordMinLength $ fdPasswordMinDiffer $
-    fdPasswordHook $ fdHandleExpiredAccounts $ fdSaslRealm $ fdSaslExop $
-    fdForcePasswordDefaultHash $
-    fdPrimaryGroupFilter $ fdListSummary $
-    fdModificationDetectionAttribute $ fdLogging $ fdLdapSizeLimit $
-    fdLoginAttribute $ fdForceSSL $ fdWarnSSL $ fdStoreFilterSettings $ fdSessionLifeTime $
-    fdDisplayErrors $ fdLdapMaxQueryTime $ fdLdapStats $ fdDebugLevel $
-    fdEnableSnapshots $ fdSnapshotBase $
-    fdTabHook $ fdShells $ fdDisplayHookOutput $
-    fdAclTabOnObjects $
-    fdRfc2307bis $ fdCopyPaste $ fdSnapshotURI $
-    fdSnapshotAdminDn $ fdSnapshotAdminPassword $ fdPersonalTitleInDN $ fdAccountRDN $
-    fdSslCaCertPath $ fdSslKeyPath $ fdSslCertPath
-  ) )
-
-objectclass ( 1.3.6.1.4.1.38414.8.2.2 NAME 'fusionDirectoryPluginsConf'
-  DESC 'FusionDirectory plugins configuration'
-  SUP top AUXILIARY
-  MUST ( cn )
-  MAY ( fdOGroupRDN $ fdForceSaslPasswordAsk ) )
-
-objectclass ( 1.3.6.1.4.1.38414.8.2.3 NAME 'fdPasswordRecoveryConf'
-  DESC 'FusionDirectory password recovery configuration'
-  SUP top AUXILIARY
-  MUST ( cn )
-  MAY (
-    fdPasswordRecoveryActivated     $ fdPasswordRecoveryEmail     $
-    fdPasswordRecoveryMailSubject   $ fdPasswordRecoveryMailBody  $
-    fdPasswordRecoveryMail2Subject  $ fdPasswordRecoveryMail2Body $
-    fdPasswordRecoveryValidity      $ fdPasswordRecoverySalt      $
-    fdPasswordRecoveryUseAlternate
-  ) )
-
-# Dashboard Object Class
-objectclass ( 1.3.6.1.4.1.38414.27.2.1 NAME 'fdDashboardPluginConf'
-  DESC 'FusionDirectory dashboard plugin configuration'
-  SUP top AUXILIARY
-  MUST ( cn )
-  MAY ( fdDashboardPrefix $ fdDashboardNumberOfDigit $ fdDashboardExpiredAccountsDays) )
diff --git a/ldap/data/ldap_conf/schema/fusiondirectory/core-fd.schema b/ldap/data/ldap_conf/schema/fusiondirectory/core-fd.schema
deleted file mode 100644
index 4ecf57c..0000000
--- a/ldap/data/ldap_conf/schema/fusiondirectory/core-fd.schema
+++ /dev/null
@@ -1,148 +0,0 @@
-##
-## core-fd.schema - Needed by FusionDirectory for its basic fonctionnalities
-##
-
-
-# Attributes
-attributetype ( 1.3.6.1.4.1.10098.1.1.12.1 NAME 'gosaSubtreeACL'
-  DESC 'GOsa - ACL entry'
-  OBSOLETE
-  EQUALITY caseIgnoreMatch
-  SUBSTR caseIgnoreSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
-
-attributetype ( 1.3.6.1.4.1.10098.1.1.12.2 NAME 'gosaUser'
-  DESC 'GOsa - DN of a user'
-  EQUALITY caseIgnoreMatch
-  SUBSTR caseIgnoreSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
-
-attributetype ( 1.3.6.1.4.1.10098.1.1.12.3 NAME 'gosaObject'
-  DESC 'GOsa - DN of an object'
-  EQUALITY caseIgnoreMatch
-  SUBSTR caseIgnoreSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
-
-attributetype ( 1.3.6.1.4.1.10098.1.1.12.14 NAME 'gosaDefaultLanguage'
-  DESC 'GOsa - Defines the default language for a user'
-  OBSOLETE
-  EQUALITY caseIgnoreIA5Match
-  SUBSTR caseIgnoreIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.10098.1.1.12.30 NAME 'gosaGroupObjects'
-  DESC 'GOsa - List of all object types that are in a gosaGroupOfNames'
-  EQUALITY caseIgnoreIA5Match
-  SUBSTR caseIgnoreIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.10098.1.1.12.34 NAME 'gosaAclTemplate'
-  DESC 'GOsa - ACL entries for ACL roles'
-  EQUALITY caseIgnoreIA5Match
-  SUBSTR caseIgnoreIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)
-
-attributetype ( 1.3.6.1.4.1.10098.1.1.12.35 NAME 'gosaAclEntry'
-  DESC 'GOsa - ACL entries'
-  EQUALITY caseIgnoreIA5Match
-  SUBSTR caseIgnoreIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)
-
-attributetype ( 1.3.6.1.4.1.10098.1.1.12.37 NAME 'gosaSnapshotTimestamp'
-  DESC 'GOsa - Unix timestamp of snapshot'
-  EQUALITY caseIgnoreMatch
-  SUBSTR caseIgnoreSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.10098.1.1.12.38 NAME 'gosaSnapshotDN'
-  DESC 'GOsa - Original DN of saved object in snapshot'
-  EQUALITY caseIgnoreMatch
-  SUBSTR caseIgnoreSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.10098.1.1.12.39 NAME 'gosaSnapshotData'
-  DESC 'GOsa - Original data of saved object in snapshot'
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 SINGLE-VALUE)
-
-attributetype ( 1.3.6.1.4.1.10098.1.1.12.46 NAME 'gosaLoginRestriction'
-  DESC 'GOsa - Multivalue attribute to carry a number of allowed ips/subnets'
-  OBSOLETE
-  SUP name)
-
-attributetype ( 1.3.6.1.4.1.10098.1.1.6.2 NAME 'academicTitle'
-  DESC 'Field to represent the academic title'
-  OBSOLETE
-  EQUALITY caseIgnoreMatch
-  SUBSTR caseIgnoreSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
-
-attributetype ( 1.3.6.1.4.1.15305.2.1 NAME ( 'gender' 'sex' )
-  DESC    'Gender: M for male, F for female'
-  EQUALITY caseIgnoreIA5Match
-  SYNTAX  1.3.6.1.4.1.1466.115.121.1.26{1}
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.15305.2.2 NAME ( 'dateOfBirth' 'dob' )
-  DESC    'Date of birth in ISO 8601 format'
-  EQUALITY caseIgnoreMatch
-  SYNTAX  1.3.6.1.4.1.1466.115.121.1.15{10}
-  SINGLE-VALUE )
-
-# Classes
-objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.1 NAME 'gosaObject' SUP top AUXILIARY
-  DESC 'GOsa - Class for GOsa settings'
-  OBSOLETE
-  MUST ( )
-  MAY ( gosaSubtreeACL ))
-
-objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.2 NAME 'gosaLockEntry' SUP top STRUCTURAL
-  DESC 'GOsa - Class for GOsa locking'
-  MUST ( gosaUser $ gosaObject $ cn ))
-
-objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.3 NAME 'gosaCacheEntry' SUP top STRUCTURAL
-  DESC 'GOsa - Class for GOsa caching'
-  OBSOLETE
-  MAY  ( )
-  MUST ( cn $ gosaUser ))
-
-objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.4 NAME 'gosaDepartment' SUP top AUXILIARY
-  DESC 'GOsa - Class to mark Departments for GOsa'
-  MUST  ( ou $ description )
-  MAY   ( manager ))
-
-objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.6 NAME 'gosaAccount' SUP top AUXILIARY
-  DESC 'GOsa - Class for GOsa Accounts'
-  OBSOLETE
-  MUST ( )
-  MAY (
-    gosaLoginRestriction $
-    gosaDefaultLanguage $ academicTitle $ personalTitle $ dateOfBirth $ gender
-  ) )
-
-objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.11 NAME 'gosaUserTemplate' SUP top AUXILIARY
-  DESC 'GOsa - Class for GOsa User Templates'
-  OBSOLETE
-  MUST ( cn ))
-
-objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.12 NAME 'gosaGroupOfNames'
-  DESC 'GOsa - Adds the gosaGroupObjects field to groupOfNames'
-  SUP top AUXILIARY
-  MUST ( cn $ gosaGroupObjects ) MAY ( member $ description ) )
-
-objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.17 NAME 'gosaRole'
-  DESC 'GOsa - ACL container to define ACL roles'
-  SUP top STRUCTURAL
-  MUST ( gosaAclTemplate $ cn )
-  MAY  ( description ) )
-
-objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.18 NAME 'gosaAcl'
-  DESC 'GOsa - ACL container to define single ACLs'
-  SUP top AUXILIARY
-  MUST ( gosaAclEntry  ))
-
-objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.19 NAME 'gosaSnapshotObject'
-  DESC 'GOsa - Container object for undo and snapshot data'
-  SUP top STRUCTURAL
-  MUST ( gosaSnapshotTimestamp $ gosaSnapshotDN $ gosaSnapshotData )
-  MAY  ( description ) )
-
diff --git a/ldap/data/ldap_conf/schema/fusiondirectory/ldapns.schema b/ldap/data/ldap_conf/schema/fusiondirectory/ldapns.schema
deleted file mode 100644
index 21ae00c..0000000
--- a/ldap/data/ldap_conf/schema/fusiondirectory/ldapns.schema
+++ /dev/null
@@ -1,23 +0,0 @@
-# $Id: ldapns.schema,v 1.3 2003/05/29 12:57:29 lukeh Exp $
-
-# LDAP Name Service Additional Schema
-
-# http://www.iana.org/assignments/gssapi-service-names
-
-attributetype ( 1.3.6.1.4.1.5322.17.2.1 NAME 'authorizedService'
-	DESC 'IANA GSS-API authorized service name'
-	EQUALITY caseIgnoreMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-objectclass ( 1.3.6.1.4.1.5322.17.1.1 NAME 'authorizedServiceObject'
-	DESC 'Auxiliary object class for adding authorizedService attribute'
-	SUP top
-	AUXILIARY
-	MAY authorizedService )
-
-objectclass ( 1.3.6.1.4.1.5322.17.1.2 NAME 'hostObject'
-	DESC 'Auxiliary object class for adding host attribute'
-	SUP top
-	AUXILIARY
-	MAY host )
-
diff --git a/ldap/data/ldap_conf/schema/fusiondirectory/rfc2307bis.schema b/ldap/data/ldap_conf/schema/fusiondirectory/rfc2307bis.schema
deleted file mode 100644
index db34365..0000000
--- a/ldap/data/ldap_conf/schema/fusiondirectory/rfc2307bis.schema
+++ /dev/null
@@ -1,288 +0,0 @@
-# builtin
-#
-#attributetype ( 1.3.6.1.1.1.1.0 NAME 'uidNumber'
-#  DESC 'An integer uniquely identifying a user in an administrative domain'
-#  EQUALITY integerMatch
-#  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-#  SINGLE-VALUE )
-
-# builtin
-#
-#attributetype ( 1.3.6.1.1.1.1.1 NAME 'gidNumber'
-#  DESC 'An integer uniquely identifying a group in an
-#        administrative domain'
-#  EQUALITY integerMatch
-#  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-#  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.2 NAME 'gecos'
-  DESC 'The GECOS field; the common name'
-  EQUALITY caseIgnoreIA5Match
-  SUBSTR caseIgnoreIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.3 NAME 'homeDirectory'
-  DESC 'The absolute path to the home directory'
-  EQUALITY caseExactIA5Match
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.4 NAME 'loginShell'
-  DESC 'The path to the login shell'
-  EQUALITY caseExactIA5Match
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.5 NAME 'shadowLastChange'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.6 NAME 'shadowMin'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.7 NAME 'shadowMax'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.8 NAME 'shadowWarning'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.9 NAME 'shadowInactive'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.10 NAME 'shadowExpire'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.11 NAME 'shadowFlag'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.12 NAME 'memberUid'
-  EQUALITY caseExactIA5Match
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 1.3.6.1.1.1.1.13 NAME 'memberNisNetgroup'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple'
-  DESC 'Netgroup triple'
-  EQUALITY caseIgnoreIA5Match
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 1.3.6.1.1.1.1.15 NAME 'ipServicePort'
-  DESC 'Service port number'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.16 NAME 'ipServiceProtocol'
-  DESC 'Service protocol name'
-  SUP name )
-
-attributetype ( 1.3.6.1.1.1.1.17 NAME 'ipProtocolNumber'
-  DESC 'IP protocol number'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.18 NAME 'oncRpcNumber'
-  DESC 'ONC RPC number'
-  EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE )
-attributetype ( 1.3.6.1.1.1.1.19 NAME 'ipHostNumber'
-  DESC 'IPv4 addresses as a dotted decimal omitting leading
-        zeros or IPv6 addresses as defined in RFC2373'
-  SUP name )
-
-attributetype ( 1.3.6.1.1.1.1.20 NAME 'ipNetworkNumber'
-  DESC 'IP network as a dotted decimal, eg. 192.168,
-        omitting leading zeros'
-  SUP name
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.21 NAME 'ipNetmaskNumber'
-  DESC 'IP netmask as a dotted decimal, eg. 255.255.255.0,
-        omitting leading zeros'
-  EQUALITY caseIgnoreIA5Match
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.22 NAME 'macAddress'
-  DESC 'MAC address in maximal, colon separated hex
-        notation, eg. 00:00:92:90:ee:e2'
-  EQUALITY caseIgnoreIA5Match
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 1.3.6.1.1.1.1.23 NAME 'bootParameter'
-  DESC 'rpc.bootparamd parameter'
-  EQUALITY caseExactIA5Match
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 1.3.6.1.1.1.1.24 NAME 'bootFile'
-  DESC 'Boot image name'
-  EQUALITY caseExactIA5Match
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 1.3.6.1.1.1.1.26 NAME 'nisMapName'
-  DESC 'Name of a A generic NIS map'
-  SUP name )
-
-attributetype ( 1.3.6.1.1.1.1.27 NAME 'nisMapEntry'
-  DESC 'A generic NIS entry'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-  SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.28 NAME 'nisPublicKey'
-  DESC 'NIS public key'
-  EQUALITY octetStringMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.29 NAME 'nisSecretKey'
-  DESC 'NIS secret key'
-  EQUALITY octetStringMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.30 NAME 'nisDomain'
-  DESC 'NIS domain'
-  EQUALITY caseIgnoreIA5Match
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)
-
-attributetype ( 1.3.6.1.1.1.1.31 NAME 'automountMapName'
-  DESC 'automount Map Name'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.32 NAME 'automountKey'
-  DESC 'Automount Key value'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.33 NAME 'automountInformation'
-  DESC 'Automount information'
-  EQUALITY caseExactIA5Match
-  SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-
-objectclass ( 1.3.6.1.1.1.2.0 NAME 'posixAccount' SUP top AUXILIARY
-  DESC 'Abstraction of an account with POSIX attributes'
-  MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
-  MAY ( userPassword $ loginShell $ gecos $
-        description ) )
-
-objectclass ( 1.3.6.1.1.1.2.1 NAME 'shadowAccount' SUP top AUXILIARY
-  DESC 'Additional attributes for shadow passwords'
-  MUST uid
-  MAY ( userPassword $ description $
-        shadowLastChange $ shadowMin $ shadowMax $
-        shadowWarning $ shadowInactive $
-        shadowExpire $ shadowFlag ) )
-
-objectclass ( 1.3.6.1.1.1.2.2 NAME 'posixGroup' SUP top AUXILIARY
-  DESC 'Abstraction of a group of accounts'
-  MUST gidNumber
-  MAY ( userPassword $ memberUid $
-        description ) )
-
-objectclass ( 1.3.6.1.1.1.2.3 NAME 'ipService' SUP top STRUCTURAL
-  DESC 'Abstraction an Internet Protocol service.
-        Maps an IP port and protocol (such as tcp or udp)
-        to one or more names; the distinguished value of
-        the cn attribute denotes the services canonical
-        name'
-  MUST ( cn $ ipServicePort $ ipServiceProtocol )
-  MAY description )
-
-objectclass ( 1.3.6.1.1.1.2.4 NAME 'ipProtocol' SUP top STRUCTURAL
-  DESC 'Abstraction of an IP protocol. Maps a protocol number
-        to one or more names. The distinguished value of the cn
-        attribute denotes the protocols canonical name'
-  MUST ( cn $ ipProtocolNumber )
-  MAY description )
-
-objectclass ( 1.3.6.1.1.1.2.5 NAME 'oncRpc' SUP top STRUCTURAL
-  DESC 'Abstraction of an Open Network Computing (ONC)
-       [RFC1057] Remote Procedure Call (RPC) binding.
-       This class maps an ONC RPC number to a name.
-       The distinguished value of the cn attribute denotes
-       the RPC services canonical name'
-  MUST ( cn $ oncRpcNumber )
-  MAY description )
-
-objectclass ( 1.3.6.1.1.1.2.6 NAME 'ipHost' SUP top AUXILIARY
-  DESC 'Abstraction of a host, an IP device. The distinguished
-        value of the cn attribute denotes the hosts canonical
-        name. Device SHOULD be used as a structural class'
-  MUST ( cn $ ipHostNumber )
-  MAY ( userPassword $ l $ description $ manager ) )
-
-objectclass ( 1.3.6.1.1.1.2.7 NAME 'ipNetwork' SUP top STRUCTURAL
-  DESC 'Abstraction of a network. The distinguished value of
-        the cn attribute denotes the networks canonical name'
-  MUST ipNetworkNumber
-  MAY ( cn $ ipNetmaskNumber $ l $ description $ manager ) )
-
-objectclass ( 1.3.6.1.1.1.2.8 NAME 'nisNetgroup' SUP top STRUCTURAL
-  DESC 'Abstraction of a netgroup. May refer to other netgroups'
-  MUST cn
-  MAY ( nisNetgroupTriple $ memberNisNetgroup $ description ) )
-
-objectclass ( 1.3.6.1.1.1.2.9 NAME 'nisMap' SUP top STRUCTURAL
-  DESC 'A generic abstraction of a NIS map'
-  MUST nisMapName
-  MAY description )
-
-objectclass ( 1.3.6.1.1.1.2.10 NAME 'nisObject' SUP top STRUCTURAL
-  DESC 'An entry in a NIS map'
-  MUST ( cn $ nisMapEntry $ nisMapName )
-  MAY description )
-
-objectclass ( 1.3.6.1.1.1.2.11 NAME 'ieee802Device' SUP top AUXILIARY
-  DESC 'A device with a MAC address; device SHOULD be
-        used as a structural class'
-  MAY macAddress )
-
-objectclass ( 1.3.6.1.1.1.2.12 NAME 'bootableDevice' SUP top AUXILIARY
-  DESC 'A device with boot parameters; device SHOULD be
-        used as a structural class'
-  MAY ( bootFile $ bootParameter ) )
-
-objectclass ( 1.3.6.1.1.1.2.14 NAME 'nisKeyObject' SUP top AUXILIARY
-  DESC 'An object with a public and secret key'
-  MUST ( cn $ nisPublicKey $ nisSecretKey )
-  MAY ( uidNumber $ description ) )
-
-objectclass ( 1.3.6.1.1.1.2.15 NAME 'nisDomainObject' SUP top AUXILIARY
-  DESC 'Associates a NIS domain with a naming context'
-  MUST nisDomain )
-
-objectclass ( 1.3.6.1.1.1.2.16 NAME 'automountMap' SUP top STRUCTURAL
-  MUST ( automountMapName )
-  MAY description )
-
-objectclass ( 1.3.6.1.1.1.2.17 NAME 'automount' SUP top STRUCTURAL
-  DESC 'Automount information'
-  MUST ( automountKey $ automountInformation )
-  MAY description )
-## namedObject is needed for groups without members
-objectclass ( 1.3.6.1.4.1.5322.13.1.1 NAME 'namedObject' SUP top
-       STRUCTURAL MAY cn )
-
diff --git a/ldap/data/ldap_conf/schema/fusiondirectory/template-fd.schema b/ldap/data/ldap_conf/schema/fusiondirectory/template-fd.schema
deleted file mode 100644
index 2ac801b..0000000
--- a/ldap/data/ldap_conf/schema/fusiondirectory/template-fd.schema
+++ /dev/null
@@ -1,15 +0,0 @@
-##
-## template-fd.schema - Needed by Fusion Directory for managing templates
-##
-
-# Attributes
-attributetype ( 1.3.6.1.4.1.38414.38.1.1 NAME 'fdTemplateField'
-  DESC 'FusionDirectory - template field'
-  EQUALITY caseExactMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
-
-# Objectclasses
-objectclass (1.3.6.1.4.1.38414.38.2.1 NAME 'fdTemplate'
-  DESC 'FusionDirectory - template object'
-  MUST ( cn )
-  MAY ( fdTemplateField ) )
diff --git a/ldap/data/ldap_conf/schema/inetorgperson.ldif b/ldap/data/ldap_conf/schema/inetorgperson.ldif
deleted file mode 100644
index ff7927c..0000000
--- a/ldap/data/ldap_conf/schema/inetorgperson.ldif
+++ /dev/null
@@ -1,69 +0,0 @@
-# InetOrgPerson (RFC2798)
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-# InetOrgPerson (RFC2798)
-#
-# Depends upon
-#   Definition of an X.500 Attribute Type and an Object Class to Hold
-#   Uniform Resource Identifiers (URIs) [RFC2079]
-#	(core.ldif)
-#
-#   A Summary of the X.500(96) User Schema for use with LDAPv3 [RFC2256]
-#	(core.ldif)
-#
-#   The COSINE and Internet X.500 Schema [RFC1274] (cosine.ldif)
-#
-# This file was automatically generated from inetorgperson.schema; see
-# that file for complete references.
-#
-dn: cn=inetorgperson,cn=schema,cn=config
-objectClass: olcSchemaConfig
-cn: inetorgperson
-olcAttributeTypes: ( 2.16.840.1.113730.3.1.1 NAME 'carLicense' DESC 'RFC279
- 8: vehicle license or registration plate' EQUALITY caseIgnoreMatch SUBSTR cas
- eIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-olcAttributeTypes: ( 2.16.840.1.113730.3.1.2 NAME 'departmentNumber' DESC '
- RFC2798: identifies a department within an organization' EQUALITY caseIgnoreM
- atch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-olcAttributeTypes: ( 2.16.840.1.113730.3.1.241 NAME 'displayName' DESC 'RFC
- 2798: preferred name to be used when displaying entries' EQUALITY caseIgnoreM
- atch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SI
- NGLE-VALUE )
-olcAttributeTypes: ( 2.16.840.1.113730.3.1.3 NAME 'employeeNumber' DESC 'RF
- C2798: numerically identifies an employee within an organization' EQUALITY ca
- seIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.12
- 1.1.15 SINGLE-VALUE )
-olcAttributeTypes: ( 2.16.840.1.113730.3.1.4 NAME 'employeeType' DESC 'RFC2
- 798: type of employment for a person' EQUALITY caseIgnoreMatch SUBSTR caseIgn
- oreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-olcAttributeTypes: ( 0.9.2342.19200300.100.1.60 NAME 'jpegPhoto' DESC 'RFC2
- 798: a JPEG image' SYNTAX 1.3.6.1.4.1.1466.115.121.1.28 )
-olcAttributeTypes: ( 2.16.840.1.113730.3.1.39 NAME 'preferredLanguage' DESC
-  'RFC2798: preferred written or spoken language for a person' EQUALITY caseIg
- noreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.
- 15 SINGLE-VALUE )
-olcAttributeTypes: ( 2.16.840.1.113730.3.1.40 NAME 'userSMIMECertificate' D
- ESC 'RFC2798: PKCS#7 SignedData used to support S/MIME' SYNTAX 1.3.6.1.4.1.14
- 66.115.121.1.5 )
-olcAttributeTypes: ( 2.16.840.1.113730.3.1.216 NAME 'userPKCS12' DESC 'RFC2
- 798: personal identity information, a PKCS #12 PFX' SYNTAX 1.3.6.1.4.1.1466.1
- 15.121.1.5 )
-olcObjectClasses: ( 2.16.840.1.113730.3.2.2 NAME 'inetOrgPerson' DESC 'RFC2
- 798: Internet Organizational Person' SUP organizationalPerson STRUCTURAL MAY 
- ( audio $ businessCategory $ carLicense $ departmentNumber $ displayName $ em
- ployeeNumber $ employeeType $ givenName $ homePhone $ homePostalAddress $ ini
- tials $ jpegPhoto $ labeledURI $ mail $ manager $ mobile $ o $ pager $ photo 
- $ roomNumber $ secretary $ uid $ userCertificate $ x500uniqueIdentifier $ pre
- ferredLanguage $ userSMIMECertificate $ userPKCS12 ) )
diff --git a/ldap/data/ldap_conf/schema/inetorgperson.schema b/ldap/data/ldap_conf/schema/inetorgperson.schema
deleted file mode 100644
index 34c3bf8..0000000
--- a/ldap/data/ldap_conf/schema/inetorgperson.schema
+++ /dev/null
@@ -1,113 +0,0 @@
-# inetorgperson.schema -- InetOrgPerson (RFC2798)
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-# InetOrgPerson (RFC2798)
-#
-# Depends upon
-#   Definition of an X.500 Attribute Type and an Object Class to Hold
-#   Uniform Resource Identifiers (URIs) [RFC2079]
-#	(core.schema)
-#
-#   A Summary of the X.500(96) User Schema for use with LDAPv3 [RFC2256]
-#	(core.schema)
-#
-#   The COSINE and Internet X.500 Schema [RFC1274] (cosine.schema)
-
-# The version of this file as distributed by the OpenLDAP Foundation
-# contains text from an IETF RFC explaining the schema.  Unfortunately,
-# that text is covered by a license that doesn't meet Debian's Free
-# Software Guidelines.  This is a stripped version of the schema that
-# contains only the functional schema definition, not the text of the
-# RFC.
-#
-# For an explanation of this schema, see RFC 2798, at (among other
-# places):  http://www.ietf.org/rfc/rfc2798.txt
-
-attributetype ( 2.16.840.1.113730.3.1.1
-	NAME 'carLicense'
-	DESC 'RFC2798: vehicle license or registration plate'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
-attributetype ( 2.16.840.1.113730.3.1.2
-	NAME 'departmentNumber'
-	DESC 'RFC2798: identifies a department within an organization'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
-attributetype ( 2.16.840.1.113730.3.1.241
-	NAME 'displayName'
-	DESC 'RFC2798: preferred name to be used when displaying entries'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-	SINGLE-VALUE )
-
-attributetype ( 2.16.840.1.113730.3.1.3
-	NAME 'employeeNumber'
-	DESC 'RFC2798: numerically identifies an employee within an organization'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-	SINGLE-VALUE )
-
-attributetype ( 2.16.840.1.113730.3.1.4
-	NAME 'employeeType'
-	DESC 'RFC2798: type of employment for a person'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
-attributetype ( 0.9.2342.19200300.100.1.60
-	NAME 'jpegPhoto'
-	DESC 'RFC2798: a JPEG image'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.28 )
-
-attributetype ( 2.16.840.1.113730.3.1.39
-	NAME 'preferredLanguage'
-	DESC 'RFC2798: preferred written or spoken language for a person'
-	EQUALITY caseIgnoreMatch
-	SUBSTR caseIgnoreSubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-	SINGLE-VALUE )
-
-## OpenLDAP note: ";binary" transfer should NOT be used as syntax is binary
-attributetype ( 2.16.840.1.113730.3.1.40
-	NAME 'userSMIMECertificate'
-	DESC 'RFC2798: PKCS#7 SignedData used to support S/MIME'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 )
-
-## OpenLDAP note: ";binary" transfer should NOT be used as syntax is binary
-attributetype ( 2.16.840.1.113730.3.1.216
-	NAME 'userPKCS12'
-	DESC 'RFC2798: personal identity information, a PKCS #12 PFX'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 )
-
-objectclass	( 2.16.840.1.113730.3.2.2
-    NAME 'inetOrgPerson'
-	DESC 'RFC2798: Internet Organizational Person'
-    SUP organizationalPerson
-    STRUCTURAL
-	MAY (
-		audio $ businessCategory $ carLicense $ departmentNumber $
-		displayName $ employeeNumber $ employeeType $ givenName $
-		homePhone $ homePostalAddress $ initials $ jpegPhoto $
-		labeledURI $ mail $ manager $ mobile $ o $ pager $
-		photo $ roomNumber $ secretary $ uid $ userCertificate $
-		x500uniqueIdentifier $ preferredLanguage $
-		userSMIMECertificate $ userPKCS12 )
-	)
diff --git a/ldap/data/ldap_conf/schema/java.ldif b/ldap/data/ldap_conf/schema/java.ldif
deleted file mode 100644
index 61a185c..0000000
--- a/ldap/data/ldap_conf/schema/java.ldif
+++ /dev/null
@@ -1,59 +0,0 @@
-# java.ldif -- Java Object Schema
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-# Java Object Schema (defined in RFC 2713)
-#	depends upon core.ldif
-#
-# This file was automatically generated from java.schema; see that file
-# for complete references.
-#
-dn: cn=java,cn=schema,cn=config
-objectClass: olcSchemaConfig
-cn: java
-olcAttributeTypes: {0}( 1.3.6.1.4.1.42.2.27.4.1.6 NAME 'javaClassName' DESC 'F
- ully qualified name of distinguished Java class or interface' EQUALITY caseEx
- actMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
-olcAttributeTypes: {1}( 1.3.6.1.4.1.42.2.27.4.1.7 NAME 'javaCodebase' DESC 'UR
- L(s) specifying the location of class definition' EQUALITY caseExactIA5Match 
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: {2}( 1.3.6.1.4.1.42.2.27.4.1.13 NAME 'javaClassNames' DESC 
- 'Fully qualified Java class or interface name' EQUALITY caseExactMatch SYNTAX
-  1.3.6.1.4.1.1466.115.121.1.15 )
-olcAttributeTypes: {3}( 1.3.6.1.4.1.42.2.27.4.1.8 NAME 'javaSerializedData' DE
- SC 'Serialized form of a Java object' SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SI
- NGLE-VALUE )
-olcAttributeTypes: {4}( 1.3.6.1.4.1.42.2.27.4.1.10 NAME 'javaFactory' DESC 'Fu
- lly qualified Java class name of a JNDI object factory' EQUALITY caseExactMat
- ch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
-olcAttributeTypes: {5}( 1.3.6.1.4.1.42.2.27.4.1.11 NAME 'javaReferenceAddress'
-  DESC 'Addresses associated with a JNDI Reference' EQUALITY caseExactMatch SY
- NTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-olcAttributeTypes: {6}( 1.3.6.1.4.1.42.2.27.4.1.12 NAME 'javaDoc' DESC 'The Ja
- va documentation for the class' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1
- .1466.115.121.1.26 )
-olcObjectClasses: {0}( 1.3.6.1.4.1.42.2.27.4.2.1 NAME 'javaContainer' DESC 'Co
- ntainer for a Java object' SUP top STRUCTURAL MUST cn )
-olcObjectClasses: {1}( 1.3.6.1.4.1.42.2.27.4.2.4 NAME 'javaObject' DESC 'Java 
- object representation' SUP top ABSTRACT MUST javaClassName MAY ( javaClassNam
- es $ javaCodebase $ javaDoc $ description ) )
-olcObjectClasses: {2}( 1.3.6.1.4.1.42.2.27.4.2.5 NAME 'javaSerializedObject' D
- ESC 'Java serialized object' SUP javaObject AUXILIARY MUST javaSerializedData
-  )
-olcObjectClasses: {3}( 1.3.6.1.4.1.42.2.27.4.2.8 NAME 'javaMarshalledObject' D
- ESC 'Java marshalled object' SUP javaObject AUXILIARY MUST javaSerializedData
-  )
-olcObjectClasses: {4}( 1.3.6.1.4.1.42.2.27.4.2.7 NAME 'javaNamingReference' DE
- SC 'JNDI reference' SUP javaObject AUXILIARY MAY ( javaReferenceAddress $ jav
- aFactory ) )
diff --git a/ldap/data/ldap_conf/schema/java.schema b/ldap/data/ldap_conf/schema/java.schema
deleted file mode 100644
index 24c1f1b..0000000
--- a/ldap/data/ldap_conf/schema/java.schema
+++ /dev/null
@@ -1,109 +0,0 @@
-# java.schema -- Java Object Schema
-# $OpenLDAP: pkg/ldap/servers/slapd/schema/java.schema,v 1.5.2.3 2007/01/02 21:44:09 kurt Exp $
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2007 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-# Java Object Schema (defined in RFC 2713)
-#	depends upon core.schema
-#
-
-# The version of this file as distributed by the OpenLDAP Foundation
-# contains text from an IETF RFC explaining the schema.  Unfortunately,
-# that text is covered by a license that doesn't meet Debian's Free
-# Software Guidelines.  This is a stripped version of the schema that
-# contains only the functional schema definition, not the text of the
-# RFC.
-#
-# For an explanation of this schema, see RFC 2713, at (among other
-# places):  http://www.ietf.org/rfc/rfc2713.txt
-
-attributetype ( 1.3.6.1.4.1.42.2.27.4.1.6
-	NAME 'javaClassName'
-	DESC 'Fully qualified name of distinguished Java class or interface'
-	EQUALITY caseExactMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-	SINGLE-VALUE )
- 
-attributetype ( 1.3.6.1.4.1.42.2.27.4.1.7
-	NAME 'javaCodebase'
-	DESC 'URL(s) specifying the location of class definition'
-	EQUALITY caseExactIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.4.1.13
-	NAME 'javaClassNames'
-	DESC 'Fully qualified Java class or interface name'
-	EQUALITY caseExactMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
- 
-attributetype ( 1.3.6.1.4.1.42.2.27.4.1.8
-	NAME 'javaSerializedData'
-	DESC 'Serialized form of a Java object'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
-	SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.4.1.10
-	NAME 'javaFactory'
-	DESC 'Fully qualified Java class name of a JNDI object factory'
-	EQUALITY caseExactMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-	SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.4.1.11
-	NAME 'javaReferenceAddress'
-	DESC 'Addresses associated with a JNDI Reference'
-	EQUALITY caseExactMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.4.1.12
-	NAME 'javaDoc'
-	DESC 'The Java documentation for the class'
-	EQUALITY caseExactIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-objectclass ( 1.3.6.1.4.1.42.2.27.4.2.1
-	NAME 'javaContainer'
-	DESC 'Container for a Java object'
-	SUP top
-	STRUCTURAL
-	MUST cn )
-
-objectclass ( 1.3.6.1.4.1.42.2.27.4.2.4
-	NAME 'javaObject'
-	DESC 'Java object representation'
-	SUP top
-	ABSTRACT
-	MUST javaClassName
-	MAY ( javaClassNames $ javaCodebase $
-		javaDoc $ description ) )
-
-objectclass ( 1.3.6.1.4.1.42.2.27.4.2.5
-	NAME 'javaSerializedObject'
-	DESC 'Java serialized object'
-	SUP javaObject
-	AUXILIARY
-	MUST javaSerializedData )
- 
-objectclass ( 1.3.6.1.4.1.42.2.27.4.2.8
-	NAME 'javaMarshalledObject'
-	DESC 'Java marshalled object'
-	SUP javaObject
-	AUXILIARY
-	MUST javaSerializedData )
-
-objectclass ( 1.3.6.1.4.1.42.2.27.4.2.7
-	NAME 'javaNamingReference'
-	DESC 'JNDI reference'
-	SUP javaObject
-	AUXILIARY
-	MAY ( javaReferenceAddress $ javaFactory ) )
diff --git a/ldap/data/ldap_conf/schema/misc.ldif b/ldap/data/ldap_conf/schema/misc.ldif
deleted file mode 100644
index d2614bb..0000000
--- a/ldap/data/ldap_conf/schema/misc.ldif
+++ /dev/null
@@ -1,45 +0,0 @@
-# misc.ldif -- assorted schema definitions
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-# Assorted definitions from several sources, including
-# ''works in progress''.  Contents of this file are
-# subject to change (including deletion) without notice.
-#
-# Not recommended for production use!
-# Use with extreme caution!
-#
-# This file was automatically generated from misc.schema; see that file
-# for complete references.
-#
-dn: cn=misc,cn=schema,cn=config
-objectClass: olcSchemaConfig
-cn: misc
-olcAttributeTypes: {0}( 2.16.840.1.113730.3.1.13 NAME 'mailLocalAddress' DESC 
- 'RFC822 email address of this recipient' EQUALITY caseIgnoreIA5Match SYNTAX 1
- .3.6.1.4.1.1466.115.121.1.26{256} )
-olcAttributeTypes: {1}( 2.16.840.1.113730.3.1.18 NAME 'mailHost' DESC 'FQDN of
-  the SMTP/MTA of this recipient' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4
- .1.1466.115.121.1.26{256} SINGLE-VALUE )
-olcAttributeTypes: {2}( 2.16.840.1.113730.3.1.47 NAME 'mailRoutingAddress' DES
- C 'RFC822 routing address of this recipient' EQUALITY caseIgnoreIA5Match SYNT
- AX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE )
-olcAttributeTypes: {3}( 1.3.6.1.4.1.42.2.27.2.1.15 NAME 'rfc822MailMember' DES
- C 'rfc822 mail address of group member(s)' EQUALITY caseIgnoreIA5Match SYNTAX
-  1.3.6.1.4.1.1466.115.121.1.26 )
-olcObjectClasses: {0}( 2.16.840.1.113730.3.2.147 NAME 'inetLocalMailRecipient'
-  DESC 'Internet local mail recipient' SUP top AUXILIARY MAY ( mailLocalAddres
- s $ mailHost $ mailRoutingAddress ) )
-olcObjectClasses: {1}( 1.3.6.1.4.1.42.2.27.1.2.5 NAME 'nisMailAlias' DESC 'NIS
-  mail alias' SUP top STRUCTURAL MUST cn MAY rfc822MailMember )
diff --git a/ldap/data/ldap_conf/schema/misc.schema b/ldap/data/ldap_conf/schema/misc.schema
deleted file mode 100644
index 999e25f..0000000
--- a/ldap/data/ldap_conf/schema/misc.schema
+++ /dev/null
@@ -1,75 +0,0 @@
-# misc.schema -- assorted schema definitions
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-# Assorted definitions from several sources, including
-# ''works in progress''.  Contents of this file are
-# subject to change (including deletion) without notice.
-#
-# Not recommended for production use!
-# Use with extreme caution!
-
-#-----------------------------------------------------------
-# draft-lachman-laser-ldap-mail-routing-02.txt !!!EXPIRED!!!
-#	(a work in progress)
-#
-attributetype ( 2.16.840.1.113730.3.1.13
-	NAME 'mailLocalAddress'
-	DESC 'RFC822 email address of this recipient'
-	EQUALITY caseIgnoreIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-
-attributetype ( 2.16.840.1.113730.3.1.18
-	NAME 'mailHost'
-	DESC 'FQDN of the SMTP/MTA of this recipient'
-	EQUALITY caseIgnoreIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
-	SINGLE-VALUE )
-
-attributetype ( 2.16.840.1.113730.3.1.47
-	NAME 'mailRoutingAddress'
-	DESC 'RFC822 routing address of this recipient'
-	EQUALITY caseIgnoreIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
-	SINGLE-VALUE )
-
-# I-D leaves this OID TBD.
-# iPlanet uses 2.16.840.1.113.730.3.2.147 but that is an
-# improperly delegated OID.  A typo is likely.
-objectclass ( 2.16.840.1.113730.3.2.147
-	NAME 'inetLocalMailRecipient'
-	DESC 'Internet local mail recipient'
-	SUP top AUXILIARY
-	MAY	( mailLocalAddress $ mailHost $ mailRoutingAddress ) )
-
-#-----------------------------------------------------------
-# draft-srivastava-ldap-mail-00.txt !!!EXPIRED!!!
-#	(a work in progress)
-#
-attributetype ( 1.3.6.1.4.1.42.2.27.2.1.15
-	NAME 'rfc822MailMember'
-	DESC 'rfc822 mail address of group member(s)'
-	EQUALITY caseIgnoreIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-#-----------------------------------------------------------
-# !!!no I-D!!!
-#	(a work in progress)
-#
-objectclass ( 1.3.6.1.4.1.42.2.27.1.2.5
-	NAME 'nisMailAlias'
-	DESC 'NIS mail alias'
-	SUP top STRUCTURAL
-	MUST cn
-	MAY rfc822MailMember )
diff --git a/ldap/data/ldap_conf/schema/nis.ldif b/ldap/data/ldap_conf/schema/nis.ldif
deleted file mode 100644
index 32a63be..0000000
--- a/ldap/data/ldap_conf/schema/nis.ldif
+++ /dev/null
@@ -1,120 +0,0 @@
-# NIS (RFC2307)
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-# Definitions from RFC2307 (Experimental)
-#	An Approach for Using LDAP as a Network Information Service
-#
-# Depends upon core.ldif and cosine.ldif
-#
-# This file was automatically generated from nis.schema; see that file
-# for complete references.
-#
-dn: cn=nis,cn=schema,cn=config
-objectClass: olcSchemaConfig
-cn: nis
-olcAttributeTypes: ( 1.3.6.1.1.1.1.2 NAME 'gecos' DESC 'The GECOS field; th
- e common name' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatc
- h SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.3 NAME 'homeDirectory' DESC 'The absolut
- e path to the home directory' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1
- 466.115.121.1.26 SINGLE-VALUE )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.4 NAME 'loginShell' DESC 'The path to th
- e login shell' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.2
- 6 SINGLE-VALUE )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.5 NAME 'shadowLastChange' EQUALITY integ
- erMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.6 NAME 'shadowMin' EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.7 NAME 'shadowMax' EQUALITY integerMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.8 NAME 'shadowWarning' EQUALITY integerM
- atch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.9 NAME 'shadowInactive' EQUALITY integer
- Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.10 NAME 'shadowExpire' EQUALITY integerM
- atch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.11 NAME 'shadowFlag' EQUALITY integerMat
- ch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.12 NAME 'memberUid' EQUALITY caseExactI
- A5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.
- 26 )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.13 NAME 'memberNisNetgroup' EQUALITY ca
- seExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.11
- 5.121.1.26 )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple' DESC 'Netgr
- oup triple' SYNTAX 1.3.6.1.1.1.0.0 )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.15 NAME 'ipServicePort' EQUALITY intege
- rMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.16 NAME 'ipServiceProtocol' SUP name )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.17 NAME 'ipProtocolNumber' EQUALITY int
- egerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.18 NAME 'oncRpcNumber' EQUALITY integer
- Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.19 NAME 'ipHostNumber' DESC 'IP address
- ' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.20 NAME 'ipNetworkNumber' DESC 'IP netw
- ork' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} SI
- NGLE-VALUE )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.21 NAME 'ipNetmaskNumber' DESC 'IP netm
- ask' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} SI
- NGLE-VALUE )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.22 NAME 'macAddress' DESC 'MAC address'
-  EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.23 NAME 'bootParameter' DESC 'rpc.bootp
- aramd parameter' SYNTAX 1.3.6.1.1.1.0.1 )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.24 NAME 'bootFile' DESC 'Boot image nam
- e' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.26 NAME 'nisMapName' SUP name )
-olcAttributeTypes: ( 1.3.6.1.1.1.1.27 NAME 'nisMapEntry' EQUALITY caseExac
- tIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.
- 1.26{1024} SINGLE-VALUE )
-olcObjectClasses: ( 1.3.6.1.1.1.2.0 NAME 'posixAccount' DESC 'Abstraction o
- f an account with POSIX attributes' SUP top AUXILIARY MUST ( cn $ uid $ uidNu
- mber $ gidNumber $ homeDirectory ) MAY ( userPassword $ loginShell $ gecos $ 
- description ) )
-olcObjectClasses: ( 1.3.6.1.1.1.2.1 NAME 'shadowAccount' DESC 'Additional a
- ttributes for shadow passwords' SUP top AUXILIARY MUST uid MAY ( userPassword
-  $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowInactive 
- $ shadowExpire $ shadowFlag $ description ) )
-olcObjectClasses: ( 1.3.6.1.1.1.2.2 NAME 'posixGroup' DESC 'Abstraction of 
- a group of accounts' SUP top STRUCTURAL MUST ( cn $ gidNumber ) MAY ( userPas
- sword $ memberUid $ description ) )
-olcObjectClasses: ( 1.3.6.1.1.1.2.3 NAME 'ipService' DESC 'Abstraction an I
- nternet Protocol service' SUP top STRUCTURAL MUST ( cn $ ipServicePort $ ipSe
- rviceProtocol ) MAY description )
-olcObjectClasses: ( 1.3.6.1.1.1.2.4 NAME 'ipProtocol' DESC 'Abstraction of 
- an IP protocol' SUP top STRUCTURAL MUST ( cn $ ipProtocolNumber $ description
-  ) MAY description )
-olcObjectClasses: ( 1.3.6.1.1.1.2.5 NAME 'oncRpc' DESC 'Abstraction of an O
- NC/RPC binding' SUP top STRUCTURAL MUST ( cn $ oncRpcNumber $ description ) M
- AY description )
-olcObjectClasses: ( 1.3.6.1.1.1.2.6 NAME 'ipHost' DESC 'Abstraction of a ho
- st, an IP device' SUP top AUXILIARY MUST ( cn $ ipHostNumber ) MAY ( l $ desc
- ription $ manager ) )
-olcObjectClasses: ( 1.3.6.1.1.1.2.7 NAME 'ipNetwork' DESC 'Abstraction of a
- n IP network' SUP top STRUCTURAL MUST ( cn $ ipNetworkNumber ) MAY ( ipNetmas
- kNumber $ l $ description $ manager ) )
-olcObjectClasses: ( 1.3.6.1.1.1.2.8 NAME 'nisNetgroup' DESC 'Abstraction of
-  a netgroup' SUP top STRUCTURAL MUST cn MAY ( nisNetgroupTriple $ memberNisNe
- tgroup $ description ) )
-olcObjectClasses: ( 1.3.6.1.1.1.2.9 NAME 'nisMap' DESC 'A generic abstracti
- on of a NIS map' SUP top STRUCTURAL MUST nisMapName MAY description )
-olcObjectClasses: ( 1.3.6.1.1.1.2.10 NAME 'nisObject' DESC 'An entry in a 
- NIS map' SUP top STRUCTURAL MUST ( cn $ nisMapEntry $ nisMapName ) MAY descri
- ption )
-olcObjectClasses: ( 1.3.6.1.1.1.2.11 NAME 'ieee802Device' DESC 'A device w
- ith a MAC address' SUP top AUXILIARY MAY macAddress )
-olcObjectClasses: ( 1.3.6.1.1.1.2.12 NAME 'bootableDevice' DESC 'A device 
- with boot parameters' SUP top AUXILIARY MAY ( bootFile $ bootParameter ) )
diff --git a/ldap/data/ldap_conf/schema/nis.schema b/ldap/data/ldap_conf/schema/nis.schema
deleted file mode 100644
index 9627277..0000000
--- a/ldap/data/ldap_conf/schema/nis.schema
+++ /dev/null
@@ -1,237 +0,0 @@
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-
-# Definitions from RFC2307 (Experimental)
-#	An Approach for Using LDAP as a Network Information Service
-
-# Depends upon core.schema and cosine.schema
-
-# Note: The definitions in RFC2307 are given in syntaxes closely related
-# to those in RFC2252, however, some liberties are taken that are not
-# supported by RFC2252.  This file has been written following RFC2252
-# strictly.
-
-# OID Base is iso(1) org(3) dod(6) internet(1) directory(1) nisSchema(1).
-# i.e. nisSchema in RFC2307 is 1.3.6.1.1.1
-#
-# Syntaxes are under 1.3.6.1.1.1.0 (two new syntaxes are defined)
-#	validaters for these syntaxes are incomplete, they only
-#	implement printable string validation (which is good as the
-#	common use of these syntaxes violates the specification).
-# Attribute types are under 1.3.6.1.1.1.1
-# Object classes are under 1.3.6.1.1.1.2
-
-# Attribute Type Definitions
-
-# builtin
-#attributetype ( 1.3.6.1.1.1.1.0 NAME 'uidNumber'
-#	DESC 'An integer uniquely identifying a user in an administrative domain'
-#	EQUALITY integerMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-
-# builtin
-#attributetype ( 1.3.6.1.1.1.1.1 NAME 'gidNumber'
-#	DESC 'An integer uniquely identifying a group in an administrative domain'
-#	EQUALITY integerMatch
-#	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.2 NAME 'gecos'
-	DESC 'The GECOS field; the common name'
-	EQUALITY caseIgnoreIA5Match
-	SUBSTR caseIgnoreIA5SubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.3 NAME 'homeDirectory'
-	DESC 'The absolute path to the home directory'
-	EQUALITY caseExactIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.4 NAME 'loginShell'
-	DESC 'The path to the login shell'
-	EQUALITY caseExactIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.5 NAME 'shadowLastChange'
-	EQUALITY integerMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.6 NAME 'shadowMin'
-	EQUALITY integerMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.7 NAME 'shadowMax'
-	EQUALITY integerMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.8 NAME 'shadowWarning'
-	EQUALITY integerMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.9 NAME 'shadowInactive'
-	EQUALITY integerMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.10 NAME 'shadowExpire'
-	EQUALITY integerMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.11 NAME 'shadowFlag'
-	EQUALITY integerMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.12 NAME 'memberUid'
-	EQUALITY caseExactIA5Match
-	SUBSTR caseExactIA5SubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 1.3.6.1.1.1.1.13 NAME 'memberNisNetgroup'
-	EQUALITY caseExactIA5Match
-	SUBSTR caseExactIA5SubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple'
-	DESC 'Netgroup triple'
-	SYNTAX 1.3.6.1.1.1.0.0 )
-
-attributetype ( 1.3.6.1.1.1.1.15 NAME 'ipServicePort'
-	EQUALITY integerMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.16 NAME 'ipServiceProtocol'
-	SUP name )
-
-attributetype ( 1.3.6.1.1.1.1.17 NAME 'ipProtocolNumber'
-	EQUALITY integerMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.18 NAME 'oncRpcNumber'
-	EQUALITY integerMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.19 NAME 'ipHostNumber'
-	DESC 'IP address'
-	EQUALITY caseIgnoreIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} )
-
-attributetype ( 1.3.6.1.1.1.1.20 NAME 'ipNetworkNumber'
-	DESC 'IP network'
-	EQUALITY caseIgnoreIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.21 NAME 'ipNetmaskNumber'
-	DESC 'IP netmask'
-	EQUALITY caseIgnoreIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.1.1.1.22 NAME 'macAddress'
-	DESC 'MAC address'
-	EQUALITY caseIgnoreIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} )
-
-attributetype ( 1.3.6.1.1.1.1.23 NAME 'bootParameter'
-	DESC 'rpc.bootparamd parameter'
-	SYNTAX 1.3.6.1.1.1.0.1 )
-
-attributetype ( 1.3.6.1.1.1.1.24 NAME 'bootFile'
-	DESC 'Boot image name'
-	EQUALITY caseExactIA5Match
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 1.3.6.1.1.1.1.26 NAME 'nisMapName'
-	SUP name )
-
-attributetype ( 1.3.6.1.1.1.1.27 NAME 'nisMapEntry'
-	EQUALITY caseExactIA5Match
-	SUBSTR caseExactIA5SubstringsMatch
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} SINGLE-VALUE )
-
-# Object Class Definitions
-
-objectclass ( 1.3.6.1.1.1.2.0 NAME 'posixAccount'
-	DESC 'Abstraction of an account with POSIX attributes'
-	SUP top AUXILIARY
-	MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
-	MAY ( userPassword $ loginShell $ gecos $ description ) )
-
-objectclass ( 1.3.6.1.1.1.2.1 NAME 'shadowAccount'
-	DESC 'Additional attributes for shadow passwords'
-	SUP top AUXILIARY
-	MUST uid
-	MAY ( userPassword $ shadowLastChange $ shadowMin $
-	      shadowMax $ shadowWarning $ shadowInactive $
-	      shadowExpire $ shadowFlag $ description ) )
-
-objectclass ( 1.3.6.1.1.1.2.2 NAME 'posixGroup'
-	DESC 'Abstraction of a group of accounts'
-	SUP top STRUCTURAL
-	MUST ( cn $ gidNumber )
-	MAY ( userPassword $ memberUid $ description ) )
-
-objectclass ( 1.3.6.1.1.1.2.3 NAME 'ipService'
-	DESC 'Abstraction an Internet Protocol service'
-	SUP top STRUCTURAL
-	MUST ( cn $ ipServicePort $ ipServiceProtocol )
-	MAY ( description ) )
-
-objectclass ( 1.3.6.1.1.1.2.4 NAME 'ipProtocol'
-	DESC 'Abstraction of an IP protocol'
-	SUP top STRUCTURAL
-	MUST ( cn $ ipProtocolNumber $ description )
-	MAY description )
-
-objectclass ( 1.3.6.1.1.1.2.5 NAME 'oncRpc'
-	DESC 'Abstraction of an ONC/RPC binding'
-	SUP top STRUCTURAL
-	MUST ( cn $ oncRpcNumber $ description )
-	MAY description )
-
-objectclass ( 1.3.6.1.1.1.2.6 NAME 'ipHost'
-	DESC 'Abstraction of a host, an IP device'
-	SUP top AUXILIARY
-	MUST ( cn $ ipHostNumber )
-	MAY ( l $ description $ manager ) )
-
-objectclass ( 1.3.6.1.1.1.2.7 NAME 'ipNetwork'
-	DESC 'Abstraction of an IP network'
-	SUP top STRUCTURAL
-	MUST ( cn $ ipNetworkNumber )
-	MAY ( ipNetmaskNumber $ l $ description $ manager ) )
-
-objectclass ( 1.3.6.1.1.1.2.8 NAME 'nisNetgroup'
-	DESC 'Abstraction of a netgroup'
-	SUP top STRUCTURAL
-	MUST cn
-	MAY ( nisNetgroupTriple $ memberNisNetgroup $ description ) )
-
-objectclass ( 1.3.6.1.1.1.2.9 NAME 'nisMap'
-	DESC 'A generic abstraction of a NIS map'
-	SUP top STRUCTURAL
-	MUST nisMapName
-	MAY description )
-
-objectclass ( 1.3.6.1.1.1.2.10 NAME 'nisObject'
-	DESC 'An entry in a NIS map'
-	SUP top STRUCTURAL
-	MUST ( cn $ nisMapEntry $ nisMapName )
-	MAY description )
-
-objectclass ( 1.3.6.1.1.1.2.11 NAME 'ieee802Device'
-	DESC 'A device with a MAC address'
-	SUP top AUXILIARY
-	MAY macAddress )
-
-objectclass ( 1.3.6.1.1.1.2.12 NAME 'bootableDevice'
-	DESC 'A device with boot parameters'
-	SUP top AUXILIARY
-	MAY ( bootFile $ bootParameter ) )
diff --git a/ldap/data/ldap_conf/schema/openldap.ldif b/ldap/data/ldap_conf/schema/openldap.ldif
deleted file mode 100644
index f9f250f..0000000
--- a/ldap/data/ldap_conf/schema/openldap.ldif
+++ /dev/null
@@ -1,88 +0,0 @@
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-#
-# OpenLDAP Project's directory schema items
-#
-# depends upon:
-#	core.schema
-#	cosine.schema
-#	inetorgperson.schema
-#
-# These are provided for informational purposes only.
-#
-# This openldap.ldif file is provided as a demonstration of how to
-# convert a *.schema file into *.ldif format. The key points:
-#   In LDIF, a blank line terminates an entry. Blank lines in a *.schema
-#     file should be replaced with a single '#' to turn them into
-#     comments, or they should just be removed.
-#   In addition to the actual schema directives, the file needs a small
-#     header to make it a valid LDAP entry. This header must provide the
-#     dn of the entry, the objectClass, and the cn, as shown here:
-#
-dn: cn=openldap,cn=schema,cn=config
-objectClass: olcSchemaConfig
-cn: openldap
-#
-# The schema directives need to be changed to LDAP Attributes.
-#   First a basic string substitution can be done on each of the keywords:
-#     objectIdentifier -> olcObjectIdentifier:
-#     objectClass -> olcObjectClasses:
-#     attributeType -> olcAttributeTypes:
-#   Then leading whitespace must be fixed. The slapd.conf format allows
-#     tabs or spaces to denote line continuation, while LDIF only allows
-#     the space character.
-#   Also slapd.conf preserves the continuation character, while LDIF strips
-#     it out. So a single TAB/SPACE in slapd.conf must be replaced with
-#     two SPACEs in LDIF, otherwise the continued text may get joined as
-#     a single word.
-#   The directives must be listed in a proper sequence:
-#     All olcObjectIdentifiers must be first, so they may be referenced by
-#        any following definitions.
-#     All olcAttributeTypes must be next, so they may be referenced by any
-#        following objectClass definitions.
-#     All olcObjectClasses must be after the olcAttributeTypes.
-#   And of course, any superior must occur before anything that inherits
-#     from it.
-#
-olcObjectIdentifier: OpenLDAProot 1.3.6.1.4.1.4203
-#
-olcObjectIdentifier: OpenLDAP OpenLDAProot:1
-olcObjectIdentifier: OpenLDAPattributeType OpenLDAP:3
-olcObjectIdentifier: OpenLDAPobjectClass OpenLDAP:4
-#
-olcObjectClasses: ( OpenLDAPobjectClass:3
-  NAME 'OpenLDAPorg'
-  DESC 'OpenLDAP Organizational Object'
-  SUP organization
-  MAY ( buildingName $ displayName $ labeledURI ) )
-#
-olcObjectClasses: ( OpenLDAPobjectClass:4
-  NAME 'OpenLDAPou'
-  DESC 'OpenLDAP Organizational Unit Object'
-  SUP organizationalUnit
-  MAY ( buildingName $ displayName $ labeledURI $ o ) )
-#
-olcObjectClasses: ( OpenLDAPobjectClass:5
-  NAME 'OpenLDAPperson'
-  DESC 'OpenLDAP Person'
-  SUP ( pilotPerson $ inetOrgPerson )
-  MUST ( uid $ cn )
-  MAY ( givenName $ labeledURI $ o ) )
-#
-olcObjectClasses: ( OpenLDAPobjectClass:6
-  NAME 'OpenLDAPdisplayableObject'
-  DESC 'OpenLDAP Displayable Object'
-  AUXILIARY
-  MAY displayName )
diff --git a/ldap/data/ldap_conf/schema/openldap.schema b/ldap/data/ldap_conf/schema/openldap.schema
deleted file mode 100644
index 9f7466d..0000000
--- a/ldap/data/ldap_conf/schema/openldap.schema
+++ /dev/null
@@ -1,54 +0,0 @@
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-
-#
-# OpenLDAP Project's directory schema items
-#
-# depends upon:
-#	core.schema
-#	cosine.schema
-#	inetorgperson.schema
-#
-# These are provided for informational purposes only.
-
-objectIdentifier OpenLDAProot 1.3.6.1.4.1.4203
-
-objectIdentifier OpenLDAP OpenLDAProot:1
-objectIdentifier OpenLDAPattributeType OpenLDAP:3
-objectIdentifier OpenLDAPobjectClass OpenLDAP:4
-
-objectClass ( OpenLDAPobjectClass:3
-	NAME 'OpenLDAPorg'
-	DESC 'OpenLDAP Organizational Object'
-	SUP organization
-	MAY ( buildingName $ displayName $ labeledURI ) )
-
-objectClass ( OpenLDAPobjectClass:4
-	NAME 'OpenLDAPou'
-	DESC 'OpenLDAP Organizational Unit Object'
-	SUP organizationalUnit
-	MAY ( buildingName $ displayName $ labeledURI $ o ) )
-
-objectClass ( OpenLDAPobjectClass:5
-	NAME 'OpenLDAPperson'
-	DESC 'OpenLDAP Person'
-	SUP ( pilotPerson $ inetOrgPerson )
-	MUST ( uid $ cn )
-	MAY ( givenName $ labeledURI $ o ) )
-
-objectClass ( OpenLDAPobjectClass:6
-	NAME 'OpenLDAPdisplayableObject'
-	DESC 'OpenLDAP Displayable Object'
-	AUXILIARY
-	MAY displayName )
diff --git a/ldap/data/ldap_conf/schema/pmi.ldif b/ldap/data/ldap_conf/schema/pmi.ldif
deleted file mode 100644
index c567f26..0000000
--- a/ldap/data/ldap_conf/schema/pmi.ldif
+++ /dev/null
@@ -1,123 +0,0 @@
-# OpenLDAP X.509 PMI schema
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-## Portions Copyright (C) The Internet Society (1997-2006).
-## All Rights Reserved.
-#
-# Includes LDAPv3 schema items from:
-# ITU X.509 (08/2005)
-#
-# This file was automatically generated from pmi.schema; see that file
-# for complete references.
-#
-dn: cn=pmi,cn=schema,cn=config
-objectClass: olcSchemaConfig
-cn: pmi
-olcObjectIdentifier: {0}id-oc-pmiUser 2.5.6.24
-olcObjectIdentifier: {1}id-oc-pmiAA 2.5.6.25
-olcObjectIdentifier: {2}id-oc-pmiSOA 2.5.6.26
-olcObjectIdentifier: {3}id-oc-attCertCRLDistributionPts 2.5.6.27
-olcObjectIdentifier: {4}id-oc-privilegePolicy 2.5.6.32
-olcObjectIdentifier: {5}id-oc-pmiDelegationPath 2.5.6.33
-olcObjectIdentifier: {6}id-oc-protectedPrivilegePolicy 2.5.6.34
-olcObjectIdentifier: {7}id-at-attributeCertificate 2.5.4.58
-olcObjectIdentifier: {8}id-at-attributeCertificateRevocationList 2.5.4.59
-olcObjectIdentifier: {9}id-at-aACertificate 2.5.4.61
-olcObjectIdentifier: {10}id-at-attributeDescriptorCertificate 2.5.4.62
-olcObjectIdentifier: {11}id-at-attributeAuthorityRevocationList 2.5.4.63
-olcObjectIdentifier: {12}id-at-privPolicy 2.5.4.71
-olcObjectIdentifier: {13}id-at-role 2.5.4.72
-olcObjectIdentifier: {14}id-at-delegationPath 2.5.4.73
-olcObjectIdentifier: {15}id-at-protPrivPolicy 2.5.4.74
-olcObjectIdentifier: {16}id-at-xMLPrivilegeInfo 2.5.4.75
-olcObjectIdentifier: {17}id-at-xMLPprotPrivPolicy 2.5.4.76
-olcObjectIdentifier: {18}id-mr 2.5.13
-olcObjectIdentifier: {19}id-mr-attributeCertificateMatch id-mr:42
-olcObjectIdentifier: {20}id-mr-attributeCertificateExactMatch id-mr:45
-olcObjectIdentifier: {21}id-mr-holderIssuerMatch id-mr:46
-olcObjectIdentifier: {22}id-mr-authAttIdMatch id-mr:53
-olcObjectIdentifier: {23}id-mr-roleSpecCertIdMatch id-mr:54
-olcObjectIdentifier: {24}id-mr-basicAttConstraintsMatch id-mr:55
-olcObjectIdentifier: {25}id-mr-delegatedNameConstraintsMatch id-mr:56
-olcObjectIdentifier: {26}id-mr-timeSpecMatch id-mr:57
-olcObjectIdentifier: {27}id-mr-attDescriptorMatch id-mr:58
-olcObjectIdentifier: {28}id-mr-acceptableCertPoliciesMatch id-mr:59
-olcObjectIdentifier: {29}id-mr-delegationPathMatch id-mr:61
-olcObjectIdentifier: {30}id-mr-sOAIdentifierMatch id-mr:66
-olcObjectIdentifier: {31}id-mr-indirectIssuerMatch id-mr:67
-olcObjectIdentifier: {32}AttributeCertificate 1.3.6.1.4.1.4203.666.11.10.2.1
-olcObjectIdentifier: {33}CertificateList 1.3.6.1.4.1.1466.115.121.1.9
-olcObjectIdentifier: {34}AttCertPath 1.3.6.1.4.1.4203.666.11.10.2.4
-olcObjectIdentifier: {35}PolicySyntax 1.3.6.1.4.1.4203.666.11.10.2.5
-olcObjectIdentifier: {36}RoleSyntax 1.3.6.1.4.1.4203.666.11.10.2.6
-olcLdapSyntaxes: {0}( 1.3.6.1.4.1.4203.666.11.10.2.4 DESC 'X.509 PMI attribute
-  cartificate path: SEQUENCE OF AttributeCertificate' X-SUBST '1.3.6.1.4.1.146
- 6.115.121.1.15' )
-olcLdapSyntaxes: {1}( 1.3.6.1.4.1.4203.666.11.10.2.5 DESC 'X.509 PMI policy sy
- ntax' X-SUBST '1.3.6.1.4.1.1466.115.121.1.15' )
-olcLdapSyntaxes: {2}( 1.3.6.1.4.1.4203.666.11.10.2.6 DESC 'X.509 PMI role synt
- ax' X-SUBST '1.3.6.1.4.1.1466.115.121.1.15' )
-olcAttributeTypes: {0}( id-at-role NAME 'role' DESC 'X.509 Role attribute, use
-  ;binary' SYNTAX RoleSyntax )
-olcAttributeTypes: {1}( id-at-xMLPrivilegeInfo NAME 'xmlPrivilegeInfo' DESC 'X
- .509 XML privilege information attribute' SYNTAX 1.3.6.1.4.1.1466.115.121.1.1
- 5 )
-olcAttributeTypes: {2}( id-at-attributeCertificate NAME 'attributeCertificateA
- ttribute' DESC 'X.509 Attribute certificate attribute, use ;binary' EQUALITY 
- attributeCertificateExactMatch SYNTAX AttributeCertificate )
-olcAttributeTypes: {3}( id-at-aACertificate NAME 'aACertificate' DESC 'X.509 A
- A certificate attribute, use ;binary' EQUALITY attributeCertificateExactMatch
-  SYNTAX AttributeCertificate )
-olcAttributeTypes: {4}( id-at-attributeDescriptorCertificate NAME 'attributeDe
- scriptorCertificate' DESC 'X.509 Attribute descriptor certificate attribute, 
- use ;binary' EQUALITY attributeCertificateExactMatch SYNTAX AttributeCertific
- ate )
-olcAttributeTypes: {5}( id-at-attributeCertificateRevocationList NAME 'attribu
- teCertificateRevocationList' DESC 'X.509 Attribute certificate revocation lis
- t attribute, use ;binary' SYNTAX CertificateList X-EQUALITY 'certificateListE
- xactMatch, not implemented yet' )
-olcAttributeTypes: {6}( id-at-attributeAuthorityRevocationList NAME 'attribute
- AuthorityRevocationList' DESC 'X.509 AA certificate revocation list attribute
- , use ;binary' SYNTAX CertificateList X-EQUALITY 'certificateListExactMatch, 
- not implemented yet' )
-olcAttributeTypes: {7}( id-at-delegationPath NAME 'delegationPath' DESC 'X.509
-  Delegation path attribute, use ;binary' SYNTAX AttCertPath )
-olcAttributeTypes: {8}( id-at-privPolicy NAME 'privPolicy' DESC 'X.509 Privile
- ge policy attribute, use ;binary' SYNTAX PolicySyntax )
-olcAttributeTypes: {9}( id-at-protPrivPolicy NAME 'protPrivPolicy' DESC 'X.509
-  Protected privilege policy attribute, use ;binary' EQUALITY attributeCertifi
- cateExactMatch SYNTAX AttributeCertificate )
-olcAttributeTypes: {10}( id-at-xMLPprotPrivPolicy NAME 'xmlPrivPolicy' DESC 'X
- .509 XML Protected privilege policy attribute' SYNTAX 1.3.6.1.4.1.1466.115.12
- 1.1.15 )
-olcObjectClasses: {0}( id-oc-pmiUser NAME 'pmiUser' DESC 'X.509 PMI user objec
- t class' SUP top AUXILIARY MAY attributeCertificateAttribute )
-olcObjectClasses: {1}( id-oc-pmiAA NAME 'pmiAA' DESC 'X.509 PMI AA object clas
- s' SUP top AUXILIARY MAY ( aACertificate $ attributeCertificateRevocationList
-  $ attributeAuthorityRevocationList ) )
-olcObjectClasses: {2}( id-oc-pmiSOA NAME 'pmiSOA' DESC 'X.509 PMI SOA object c
- lass' SUP top AUXILIARY MAY ( attributeCertificateRevocationList $ attributeA
- uthorityRevocationList $ attributeDescriptorCertificate ) )
-olcObjectClasses: {3}( id-oc-attCertCRLDistributionPts NAME 'attCertCRLDistrib
- utionPt' DESC 'X.509 Attribute certificate CRL distribution point object clas
- s' SUP top AUXILIARY MAY ( attributeCertificateRevocationList $ attributeAuth
- orityRevocationList ) )
-olcObjectClasses: {4}( id-oc-pmiDelegationPath NAME 'pmiDelegationPath' DESC '
- X.509 PMI delegation path' SUP top AUXILIARY MAY delegationPath )
-olcObjectClasses: {5}( id-oc-privilegePolicy NAME 'privilegePolicy' DESC 'X.50
- 9 Privilege policy object class' SUP top AUXILIARY MAY privPolicy )
-olcObjectClasses: {6}( id-oc-protectedPrivilegePolicy NAME 'protectedPrivilege
- Policy' DESC 'X.509 Protected privilege policy object class' SUP top AUXILIAR
- Y MAY protPrivPolicy )
diff --git a/ldap/data/ldap_conf/schema/pmi.schema b/ldap/data/ldap_conf/schema/pmi.schema
deleted file mode 100644
index bc3ca0b..0000000
--- a/ldap/data/ldap_conf/schema/pmi.schema
+++ /dev/null
@@ -1,476 +0,0 @@
-# OpenLDAP X.509 PMI schema
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 1998-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-
-# The version of this file as distributed by the OpenLDAP Foundation
-# contains text claiming copyright by the Internet Society and including
-# the IETF RFC license, which does not meet Debian's Free Software
-# Guidelines.  However, apart from short and obvious comments, the text of
-# this file is purely a functional interface specification, which is not
-# subject to that license and is not copyrightable under US law.
-#
-# The license statement is retained below so as not to remove credit, but
-# as best as we can determine, it is not applicable to the contents of
-# this file.
-
-## Portions Copyright (C) The Internet Society (1997-2006).
-## All Rights Reserved.
-##
-## This document and translations of it may be copied and furnished to
-## others, and derivative works that comment on or otherwise explain it
-## or assist in its implementation may be prepared, copied, published
-## and distributed, in whole or in part, without restriction of any
-## kind, provided that the above copyright notice and this paragraph are
-## included on all such copies and derivative works.  However, this
-## document itself may not be modified in any way, such as by removing
-## the copyright notice or references to the Internet Society or other
-## Internet organizations, except as needed for the purpose of
-## developing Internet standards in which case the procedures for
-## copyrights defined in the Internet Standards process must be         
-## followed, or as required to translate it into languages other than
-## English.
-##                                                                      
-## The limited permissions granted above are perpetual and will not be  
-## revoked by the Internet Society or its successors or assigns.        
-## 
-## This document and the information contained herein is provided on an 
-## "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
-## TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
-## BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
-## HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
-## MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-#
-#
-# Includes LDAPv3 schema items from:
-# ITU X.509 (08/2005)
-#
-## X.509 (08/2005) pp. 120-121
-## 
-## -- object identifier assignments --
-## -- object classes --
-## id-oc-pmiUser                            OBJECT IDENTIFIER ::= {id-oc 24}
-## id-oc-pmiAA                              OBJECT IDENTIFIER ::= {id-oc 25}
-## id-oc-pmiSOA                             OBJECT IDENTIFIER ::= {id-oc 26}
-## id-oc-attCertCRLDistributionPts          OBJECT IDENTIFIER ::= {id-oc 27}
-## id-oc-privilegePolicy                    OBJECT IDENTIFIER ::= {id-oc 32}
-## id-oc-pmiDelegationPath                  OBJECT IDENTIFIER ::= {id-oc 33}
-## id-oc-protectedPrivilegePolicy           OBJECT IDENTIFIER ::= {id-oc 34}
-## -- directory attributes --
-## id-at-attributeCertificate               OBJECT IDENTIFIER ::= {id-at 58}
-## id-at-attributeCertificateRevocationList OBJECT IDENTIFIER ::= {id-at 59}
-## id-at-aACertificate                      OBJECT IDENTIFIER ::= {id-at 61}
-## id-at-attributeDescriptorCertificate     OBJECT IDENTIFIER ::= {id-at 62}
-## id-at-attributeAuthorityRevocationList   OBJECT IDENTIFIER ::= {id-at 63}
-## id-at-privPolicy                         OBJECT IDENTIFIER ::= {id-at 71}
-## id-at-role                               OBJECT IDENTIFIER ::= {id-at 72}
-## id-at-delegationPath                     OBJECT IDENTIFIER ::= {id-at 73}
-## id-at-protPrivPolicy                     OBJECT IDENTIFIER ::= {id-at 74}
-## id-at-xMLPrivilegeInfo                   OBJECT IDENTIFIER ::= {id-at 75}
-## id-at-xMLPprotPrivPolicy                 OBJECT IDENTIFIER ::= {id-at 76}
-## -- attribute certificate extensions --
-## id-ce-authorityAttributeIdentifier       OBJECT IDENTIFIER ::= {id-ce 38}
-## id-ce-roleSpecCertIdentifier             OBJECT IDENTIFIER ::= {id-ce 39}
-## id-ce-basicAttConstraints                OBJECT IDENTIFIER ::= {id-ce 41}
-## id-ce-delegatedNameConstraints           OBJECT IDENTIFIER ::= {id-ce 42}
-## id-ce-timeSpecification                  OBJECT IDENTIFIER ::= {id-ce 43}
-## id-ce-attributeDescriptor                OBJECT IDENTIFIER ::= {id-ce 48}
-## id-ce-userNotice                         OBJECT IDENTIFIER ::= {id-ce 49}
-## id-ce-sOAIdentifier                      OBJECT IDENTIFIER ::= {id-ce 50}
-## id-ce-acceptableCertPolicies             OBJECT IDENTIFIER ::= {id-ce 52}
-## id-ce-targetInformation                  OBJECT IDENTIFIER ::= {id-ce 55}
-## id-ce-noRevAvail                         OBJECT IDENTIFIER ::= {id-ce 56}
-## id-ce-acceptablePrivilegePolicies        OBJECT IDENTIFIER ::= {id-ce 57}
-## id-ce-indirectIssuer                     OBJECT IDENTIFIER ::= {id-ce 61}
-## id-ce-noAssertion                        OBJECT IDENTIFIER ::= {id-ce 62}
-## id-ce-issuedOnBehalfOf                   OBJECT IDENTIFIER ::= {id-ce 64}
-## -- PMI matching rules --
-## id-mr-attributeCertificateMatch          OBJECT IDENTIFIER ::= {id-mr 42}
-## id-mr-attributeCertificateExactMatch     OBJECT IDENTIFIER ::= {id-mr 45}
-## id-mr-holderIssuerMatch                  OBJECT IDENTIFIER ::= {id-mr 46}
-## id-mr-authAttIdMatch                     OBJECT IDENTIFIER ::= {id-mr 53}
-## id-mr-roleSpecCertIdMatch                OBJECT IDENTIFIER ::= {id-mr 54}
-## id-mr-basicAttConstraintsMatch           OBJECT IDENTIFIER ::= {id-mr 55}
-## id-mr-delegatedNameConstraintsMatch      OBJECT IDENTIFIER ::= {id-mr 56}
-## id-mr-timeSpecMatch                      OBJECT IDENTIFIER ::= {id-mr 57}
-## id-mr-attDescriptorMatch                 OBJECT IDENTIFIER ::= {id-mr 58}
-## id-mr-acceptableCertPoliciesMatch        OBJECT IDENTIFIER ::= {id-mr 59}
-## id-mr-delegationPathMatch                OBJECT IDENTIFIER ::= {id-mr 61}
-## id-mr-sOAIdentifierMatch                 OBJECT IDENTIFIER ::= {id-mr 66}
-## id-mr-indirectIssuerMatch                OBJECT IDENTIFIER ::= {id-mr 67}
-## 
-## 
-## X.509 (08/2005) pp. 71, 86-89
-##
-## 14.4.1 Role attribute
-## role  ATTRIBUTE ::= {
-##       WITH SYNTAX         RoleSyntax
-##       ID                  id-at-role }
-## RoleSyntax ::= SEQUENCE {
-## roleAuthority     [0]     GeneralNames  OPTIONAL,
-## roleName          [1]     GeneralName }
-## 
-## 14.5     XML privilege information attribute
-##    xmlPrivilegeInfo ATTRIBUTE ::= {
-##      WITH SYNTAX UTF8String -- contains XML-encoded privilege information
-##      ID                 id-at-xMLPrivilegeInfo }
-## 
-## 17.1 PMI directory object classes
-## 
-## 17.1.1   PMI user object class
-##    pmiUser OBJECT-CLASS ::= {
-##    -- a PMI user (i.e., a "holder")
-##      SUBCLASS OF          {top}
-##      KIND                 auxiliary
-##      MAY CONTAIN          {attributeCertificateAttribute}
-##      ID                   id-oc-pmiUser }
-## 
-## 17.1.2     PMI AA object class
-##     pmiAA OBJECT-CLASS ::= {
-##     -- a PMI AA
-##       SUBCLASS OF          {top}
-##       KIND                 auxiliary
-##       MAY CONTAIN          {aACertificate |
-##                            attributeCertificateRevocationList |
-##                            attributeAuthorityRevocationList}
-##       ID                   id-oc-pmiAA }
-## 
-## 17.1.3     PMI SOA object class
-##     pmiSOA OBJECT-CLASS ::= { -- a PMI Source of Authority
-##       SUBCLASS OF {top}
-##       KIND                 auxiliary
-##       MAY CONTAIN          {attributeCertificateRevocationList |
-##                            attributeAuthorityRevocationList |
-##                            attributeDescriptorCertificate}
-##       ID                   id-oc-pmiSOA }
-## 
-## 17.1.4     Attribute certificate CRL distribution point object class
-##     attCertCRLDistributionPt          OBJECT-CLASS ::= {
-##       SUBCLASS OF {top}
-##       KIND                 auxiliary
-##       MAY CONTAIN          { attributeCertificateRevocationList |
-##                            attributeAuthorityRevocationList }
-##       ID                   id-oc-attCertCRLDistributionPts }
-## 
-## 17.1.5     PMI delegation path
-##     pmiDelegationPath            OBJECT-CLASS ::= {
-##         SUBCLASS OF              {top}
-##         KIND                     auxiliary
-##         MAY CONTAIN              { delegationPath }
-##         ID                       id-oc-pmiDelegationPath }
-## 
-## 17.1.6     Privilege policy object class
-##     privilegePolicy        OBJECT-CLASS ::= {
-##         SUBCLASS OF              {top}
-##         KIND                     auxiliary
-##         MAY CONTAIN              {privPolicy }
-##         ID                       id-oc-privilegePolicy }
-## 
-## 17.1.7     Protected privilege policy object class
-##     protectedPrivilegePolicy               OBJECT-CLASS       ::= {
-##         SUBCLASS OF              {top}
-##         KIND                     auxiliary
-##         MAY CONTAIN            {protPrivPolicy }
-##         ID                     id-oc-protectedPrivilegePolicy }
-## 
-## 17.2       PMI Directory attributes
-## 
-## 17.2.1     Attribute certificate attribute
-##     attributeCertificateAttribute ATTRIBUTE ::= {
-##         WITH SYNTAX                            AttributeCertificate
-##         EQUALITY MATCHING RULE                 attributeCertificateExactMatch
-##         ID                                     id-at-attributeCertificate }
-## 
-## 17.2.2     AA certificate attribute
-##     aACertificate         ATTRIBUTE ::= {
-##         WITH SYNTAX                            AttributeCertificate
-##         EQUALITY MATCHING RULE                 attributeCertificateExactMatch
-##         ID                                     id-at-aACertificate }
-## 
-## 17.2.3     Attribute descriptor certificate attribute
-##     attributeDescriptorCertificate        ATTRIBUTE ::= {
-##         WITH SYNTAX                            AttributeCertificate
-##         EQUALITY MATCHING RULE                 attributeCertificateExactMatch
-##         ID                                     id-at-attributeDescriptorCertificate }
-## 
-## 17.2.4     Attribute certificate revocation list attribute
-##     attributeCertificateRevocationList         ATTRIBUTE ::= {
-##         WITH SYNTAX                            CertificateList
-##         EQUALITY MATCHING RULE                 certificateListExactMatch
-##         ID                                     id-at-attributeCertificateRevocationList}
-## 
-## 17.2.5     AA certificate revocation list attribute
-##     attributeAuthorityRevocationList           ATTRIBUTE ::= {
-##         WITH SYNTAX                            CertificateList
-##         EQUALITY MATCHING RULE                 certificateListExactMatch
-##         ID                                     id-at-attributeAuthorityRevocationList }
-## 
-## 17.2.6     Delegation path attribute
-##     delegationPath        ATTRIBUTE ::= {
-##         WITH SYNTAX                  AttCertPath
-##         ID                           id-at-delegationPath }
-##     AttCertPath      ::= SEQUENCE OF AttributeCertificate
-## 
-## 17.2.7     Privilege policy attribute
-##     privPolicy ATTRIBUTE ::= {
-##         WITH SYNTAX             PolicySyntax
-##         ID                      id-at-privPolicy }
-## 
-## 17.2.8     Protected privilege policy attribute
-##        protPrivPolicy       ATTRIBUTE        ::= {
-##         WITH SYNTAX                          AttributeCertificate
-##         EQUALITY MATCHING RULE               attributeCertificateExactMatch
-##         ID                                   id-at-protPrivPolicy }
-## 
-## 17.2.9     XML Protected privilege policy attribute
-##        xmlPrivPolicy        ATTRIBUTE ::= {
-##         WITH SYNTAX         UTF8String -- contains XML-encoded privilege policy information
-##         ID                  id-at-xMLPprotPrivPolicy }
-## 
-
-## -- object identifier assignments --
-## -- object classes --
-objectidentifier	id-oc-pmiUser 2.5.6.24
-objectidentifier	id-oc-pmiAA 2.5.6.25
-objectidentifier	id-oc-pmiSOA 2.5.6.26
-objectidentifier	id-oc-attCertCRLDistributionPts 2.5.6.27
-objectidentifier	id-oc-privilegePolicy 2.5.6.32
-objectidentifier	id-oc-pmiDelegationPath 2.5.6.33
-objectidentifier	id-oc-protectedPrivilegePolicy 2.5.6.34
-## -- directory attributes --
-objectidentifier	id-at-attributeCertificate 2.5.4.58
-objectidentifier	id-at-attributeCertificateRevocationList 2.5.4.59
-objectidentifier	id-at-aACertificate 2.5.4.61
-objectidentifier	id-at-attributeDescriptorCertificate 2.5.4.62
-objectidentifier	id-at-attributeAuthorityRevocationList 2.5.4.63
-objectidentifier	id-at-privPolicy 2.5.4.71
-objectidentifier	id-at-role 2.5.4.72
-objectidentifier	id-at-delegationPath 2.5.4.73
-objectidentifier	id-at-protPrivPolicy 2.5.4.74
-objectidentifier	id-at-xMLPrivilegeInfo 2.5.4.75
-objectidentifier	id-at-xMLPprotPrivPolicy 2.5.4.76
-## -- attribute certificate extensions --
-## id-ce-authorityAttributeIdentifier       OBJECT IDENTIFIER ::= {id-ce 38}
-## id-ce-roleSpecCertIdentifier             OBJECT IDENTIFIER ::= {id-ce 39}
-## id-ce-basicAttConstraints                OBJECT IDENTIFIER ::= {id-ce 41}
-## id-ce-delegatedNameConstraints           OBJECT IDENTIFIER ::= {id-ce 42}
-## id-ce-timeSpecification                  OBJECT IDENTIFIER ::= {id-ce 43}
-## id-ce-attributeDescriptor                OBJECT IDENTIFIER ::= {id-ce 48}
-## id-ce-userNotice                         OBJECT IDENTIFIER ::= {id-ce 49}
-## id-ce-sOAIdentifier                      OBJECT IDENTIFIER ::= {id-ce 50}
-## id-ce-acceptableCertPolicies             OBJECT IDENTIFIER ::= {id-ce 52}
-## id-ce-targetInformation                  OBJECT IDENTIFIER ::= {id-ce 55}
-## id-ce-noRevAvail                         OBJECT IDENTIFIER ::= {id-ce 56}
-## id-ce-acceptablePrivilegePolicies        OBJECT IDENTIFIER ::= {id-ce 57}
-## id-ce-indirectIssuer                     OBJECT IDENTIFIER ::= {id-ce 61}
-## id-ce-noAssertion                        OBJECT IDENTIFIER ::= {id-ce 62}
-## id-ce-issuedOnBehalfOf                   OBJECT IDENTIFIER ::= {id-ce 64}
-## -- PMI matching rules --
-objectidentifier	id-mr 2.5.13
-objectidentifier	id-mr-attributeCertificateMatch id-mr:42
-objectidentifier	id-mr-attributeCertificateExactMatch id-mr:45
-objectidentifier	id-mr-holderIssuerMatch id-mr:46
-objectidentifier	id-mr-authAttIdMatch id-mr:53
-objectidentifier	id-mr-roleSpecCertIdMatch id-mr:54
-objectidentifier	id-mr-basicAttConstraintsMatch id-mr:55
-objectidentifier	id-mr-delegatedNameConstraintsMatch id-mr:56
-objectidentifier	id-mr-timeSpecMatch id-mr:57
-objectidentifier	id-mr-attDescriptorMatch id-mr:58
-objectidentifier	id-mr-acceptableCertPoliciesMatch id-mr:59
-objectidentifier	id-mr-delegationPathMatch id-mr:61
-objectidentifier	id-mr-sOAIdentifierMatch id-mr:66
-objectidentifier	id-mr-indirectIssuerMatch id-mr:67
-## -- syntaxes --
-## NOTE: 1.3.6.1.4.1.4203.666.11.10 is the oid arc assigned by OpenLDAP
-## to this work in progress
-objectidentifier	AttributeCertificate 1.3.6.1.4.1.4203.666.11.10.2.1
-objectidentifier	CertificateList 1.3.6.1.4.1.1466.115.121.1.9
-objectidentifier	AttCertPath 1.3.6.1.4.1.4203.666.11.10.2.4
-objectidentifier	PolicySyntax 1.3.6.1.4.1.4203.666.11.10.2.5
-objectidentifier	RoleSyntax 1.3.6.1.4.1.4203.666.11.10.2.6
-#  NOTE: OIDs from <draft-ietf-pkix-ldap-schema-02.txt> (expired)
-#objectidentifier	AttributeCertificate 1.2.826.0.1.3344810.7.5
-#objectidentifier	AttCertPath 1.2.826.0.1.3344810.7.10
-#objectidentifier	PolicySyntax 1.2.826.0.1.3344810.7.17
-#objectidentifier	RoleSyntax 1.2.826.0.1.3344810.7.13
-##
-## Substitute syntaxes
-##
-## AttCertPath
-ldapsyntax ( 1.3.6.1.4.1.4203.666.11.10.2.4
-	NAME 'AttCertPath'
-	DESC 'X.509 PMI attribute cartificate path: SEQUENCE OF AttributeCertificate'
-	X-SUBST '1.3.6.1.4.1.1466.115.121.1.15' )
-##
-## PolicySyntax
-ldapsyntax ( 1.3.6.1.4.1.4203.666.11.10.2.5
-	NAME 'PolicySyntax'
-	DESC 'X.509 PMI policy syntax'
-	X-SUBST '1.3.6.1.4.1.1466.115.121.1.15' )
-##
-## RoleSyntax
-ldapsyntax ( 1.3.6.1.4.1.4203.666.11.10.2.6
-	NAME 'RoleSyntax'
-	DESC 'X.509 PMI role syntax'
-	X-SUBST '1.3.6.1.4.1.1466.115.121.1.15' )
-##
-## X.509 (08/2005) pp. 71, 86-89
-## 
-## 14.4.1 Role attribute
-attributeType ( id-at-role
-	NAME 'role'
-	DESC 'X.509 Role attribute, use ;binary'
-	SYNTAX RoleSyntax )
-## 
-## 14.5     XML privilege information attribute
-##  -- contains XML-encoded privilege information
-attributeType ( id-at-xMLPrivilegeInfo
-	NAME 'xmlPrivilegeInfo'
-	DESC 'X.509 XML privilege information attribute'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-## 
-## 17.2       PMI Directory attributes
-## 
-## 17.2.1     Attribute certificate attribute
-attributeType ( id-at-attributeCertificate
-	NAME 'attributeCertificateAttribute'
-	DESC 'X.509 Attribute certificate attribute, use ;binary'
-	SYNTAX AttributeCertificate
-	EQUALITY attributeCertificateExactMatch )
-## 
-## 17.2.2     AA certificate attribute
-attributeType ( id-at-aACertificate
-	NAME 'aACertificate'
-	DESC 'X.509 AA certificate attribute, use ;binary'
-	SYNTAX AttributeCertificate
-	EQUALITY attributeCertificateExactMatch )
-## 
-## 17.2.3     Attribute descriptor certificate attribute
-attributeType ( id-at-attributeDescriptorCertificate
-	NAME 'attributeDescriptorCertificate'
-	DESC 'X.509 Attribute descriptor certificate attribute, use ;binary'
-	SYNTAX AttributeCertificate
-	EQUALITY attributeCertificateExactMatch )
-## 
-## 17.2.4     Attribute certificate revocation list attribute
-attributeType ( id-at-attributeCertificateRevocationList
-	NAME 'attributeCertificateRevocationList'
-	DESC 'X.509 Attribute certificate revocation list attribute, use ;binary'
-	SYNTAX CertificateList 
-	X-EQUALITY 'certificateListExactMatch, not implemented yet' )
-## 
-## 17.2.5     AA certificate revocation list attribute
-attributeType ( id-at-attributeAuthorityRevocationList
-	NAME 'attributeAuthorityRevocationList'
-	DESC 'X.509 AA certificate revocation list attribute, use ;binary'
-	SYNTAX CertificateList
-	X-EQUALITY 'certificateListExactMatch, not implemented yet' )
-## 
-## 17.2.6     Delegation path attribute
-attributeType ( id-at-delegationPath
-	NAME 'delegationPath'
-	DESC 'X.509 Delegation path attribute, use ;binary'
-	SYNTAX AttCertPath )
-##     AttCertPath      ::= SEQUENCE OF AttributeCertificate
-## 
-## 17.2.7     Privilege policy attribute
-attributeType ( id-at-privPolicy
-	NAME 'privPolicy'
-	DESC 'X.509 Privilege policy attribute, use ;binary'
-	SYNTAX PolicySyntax )
-## 
-## 17.2.8     Protected privilege policy attribute
-attributeType ( id-at-protPrivPolicy
-	NAME 'protPrivPolicy'
-	DESC 'X.509 Protected privilege policy attribute, use ;binary'
-	SYNTAX AttributeCertificate
-	EQUALITY attributeCertificateExactMatch )
-## 
-## 17.2.9     XML Protected privilege policy attribute
-## -- contains XML-encoded privilege policy information
-attributeType ( id-at-xMLPprotPrivPolicy
-	NAME 'xmlPrivPolicy'
-	DESC 'X.509 XML Protected privilege policy attribute'
-	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-##
-## 17.1 PMI directory object classes
-## 
-## 17.1.1   PMI user object class
-##    -- a PMI user (i.e., a "holder")
-objectClass ( id-oc-pmiUser
-	NAME 'pmiUser'
-	DESC 'X.509 PMI user object class'
-	SUP top
-	AUXILIARY
-	MAY ( attributeCertificateAttribute ) )
-## 
-## 17.1.2     PMI AA object class
-##     -- a PMI AA
-objectClass ( id-oc-pmiAA
-	NAME 'pmiAA'
-	DESC 'X.509 PMI AA object class'
-	SUP top
-	AUXILIARY
-	MAY ( aACertificate $
-		attributeCertificateRevocationList $
-		attributeAuthorityRevocationList
-	) )
-## 
-## 17.1.3     PMI SOA object class
-##     -- a PMI Source of Authority
-objectClass ( id-oc-pmiSOA
-	NAME 'pmiSOA'
-	DESC 'X.509 PMI SOA object class'
-	SUP top
-	AUXILIARY
-	MAY ( attributeCertificateRevocationList $
-		attributeAuthorityRevocationList $
-		attributeDescriptorCertificate
-	) )
-## 
-## 17.1.4     Attribute certificate CRL distribution point object class
-objectClass ( id-oc-attCertCRLDistributionPts
-	NAME 'attCertCRLDistributionPt'
-	DESC 'X.509 Attribute certificate CRL distribution point object class'
-	SUP top
-	AUXILIARY
-	MAY ( attributeCertificateRevocationList $
-		attributeAuthorityRevocationList
-	) )
-## 
-## 17.1.5     PMI delegation path
-objectClass ( id-oc-pmiDelegationPath
-	NAME 'pmiDelegationPath'
-	DESC 'X.509 PMI delegation path'
-	SUP top
-	AUXILIARY
-	MAY ( delegationPath ) )
-## 
-## 17.1.6     Privilege policy object class
-objectClass ( id-oc-privilegePolicy
-	NAME 'privilegePolicy'
-	DESC 'X.509 Privilege policy object class'
-	SUP top
-	AUXILIARY
-	MAY ( privPolicy ) )
-## 
-## 17.1.7     Protected privilege policy object class
-objectClass ( id-oc-protectedPrivilegePolicy
-	NAME 'protectedPrivilegePolicy'
-	DESC 'X.509 Protected privilege policy object class'
-	SUP top
-	AUXILIARY
-	MAY ( protPrivPolicy ) )
-
diff --git a/ldap/data/ldap_conf/schema/ppolicy.ldif b/ldap/data/ldap_conf/schema/ppolicy.ldif
deleted file mode 100644
index 6559529..0000000
--- a/ldap/data/ldap_conf/schema/ppolicy.ldif
+++ /dev/null
@@ -1,84 +0,0 @@
-# $OpenLDAP$
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 2004-2014 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-## Portions Copyright (C) The Internet Society (2004).
-## Please see full copyright statement below.
-#
-# Definitions from Draft behera-ldap-password-policy-07 (a work in progress)
-#	Password Policy for LDAP Directories
-# With extensions from Hewlett-Packard:
-#	pwdCheckModule etc.
-#
-# Contents of this file are subject to change (including deletion)
-# without notice.
-#
-# Not recommended for production use!
-# Use with extreme caution!
-#
-# This file was automatically generated from ppolicy.schema; see that file
-# for complete references.
-#
-dn: cn=ppolicy,cn=schema,cn=config
-objectClass: olcSchemaConfig
-cn: ppolicy
-olcAttributeTypes: {0}( 1.3.6.1.4.1.42.2.27.8.1.1 NAME 'pwdAttribute' EQUALITY
-  objectIdentifierMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
-olcAttributeTypes: {1}( 1.3.6.1.4.1.42.2.27.8.1.2 NAME 'pwdMinAge' EQUALITY in
- tegerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE )
-olcAttributeTypes: {2}( 1.3.6.1.4.1.42.2.27.8.1.3 NAME 'pwdMaxAge' EQUALITY in
- tegerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-  SINGLE-VALUE )
-olcAttributeTypes: {3}( 1.3.6.1.4.1.42.2.27.8.1.4 NAME 'pwdInHistory' EQUALITY
-  integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1
- .27 SINGLE-VALUE )
-olcAttributeTypes: {4}( 1.3.6.1.4.1.42.2.27.8.1.5 NAME 'pwdCheckQuality' EQUAL
- ITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.12
- 1.1.27 SINGLE-VALUE )
-olcAttributeTypes: {5}( 1.3.6.1.4.1.42.2.27.8.1.6 NAME 'pwdMinLength' EQUALITY
-  integerMatch ORDERING integerOrderingMatch  SYNTAX 1.3.6.1.4.1.1466.115.121.
- 1.27 SINGLE-VALUE )
-olcAttributeTypes: {6}( 1.3.6.1.4.1.42.2.27.8.1.7 NAME 'pwdExpireWarning' EQUA
- LITY integerMatch ORDERING integerOrderingMatch  SYNTAX 1.3.6.1.4.1.1466.115.
- 121.1.27 SINGLE-VALUE )
-olcAttributeTypes: {7}( 1.3.6.1.4.1.42.2.27.8.1.8 NAME 'pwdGraceAuthNLimit' EQ
- UALITY integerMatch ORDERING integerOrderingMatch  SYNTAX 1.3.6.1.4.1.1466.11
- 5.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: {8}( 1.3.6.1.4.1.42.2.27.8.1.9 NAME 'pwdLockout' EQUALITY b
- ooleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {9}( 1.3.6.1.4.1.42.2.27.8.1.10 NAME 'pwdLockoutDuration' E
- QUALITY integerMatch ORDERING integerOrderingMatch  SYNTAX 1.3.6.1.4.1.1466.1
- 15.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: {10}( 1.3.6.1.4.1.42.2.27.8.1.11 NAME 'pwdMaxFailure' EQUAL
- ITY integerMatch ORDERING integerOrderingMatch  SYNTAX 1.3.6.1.4.1.1466.115.1
- 21.1.27 SINGLE-VALUE )
-olcAttributeTypes: {11}( 1.3.6.1.4.1.42.2.27.8.1.12 NAME 'pwdFailureCountInter
- val' EQUALITY integerMatch ORDERING integerOrderingMatch  SYNTAX 1.3.6.1.4.1.
- 1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: {12}( 1.3.6.1.4.1.42.2.27.8.1.13 NAME 'pwdMustChange' EQUAL
- ITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {13}( 1.3.6.1.4.1.42.2.27.8.1.14 NAME 'pwdAllowUserChange' 
- EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {14}( 1.3.6.1.4.1.42.2.27.8.1.15 NAME 'pwdSafeModify' EQUAL
- ITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {15}( 1.3.6.1.4.1.4754.1.99.1 NAME 'pwdCheckModule' DESC 'L
- oadable module that instantiates "check_password() function' EQUALITY caseExa
- ctIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-olcObjectClasses: {0}( 1.3.6.1.4.1.4754.2.99.1 NAME 'pwdPolicyChecker' SUP top
-  AUXILIARY MAY pwdCheckModule )
-olcObjectClasses: {1}( 1.3.6.1.4.1.42.2.27.8.2.1 NAME 'pwdPolicy' SUP top AUXI
- LIARY MUST pwdAttribute MAY ( pwdMinAge $ pwdMaxAge $ pwdInHistory $ pwdCheck
- Quality $ pwdMinLength $ pwdExpireWarning $ pwdGraceAuthNLimit $ pwdLockout $
-  pwdLockoutDuration $ pwdMaxFailure $ pwdFailureCountInterval $ pwdMustChange
-  $ pwdAllowUserChange $ pwdSafeModify ) )
diff --git a/ldap/data/ldap_conf/schema/ppolicy.schema b/ldap/data/ldap_conf/schema/ppolicy.schema
deleted file mode 100644
index 8720a22..0000000
--- a/ldap/data/ldap_conf/schema/ppolicy.schema
+++ /dev/null
@@ -1,159 +0,0 @@
-# $OpenLDAP: pkg/ldap/servers/slapd/schema/ppolicy.schema,v 1.2.2.4 2007/01/02 21:44:09 kurt Exp $
-## This work is part of OpenLDAP Software <http://www.openldap.org/>.
-##
-## Copyright 2004-2007 The OpenLDAP Foundation.
-## All rights reserved.
-##
-## Redistribution and use in source and binary forms, with or without
-## modification, are permitted only as authorized by the OpenLDAP
-## Public License.
-##
-## A copy of this license is available in the file LICENSE in the
-## top-level directory of the distribution or, alternatively, at
-## <http://www.OpenLDAP.org/license.html>.
-#
-## Portions Copyright (C) The Internet Society (2004).
-## Please see full copyright statement below.
-
-# Definitions from Draft behera-ldap-password-policy-07 (a work in progress)
-#	Password Policy for LDAP Directories
-# With extensions from Hewlett-Packard:
-#	pwdCheckModule etc.
-
-# Contents of this file are subject to change (including deletion)
-# without notice.
-#
-# Not recommended for production use!
-# Use with extreme caution!
-
-# The version of this file as distributed by the OpenLDAP Foundation
-# contains text from an IETF Internet-Draft explaining the schema.
-# Unfortunately, that text is covered by a license that doesn't meet
-# Debian's Free Software Guidelines.  This is a stripped version of the
-# schema that contains only the functional schema definition, not the text
-# of the Internet-Draft.
-#
-# For an explanation of this schema, see
-# draft-behera-ldap-password-policy-08.txt.
-
-attributetype ( 1.3.6.1.4.1.42.2.27.8.1.1
-      NAME 'pwdAttribute'
-      EQUALITY objectIdentifierMatch
-      SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.8.1.2
-      NAME 'pwdMinAge'
-      EQUALITY integerMatch
-      ORDERING integerOrderingMatch
-      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-      SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.8.1.3
-      NAME 'pwdMaxAge'
-      EQUALITY integerMatch
-      ORDERING integerOrderingMatch
-      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-      SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.8.1.4
-      NAME 'pwdInHistory'
-      EQUALITY integerMatch
-      ORDERING integerOrderingMatch
-      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-      SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.8.1.5
-      NAME 'pwdCheckQuality'
-      EQUALITY integerMatch
-      ORDERING integerOrderingMatch
-      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-      SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.8.1.6
-      NAME 'pwdMinLength'
-      EQUALITY integerMatch
-      ORDERING integerOrderingMatch
-      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-      SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.8.1.7
-      NAME 'pwdExpireWarning'
-      EQUALITY integerMatch
-      ORDERING integerOrderingMatch
-      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-      SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.8.1.8
-      NAME 'pwdGraceAuthNLimit'
-      EQUALITY integerMatch
-      ORDERING integerOrderingMatch
-      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-      SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.8.1.9
-      NAME 'pwdLockout'
-      EQUALITY booleanMatch
-      SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-      SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.8.1.10
-      NAME 'pwdLockoutDuration'
-      EQUALITY integerMatch
-      ORDERING integerOrderingMatch
-      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-      SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.8.1.11
-      NAME 'pwdMaxFailure'
-      EQUALITY integerMatch
-      ORDERING integerOrderingMatch
-      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-      SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.8.1.12
-      NAME 'pwdFailureCountInterval'
-      EQUALITY integerMatch
-      ORDERING integerOrderingMatch
-      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-      SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.8.1.13
-      NAME 'pwdMustChange'
-      EQUALITY booleanMatch
-      SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-      SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.8.1.14
-      NAME 'pwdAllowUserChange'
-      EQUALITY booleanMatch
-      SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-      SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.42.2.27.8.1.15
-      NAME 'pwdSafeModify'
-      EQUALITY booleanMatch
-      SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-      SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.4754.1.99.1
-     NAME 'pwdCheckModule'
-     EQUALITY caseExactIA5Match
-     SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-     DESC 'Loadable module that instantiates "check_password() function'
-     SINGLE-VALUE )
-
-objectclass ( 1.3.6.1.4.1.4754.2.99.1
-      NAME 'pwdPolicyChecker'
-      SUP top
-      AUXILIARY
-      MAY ( pwdCheckModule ) )
-
-objectclass ( 1.3.6.1.4.1.42.2.27.8.2.1
-      NAME 'pwdPolicy'
-      SUP top
-      AUXILIARY
-      MUST ( pwdAttribute )
-      MAY ( pwdMinAge $ pwdMaxAge $ pwdInHistory $ pwdCheckQuality $
-      pwdMinLength $ pwdExpireWarning $ pwdGraceAuthNLimit $ pwdLockout
-      $ pwdLockoutDuration $ pwdMaxFailure $ pwdFailureCountInterval $
-      pwdMustChange $ pwdAllowUserChange $ pwdSafeModify ) )
diff --git a/ldap/data/ldap_conf/slapd.d/cn=config.ldif b/ldap/data/ldap_conf/slapd.d/cn=config.ldif
deleted file mode 100644
index 7bd72ac..0000000
--- a/ldap/data/ldap_conf/slapd.d/cn=config.ldif
+++ /dev/null
@@ -1,16 +0,0 @@
-# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
-# CRC32 b5bf1103
-dn: cn=config
-objectClass: olcGlobal
-cn: config
-olcArgsFile: /var/run/slapd/slapd.args
-olcLogLevel: none
-olcPidFile: /var/run/slapd/slapd.pid
-olcToolThreads: 1
-structuralObjectClass: olcGlobal
-entryUUID: 352fd2c6-4b40-1035-97eb-87e18fb4723c
-creatorsName: cn=config
-createTimestamp: 20160109171438Z
-entryCSN: 20160109171438.298036Z#000000#000#000000
-modifiersName: cn=config
-modifyTimestamp: 20160109171438Z
diff --git a/ldap/data/ldap_conf/slapd.d/cn=config/cn=module{0}.ldif b/ldap/data/ldap_conf/slapd.d/cn=config/cn=module{0}.ldif
deleted file mode 100644
index d21f950..0000000
--- a/ldap/data/ldap_conf/slapd.d/cn=config/cn=module{0}.ldif
+++ /dev/null
@@ -1,14 +0,0 @@
-# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
-# CRC32 00e54b7f
-dn: cn=module{0}
-objectClass: olcModuleList
-cn: module{0}
-olcModulePath: /usr/lib/ldap
-olcModuleLoad: {0}back_mdb
-structuralObjectClass: olcModuleList
-entryUUID: 35309bde-4b40-1035-97f3-87e18fb4723c
-creatorsName: cn=admin,cn=config
-createTimestamp: 20160109171438Z
-entryCSN: 20160109171438.303274Z#000000#000#000000
-modifiersName: cn=admin,cn=config
-modifyTimestamp: 20160109171438Z
diff --git a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema.ldif b/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema.ldif
deleted file mode 100644
index 4b2091b..0000000
--- a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema.ldif
+++ /dev/null
@@ -1,12 +0,0 @@
-# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
-# CRC32 cd0f551e
-dn: cn=schema
-objectClass: olcSchemaConfig
-cn: schema
-structuralObjectClass: olcSchemaConfig
-entryUUID: 352feeaa-4b40-1035-97ee-87e18fb4723c
-creatorsName: cn=admin,cn=config
-createTimestamp: 20160109171438Z
-entryCSN: 20160109171438.298859Z#000000#000#000000
-modifiersName: cn=admin,cn=config
-modifyTimestamp: 20160109171438Z
diff --git a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={0}core.ldif b/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={0}core.ldif
deleted file mode 100644
index ce134d8..0000000
--- a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={0}core.ldif
+++ /dev/null
@@ -1,249 +0,0 @@
-# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
-# CRC32 e10062b8
-dn: cn={0}core
-objectClass: olcSchemaConfig
-cn: {0}core
-olcAttributeTypes: {0}( 2.5.4.2 NAME 'knowledgeInformation' DESC 'RFC2256: k
- nowledge information' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.
- 121.1.15{32768} )
-olcAttributeTypes: {1}( 2.5.4.4 NAME ( 'sn' 'surname' ) DESC 'RFC2256: last 
- (family) name(s) for which the entity is known by' SUP name )
-olcAttributeTypes: {2}( 2.5.4.5 NAME 'serialNumber' DESC 'RFC2256: serial nu
- mber of the entity' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMat
- ch SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{64} )
-olcAttributeTypes: {3}( 2.5.4.6 NAME ( 'c' 'countryName' ) DESC 'RFC4519: tw
- o-letter ISO-3166 country code' SUP name SYNTAX 1.3.6.1.4.1.1466.115.121.1.
- 11 SINGLE-VALUE )
-olcAttributeTypes: {4}( 2.5.4.7 NAME ( 'l' 'localityName' ) DESC 'RFC2256: l
- ocality which this object resides in' SUP name )
-olcAttributeTypes: {5}( 2.5.4.8 NAME ( 'st' 'stateOrProvinceName' ) DESC 'RF
- C2256: state or province which this object resides in' SUP name )
-olcAttributeTypes: {6}( 2.5.4.9 NAME ( 'street' 'streetAddress' ) DESC 'RFC2
- 256: street address of this object' EQUALITY caseIgnoreMatch SUBSTR caseIgn
- oreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
-olcAttributeTypes: {7}( 2.5.4.10 NAME ( 'o' 'organizationName' ) DESC 'RFC22
- 56: organization this object belongs to' SUP name )
-olcAttributeTypes: {8}( 2.5.4.11 NAME ( 'ou' 'organizationalUnitName' ) DESC
-  'RFC2256: organizational unit this object belongs to' SUP name )
-olcAttributeTypes: {9}( 2.5.4.12 NAME 'title' DESC 'RFC2256: title associate
- d with the entity' SUP name )
-olcAttributeTypes: {10}( 2.5.4.14 NAME 'searchGuide' DESC 'RFC2256: search g
- uide, deprecated by enhancedSearchGuide' SYNTAX 1.3.6.1.4.1.1466.115.121.1.
- 25 )
-olcAttributeTypes: {11}( 2.5.4.15 NAME 'businessCategory' DESC 'RFC2256: bus
- iness category' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch S
- YNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
-olcAttributeTypes: {12}( 2.5.4.16 NAME 'postalAddress' DESC 'RFC2256: postal
-  address' EQUALITY caseIgnoreListMatch SUBSTR caseIgnoreListSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
-olcAttributeTypes: {13}( 2.5.4.17 NAME 'postalCode' DESC 'RFC2256: postal co
- de' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.
- 1.4.1.1466.115.121.1.15{40} )
-olcAttributeTypes: {14}( 2.5.4.18 NAME 'postOfficeBox' DESC 'RFC2256: Post O
- ffice Box' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
-  1.3.6.1.4.1.1466.115.121.1.15{40} )
-olcAttributeTypes: {15}( 2.5.4.19 NAME 'physicalDeliveryOfficeName' DESC 'RF
- C2256: Physical Delivery Office Name' EQUALITY caseIgnoreMatch SUBSTR caseI
- gnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
-olcAttributeTypes: {16}( 2.5.4.20 NAME 'telephoneNumber' DESC 'RFC2256: Tele
- phone Number' EQUALITY telephoneNumberMatch SUBSTR telephoneNumberSubstring
- sMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.50{32} )
-olcAttributeTypes: {17}( 2.5.4.21 NAME 'telexNumber' DESC 'RFC2256: Telex Nu
- mber' SYNTAX 1.3.6.1.4.1.1466.115.121.1.52 )
-olcAttributeTypes: {18}( 2.5.4.22 NAME 'teletexTerminalIdentifier' DESC 'RFC
- 2256: Teletex Terminal Identifier' SYNTAX 1.3.6.1.4.1.1466.115.121.1.51 )
-olcAttributeTypes: {19}( 2.5.4.23 NAME ( 'facsimileTelephoneNumber' 'fax' ) 
- DESC 'RFC2256: Facsimile (Fax) Telephone Number' SYNTAX 1.3.6.1.4.1.1466.11
- 5.121.1.22 )
-olcAttributeTypes: {20}( 2.5.4.24 NAME 'x121Address' DESC 'RFC2256: X.121 Ad
- dress' EQUALITY numericStringMatch SUBSTR numericStringSubstringsMatch SYNT
- AX 1.3.6.1.4.1.1466.115.121.1.36{15} )
-olcAttributeTypes: {21}( 2.5.4.25 NAME 'internationaliSDNNumber' DESC 'RFC22
- 56: international ISDN number' EQUALITY numericStringMatch SUBSTR numericSt
- ringSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{16} )
-olcAttributeTypes: {22}( 2.5.4.26 NAME 'registeredAddress' DESC 'RFC2256: re
- gistered postal address' SUP postalAddress SYNTAX 1.3.6.1.4.1.1466.115.121.
- 1.41 )
-olcAttributeTypes: {23}( 2.5.4.27 NAME 'destinationIndicator' DESC 'RFC2256:
-  destination indicator' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstring
- sMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{128} )
-olcAttributeTypes: {24}( 2.5.4.28 NAME 'preferredDeliveryMethod' DESC 'RFC22
- 56: preferred delivery method' SYNTAX 1.3.6.1.4.1.1466.115.121.1.14 SINGLE-
- VALUE )
-olcAttributeTypes: {25}( 2.5.4.29 NAME 'presentationAddress' DESC 'RFC2256: 
- presentation address' EQUALITY presentationAddressMatch SYNTAX 1.3.6.1.4.1.
- 1466.115.121.1.43 SINGLE-VALUE )
-olcAttributeTypes: {26}( 2.5.4.30 NAME 'supportedApplicationContext' DESC 'R
- FC2256: supported application context' EQUALITY objectIdentifierMatch SYNTA
- X 1.3.6.1.4.1.1466.115.121.1.38 )
-olcAttributeTypes: {27}( 2.5.4.31 NAME 'member' DESC 'RFC2256: member of a g
- roup' SUP distinguishedName )
-olcAttributeTypes: {28}( 2.5.4.32 NAME 'owner' DESC 'RFC2256: owner (of the 
- object)' SUP distinguishedName )
-olcAttributeTypes: {29}( 2.5.4.33 NAME 'roleOccupant' DESC 'RFC2256: occupan
- t of role' SUP distinguishedName )
-olcAttributeTypes: {30}( 2.5.4.36 NAME 'userCertificate' DESC 'RFC2256: X.50
- 9 user certificate, use ;binary' EQUALITY certificateExactMatch SYNTAX 1.3.
- 6.1.4.1.1466.115.121.1.8 )
-olcAttributeTypes: {31}( 2.5.4.37 NAME 'cACertificate' DESC 'RFC2256: X.509 
- CA certificate, use ;binary' EQUALITY certificateExactMatch SYNTAX 1.3.6.1.
- 4.1.1466.115.121.1.8 )
-olcAttributeTypes: {32}( 2.5.4.38 NAME 'authorityRevocationList' DESC 'RFC22
- 56: X.509 authority revocation list, use ;binary' SYNTAX 1.3.6.1.4.1.1466.1
- 15.121.1.9 )
-olcAttributeTypes: {33}( 2.5.4.39 NAME 'certificateRevocationList' DESC 'RFC
- 2256: X.509 certificate revocation list, use ;binary' SYNTAX 1.3.6.1.4.1.14
- 66.115.121.1.9 )
-olcAttributeTypes: {34}( 2.5.4.40 NAME 'crossCertificatePair' DESC 'RFC2256:
-  X.509 cross certificate pair, use ;binary' SYNTAX 1.3.6.1.4.1.1466.115.121
- .1.10 )
-olcAttributeTypes: {35}( 2.5.4.42 NAME ( 'givenName' 'gn' ) DESC 'RFC2256: f
- irst name(s) for which the entity is known by' SUP name )
-olcAttributeTypes: {36}( 2.5.4.43 NAME 'initials' DESC 'RFC2256: initials of
-  some or all of names, but not the surname(s).' SUP name )
-olcAttributeTypes: {37}( 2.5.4.44 NAME 'generationQualifier' DESC 'RFC2256: 
- name qualifier indicating a generation' SUP name )
-olcAttributeTypes: {38}( 2.5.4.45 NAME 'x500UniqueIdentifier' DESC 'RFC2256:
-  X.500 unique identifier' EQUALITY bitStringMatch SYNTAX 1.3.6.1.4.1.1466.1
- 15.121.1.6 )
-olcAttributeTypes: {39}( 2.5.4.46 NAME 'dnQualifier' DESC 'RFC2256: DN quali
- fier' EQUALITY caseIgnoreMatch ORDERING caseIgnoreOrderingMatch SUBSTR case
- IgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 )
-olcAttributeTypes: {40}( 2.5.4.47 NAME 'enhancedSearchGuide' DESC 'RFC2256: 
- enhanced search guide' SYNTAX 1.3.6.1.4.1.1466.115.121.1.21 )
-olcAttributeTypes: {41}( 2.5.4.48 NAME 'protocolInformation' DESC 'RFC2256: 
- protocol information' EQUALITY protocolInformationMatch SYNTAX 1.3.6.1.4.1.
- 1466.115.121.1.42 )
-olcAttributeTypes: {42}( 2.5.4.50 NAME 'uniqueMember' DESC 'RFC2256: unique 
- member of a group' EQUALITY uniqueMemberMatch SYNTAX 1.3.6.1.4.1.1466.115.1
- 21.1.34 )
-olcAttributeTypes: {43}( 2.5.4.51 NAME 'houseIdentifier' DESC 'RFC2256: hous
- e identifier' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYN
- TAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
-olcAttributeTypes: {44}( 2.5.4.52 NAME 'supportedAlgorithms' DESC 'RFC2256: 
- supported algorithms' SYNTAX 1.3.6.1.4.1.1466.115.121.1.49 )
-olcAttributeTypes: {45}( 2.5.4.53 NAME 'deltaRevocationList' DESC 'RFC2256: 
- delta revocation list; use ;binary' SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
-olcAttributeTypes: {46}( 2.5.4.54 NAME 'dmdName' DESC 'RFC2256: name of DMD'
-  SUP name )
-olcAttributeTypes: {47}( 2.5.4.65 NAME 'pseudonym' DESC 'X.520(4th): pseudon
- ym for the object' SUP name )
-olcAttributeTypes: {48}( 0.9.2342.19200300.100.1.3 NAME ( 'mail' 'rfc822Mail
- box' ) DESC 'RFC1274: RFC822 Mailbox'   EQUALITY caseIgnoreIA5Match   SUBST
- R caseIgnoreIA5SubstringsMatch   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} 
- )
-olcAttributeTypes: {49}( 0.9.2342.19200300.100.1.25 NAME ( 'dc' 'domainCompo
- nent' ) DESC 'RFC1274/2247: domain component' EQUALITY caseIgnoreIA5Match S
- UBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SIN
- GLE-VALUE )
-olcAttributeTypes: {50}( 0.9.2342.19200300.100.1.37 NAME 'associatedDomain' 
- DESC 'RFC1274: domain associated with object' EQUALITY caseIgnoreIA5Match S
- UBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: {51}( 1.2.840.113549.1.9.1 NAME ( 'email' 'emailAddress' 
- 'pkcs9email' ) DESC 'RFC3280: legacy attribute for email addresses in DNs' 
- EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.
- 6.1.4.1.1466.115.121.1.26{128} )
-olcObjectClasses: {0}( 2.5.6.2 NAME 'country' DESC 'RFC2256: a country' SUP 
- top STRUCTURAL MUST c MAY ( searchGuide $ description ) )
-olcObjectClasses: {1}( 2.5.6.3 NAME 'locality' DESC 'RFC2256: a locality' SU
- P top STRUCTURAL MAY ( street $ seeAlso $ searchGuide $ st $ l $ descriptio
- n ) )
-olcObjectClasses: {2}( 2.5.6.4 NAME 'organization' DESC 'RFC2256: an organiz
- ation' SUP top STRUCTURAL MUST o MAY ( userPassword $ searchGuide $ seeAlso
-  $ businessCategory $ x121Address $ registeredAddress $ destinationIndicato
- r $ preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ tel
- ephoneNumber $ internationaliSDNNumber $  facsimileTelephoneNumber $ street
-  $ postOfficeBox $ postalCode $ postalAddress $ physicalDeliveryOfficeName 
- $ st $ l $ description ) )
-olcObjectClasses: {3}( 2.5.6.5 NAME 'organizationalUnit' DESC 'RFC2256: an o
- rganizational unit' SUP top STRUCTURAL MUST ou MAY ( userPassword $ searchG
- uide $ seeAlso $ businessCategory $ x121Address $ registeredAddress $ desti
- nationIndicator $ preferredDeliveryMethod $ telexNumber $ teletexTerminalId
- entifier $ telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNu
- mber $ street $ postOfficeBox $ postalCode $ postalAddress $ physicalDelive
- ryOfficeName $ st $ l $ description ) )
-olcObjectClasses: {4}( 2.5.6.6 NAME 'person' DESC 'RFC2256: a person' SUP to
- p STRUCTURAL MUST ( sn $ cn ) MAY ( userPassword $ telephoneNumber $ seeAls
- o $ description ) )
-olcObjectClasses: {5}( 2.5.6.7 NAME 'organizationalPerson' DESC 'RFC2256: an
-  organizational person' SUP person STRUCTURAL MAY ( title $ x121Address $ r
- egisteredAddress $ destinationIndicator $ preferredDeliveryMethod $ telexNu
- mber $ teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumbe
- r $  facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $ posta
- lAddress $ physicalDeliveryOfficeName $ ou $ st $ l ) )
-olcObjectClasses: {6}( 2.5.6.8 NAME 'organizationalRole' DESC 'RFC2256: an o
- rganizational role' SUP top STRUCTURAL MUST cn MAY ( x121Address $ register
- edAddress $ destinationIndicator $ preferredDeliveryMethod $ telexNumber $ 
- teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumber $ fac
- simileTelephoneNumber $ seeAlso $ roleOccupant $ preferredDeliveryMethod $ 
- street $ postOfficeBox $ postalCode $ postalAddress $ physicalDeliveryOffic
- eName $ ou $ st $ l $ description ) )
-olcObjectClasses: {7}( 2.5.6.9 NAME 'groupOfNames' DESC 'RFC2256: a group of
-  names (DNs)' SUP top STRUCTURAL MUST ( member $ cn ) MAY ( businessCategor
- y $ seeAlso $ owner $ ou $ o $ description ) )
-olcObjectClasses: {8}( 2.5.6.10 NAME 'residentialPerson' DESC 'RFC2256: an r
- esidential person' SUP person STRUCTURAL MUST l MAY ( businessCategory $ x1
- 21Address $ registeredAddress $ destinationIndicator $ preferredDeliveryMet
- hod $ telexNumber $ teletexTerminalIdentifier $ telephoneNumber $ internati
- onaliSDNNumber $ facsimileTelephoneNumber $ preferredDeliveryMethod $ stree
- t $ postOfficeBox $ postalCode $ postalAddress $ physicalDeliveryOfficeName
-  $ st $ l ) )
-olcObjectClasses: {9}( 2.5.6.11 NAME 'applicationProcess' DESC 'RFC2256: an 
- application process' SUP top STRUCTURAL MUST cn MAY ( seeAlso $ ou $ l $ de
- scription ) )
-olcObjectClasses: {10}( 2.5.6.12 NAME 'applicationEntity' DESC 'RFC2256: an 
- application entity' SUP top STRUCTURAL MUST ( presentationAddress $ cn ) MA
- Y ( supportedApplicationContext $ seeAlso $ ou $ o $ l $ description ) )
-olcObjectClasses: {11}( 2.5.6.13 NAME 'dSA' DESC 'RFC2256: a directory syste
- m agent (a server)' SUP applicationEntity STRUCTURAL MAY knowledgeInformati
- on )
-olcObjectClasses: {12}( 2.5.6.14 NAME 'device' DESC 'RFC2256: a device' SUP 
- top STRUCTURAL MUST cn MAY ( serialNumber $ seeAlso $ owner $ ou $ o $ l $ 
- description ) )
-olcObjectClasses: {13}( 2.5.6.15 NAME 'strongAuthenticationUser' DESC 'RFC22
- 56: a strong authentication user' SUP top AUXILIARY MUST userCertificate )
-olcObjectClasses: {14}( 2.5.6.16 NAME 'certificationAuthority' DESC 'RFC2256
- : a certificate authority' SUP top AUXILIARY MUST ( authorityRevocationList
-  $ certificateRevocationList $ cACertificate ) MAY crossCertificatePair )
-olcObjectClasses: {15}( 2.5.6.17 NAME 'groupOfUniqueNames' DESC 'RFC2256: a 
- group of unique names (DN and Unique Identifier)' SUP top STRUCTURAL MUST (
-  uniqueMember $ cn ) MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ de
- scription ) )
-olcObjectClasses: {16}( 2.5.6.18 NAME 'userSecurityInformation' DESC 'RFC225
- 6: a user security information' SUP top AUXILIARY MAY ( supportedAlgorithms
-  ) )
-olcObjectClasses: {17}( 2.5.6.16.2 NAME 'certificationAuthority-V2' SUP cert
- ificationAuthority AUXILIARY MAY ( deltaRevocationList ) )
-olcObjectClasses: {18}( 2.5.6.19 NAME 'cRLDistributionPoint' SUP top STRUCTU
- RAL MUST ( cn ) MAY ( certificateRevocationList $ authorityRevocationList $
-  deltaRevocationList ) )
-olcObjectClasses: {19}( 2.5.6.20 NAME 'dmd' SUP top STRUCTURAL MUST ( dmdNam
- e ) MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $ x121Add
- ress $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod $
-  telexNumber $ teletexTerminalIdentifier $ telephoneNumber $ internationali
- SDNNumber $ facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode 
- $ postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) )
-olcObjectClasses: {20}( 2.5.6.21 NAME 'pkiUser' DESC 'RFC2587: a PKI user' S
- UP top AUXILIARY MAY userCertificate )
-olcObjectClasses: {21}( 2.5.6.22 NAME 'pkiCA' DESC 'RFC2587: PKI certificate
-  authority' SUP top AUXILIARY MAY ( authorityRevocationList $ certificateRe
- vocationList $ cACertificate $ crossCertificatePair ) )
-olcObjectClasses: {22}( 2.5.6.23 NAME 'deltaCRL' DESC 'RFC2587: PKI user' SU
- P top AUXILIARY MAY deltaRevocationList )
-olcObjectClasses: {23}( 1.3.6.1.4.1.250.3.15 NAME 'labeledURIObject' DESC 'R
- FC2079: object that contains the URI attribute type' MAY ( labeledURI ) SUP
-  top AUXILIARY )
-olcObjectClasses: {24}( 0.9.2342.19200300.100.4.19 NAME 'simpleSecurityObjec
- t' DESC 'RFC1274: simple security object' SUP top AUXILIARY MUST userPasswo
- rd )
-olcObjectClasses: {25}( 1.3.6.1.4.1.1466.344 NAME 'dcObject' DESC 'RFC2247: 
- domain component object' SUP top AUXILIARY MUST dc )
-olcObjectClasses: {26}( 1.3.6.1.1.3.1 NAME 'uidObject' DESC 'RFC2377: uid ob
- ject' SUP top AUXILIARY MUST uid )
-structuralObjectClass: olcSchemaConfig
-entryUUID: 352ff0d0-4b40-1035-97ef-87e18fb4723c
-creatorsName: cn=admin,cn=config
-createTimestamp: 20160109171438Z
-entryCSN: 20160109171438.298896Z#000000#000#000000
-modifiersName: cn=admin,cn=config
-modifyTimestamp: 20160109171438Z
diff --git a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={1}cosine.ldif b/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={1}cosine.ldif
deleted file mode 100644
index c3606cb..0000000
--- a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={1}cosine.ldif
+++ /dev/null
@@ -1,178 +0,0 @@
-# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
-# CRC32 8d28ab18
-dn: cn={1}cosine
-objectClass: olcSchemaConfig
-cn: {1}cosine
-olcAttributeTypes: {0}( 0.9.2342.19200300.100.1.2 NAME 'textEncodedORAddress
- ' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.
- 4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: {1}( 0.9.2342.19200300.100.1.4 NAME 'info' DESC 'RFC1274:
-  general information' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsM
- atch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{2048} )
-olcAttributeTypes: {2}( 0.9.2342.19200300.100.1.5 NAME ( 'drink' 'favouriteD
- rink' ) DESC 'RFC1274: favorite drink' EQUALITY caseIgnoreMatch SUBSTR case
- IgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: {3}( 0.9.2342.19200300.100.1.6 NAME 'roomNumber' DESC 'RF
- C1274: room number' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMat
- ch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: {4}( 0.9.2342.19200300.100.1.7 NAME 'photo' DESC 'RFC1274
- : photo (G3 fax)' SYNTAX 1.3.6.1.4.1.1466.115.121.1.23{25000} )
-olcAttributeTypes: {5}( 0.9.2342.19200300.100.1.8 NAME 'userClass' DESC 'RFC
- 1274: category of user' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstring
- sMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: {6}( 0.9.2342.19200300.100.1.9 NAME 'host' DESC 'RFC1274:
-  host computer' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch S
- YNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: {7}( 0.9.2342.19200300.100.1.10 NAME 'manager' DESC 'RFC1
- 274: DN of manager' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466
- .115.121.1.12 )
-olcAttributeTypes: {8}( 0.9.2342.19200300.100.1.11 NAME 'documentIdentifier'
-  DESC 'RFC1274: unique identifier of document' EQUALITY caseIgnoreMatch SUB
- STR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: {9}( 0.9.2342.19200300.100.1.12 NAME 'documentTitle' DESC
-  'RFC1274: title of document' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSub
- stringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: {10}( 0.9.2342.19200300.100.1.13 NAME 'documentVersion' D
- ESC 'RFC1274: version of document' EQUALITY caseIgnoreMatch SUBSTR caseIgno
- reSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: {11}( 0.9.2342.19200300.100.1.14 NAME 'documentAuthor' DE
- SC 'RFC1274: DN of author of document' EQUALITY distinguishedNameMatch SYNT
- AX 1.3.6.1.4.1.1466.115.121.1.12 )
-olcAttributeTypes: {12}( 0.9.2342.19200300.100.1.15 NAME 'documentLocation' 
- DESC 'RFC1274: location of document original' EQUALITY caseIgnoreMatch SUBS
- TR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: {13}( 0.9.2342.19200300.100.1.20 NAME ( 'homePhone' 'home
- TelephoneNumber' ) DESC 'RFC1274: home telephone number' EQUALITY telephone
- NumberMatch SUBSTR telephoneNumberSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.1
- 15.121.1.50 )
-olcAttributeTypes: {14}( 0.9.2342.19200300.100.1.21 NAME 'secretary' DESC 'R
- FC1274: DN of secretary' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1
- .1466.115.121.1.12 )
-olcAttributeTypes: {15}( 0.9.2342.19200300.100.1.22 NAME 'otherMailbox' SYNT
- AX 1.3.6.1.4.1.1466.115.121.1.39 )
-olcAttributeTypes: {16}( 0.9.2342.19200300.100.1.26 NAME 'aRecord' EQUALITY 
- caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: {17}( 0.9.2342.19200300.100.1.27 NAME 'mDRecord' EQUALITY
-  caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: {18}( 0.9.2342.19200300.100.1.28 NAME 'mXRecord' EQUALITY
-  caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: {19}( 0.9.2342.19200300.100.1.29 NAME 'nSRecord' EQUALITY
-  caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: {20}( 0.9.2342.19200300.100.1.30 NAME 'sOARecord' EQUALIT
- Y caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: {21}( 0.9.2342.19200300.100.1.31 NAME 'cNAMERecord' EQUAL
- ITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: {22}( 0.9.2342.19200300.100.1.38 NAME 'associatedName' DE
- SC 'RFC1274: DN of entry associated with domain' EQUALITY distinguishedName
- Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-olcAttributeTypes: {23}( 0.9.2342.19200300.100.1.39 NAME 'homePostalAddress'
-  DESC 'RFC1274: home postal address' EQUALITY caseIgnoreListMatch SUBSTR ca
- seIgnoreListSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
-olcAttributeTypes: {24}( 0.9.2342.19200300.100.1.40 NAME 'personalTitle' DES
- C 'RFC1274: personal title' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubst
- ringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: {25}( 0.9.2342.19200300.100.1.41 NAME ( 'mobile' 'mobileT
- elephoneNumber' ) DESC 'RFC1274: mobile telephone number' EQUALITY telephon
- eNumberMatch SUBSTR telephoneNumberSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.
- 115.121.1.50 )
-olcAttributeTypes: {26}( 0.9.2342.19200300.100.1.42 NAME ( 'pager' 'pagerTel
- ephoneNumber' ) DESC 'RFC1274: pager telephone number' EQUALITY telephoneNu
- mberMatch SUBSTR telephoneNumberSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115
- .121.1.50 )
-olcAttributeTypes: {27}( 0.9.2342.19200300.100.1.43 NAME ( 'co' 'friendlyCou
- ntryName' ) DESC 'RFC1274: friendly country name' EQUALITY caseIgnoreMatch 
- SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-olcAttributeTypes: {28}( 0.9.2342.19200300.100.1.44 NAME 'uniqueIdentifier' 
- DESC 'RFC1274: unique identifer' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.
- 1.1466.115.121.1.15{256} )
-olcAttributeTypes: {29}( 0.9.2342.19200300.100.1.45 NAME 'organizationalStat
- us' DESC 'RFC1274: organizational status' EQUALITY caseIgnoreMatch SUBSTR c
- aseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: {30}( 0.9.2342.19200300.100.1.46 NAME 'janetMailbox' DESC
-  'RFC1274: Janet mailbox' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5S
- ubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-olcAttributeTypes: {31}( 0.9.2342.19200300.100.1.47 NAME 'mailPreferenceOpti
- on' DESC 'RFC1274: mail preference option' SYNTAX 1.3.6.1.4.1.1466.115.121.
- 1.27 )
-olcAttributeTypes: {32}( 0.9.2342.19200300.100.1.48 NAME 'buildingName' DESC
-  'RFC1274: name of building' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubs
- tringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-olcAttributeTypes: {33}( 0.9.2342.19200300.100.1.49 NAME 'dSAQuality' DESC '
- RFC1274: DSA Quality' SYNTAX 1.3.6.1.4.1.1466.115.121.1.19 SINGLE-VALUE )
-olcAttributeTypes: {34}( 0.9.2342.19200300.100.1.50 NAME 'singleLevelQuality
- ' DESC 'RFC1274: Single Level Quality' SYNTAX 1.3.6.1.4.1.1466.115.121.1.13
-  SINGLE-VALUE )
-olcAttributeTypes: {35}( 0.9.2342.19200300.100.1.51 NAME 'subtreeMinimumQual
- ity' DESC 'RFC1274: Subtree Mininum Quality' SYNTAX 1.3.6.1.4.1.1466.115.12
- 1.1.13 SINGLE-VALUE )
-olcAttributeTypes: {36}( 0.9.2342.19200300.100.1.52 NAME 'subtreeMaximumQual
- ity' DESC 'RFC1274: Subtree Maximun Quality' SYNTAX 1.3.6.1.4.1.1466.115.12
- 1.1.13 SINGLE-VALUE )
-olcAttributeTypes: {37}( 0.9.2342.19200300.100.1.53 NAME 'personalSignature'
-  DESC 'RFC1274: Personal Signature (G3 fax)' SYNTAX 1.3.6.1.4.1.1466.115.12
- 1.1.23 )
-olcAttributeTypes: {38}( 0.9.2342.19200300.100.1.54 NAME 'dITRedirect' DESC 
- 'RFC1274: DIT Redirect' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.
- 1466.115.121.1.12 )
-olcAttributeTypes: {39}( 0.9.2342.19200300.100.1.55 NAME 'audio' DESC 'RFC12
- 74: audio (u-law)' SYNTAX 1.3.6.1.4.1.1466.115.121.1.4{25000} )
-olcAttributeTypes: {40}( 0.9.2342.19200300.100.1.56 NAME 'documentPublisher'
-  DESC 'RFC1274: publisher of document' EQUALITY caseIgnoreMatch SUBSTR case
- IgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-olcObjectClasses: {0}( 0.9.2342.19200300.100.4.4 NAME ( 'pilotPerson' 'newPi
- lotPerson' ) SUP person STRUCTURAL MAY ( userid $ textEncodedORAddress $ rf
- c822Mailbox $ favouriteDrink $ roomNumber $ userClass $ homeTelephoneNumber
-  $ homePostalAddress $ secretary $ personalTitle $ preferredDeliveryMethod 
- $ businessCategory $ janetMailbox $ otherMailbox $ mobileTelephoneNumber $ 
- pagerTelephoneNumber $ organizationalStatus $ mailPreferenceOption $ person
- alSignature ) )
-olcObjectClasses: {1}( 0.9.2342.19200300.100.4.5 NAME 'account' SUP top STRU
- CTURAL MUST userid MAY ( description $ seeAlso $ localityName $ organizatio
- nName $ organizationalUnitName $ host ) )
-olcObjectClasses: {2}( 0.9.2342.19200300.100.4.6 NAME 'document' SUP top STR
- UCTURAL MUST documentIdentifier MAY ( commonName $ description $ seeAlso $ 
- localityName $ organizationName $ organizationalUnitName $ documentTitle $ 
- documentVersion $ documentAuthor $ documentLocation $ documentPublisher ) )
-olcObjectClasses: {3}( 0.9.2342.19200300.100.4.7 NAME 'room' SUP top STRUCTU
- RAL MUST commonName MAY ( roomNumber $ description $ seeAlso $ telephoneNum
- ber ) )
-olcObjectClasses: {4}( 0.9.2342.19200300.100.4.9 NAME 'documentSeries' SUP t
- op STRUCTURAL MUST commonName MAY ( description $ seeAlso $ telephonenumber
-  $ localityName $ organizationName $ organizationalUnitName ) )
-olcObjectClasses: {5}( 0.9.2342.19200300.100.4.13 NAME 'domain' SUP top STRU
- CTURAL MUST domainComponent MAY ( associatedName $ organizationName $ descr
- iption $ businessCategory $ seeAlso $ searchGuide $ userPassword $ locality
- Name $ stateOrProvinceName $ streetAddress $ physicalDeliveryOfficeName $ p
- ostalAddress $ postalCode $ postOfficeBox $ streetAddress $ facsimileTeleph
- oneNumber $ internationalISDNNumber $ telephoneNumber $ teletexTerminalIden
- tifier $ telexNumber $ preferredDeliveryMethod $ destinationIndicator $ reg
- isteredAddress $ x121Address ) )
-olcObjectClasses: {6}( 0.9.2342.19200300.100.4.14 NAME 'RFC822localPart' SUP
-  domain STRUCTURAL MAY ( commonName $ surname $ description $ seeAlso $ tel
- ephoneNumber $ physicalDeliveryOfficeName $ postalAddress $ postalCode $ po
- stOfficeBox $ streetAddress $ facsimileTelephoneNumber $ internationalISDNN
- umber $ telephoneNumber $ teletexTerminalIdentifier $ telexNumber $ preferr
- edDeliveryMethod $ destinationIndicator $ registeredAddress $ x121Address )
-  )
-olcObjectClasses: {7}( 0.9.2342.19200300.100.4.15 NAME 'dNSDomain' SUP domai
- n STRUCTURAL MAY ( ARecord $ MDRecord $ MXRecord $ NSRecord $ SOARecord $ C
- NAMERecord ) )
-olcObjectClasses: {8}( 0.9.2342.19200300.100.4.17 NAME 'domainRelatedObject'
-  DESC 'RFC1274: an object related to an domain' SUP top AUXILIARY MUST asso
- ciatedDomain )
-olcObjectClasses: {9}( 0.9.2342.19200300.100.4.18 NAME 'friendlyCountry' SUP
-  country STRUCTURAL MUST friendlyCountryName )
-olcObjectClasses: {10}( 0.9.2342.19200300.100.4.20 NAME 'pilotOrganization' 
- SUP ( organization $ organizationalUnit ) STRUCTURAL MAY buildingName )
-olcObjectClasses: {11}( 0.9.2342.19200300.100.4.21 NAME 'pilotDSA' SUP dsa S
- TRUCTURAL MAY dSAQuality )
-olcObjectClasses: {12}( 0.9.2342.19200300.100.4.22 NAME 'qualityLabelledData
- ' SUP top AUXILIARY MUST dsaQuality MAY ( subtreeMinimumQuality $ subtreeMa
- ximumQuality ) )
-structuralObjectClass: olcSchemaConfig
-entryUUID: 353020aa-4b40-1035-97f0-87e18fb4723c
-creatorsName: cn=admin,cn=config
-createTimestamp: 20160109171438Z
-entryCSN: 20160109171438.300120Z#000000#000#000000
-modifiersName: cn=admin,cn=config
-modifyTimestamp: 20160109171438Z
diff --git a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={2}nis.ldif b/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={2}nis.ldif
deleted file mode 100644
index 4d34aec..0000000
--- a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={2}nis.ldif
+++ /dev/null
@@ -1,108 +0,0 @@
-# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
-# CRC32 9e14530e
-dn: cn={2}nis
-objectClass: olcSchemaConfig
-cn: {2}nis
-olcAttributeTypes: {0}( 1.3.6.1.1.1.1.2 NAME 'gecos' DESC 'The GECOS field; 
- the common name' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5Substrings
- Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-olcAttributeTypes: {1}( 1.3.6.1.1.1.1.3 NAME 'homeDirectory' DESC 'The absol
- ute path to the home directory' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4
- .1.1466.115.121.1.26 SINGLE-VALUE )
-olcAttributeTypes: {2}( 1.3.6.1.1.1.1.4 NAME 'loginShell' DESC 'The path to 
- the login shell' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121
- .1.26 SINGLE-VALUE )
-olcAttributeTypes: {3}( 1.3.6.1.1.1.1.5 NAME 'shadowLastChange' EQUALITY int
- egerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: {4}( 1.3.6.1.1.1.1.6 NAME 'shadowMin' EQUALITY integerMat
- ch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: {5}( 1.3.6.1.1.1.1.7 NAME 'shadowMax' EQUALITY integerMat
- ch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: {6}( 1.3.6.1.1.1.1.8 NAME 'shadowWarning' EQUALITY intege
- rMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: {7}( 1.3.6.1.1.1.1.9 NAME 'shadowInactive' EQUALITY integ
- erMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: {8}( 1.3.6.1.1.1.1.10 NAME 'shadowExpire' EQUALITY intege
- rMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: {9}( 1.3.6.1.1.1.1.11 NAME 'shadowFlag' EQUALITY integerM
- atch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: {10}( 1.3.6.1.1.1.1.12 NAME 'memberUid' EQUALITY caseExac
- tIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.12
- 1.1.26 )
-olcAttributeTypes: {11}( 1.3.6.1.1.1.1.13 NAME 'memberNisNetgroup' EQUALITY 
- caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.146
- 6.115.121.1.26 )
-olcAttributeTypes: {12}( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple' DESC 'Net
- group triple' SYNTAX 1.3.6.1.1.1.0.0 )
-olcAttributeTypes: {13}( 1.3.6.1.1.1.1.15 NAME 'ipServicePort' EQUALITY inte
- gerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: {14}( 1.3.6.1.1.1.1.16 NAME 'ipServiceProtocol' SUP name 
- )
-olcAttributeTypes: {15}( 1.3.6.1.1.1.1.17 NAME 'ipProtocolNumber' EQUALITY i
- ntegerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: {16}( 1.3.6.1.1.1.1.18 NAME 'oncRpcNumber' EQUALITY integ
- erMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: {17}( 1.3.6.1.1.1.1.19 NAME 'ipHostNumber' DESC 'IP addre
- ss' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} )
-olcAttributeTypes: {18}( 1.3.6.1.1.1.1.20 NAME 'ipNetworkNumber' DESC 'IP ne
- twork' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128
- } SINGLE-VALUE )
-olcAttributeTypes: {19}( 1.3.6.1.1.1.1.21 NAME 'ipNetmaskNumber' DESC 'IP ne
- tmask' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128
- } SINGLE-VALUE )
-olcAttributeTypes: {20}( 1.3.6.1.1.1.1.22 NAME 'macAddress' DESC 'MAC addres
- s' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} )
-olcAttributeTypes: {21}( 1.3.6.1.1.1.1.23 NAME 'bootParameter' DESC 'rpc.boo
- tparamd parameter' SYNTAX 1.3.6.1.1.1.0.1 )
-olcAttributeTypes: {22}( 1.3.6.1.1.1.1.24 NAME 'bootFile' DESC 'Boot image n
- ame' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: {23}( 1.3.6.1.1.1.1.26 NAME 'nisMapName' SUP name )
-olcAttributeTypes: {24}( 1.3.6.1.1.1.1.27 NAME 'nisMapEntry' EQUALITY caseEx
- actIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.
- 121.1.26{1024} SINGLE-VALUE )
-olcObjectClasses: {0}( 1.3.6.1.1.1.2.0 NAME 'posixAccount' DESC 'Abstraction
-  of an account with POSIX attributes' SUP top AUXILIARY MUST ( cn $ uid $ u
- idNumber $ gidNumber $ homeDirectory ) MAY ( userPassword $ loginShell $ ge
- cos $ description ) )
-olcObjectClasses: {1}( 1.3.6.1.1.1.2.1 NAME 'shadowAccount' DESC 'Additional
-  attributes for shadow passwords' SUP top AUXILIARY MUST uid MAY ( userPass
- word $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowIna
- ctive $ shadowExpire $ shadowFlag $ description ) )
-olcObjectClasses: {2}( 1.3.6.1.1.1.2.2 NAME 'posixGroup' DESC 'Abstraction o
- f a group of accounts' SUP top STRUCTURAL MUST ( cn $ gidNumber ) MAY ( use
- rPassword $ memberUid $ description ) )
-olcObjectClasses: {3}( 1.3.6.1.1.1.2.3 NAME 'ipService' DESC 'Abstraction an
-  Internet Protocol service' SUP top STRUCTURAL MUST ( cn $ ipServicePort $ 
- ipServiceProtocol ) MAY description )
-olcObjectClasses: {4}( 1.3.6.1.1.1.2.4 NAME 'ipProtocol' DESC 'Abstraction o
- f an IP protocol' SUP top STRUCTURAL MUST ( cn $ ipProtocolNumber $ descrip
- tion ) MAY description )
-olcObjectClasses: {5}( 1.3.6.1.1.1.2.5 NAME 'oncRpc' DESC 'Abstraction of an
-  ONC/RPC binding' SUP top STRUCTURAL MUST ( cn $ oncRpcNumber $ description
-  ) MAY description )
-olcObjectClasses: {6}( 1.3.6.1.1.1.2.6 NAME 'ipHost' DESC 'Abstraction of a 
- host, an IP device' SUP top AUXILIARY MUST ( cn $ ipHostNumber ) MAY ( l $ 
- description $ manager ) )
-olcObjectClasses: {7}( 1.3.6.1.1.1.2.7 NAME 'ipNetwork' DESC 'Abstraction of
-  an IP network' SUP top STRUCTURAL MUST ( cn $ ipNetworkNumber ) MAY ( ipNe
- tmaskNumber $ l $ description $ manager ) )
-olcObjectClasses: {8}( 1.3.6.1.1.1.2.8 NAME 'nisNetgroup' DESC 'Abstraction 
- of a netgroup' SUP top STRUCTURAL MUST cn MAY ( nisNetgroupTriple $ memberN
- isNetgroup $ description ) )
-olcObjectClasses: {9}( 1.3.6.1.1.1.2.9 NAME 'nisMap' DESC 'A generic abstrac
- tion of a NIS map' SUP top STRUCTURAL MUST nisMapName MAY description )
-olcObjectClasses: {10}( 1.3.6.1.1.1.2.10 NAME 'nisObject' DESC 'An entry in 
- a NIS map' SUP top STRUCTURAL MUST ( cn $ nisMapEntry $ nisMapName ) MAY de
- scription )
-olcObjectClasses: {11}( 1.3.6.1.1.1.2.11 NAME 'ieee802Device' DESC 'A device
-  with a MAC address' SUP top AUXILIARY MAY macAddress )
-olcObjectClasses: {12}( 1.3.6.1.1.1.2.12 NAME 'bootableDevice' DESC 'A devic
- e with boot parameters' SUP top AUXILIARY MAY ( bootFile $ bootParameter ) 
- )
-structuralObjectClass: olcSchemaConfig
-entryUUID: 35304de6-4b40-1035-97f1-87e18fb4723c
-creatorsName: cn=admin,cn=config
-createTimestamp: 20160109171438Z
-entryCSN: 20160109171438.301292Z#000000#000#000000
-modifiersName: cn=admin,cn=config
-modifyTimestamp: 20160109171438Z
diff --git a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={3}inetorgperson.ldif b/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={3}inetorgperson.ldif
deleted file mode 100644
index f8dd9cc..0000000
--- a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={3}inetorgperson.ldif
+++ /dev/null
@@ -1,49 +0,0 @@
-# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
-# CRC32 c8d0515c
-dn: cn={3}inetorgperson
-objectClass: olcSchemaConfig
-cn: {3}inetorgperson
-olcAttributeTypes: {0}( 2.16.840.1.113730.3.1.1 NAME 'carLicense' DESC 'RFC2
- 798: vehicle license or registration plate' EQUALITY caseIgnoreMatch SUBSTR
-  caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-olcAttributeTypes: {1}( 2.16.840.1.113730.3.1.2 NAME 'departmentNumber' DESC
-  'RFC2798: identifies a department within an organization' EQUALITY caseIgn
- oreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1
- .15 )
-olcAttributeTypes: {2}( 2.16.840.1.113730.3.1.241 NAME 'displayName' DESC 'R
- FC2798: preferred name to be used when displaying entries' EQUALITY caseIgn
- oreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1
- .15 SINGLE-VALUE )
-olcAttributeTypes: {3}( 2.16.840.1.113730.3.1.3 NAME 'employeeNumber' DESC '
- RFC2798: numerically identifies an employee within an organization' EQUALIT
- Y caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.
- 115.121.1.15 SINGLE-VALUE )
-olcAttributeTypes: {4}( 2.16.840.1.113730.3.1.4 NAME 'employeeType' DESC 'RF
- C2798: type of employment for a person' EQUALITY caseIgnoreMatch SUBSTR cas
- eIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-olcAttributeTypes: {5}( 0.9.2342.19200300.100.1.60 NAME 'jpegPhoto' DESC 'RF
- C2798: a JPEG image' SYNTAX 1.3.6.1.4.1.1466.115.121.1.28 )
-olcAttributeTypes: {6}( 2.16.840.1.113730.3.1.39 NAME 'preferredLanguage' DE
- SC 'RFC2798: preferred written or spoken language for a person' EQUALITY ca
- seIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.
- 121.1.15 SINGLE-VALUE )
-olcAttributeTypes: {7}( 2.16.840.1.113730.3.1.40 NAME 'userSMIMECertificate'
-  DESC 'RFC2798: PKCS#7 SignedData used to support S/MIME' SYNTAX 1.3.6.1.4.
- 1.1466.115.121.1.5 )
-olcAttributeTypes: {8}( 2.16.840.1.113730.3.1.216 NAME 'userPKCS12' DESC 'RF
- C2798: personal identity information, a PKCS #12 PFX' SYNTAX 1.3.6.1.4.1.14
- 66.115.121.1.5 )
-olcObjectClasses: {0}( 2.16.840.1.113730.3.2.2 NAME 'inetOrgPerson' DESC 'RF
- C2798: Internet Organizational Person' SUP organizationalPerson STRUCTURAL 
- MAY ( audio $ businessCategory $ carLicense $ departmentNumber $ displayNam
- e $ employeeNumber $ employeeType $ givenName $ homePhone $ homePostalAddre
- ss $ initials $ jpegPhoto $ labeledURI $ mail $ manager $ mobile $ o $ page
- r $ photo $ roomNumber $ secretary $ uid $ userCertificate $ x500uniqueIden
- tifier $ preferredLanguage $ userSMIMECertificate $ userPKCS12 ) )
-structuralObjectClass: olcSchemaConfig
-entryUUID: 35308e14-4b40-1035-97f2-87e18fb4723c
-creatorsName: cn=admin,cn=config
-createTimestamp: 20160109171438Z
-entryCSN: 20160109171438.302936Z#000000#000#000000
-modifiersName: cn=admin,cn=config
-modifyTimestamp: 20160109171438Z
diff --git a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={4}core-fd.ldif b/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={4}core-fd.ldif
deleted file mode 100644
index f5b2e32..0000000
--- a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={4}core-fd.ldif
+++ /dev/null
@@ -1,90 +0,0 @@
-# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
-# CRC32 d16a33cf
-dn: cn={4}core-fd
-objectClass: olcSchemaConfig
-cn: {4}core-fd
-olcAttributeTypes: {0}( 1.3.6.1.4.1.10098.1.1.12.1 NAME 'gosaSubtreeACL' DES
- C 'GOsa - ACL entry' OBSOLETE EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSub
- stringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
-olcAttributeTypes: {1}( 1.3.6.1.4.1.10098.1.1.12.2 NAME 'gosaUser' DESC 'GOs
- a - DN of a user' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
-olcAttributeTypes: {2}( 1.3.6.1.4.1.10098.1.1.12.3 NAME 'gosaObject' DESC 'G
- Osa - DN of an object' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstrings
- Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
-olcAttributeTypes: {3}( 1.3.6.1.4.1.10098.1.1.12.14 NAME 'gosaDefaultLanguag
- e' DESC 'GOsa - Defines the default language for a user' OBSOLETE EQUALITY 
- caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1
- 466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {4}( 1.3.6.1.4.1.10098.1.1.12.30 NAME 'gosaGroupObjects' 
- DESC 'GOsa - List of all object types that are in a gosaGroupOfNames' EQUAL
- ITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4
- .1.1466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {5}( 1.3.6.1.4.1.10098.1.1.12.34 NAME 'gosaAclTemplate' D
- ESC 'GOsa - ACL entries for ACL roles' EQUALITY caseIgnoreIA5Match SUBSTR c
- aseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)
-olcAttributeTypes: {6}( 1.3.6.1.4.1.10098.1.1.12.35 NAME 'gosaAclEntry' DESC
-  'GOsa - ACL entries' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5Subst
- ringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)
-olcAttributeTypes: {7}( 1.3.6.1.4.1.10098.1.1.12.37 NAME 'gosaSnapshotTimest
- amp' DESC 'GOsa - Unix timestamp of snapshot' EQUALITY caseIgnoreMatch SUBS
- TR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VA
- LUE)
-olcAttributeTypes: {8}( 1.3.6.1.4.1.10098.1.1.12.38 NAME 'gosaSnapshotDN' DE
- SC 'GOsa - Original DN of saved object in snapshot' EQUALITY caseIgnoreMatc
- h SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SIN
- GLE-VALUE)
-olcAttributeTypes: {9}( 1.3.6.1.4.1.10098.1.1.12.39 NAME 'gosaSnapshotData' 
- DESC 'GOsa - Original data of saved object in snapshot' SYNTAX 1.3.6.1.4.1.
- 1466.115.121.1.5 SINGLE-VALUE)
-olcAttributeTypes: {10}( 1.3.6.1.4.1.10098.1.1.12.46 NAME 'gosaLoginRestrict
- ion' DESC 'GOsa - Multivalue attribute to carry a number of allowed ips/sub
- nets' OBSOLETE SUP name)
-olcAttributeTypes: {11}( 1.3.6.1.4.1.10098.1.1.6.2 NAME 'academicTitle' DESC
-  'Field to represent the academic title' OBSOLETE EQUALITY caseIgnoreMatch 
- SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)
-olcAttributeTypes: {12}( 1.3.6.1.4.1.15305.2.1 NAME ( 'gender' 'sex' ) DESC 
-    'Gender: M for male, F for female' EQUALITY caseIgnoreIA5Match SYNTAX  1
- .3.6.1.4.1.1466.115.121.1.26{1} SINGLE-VALUE )
-olcAttributeTypes: {13}( 1.3.6.1.4.1.15305.2.2 NAME ( 'dateOfBirth' 'dob' ) 
- DESC    'Date of birth in ISO 8601 format' EQUALITY caseIgnoreMatch SYNTAX 
-  1.3.6.1.4.1.1466.115.121.1.15{10} SINGLE-VALUE )
-olcObjectClasses: {0}( 1.3.6.1.4.1.10098.1.2.1.19.1 NAME 'gosaObject' SUP to
- p AUXILIARY DESC 'GOsa - Class for GOsa settings' OBSOLETE MUST ( ) MAY ( g
- osaSubtreeACL ))
-olcObjectClasses: {1}( 1.3.6.1.4.1.10098.1.2.1.19.2 NAME 'gosaLockEntry' SUP
-  top STRUCTURAL DESC 'GOsa - Class for GOsa locking' MUST ( gosaUser $ gosa
- Object $ cn ))
-olcObjectClasses: {2}( 1.3.6.1.4.1.10098.1.2.1.19.3 NAME 'gosaCacheEntry' SU
- P top STRUCTURAL DESC 'GOsa - Class for GOsa caching' OBSOLETE MAY  ( ) MUS
- T ( cn $ gosaUser ))
-olcObjectClasses: {3}( 1.3.6.1.4.1.10098.1.2.1.19.4 NAME 'gosaDepartment' SU
- P top AUXILIARY DESC 'GOsa - Class to mark Departments for GOsa' MUST  ( ou
-  $ description ) MAY   ( manager ))
-olcObjectClasses: {4}( 1.3.6.1.4.1.10098.1.2.1.19.6 NAME 'gosaAccount' SUP t
- op AUXILIARY DESC 'GOsa - Class for GOsa Accounts' OBSOLETE MUST ( ) MAY ( 
- gosaLoginRestriction $ gosaDefaultLanguage $ academicTitle $ personalTitle 
- $ dateOfBirth $ gender ) )
-olcObjectClasses: {5}( 1.3.6.1.4.1.10098.1.2.1.19.11 NAME 'gosaUserTemplate'
-  SUP top AUXILIARY DESC 'GOsa - Class for GOsa User Templates' OBSOLETE MUS
- T ( cn ))
-olcObjectClasses: {6}( 1.3.6.1.4.1.10098.1.2.1.19.12 NAME 'gosaGroupOfNames'
-  DESC 'GOsa - Adds the gosaGroupObjects field to groupOfNames' SUP top AUXI
- LIARY MUST ( cn $ gosaGroupObjects ) MAY ( member $ description ) )
-olcObjectClasses: {7}( 1.3.6.1.4.1.10098.1.2.1.19.17 NAME 'gosaRole' DESC 'G
- Osa - ACL container to define ACL roles' SUP top STRUCTURAL MUST ( gosaAclT
- emplate $ cn ) MAY  ( description ) )
-olcObjectClasses: {8}( 1.3.6.1.4.1.10098.1.2.1.19.18 NAME 'gosaAcl' DESC 'GO
- sa - ACL container to define single ACLs' SUP top AUXILIARY MUST ( gosaAclE
- ntry  ))
-olcObjectClasses: {9}( 1.3.6.1.4.1.10098.1.2.1.19.19 NAME 'gosaSnapshotObjec
- t' DESC 'GOsa - Container object for undo and snapshot data' SUP top STRUCT
- URAL MUST ( gosaSnapshotTimestamp $ gosaSnapshotDN $ gosaSnapshotData ) MAY
-   ( description ) )
-structuralObjectClass: olcSchemaConfig
-entryUUID: 513eab9e-4b46-1035-8a61-a5f01aea6174
-creatorsName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
-createTimestamp: 20160109175822Z
-entryCSN: 20160109175822.351990Z#000000#000#000000
-modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
-modifyTimestamp: 20160109175822Z
diff --git a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={5}core-fd-conf.ldif b/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={5}core-fd-conf.ldif
deleted file mode 100644
index eabddf0..0000000
--- a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={5}core-fd-conf.ldif
+++ /dev/null
@@ -1,284 +0,0 @@
-# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
-# CRC32 5643a101
-dn: cn={5}core-fd-conf
-objectClass: olcSchemaConfig
-cn: {5}core-fd-conf
-olcAttributeTypes: {0}( 1.3.6.1.4.1.38414.8.10.1 NAME 'fdRfc2307bis' DESC 'F
- usionDirectory - rfc2307bis' OBSOLETE EQUALITY booleanMatch SYNTAX 1.3.6.1.
- 4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {1}( 1.3.6.1.4.1.38414.8.10.2 NAME 'fdSchemaCheck' DESC '
- FusionDirectory - Schema check' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.14
- 66.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {2}( 1.3.6.1.4.1.38414.8.11.1 NAME 'fdLanguage' DESC 'Fus
- ionDirectory - language' EQUALITY caseExactIA5Match SUBSTR caseExactIA5Subs
- tringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {3}( 1.3.6.1.4.1.38414.8.11.2 NAME 'fdTheme' DESC 'Fusion
- Directory - theme' EQUALITY caseExactIA5Match SUBSTR caseExactIA5Substrings
- Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {4}( 1.3.6.1.4.1.38414.8.11.3 NAME 'fdTimezone' DESC 'Fus
- ionDirectory - timezone' EQUALITY caseExactIA5Match SUBSTR caseExactIA5Subs
- tringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {5}( 1.3.6.1.4.1.38414.8.12.1 NAME 'fdAccountPrimaryAttri
- bute' DESC 'FusionDirectory - attribute that should be used in user dn' EQU
- ALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4
- .1.1466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {6}( 1.3.6.1.4.1.38414.8.12.2 NAME 'fdAccountRDN' DESC 'F
- usionDirectory - use a placeholder pattern for generating account RDNs' OBS
- OLETE EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 
- 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {7}( 1.3.6.1.4.1.38414.8.12.3 NAME 'fdNextIdHook' DESC 'F
- usionDirectory - A script to be called for finding the next free id for use
- rs or groups' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {8}( 1.3.6.1.4.1.38414.8.12.4 NAME 'fdIdGenerator' DESC '
- FusionDirectory - An automatic way to generate new user ids' OBSOLETE EQUAL
- ITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1
- .1466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {9}( 1.3.6.1.4.1.38414.8.12.5 NAME 'fdPersonalTitleInDN' 
- OBSOLETE DESC 'FusionDirectory - Personal title in dn' EQUALITY booleanMatc
- h SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {10}( 1.3.6.1.4.1.38414.8.12.6 NAME 'fdStrictNamingRules'
-  DESC 'FusionDirectory - Strict naming rules' EQUALITY booleanMatch SYNTAX 
- 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {11}( 1.3.6.1.4.1.38414.8.12.7 NAME 'fdMinId' DESC 'Fusio
- nDirectory - minimum user id' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466
- .115.121.1.27 SINGLE-VALUE)
-olcAttributeTypes: {12}( 1.3.6.1.4.1.38414.8.12.8 NAME 'fdUidNumberBase' DES
- C 'FusionDirectory - uid number base' EQUALITY integerMatch SYNTAX 1.3.6.1.
- 4.1.1466.115.121.1.27 SINGLE-VALUE)
-olcAttributeTypes: {13}( 1.3.6.1.4.1.38414.8.12.9 NAME 'fdGidNumberBase' DES
- C 'FusionDirectory - gid number base' EQUALITY integerMatch SYNTAX 1.3.6.1.
- 4.1.1466.115.121.1.27 SINGLE-VALUE)
-olcAttributeTypes: {14}( 1.3.6.1.4.1.38414.8.12.10 NAME 'fdUserRDN' DESC 'Fu
- sionDirectory - User RDN' EQUALITY caseExactIA5Match SUBSTR caseExactIA5Sub
- stringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {15}( 1.3.6.1.4.1.38414.8.12.11 NAME 'fdGroupRDN' DESC 'F
- usionDirectory - Group RDN' EQUALITY caseExactIA5Match SUBSTR caseExactIA5S
- ubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {16}( 1.3.6.1.4.1.38414.8.12.12 NAME 'fdIdAllocationMetho
- d' DESC 'FusionDirectory - id allocation method traditional/pool' EQUALITY 
- caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.146
- 6.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {17}( 1.3.6.1.4.1.38414.8.12.13 NAME 'fdGidNumberPoolMin'
-  DESC 'FusionDirectory - pool gid number min' EQUALITY integerMatch SYNTAX 
- 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE)
-olcAttributeTypes: {18}( 1.3.6.1.4.1.38414.8.12.14 NAME 'fdUidNumberPoolMin'
-  DESC 'FusionDirectory - pool uid number min' EQUALITY integerMatch SYNTAX 
- 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE)
-olcAttributeTypes: {19}( 1.3.6.1.4.1.38414.8.12.15 NAME 'fdGidNumberPoolMax'
-  DESC 'FusionDirectory - pool gid number max' EQUALITY integerMatch SYNTAX 
- 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE)
-olcAttributeTypes: {20}( 1.3.6.1.4.1.38414.8.12.16 NAME 'fdUidNumberPoolMax'
-  DESC 'FusionDirectory - pool uid number max' EQUALITY integerMatch SYNTAX 
- 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE)
-olcAttributeTypes: {21}( 1.3.6.1.4.1.38414.8.12.17 NAME 'fdAclRoleRDN' DESC 
- 'FusionDirectory - ACL role RDN' EQUALITY caseExactIA5Match SUBSTR caseExac
- tIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {22}( 1.3.6.1.4.1.38414.8.12.18 NAME 'fdCnPattern' DESC '
- FusionDirectory - Common Name pattern' EQUALITY caseExactIA5Match SUBSTR ca
- seExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE
- )
-olcAttributeTypes: {23}( 1.3.6.1.4.1.38414.8.13.1 NAME 'fdPasswordDefaultHas
- h' DESC 'FusionDirectory - Password default hash' EQUALITY caseExactIA5Matc
- h SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 S
- INGLE-VALUE)
-olcAttributeTypes: {24}( 1.3.6.1.4.1.38414.8.13.2 NAME 'fdPasswordMinLength'
-  DESC 'FusionDirectory - Password min length' EQUALITY integerMatch SYNTAX 
- 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE)
-olcAttributeTypes: {25}( 1.3.6.1.4.1.38414.8.13.3 NAME 'fdPasswordMinDiffer'
-  DESC 'FusionDirectory - password min differ' EQUALITY integerMatch SYNTAX 
- 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE)
-olcAttributeTypes: {26}( 1.3.6.1.4.1.38414.8.13.4 NAME 'fdPasswordHook' DESC
-  'FusionDirectory - Password hook (external command)' OBSOLETE EQUALITY cas
- eExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.1
- 15.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {27}( 1.3.6.1.4.1.38414.8.13.5 NAME 'fdHandleExpiredAccou
- nts' DESC 'FusionDirectory - Handle expired accounts' EQUALITY booleanMatch
-  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {28}( 1.3.6.1.4.1.38414.8.13.6 NAME 'fdSaslRealm' DESC 'F
- usionDirectory - SASL Realm' EQUALITY caseExactIA5Match SUBSTR caseExactIA5
- SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {29}( 1.3.6.1.4.1.38414.8.13.7 NAME 'fdSaslExop' DESC 'Fu
- sionDirectory - SASL Exop' EQUALITY caseExactIA5Match SUBSTR caseExactIA5Su
- bstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {30}( 1.3.6.1.4.1.38414.8.13.8 NAME 'fdForcePasswordDefau
- ltHash' DESC 'FusionDirectory - Force password default hash' EQUALITY boole
- anMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {31}( 1.3.6.1.4.1.38414.8.14.1 NAME 'fdPrimaryGroupFilter
- ' DESC 'FusionDirectory - Primary group filter' EQUALITY booleanMatch SYNTA
- X 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {32}( 1.3.6.1.4.1.38414.8.14.2 NAME 'fdListSummary' DESC 
- 'FusionDirectory - Show list summary' EQUALITY booleanMatch SYNTAX 1.3.6.1.
- 4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {33}( 1.3.6.1.4.1.38414.8.14.4 NAME 'fdModificationDetect
- ionAttribute' DESC 'FusionDirectory - Modification detection attribute' EQU
- ALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4
- .1.1466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {34}( 1.3.6.1.4.1.38414.8.14.5 NAME 'fdCopyPaste' DESC 'F
- usionDirectory - (de)Activate copy/paste' OBSOLETE EQUALITY booleanMatch SY
- NTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {35}( 1.3.6.1.4.1.38414.8.14.6 NAME 'fdLogging' DESC 'Fus
- ionDirectory - Logging' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.1
- 21.1.7 SINGLE-VALUE )
-olcAttributeTypes: {36}( 1.3.6.1.4.1.38414.8.14.7 NAME 'fdLdapSizeLimit' DES
- C 'FusionDirectory - LDAP size limit' EQUALITY integerMatch SYNTAX 1.3.6.1.
- 4.1.1466.115.121.1.27 SINGLE-VALUE)
-olcAttributeTypes: {37}( 1.3.6.1.4.1.38414.8.15.1 NAME 'fdLoginAttribute' DE
- SC 'FusionDirectory attribute that will be used for login' EQUALITY caseExa
- ctIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.1
- 21.1.26 SINGLE-VALUE)
-olcAttributeTypes: {38}( 1.3.6.1.4.1.38414.8.15.2 NAME 'fdForceSSL' DESC 'Fu
- sionDirectory - Force SSL' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.11
- 5.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {39}( 1.3.6.1.4.1.38414.8.15.3 NAME 'fdWarnSSL' DESC 'Fus
- ionDirectory - Warn user when SSL is not used' EQUALITY booleanMatch SYNTAX
-  1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {40}( 1.3.6.1.4.1.38414.8.15.4 NAME 'fdStoreFilterSetting
- s' DESC 'FusionDirectory - Store filter settings' EQUALITY booleanMatch SYN
- TAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {41}( 1.3.6.1.4.1.38414.8.15.5 NAME 'fdSessionLifeTime' D
- ESC 'FusionDirectory - Session life time in seconds' EQUALITY integerMatch 
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE)
-olcAttributeTypes: {42}( 1.3.6.1.4.1.38414.8.16.1 NAME 'fdDisplayErrors' DES
- C 'FusionDirectory - Weither or not to display errors' EQUALITY booleanMatc
- h SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {43}( 1.3.6.1.4.1.38414.8.16.2 NAME 'fdLdapMaxQueryTime' 
- DESC 'FusionDirectory - Maximum LDAP query time' EQUALITY integerMatch SYNT
- AX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE)
-olcAttributeTypes: {44}( 1.3.6.1.4.1.38414.8.16.3 NAME 'fdLdapStats' DESC 'F
- usionDirectory - Weither or not to activate ldap stats' EQUALITY booleanMat
- ch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {45}( 1.3.6.1.4.1.38414.8.16.4 NAME 'fdDebugLevel' DESC '
- FusionDirectory - Debug level' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.146
- 6.115.121.1.27 SINGLE-VALUE)
-olcAttributeTypes: {46}( 1.3.6.1.4.1.38414.8.17.1 NAME 'fdEnableSnapshots' D
- ESC 'FusionDirectory - Weither or not to enable snapshots' EQUALITY boolean
- Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {47}( 1.3.6.1.4.1.38414.8.17.2 NAME 'fdSnapshotBase' DESC
-  'FusionDirectory - Snaphost base' EQUALITY caseExactIA5Match SUBSTR caseEx
- actIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {48}( 1.3.6.1.4.1.38414.8.17.3 NAME 'fdSnapshotURI' DESC 
- 'FusionDirectory - Snaphost URI' OBSOLETE EQUALITY caseExactIA5Match SUBSTR
-  caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VA
- LUE)
-olcAttributeTypes: {49}( 1.3.6.1.4.1.38414.8.17.4 NAME 'fdSnapshotAdminDn' D
- ESC 'FusionDirectory - Snaphost admin dn' OBSOLETE EQUALITY caseExactIA5Mat
- ch SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 
- SINGLE-VALUE)
-olcAttributeTypes: {50}( 1.3.6.1.4.1.38414.8.17.5 NAME 'fdSnapshotAdminPassw
- ord' DESC 'FusionDirectory - Snaphost admin password' OBSOLETE EQUALITY cas
- eExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.1
- 15.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {51}( 1.3.6.1.4.1.38414.8.18.2 NAME 'fdTabHook' DESC 'Fus
- ionDirectory - tab hook' EQUALITY caseExactIA5Match SUBSTR caseExactIA5Subs
- tringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: {52}( 1.3.6.1.4.1.38414.8.18.3 NAME 'fdShells' DESC 'Fusi
- onDirectory - available shell' EQUALITY caseExactIA5Match SUBSTR caseExactI
- A5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: {53}( 1.3.6.1.4.1.38414.8.18.4 NAME 'fusionConfigMd5' DES
- C 'FusionDirectory - md5sum of class.cache' EQUALITY caseExactIA5Match SUBS
- TR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-olcAttributeTypes: {54}( 1.3.6.1.4.1.38414.8.18.5 NAME 'fdDisplayHookOutput'
-  DESC 'FusionDirectory - display hook execution output to the user' EQUALIT
- Y booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {55}( 1.3.6.1.4.1.38414.8.18.6 NAME 'fdAclTabOnObjects' D
- ESC 'FusionDirectory - Should acl tabs be shown on all objects' EQUALITY bo
- oleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {56}( 1.3.6.1.4.1.38414.8.19.1 NAME 'fdOGroupRDN' DESC 'F
- usionDirectory - OGroup RDN' EQUALITY caseExactIA5Match SUBSTR caseExactIA5
- SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {57}( 1.3.6.1.4.1.38414.8.19.2 NAME 'fdForceSaslPasswordA
- sk' DESC 'FusionDirectory - Force password ask for SASL users' EQUALITY boo
- leanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {58}( 1.3.6.1.4.1.38414.8.20.1 NAME 'fdSslCaCertPath' DES
- C 'FusionDirectory - CA certificate path' EQUALITY caseExactIA5Match SUBSTR
-  caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VA
- LUE)
-olcAttributeTypes: {59}( 1.3.6.1.4.1.38414.8.20.2 NAME 'fdSslKeyPath' DESC '
- FusionDirectory - SSL key path' EQUALITY caseExactIA5Match SUBSTR caseExact
- IA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
-olcAttributeTypes: {60}( 1.3.6.1.4.1.38414.8.20.3 NAME 'fdSslCertPath' DESC 
- 'FusionDirectory - SSL certificate path' EQUALITY caseExactIA5Match SUBSTR 
- caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VAL
- UE)
-olcAttributeTypes: {61}( 1.3.6.1.4.1.38414.27.1.1 NAME 'fdDashboardPrefix' D
- ESC 'FusionDirectory - Dashboard computer name prefix' EQUALITY caseExactIA
- 5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1
- .26)
-olcAttributeTypes: {62}( 1.3.6.1.4.1.38414.27.1.2 NAME 'fdDashboardNumberOfD
- igit' DESC 'FusionDirectory - Dashboard number of digits after prefixes in 
- computer names' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 
- SINGLE-VALUE )
-olcAttributeTypes: {63}( 1.3.6.1.4.1.38414.27.1.3 NAME 'fdDashboardExpiredAc
- countsDays' DESC 'FusionDirectory - Dashboard number of days before expirat
- ion to be shown in board user tab' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1
- .1466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: {64}( 1.3.6.1.4.1.38414.8.110.1 NAME 'fdPasswordRecoveryA
- ctivated' DESC 'Fusion Directory - Password recovery enabled/disabled' EQUA
- LITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
-olcAttributeTypes: {65}( 1.3.6.1.4.1.38414.8.110.2 NAME 'fdPasswordRecoveryE
- mail' DESC 'Fusion Directory - Password recovery sender email' EQUALITY cas
- eExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-olcAttributeTypes: {66}( 1.3.6.1.4.1.38414.8.110.3 NAME 'fdPasswordRecoveryM
- ailSubject' DESC 'Fusion Directory - Password recovery first email subject'
-  EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE 
- )
-olcAttributeTypes: {67}( 1.3.6.1.4.1.38414.8.110.4 NAME 'fdPasswordRecoveryM
- ailBody' DESC 'Fusion Directory - Password recovery first email body' EQUAL
- ITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
-olcAttributeTypes: {68}( 1.3.6.1.4.1.38414.8.110.5 NAME 'fdPasswordRecoveryM
- ail2Subject' DESC 'Fusion Directory - Password recovery second email subjec
- t' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALU
- E )
-olcAttributeTypes: {69}( 1.3.6.1.4.1.38414.8.110.6 NAME 'fdPasswordRecoveryM
- ail2Body' DESC 'Fusion Directory - Password recovery second email body' EQU
- ALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
-olcAttributeTypes: {70}( 1.3.6.1.4.1.38414.8.110.7 NAME 'fdPasswordRecoveryV
- alidity' DESC 'Fusion Directory - Password recovery link validity in minute
- s' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1
- 466.115.121.1.27 SINGLE-VALUE )
-olcAttributeTypes: {71}( 1.3.6.1.4.1.38414.8.110.8 NAME 'fdPasswordRecoveryS
- alt' DESC 'Fusion Directory - Password recovery token salt' EQUALITY caseEx
- actIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-olcAttributeTypes: {72}( 1.3.6.1.4.1.38414.8.110.9 NAME 'fdPasswordRecoveryU
- seAlternate' DESC 'Fusion Directory - Allow/disallow the use of alternate a
- ddresses for password recovery' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.14
- 66.115.121.1.7 SINGLE-VALUE )
-olcObjectClasses: {0}( 1.3.6.1.4.1.38414.8.2.1 NAME 'fusionDirectoryConf' DE
- SC 'FusionDirectory configuration' SUP top STRUCTURAL MUST ( cn ) MAY ( fus
- ionConfigMd5 $ fdSchemaCheck $ fdLanguage $ fdTheme $ fdTimezone $ fdAccoun
- tPrimaryAttribute $ fdNextIdHook $ fdIdGenerator $ fdStrictNamingRules $ fd
- MinId $ fdUidNumberBase $ fdGidNumberBase $ fdUserRDN $ fdGroupRDN $ fdIdAl
- locationMethod $ fdGidNumberPoolMin $ fdUidNumberPoolMin $ fdGidNumberPoolM
- ax $ fdUidNumberPoolMax $ fdAclRoleRDN $ fdCnPattern $ fdPasswordDefaultHas
- h $ fdPasswordMinLength $ fdPasswordMinDiffer $ fdPasswordHook $ fdHandleEx
- piredAccounts $ fdSaslRealm $ fdSaslExop $ fdForcePasswordDefaultHash $ fdP
- rimaryGroupFilter $ fdListSummary $ fdModificationDetectionAttribute $ fdLo
- gging $ fdLdapSizeLimit $ fdLoginAttribute $ fdForceSSL $ fdWarnSSL $ fdSto
- reFilterSettings $ fdSessionLifeTime $ fdDisplayErrors $ fdLdapMaxQueryTime
-  $ fdLdapStats $ fdDebugLevel $ fdEnableSnapshots $ fdSnapshotBase $ fdTabH
- ook $ fdShells $ fdDisplayHookOutput $ fdAclTabOnObjects $ fdRfc2307bis $ f
- dCopyPaste $ fdSnapshotURI $ fdSnapshotAdminDn $ fdSnapshotAdminPassword $ 
- fdPersonalTitleInDN $ fdAccountRDN $ fdSslCaCertPath $ fdSslKeyPath $ fdSsl
- CertPath ) )
-olcObjectClasses: {1}( 1.3.6.1.4.1.38414.8.2.2 NAME 'fusionDirectoryPluginsC
- onf' DESC 'FusionDirectory plugins configuration' SUP top AUXILIARY MUST ( 
- cn ) MAY ( fdOGroupRDN $ fdForceSaslPasswordAsk ) )
-olcObjectClasses: {2}( 1.3.6.1.4.1.38414.8.2.3 NAME 'fdPasswordRecoveryConf'
-  DESC 'FusionDirectory password recovery configuration' SUP top AUXILIARY M
- UST ( cn ) MAY ( fdPasswordRecoveryActivated     $ fdPasswordRecoveryEmail 
-     $ fdPasswordRecoveryMailSubject   $ fdPasswordRecoveryMailBody  $ fdPas
- swordRecoveryMail2Subject  $ fdPasswordRecoveryMail2Body $ fdPasswordRecove
- ryValidity      $ fdPasswordRecoverySalt      $ fdPasswordRecoveryUseAltern
- ate ) )
-olcObjectClasses: {3}( 1.3.6.1.4.1.38414.27.2.1 NAME 'fdDashboardPluginConf'
-  DESC 'FusionDirectory dashboard plugin configuration' SUP top AUXILIARY MU
- ST ( cn ) MAY ( fdDashboardPrefix $ fdDashboardNumberOfDigit $ fdDashboardE
- xpiredAccountsDays) )
-structuralObjectClass: olcSchemaConfig
-entryUUID: 51421fd6-4b46-1035-8a62-a5f01aea6174
-creatorsName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
-createTimestamp: 20160109175822Z
-entryCSN: 20160109175822.374659Z#000000#000#000000
-modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
-modifyTimestamp: 20160109175822Z
diff --git a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={6}ldapns.ldif b/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={6}ldapns.ldif
deleted file mode 100644
index 4d27641..0000000
--- a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={6}ldapns.ldif
+++ /dev/null
@@ -1,20 +0,0 @@
-# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
-# CRC32 1eeccea7
-dn: cn={6}ldapns
-objectClass: olcSchemaConfig
-cn: {6}ldapns
-olcAttributeTypes: {0}( 1.3.6.1.4.1.5322.17.2.1 NAME 'authorizedService' DES
- C 'IANA GSS-API authorized service name' EQUALITY caseIgnoreMatch SYNTAX 1.
- 3.6.1.4.1.1466.115.121.1.15{256} )
-olcObjectClasses: {0}( 1.3.6.1.4.1.5322.17.1.1 NAME 'authorizedServiceObject
- ' DESC 'Auxiliary object class for adding authorizedService attribute' SUP 
- top AUXILIARY MAY authorizedService )
-olcObjectClasses: {1}( 1.3.6.1.4.1.5322.17.1.2 NAME 'hostObject' DESC 'Auxil
- iary object class for adding host attribute' SUP top AUXILIARY MAY host )
-structuralObjectClass: olcSchemaConfig
-entryUUID: 51461df2-4b46-1035-8a63-a5f01aea6174
-creatorsName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
-createTimestamp: 20160109175822Z
-entryCSN: 20160109175822.400798Z#000000#000#000000
-modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
-modifyTimestamp: 20160109175822Z
diff --git a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={7}template-fd.ldif b/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={7}template-fd.ldif
deleted file mode 100644
index 0187d53..0000000
--- a/ldap/data/ldap_conf/slapd.d/cn=config/cn=schema/cn={7}template-fd.ldif
+++ /dev/null
@@ -1,17 +0,0 @@
-# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
-# CRC32 22a14bb7
-dn: cn={7}template-fd
-objectClass: olcSchemaConfig
-cn: {7}template-fd
-olcAttributeTypes: {0}( 1.3.6.1.4.1.38414.38.1.1 NAME 'fdTemplateField' DESC
-  'FusionDirectory - template field' EQUALITY caseExactMatch SYNTAX 1.3.6.1.
- 4.1.1466.115.121.1.15)
-olcObjectClasses: {0}(1.3.6.1.4.1.38414.38.2.1 NAME 'fdTemplate' DESC 'Fusio
- nDirectory - template object' MUST ( cn ) MAY ( fdTemplateField ) )
-structuralObjectClass: olcSchemaConfig
-entryUUID: 51499c84-4b46-1035-8a64-a5f01aea6174
-creatorsName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
-createTimestamp: 20160109175822Z
-entryCSN: 20160109175822.423697Z#000000#000#000000
-modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
-modifyTimestamp: 20160109175822Z
diff --git a/ldap/data/ldap_conf/slapd.d/cn=config/olcBackend={0}mdb.ldif b/ldap/data/ldap_conf/slapd.d/cn=config/olcBackend={0}mdb.ldif
deleted file mode 100644
index aeb9bc2..0000000
--- a/ldap/data/ldap_conf/slapd.d/cn=config/olcBackend={0}mdb.ldif
+++ /dev/null
@@ -1,12 +0,0 @@
-# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
-# CRC32 b76c0b19
-dn: olcBackend={0}mdb
-objectClass: olcBackendConfig
-olcBackend: {0}mdb
-structuralObjectClass: olcBackendConfig
-entryUUID: 3530bc2c-4b40-1035-97f4-87e18fb4723c
-creatorsName: cn=admin,cn=config
-createTimestamp: 20160109171438Z
-entryCSN: 20160109171438.304112Z#000000#000#000000
-modifiersName: cn=admin,cn=config
-modifyTimestamp: 20160109171438Z
diff --git a/ldap/data/ldap_conf/slapd.d/cn=config/olcDatabase={-1}frontend.ldif b/ldap/data/ldap_conf/slapd.d/cn=config/olcDatabase={-1}frontend.ldif
deleted file mode 100644
index 168147a..0000000
--- a/ldap/data/ldap_conf/slapd.d/cn=config/olcDatabase={-1}frontend.ldif
+++ /dev/null
@@ -1,18 +0,0 @@
-# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
-# CRC32 8a1c1b89
-dn: olcDatabase={-1}frontend
-objectClass: olcDatabaseConfig
-objectClass: olcFrontendConfig
-olcDatabase: {-1}frontend
-olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=extern
- al,cn=auth manage by * break
-olcAccess: {1}to dn.exact="" by * read
-olcAccess: {2}to dn.base="cn=Subschema" by * read
-olcSizeLimit: 500
-structuralObjectClass: olcDatabaseConfig
-entryUUID: 352fd8d4-4b40-1035-97ec-87e18fb4723c
-creatorsName: cn=config
-createTimestamp: 20160109171438Z
-entryCSN: 20160109171438.298281Z#000000#000#000000
-modifiersName: cn=config
-modifyTimestamp: 20160109171438Z
diff --git a/ldap/data/ldap_conf/slapd.d/cn=config/olcDatabase={0}config.ldif b/ldap/data/ldap_conf/slapd.d/cn=config/olcDatabase={0}config.ldif
deleted file mode 100644
index c3e42c0..0000000
--- a/ldap/data/ldap_conf/slapd.d/cn=config/olcDatabase={0}config.ldif
+++ /dev/null
@@ -1,15 +0,0 @@
-# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
-# CRC32 84ef2f3c
-dn: olcDatabase={0}config
-objectClass: olcDatabaseConfig
-olcDatabase: {0}config
-olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=extern
- al,cn=auth manage by * break
-olcRootDN: cn=admin,cn=config
-structuralObjectClass: olcDatabaseConfig
-entryUUID: 352fe7ac-4b40-1035-97ed-87e18fb4723c
-creatorsName: cn=config
-createTimestamp: 20160109171438Z
-entryCSN: 20160109171438.298680Z#000000#000#000000
-modifiersName: cn=config
-modifyTimestamp: 20160109171438Z
diff --git a/ldap/data/ldap_conf/slapd.d/cn=config/olcDatabase={1}mdb.ldif b/ldap/data/ldap_conf/slapd.d/cn=config/olcDatabase={1}mdb.ldif
deleted file mode 100644
index 515cf11..0000000
--- a/ldap/data/ldap_conf/slapd.d/cn=config/olcDatabase={1}mdb.ldif
+++ /dev/null
@@ -1,28 +0,0 @@
-# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
-# CRC32 403a1978
-dn: olcDatabase={1}mdb
-objectClass: olcDatabaseConfig
-objectClass: olcMdbConfig
-olcDatabase: {1}mdb
-olcDbDirectory: /var/lib/ldap
-olcSuffix: dc=warpzone,dc=ms
-olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonym
- ous auth by * none
-olcAccess: {1}to dn.base="" by * read
-olcAccess: {2}to * by * read
-olcLastMod: TRUE
-olcRootDN: cn=admin,dc=warpzone,dc=ms
-olcRootPW:: e1NTSEF9aTZsUlYvdlhLVUFxU255ZEF6YUZUQUN4NmxRRUpmbE4=
-olcDbCheckpoint: 512 30
-olcDbIndex: objectClass eq
-olcDbIndex: cn,uid eq
-olcDbIndex: uidNumber,gidNumber eq
-olcDbIndex: member,memberUid eq
-olcDbMaxSize: 1073741824
-structuralObjectClass: olcMdbConfig
-entryUUID: 3530c8e8-4b40-1035-97f5-87e18fb4723c
-creatorsName: cn=admin,cn=config
-createTimestamp: 20160109171438Z
-entryCSN: 20160109171438.304442Z#000000#000#000000
-modifiersName: cn=admin,cn=config
-modifyTimestamp: 20160109171438Z
diff --git a/ldap/data/ldap_db/data.mdb b/ldap/data/ldap_db/data.mdb
deleted file mode 100644
index 49999d4bc92eb12193494fef7016c2f3ba2c1366..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 147456
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
Vt^o0<Q=H+u7dCGFpDTU${{whc&))z5

diff --git a/ldap/data/ldap_db/lock.mdb b/ldap/data/ldap_db/lock.mdb
deleted file mode 100644
index 2f787b55451e6366f4649a56b3d6e38634a7b7e8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8192
zcmeIuAr62r3<c1^NiiG&y`2gi;TAZqfJ6>63}hiV#H(rg*JjDvmVItQ6YiDnL7Dr~
z+sb>Y<h3}L>aK+&PeZ(h_x`wF<M`$N{RbNa2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs
O0RjXF5FkL{{{km(RvZQZ

diff --git a/ldap/data/start.sh b/ldap/data/start.sh
deleted file mode 100644
index 6b6d324..0000000
--- a/ldap/data/start.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-if [ ! -f /etc/ldap/ldap.conf ]; then
-		echo "[ ok ] Creating initial Configuration"
-        cp -r /tmp/ldap/* /etc/ldap/;
-        rm -r /tmp/ldap/
-fi
-
-#apt-get update && apt-get install -y \
-#    fusiondirectory \
-#    fusiondirectory-schema  \
-#    fusiondirectory-plugin-ssh
-
-service rsyslog restart
-chown -R openldap:openldap /etc/ldap/slapd.d
-chown -R openldap:openldap /var/lib/ldap
-service slapd restart
-cp -r /tmp/ldap/schema/fusiondirectory /etc/ldap/schema/
-
-chown -R www-data /etc/fusiondirectory/
-chmod 770 /etc/fusiondirectory/fusiondirectory.conf
-
-fusiondirectory-insert-schema
-fusiondirectory-insert-schema -i /etc/ldap/schema/fusiondirectory/openssh-lpk.schema
-service apache2 restart
-bash
-
diff --git a/ldap/initial_config.tar.gz b/ldap/initial_config.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..11945d2efd995f1a68a9b3c7be09744eb6540d4f
GIT binary patch
literal 23805
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
E0D}pnj{pDw

literal 0
HcmV?d00001

diff --git a/ldap/initial_database.gz b/ldap/initial_database.gz
new file mode 100644
index 0000000000000000000000000000000000000000..888cba1913b2928e34e9d6f68f39dca598074d43
GIT binary patch
literal 39856
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
O>c@q<e|T8^hyMk|0IlW#

literal 0
HcmV?d00001

diff --git a/ldap/run.sh b/ldap/run.sh
index f691975..b52fa95 100644
--- a/ldap/run.sh
+++ b/ldap/run.sh
@@ -1,12 +1,20 @@
-#docker run -v /opt/warpauth/data/warpauth:/opt/warpauth -p 389:389 -it warpauth
-#-v /opt/warpauth/data/warpauth:/opt/warpauth 
+docker kill ldap-service phpldapadmin-service
+docker rm ldap-service phpldapadmin-service
+docker run \
+	--env LDAP_ORGANISATION="Warpzone" \
+	--env LDAP_DOMAIN="warpzone.ms" \
+	--env LDAP_ADMIN_PASSWORD="k7dAw8j2" \
+	--volume /opt/warpzone/ldap/data/database:/var/lib/ldap \
+	--volume /opt/warpzone/ldap/data/config:/etc/ldap/slapd.d \
+	--name ldap-service \
+	--hostname ldap-service \
+	--detach osixia/openldap:latest
 
 docker run \
-	--name ldap \
-	-v ${PWD}/data/ldap_db:/var/lib/ldap \
-	-v ${PWD}/data/ldap_conf:/etc/ldap \
-    -v ${PWD}/data/fusiondirectory:/etc/fusiondirectory \
-	-p 389:389 \
-    -p 8123:80 \
-	-it \
-	ldap
+	--name phpldapadmin-service \
+	--hostname phpldapadmin-service \
+	--link ldap-service:ldap-host \
+	--env PHPLDAPADMIN_LDAP_HOSTS=ldap-host \
+	-p 6443:443 \
+	--detach osixia/phpldapadmin:latest
+
diff --git a/ldap/stop_ldap.sh b/ldap/stop_ldap.sh
deleted file mode 100644
index 5107941..0000000
--- a/ldap/stop_ldap.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-docker kill ldap
-docker rm ldap
-
diff --git a/slacktest b/slacktest
deleted file mode 100644
index de8f6ea..0000000
--- a/slacktest
+++ /dev/null
@@ -1,3 +0,0 @@
-test slack
-test2
-asd
\ No newline at end of file
diff --git a/web_docker/Dockerfile b/web_docker/Dockerfile
deleted file mode 100644
index 25f5b35..0000000
--- a/web_docker/Dockerfile
+++ /dev/null
@@ -1,35 +0,0 @@
-From debian:jessie
-
-RUN apt-get update && apt-get install -y \
-	debconf-utils \
-	apt-utils \
-	ssh \
-	less \
-	ldap-utils \
-	rsyslog \
-	nano \
-	python \
-	python-pip \
-	python-ldap \
-	python-dev \
-	build-essential \
-	libfreetype6-dev \
-	python-imaging \
-	libjpeg-dev
-
-RUN apt-get -y install libsasl2-dev python-dev libldap2-dev libssl-dev
-
-RUN pip install django \
-		django-ldapdb \
-		django-auth-ldap \
-		reportlab \
-		--upgrade
-
-RUN apt-get install -y python-bootstrapform
-COPY entrypoint.sh /opt/entrypoint.sh
-EXPOSE 22 8000
-
-VOLUME ["/opt/warpauth"]
-
-ENTRYPOINT sh /opt/entrypoint.sh
-
diff --git a/web_docker/build.sh b/web_docker/build.sh
deleted file mode 100644
index e833f90..0000000
--- a/web_docker/build.sh
+++ /dev/null
@@ -1 +0,0 @@
-docker build -t warpauth_web .
diff --git a/web_docker/entrypoint.sh b/web_docker/entrypoint.sh
deleted file mode 100644
index 068a763..0000000
--- a/web_docker/entrypoint.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-service rsyslog restart
-cd /opt/warpauth;
-
-python manage.py makemigrations
-python manage.py migrate
-
-python manage.py runserver 0.0.0.0:8000
-
-bash
-
diff --git a/web_docker/run.sh b/web_docker/run.sh
deleted file mode 100644
index 7710f89..0000000
--- a/web_docker/run.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-docker run \
-	-v /home/chris/Documents/warpzone/pycharm/web:/opt/warpauth \
-	--link ldap:ldap \
-	-p 8000:8000 \
-	-itd \
-	warpauth_web
diff --git a/www/build.sh b/www/build.sh
new file mode 100644
index 0000000..51abdce
--- /dev/null
+++ b/www/build.sh
@@ -0,0 +1 @@
+cd docker; docker build -t warpinfra .; cd -
diff --git a/www/docker/Dockerfile b/www/docker/Dockerfile
new file mode 100644
index 0000000..1a1da0a
--- /dev/null
+++ b/www/docker/Dockerfile
@@ -0,0 +1,46 @@
+From debian:jessie
+
+# Common Packages
+RUN apt-get update && apt-get install -y \
+	debconf-utils apt-utils rsyslog less nano \
+	ldap-utils \
+	build-essential \
+	libfreetype6-dev \
+	libjpeg-dev \
+	libsasl2-dev \
+	libldap2-dev \
+	libssl-dev \
+	nginx
+    
+# Python Packages
+RUN apt-get update && apt-get install -y \
+	python3 \
+	python3-pip \
+	python3-dev \
+    python3-bootstrapform
+    
+RUN pip3 install \
+    django==1.9 \
+    django-ldapdb \
+    django-auth-ldap \
+    reportlab \
+    djangorestframework \
+    ldap3 \
+    uwsgi \
+    --upgrade
+
+RUN ln -s /opt/nginx/nginx_warpinfra.conf /etc/nginx/sites-enabled/
+RUN rm /etc/nginx/sites-enabled/default
+
+COPY ldapdb_base.py /usr/local/lib/python2.7/dist-packages/ldapdb/backends/ldap/base.py
+COPY entrypoint.sh /opt/entrypoint.sh
+
+EXPOSE 8000
+
+VOLUME ["/opt/nginx", "/opt/warpinfra"]
+
+ENTRYPOINT sh /opt/entrypoint.sh
+
+
+#COPY ldapdb_fields.py /usr/local/lib/python2.7/dist-packages/ldapdb/models/fields.py
+
diff --git a/www/docker/entrypoint.sh b/www/docker/entrypoint.sh
new file mode 100644
index 0000000..ac1f3e3
--- /dev/null
+++ b/www/docker/entrypoint.sh
@@ -0,0 +1,13 @@
+service rsyslog restart
+service nginx restart
+
+cd /opt/warpinfra;
+python3 manage.py makemigrations
+python3 manage.py migrate
+python3 manage.py collectstatic --noinput
+
+uwsgi --ini /opt/nginx/uwsgi.ini --py-autoreload 1
+
+bash
+
+
diff --git a/www/docker/ldapdb_base.py b/www/docker/ldapdb_base.py
new file mode 100644
index 0000000..86be20b
--- /dev/null
+++ b/www/docker/ldapdb_base.py
@@ -0,0 +1,268 @@
+# -*- coding: utf-8 -*-
+# This software is distributed under the two-clause BSD license.
+# Copyright (c) The django-ldapdb project
+
+from __future__ import unicode_literals
+
+import ldap
+import django
+
+if django.VERSION < (1, 8):
+    from django.db.backends import (BaseDatabaseFeatures, BaseDatabaseOperations,
+                                    BaseDatabaseWrapper)
+    from django.db.backends.creation import BaseDatabaseCreation
+else:
+    from django.db.backends.base.features import BaseDatabaseFeatures
+    from django.db.backends.base.operations import BaseDatabaseOperations
+    from django.db.backends.base.base import BaseDatabaseWrapper
+    from django.db.backends.base.creation import BaseDatabaseCreation
+    from django.db.backends.base.validation import BaseDatabaseValidation
+
+
+class DatabaseCreation(BaseDatabaseCreation):
+    def create_test_db(self, *args, **kwargs):
+        """
+        Creates a test database, prompting the user for confirmation if the
+        database already exists. Returns the name of the test database created.
+        """
+        pass
+
+    def destroy_test_db(self, *args, **kwargs):
+        """
+        Destroy a test database, prompting the user for confirmation if the
+        database already exists. Returns the name of the test database created.
+        """
+        pass
+
+
+class DatabaseCursor(object):
+    def __init__(self, ldap_connection):
+        self.connection = ldap_connection
+
+
+class DatabaseFeatures(BaseDatabaseFeatures):
+    def __init__(self, connection):
+        self.connection = connection
+        self.supports_transactions = False
+
+
+class DatabaseOperations(BaseDatabaseOperations):
+    compiler_module = "ldapdb.backends.ldap.compiler"
+
+    def quote_name(self, name):
+        return name
+
+    def no_limit_value(self):
+        return -1
+
+
+class LdapDatabase(object):
+    # Base class for all exceptions
+    Error = ldap.LDAPError
+
+    class DatabaseError(Error):
+        """Database-side errors."""
+
+    class OperationalError(
+            DatabaseError,
+            ldap.ADMINLIMIT_EXCEEDED,
+            ldap.AUTH_METHOD_NOT_SUPPORTED,
+            ldap.AUTH_UNKNOWN,
+            ldap.BUSY,
+            ldap.CONFIDENTIALITY_REQUIRED,
+            ldap.CONNECT_ERROR,
+            ldap.INAPPROPRIATE_AUTH,
+            ldap.INVALID_CREDENTIALS,
+            ldap.OPERATIONS_ERROR,
+            ldap.RESULTS_TOO_LARGE,
+            ldap.SASL_BIND_IN_PROGRESS,
+            ldap.SERVER_DOWN,
+            ldap.SIZELIMIT_EXCEEDED,
+            ldap.STRONG_AUTH_NOT_SUPPORTED,
+            ldap.STRONG_AUTH_REQUIRED,
+            ldap.TIMELIMIT_EXCEEDED,
+            ldap.TIMEOUT,
+            ldap.UNAVAILABLE,
+            ldap.UNAVAILABLE_CRITICAL_EXTENSION,
+            ldap.UNWILLING_TO_PERFORM,
+    ):
+        """Exceptions related to the database operations, out of the programmer control."""
+
+    class IntegrityError(
+            DatabaseError,
+            ldap.AFFECTS_MULTIPLE_DSAS,
+            ldap.ALREADY_EXISTS,
+            ldap.CONSTRAINT_VIOLATION,
+            ldap.TYPE_OR_VALUE_EXISTS,
+    ):
+        """Exceptions related to database Integrity."""
+
+    class DataError(
+            DatabaseError,
+            ldap.INVALID_DN_SYNTAX,
+            ldap.INVALID_SYNTAX,
+            ldap.NOT_ALLOWED_ON_NONLEAF,
+            ldap.NOT_ALLOWED_ON_RDN,
+            ldap.OBJECT_CLASS_VIOLATION,
+            ldap.UNDEFINED_TYPE,
+    ):
+        """Exceptions related to invalid data"""
+
+    class InterfaceError(
+            ldap.CLIENT_LOOP,
+            ldap.DECODING_ERROR,
+            ldap.ENCODING_ERROR,
+            ldap.LOCAL_ERROR,
+            ldap.LOOP_DETECT,
+            ldap.NO_MEMORY,
+            ldap.PROTOCOL_ERROR,
+            ldap.REFERRAL_LIMIT_EXCEEDED,
+            ldap.USER_CANCELLED,
+            Error,
+    ):
+        """Exceptions related to the pyldap interface."""
+
+    class InternalError(
+            DatabaseError,
+            ldap.ALIAS_DEREF_PROBLEM,
+            ldap.ALIAS_PROBLEM,
+    ):
+        """Exceptions encountered within the database."""
+
+    class ProgrammingError(
+            DatabaseError,
+            ldap.CONTROL_NOT_FOUND,
+            ldap.FILTER_ERROR,
+            ldap.INAPPROPRIATE_MATCHING,
+            ldap.NAMING_VIOLATION,
+            ldap.NO_SUCH_ATTRIBUTE,
+            ldap.NO_SUCH_OBJECT,
+            ldap.PARAM_ERROR,
+    ):
+        """Invalid data send by the programmer."""
+
+    class NotSupportedError(
+            DatabaseError,
+            ldap.NOT_SUPPORTED,
+    ):
+        """Exception for unsupported actions."""
+
+
+class DatabaseWrapper(BaseDatabaseWrapper):
+    vendor = 'ldap'
+
+    Database = LdapDatabase
+
+    # NOTE: These are copied from the mysql DatabaseWrapper
+    operators = {
+        'exact': '= %s',
+        'iexact': 'LIKE %s',
+        'contains': 'LIKE BINARY %s',
+        'icontains': 'LIKE %s',
+        'regex': 'REGEXP BINARY %s',
+        'iregex': 'REGEXP %s',
+        'gt': '> %s',
+        'gte': '>= %s',
+        'lt': '< %s',
+        'lte': '<= %s',
+        'startswith': 'LIKE BINARY %s',
+        'endswith': 'LIKE BINARY %s',
+        'istartswith': 'LIKE %s',
+        'iendswith': 'LIKE %s',
+    }
+
+    def __init__(self, *args, **kwargs):
+        super(DatabaseWrapper, self).__init__(*args, **kwargs)
+
+        # Charset used for LDAP text *values*
+        self.charset = "utf-8"
+        self.creation = DatabaseCreation(self)
+        self.features = DatabaseFeatures(self)
+        self.ops = DatabaseOperations(self)
+        self.settings_dict['SUPPORTS_TRANSACTIONS'] = True
+        self.autocommit = True
+
+        if django.VERSION >= (1, 8):
+            self.validation = BaseDatabaseValidation(self)
+
+    def close(self):
+        if hasattr(self, 'validate_thread_sharing'):
+            # django >= 1.4
+            self.validate_thread_sharing()
+        if self.connection is not None:
+            self.connection.unbind_s()
+            self.connection = None
+
+    def get_connection_params(self):
+        """Compute appropriate parameters for establishing a new connection.
+
+        Computed at system startup.
+        """
+        return {
+            'uri': self.settings_dict['NAME'],
+            'tls': self.settings_dict.get('TLS', False),
+            'bind_dn': self.settings_dict['USER'],
+            'bind_pw': self.settings_dict['PASSWORD'],
+            'options': self.settings_dict.get('CONNECTION_OPTIONS', {}),
+        }
+
+    def get_new_connection(self, conn_params):
+        """Build a connection from its parameters."""
+        connection = ldap.initialize(conn_params['uri'], bytes_mode=False)
+
+        options = conn_params['options']
+        for opt, value in options.items():
+            connection.set_option(opt, value)
+
+        if conn_params['tls']:
+            connection.start_tls_s()
+
+        connection.simple_bind_s(
+            conn_params['bind_dn'],
+            conn_params['bind_pw'],
+        )
+        return connection
+
+    def init_connection_state(self):
+        """Initialize python-side connection state."""
+        pass
+
+    def _commit(self):
+        pass
+
+    def _cursor(self):
+        self.ensure_connection()
+        return DatabaseCursor(self.connection)
+
+    def _rollback(self):
+        pass
+
+    def _set_autocommit(self, autocommit):
+        pass
+
+    def add_s(self, dn, modlist):
+        cursor = self._cursor()
+        return cursor.connection.add_s(dn, modlist)
+
+    def delete_s(self, dn):
+        cursor = self._cursor()
+        return cursor.connection.delete_s(dn)
+
+    def modify_s(self, dn, modlist):
+        cursor = self._cursor()
+        return cursor.connection.modify_s(dn, modlist)
+
+    def rename_s(self, dn, newrdn):
+        cursor = self._cursor()
+        return cursor.connection.rename_s(dn, newrdn)
+
+    def search_s(self, base, scope, filterstr='(objectClass=*)',
+                 attrlist=None):
+        cursor = self._cursor()
+        results = cursor.connection.search_s(base, scope, filterstr, attrlist)
+        output = []
+        for dn, attrs in results:
+            # skip referrals
+            if dn is not None:
+                output.append((dn, attrs))
+        return output
\ No newline at end of file
diff --git a/www/docker/ldapdb_fields.py b/www/docker/ldapdb_fields.py
new file mode 100644
index 0000000..099624f
--- /dev/null
+++ b/www/docker/ldapdb_fields.py
@@ -0,0 +1,207 @@
+# -*- coding: utf-8 -*-
+# This software is distributed under the two-clause BSD license.
+# Copyright (c) The django-ldapdb project
+
+from __future__ import unicode_literals
+
+from ldapdb import escape_ldap_filter
+import datetime
+from django.db.models import fields
+
+
+class CharField(fields.CharField):
+    def __init__(self, *args, **kwargs):
+        defaults = {'max_length': 200}
+        defaults.update(kwargs)
+        super(CharField, self).__init__(*args, **defaults)
+
+    def from_ldap(self, value, connection):
+        if len(value) == 0:
+            return ''
+        else:
+            return value[0].decode(connection.charset)
+
+    def get_db_prep_lookup(self, lookup_type, value, connection,
+                           prepared=False):
+        "Returns field's value prepared for database lookup."
+        if lookup_type == 'endswith':
+            return ["*%s" % escape_ldap_filter(value)]
+        elif lookup_type == 'startswith':
+            return ["%s*" % escape_ldap_filter(value)]
+        elif lookup_type in ['contains', 'icontains']:
+            return ["*%s*" % escape_ldap_filter(value)]
+        elif lookup_type == 'exact':
+            return [escape_ldap_filter(value)]
+        elif lookup_type == 'in':
+            return [escape_ldap_filter(v) for v in value]
+
+        raise TypeError("CharField has invalid lookup: %s" % lookup_type)
+
+    def get_db_prep_save(self, value, connection):
+        if not value:
+            return None
+        return [value.encode(connection.charset)]
+
+    def get_prep_lookup(self, lookup_type, value):
+        "Perform preliminary non-db specific lookup checks and conversions"
+        if lookup_type == 'endswith':
+            return "*%s" % escape_ldap_filter(value)
+        elif lookup_type == 'startswith':
+            return "%s*" % escape_ldap_filter(value)
+        elif lookup_type in ['contains', 'icontains']:
+            return "*%s*" % escape_ldap_filter(value)
+        elif lookup_type == 'exact':
+            return escape_ldap_filter(value)
+        elif lookup_type == 'in':
+            return [escape_ldap_filter(v) for v in value]
+
+        raise TypeError("CharField has invalid lookup: %s" % lookup_type)
+
+
+class ImageField(fields.Field):
+    def from_ldap(self, value, connection):
+        if len(value) == 0:
+            return ''
+        else:
+            return value[0]
+
+    def get_db_prep_lookup(self, lookup_type, value, connection,
+                           prepared=False):
+        "Returns field's value prepared for database lookup."
+        return [self.get_prep_lookup(lookup_type, value)]
+
+    def get_db_prep_save(self, value, connection):
+        if not value:
+            return None
+        return [value]
+
+    def get_prep_lookup(self, lookup_type, value):
+        "Perform preliminary non-db specific lookup checks and conversions"
+        raise TypeError("ImageField has invalid lookup: %s" % lookup_type)
+
+
+class IntegerField(fields.IntegerField):
+    def from_ldap(self, value, connection):
+        if len(value) == 0:
+            return 0
+        else:
+            return int(value[0])
+
+    def get_db_prep_lookup(self, lookup_type, value, connection,
+                           prepared=False):
+        "Returns field's value prepared for database lookup."
+        return [self.get_prep_lookup(lookup_type, value)]
+
+    def get_db_prep_save(self, value, connection):
+        if value is None:
+            return None
+        return [str(value).encode(connection.charset)]
+
+    def get_prep_lookup(self, lookup_type, value):
+        "Perform preliminary non-db specific lookup checks and conversions"
+        if lookup_type in ('exact', 'gte', 'lte'):
+            return value
+        raise TypeError("IntegerField has invalid lookup: %s" % lookup_type)
+
+
+class FloatField(fields.FloatField):
+    def from_ldap(self, value, connection):
+        if len(value) == 0:
+            return 0.0
+        else:
+            return float(value[0])
+
+    def get_db_prep_lookup(self, lookup_type, value, connection,
+                           prepared=False):
+        "Returns field's value prepared for database lookup."
+        return [self.get_prep_lookup(lookup_type, value)]
+
+    def get_db_prep_save(self, value, connection):
+        if value is None:
+            return None
+        return [str(value).encode(connection.charset)]
+
+    def get_prep_lookup(self, lookup_type, value):
+        "Perform preliminary non-db specific lookup checks and conversions"
+        if lookup_type in ('exact', 'gte', 'lte'):
+            return value
+        raise TypeError("FloatField has invalid lookup: %s" % lookup_type)
+
+
+class ListField(fields.Field):
+
+    def from_ldap(self, value, connection):
+        return [x.decode(connection.charset) for x in value]
+
+    def get_db_prep_lookup(self, lookup_type, value, connection,
+                           prepared=False):
+        "Returns field's value prepared for database lookup."
+        return [self.get_prep_lookup(lookup_type, value)]
+
+    def get_db_prep_save(self, value, connection):
+        if not value:
+            return None
+        return [x.encode(connection.charset) for x in value]
+
+    def get_prep_lookup(self, lookup_type, value):
+        "Perform preliminary non-db specific lookup checks and conversions"
+        if lookup_type == 'contains':
+            return escape_ldap_filter(value)
+        raise TypeError("ListField has invalid lookup: %s" % lookup_type)
+
+    def from_db_value(self, value, expression, connection, context):
+        if not value:
+            return []
+        return value
+
+    def to_python(self, value):
+        if not value:
+            return []
+        return value
+
+
+class DateField(fields.DateField):
+    """
+    A text field containing date, in specified format.
+    The format can be specified as 'format' argument, as strptime()
+    format string. It defaults to ISO8601 (%Y-%m-%d).
+
+    Note: 'lte' and 'gte' lookups are done string-wise. Therefore,
+    they will onlywork correctly on Y-m-d dates with constant
+    component widths.
+    """
+
+    def __init__(self, *args, **kwargs):
+        if 'format' in kwargs:
+            self._date_format = kwargs.pop('format')
+        else:
+            self._date_format = '%Y-%m-%d'
+        super(DateField, self).__init__(*args, **kwargs)
+
+    def from_ldap(self, value, connection):
+        if len(value) == 0:
+            return None
+        else:
+            return datetime.datetime.strptime(value[0],
+                                              self._date_format).date()
+
+    def get_db_prep_lookup(self, lookup_type, value, connection,
+                           prepared=False):
+        "Returns field's value prepared for database lookup."
+        return [self.get_prep_lookup(lookup_type, value)]
+
+    def get_db_prep_save(self, value, connection):
+        if not value:
+            return None
+        if not isinstance(value, datetime.date) \
+                and not isinstance(value, datetime.datetime):
+            raise ValueError(
+                'DateField can be only set to a datetime.date instance')
+
+        return [value.strftime(self._date_format)]
+
+    def get_prep_lookup(self, lookup_type, value):
+        "Perform preliminary non-db specific lookup checks and conversions"
+        if lookup_type in ('exact',):
+            return value
+        raise TypeError("DateField has invalid lookup: %s" % lookup_type)
\ No newline at end of file
diff --git a/www/nginx/nginx_warpinfra.conf b/www/nginx/nginx_warpinfra.conf
new file mode 100644
index 0000000..d5bb926
--- /dev/null
+++ b/www/nginx/nginx_warpinfra.conf
@@ -0,0 +1,39 @@
+upstream django {
+    server unix:///tmp/warpinfra.sock;
+}
+
+server {
+    listen      80;
+    return 301 https://$host$request_uri;
+}
+
+# configuration of the server
+server {
+
+    listen      443;
+    server_name _;
+    charset     utf-8;
+    
+    
+    ssl    on;
+    ssl_certificate         /opt/nginx/warpinfra.crt;
+    ssl_certificate_key     /opt/nginx/warpinfra.key;
+
+    # max upload size
+    client_max_body_size 100M;   # adjust to taste
+
+    # Django media
+#    location /media  {
+#        alias /opt/flaghunter/media;  # your Django project's media files - amend as required
+#    }
+
+    location /static {
+        alias /opt/warpinfra/static; # your Django project's static files - amend as required
+    }
+
+    # Finally, send all non-media requests to the Django server.
+    location / {
+        uwsgi_pass  django;
+        include     /opt/nginx/uwsgi_params; # the uwsgi_params file you installed
+    }
+}
diff --git a/web/uwsgi.ini b/www/nginx/uwsgi.ini
similarity index 87%
rename from web/uwsgi.ini
rename to www/nginx/uwsgi.ini
index f853769..cac057f 100644
--- a/web/uwsgi.ini
+++ b/www/nginx/uwsgi.ini
@@ -4,7 +4,7 @@ module=warpzone.wsgi:application
 master=True
 pidfile=/tmp/warpinfra.pid
 vacuum=True
-socket=0.0.0.0:8000
+socket=/tmp/warpinfra.sock
 max-requests=5000
 daemonize=/var/log/uwsgi.log
 processes       = 10
diff --git a/www/nginx/uwsgi_params b/www/nginx/uwsgi_params
new file mode 100644
index 0000000..d26f2ff
--- /dev/null
+++ b/www/nginx/uwsgi_params
@@ -0,0 +1,16 @@
+uwsgi_param  QUERY_STRING       $query_string;
+uwsgi_param  REQUEST_METHOD     $request_method;
+uwsgi_param  CONTENT_TYPE       $content_type;
+uwsgi_param  CONTENT_LENGTH     $content_length;
+
+uwsgi_param  REQUEST_URI        $request_uri;
+uwsgi_param  PATH_INFO          $document_uri;
+uwsgi_param  DOCUMENT_ROOT      $document_root;
+uwsgi_param  SERVER_PROTOCOL    $server_protocol;
+uwsgi_param  REQUEST_SCHEME     $scheme;
+uwsgi_param  HTTPS              $https if_not_empty;
+
+uwsgi_param  REMOTE_ADDR        $remote_addr;
+uwsgi_param  REMOTE_PORT        $remote_port;
+uwsgi_param  SERVER_PORT        $server_port;
+uwsgi_param  SERVER_NAME        $server_name;
\ No newline at end of file
diff --git a/www/nginx/warpinfra.crt b/www/nginx/warpinfra.crt
new file mode 100644
index 0000000..57cf97f
--- /dev/null
+++ b/www/nginx/warpinfra.crt
@@ -0,0 +1,33 @@
+-----BEGIN CERTIFICATE-----
+MIIFrTCCA5WgAwIBAgIJAKzK6RrFSz83MA0GCSqGSIb3DQEBCwUAMG0xCzAJBgNV
+BAYTAkRFMQwwCgYDVQQIDANOUlcxETAPBgNVBAcMCE11ZW5zdGVyMRIwEAYDVQQK
+DAlJVFNlY1RlYW0xEzARBgNVBAsMCkZsYWdIdW50ZXIxFDASBgNVBAMMC2ZsYWcu
+aHVudGVyMB4XDTE1MTEyMDE5MTQ1OVoXDTE2MTExOTE5MTQ1OVowbTELMAkGA1UE
+BhMCREUxDDAKBgNVBAgMA05SVzERMA8GA1UEBwwITXVlbnN0ZXIxEjAQBgNVBAoM
+CUlUU2VjVGVhbTETMBEGA1UECwwKRmxhZ0h1bnRlcjEUMBIGA1UEAwwLZmxhZy5o
+dW50ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC7toPOwQ1Xcqwk
+VJItQC8wifoGeNk/E0k52XYVhvxXsZZI90n3CBp4LEIUMB6tPBwZ/mpI83hUu29f
+yWkD1iexWFQF5uJJr4IlAjKjznYuvi7EzbNAQsFTmOYRvmTSVvnONx1PpZFRGEt8
+d4AmeztCMtk9JCV45xPeh7T00mxq7okOFsfrIlKfi7q0N5X1neMK4hgOuRqR+TE3
+MJvcsCKzIi/g1hvrly48OZqhnoBeQZHxbuT2i+jyl56sBjHqRswFxxBOwifEBNsP
+V27Q9LWAi6tF1+RU6YYtfD4/en9sLEZ9y9U+Ch9kL82EaScIh234Sxb7VevAdJ3K
+b+sL3Vum3JaOwejhTbzMtl2JkTy7knR2PUFW4ZA85MvE6/IChFoYSHVM/rsbUESn
+nu08qAQ7AF2Yj/+sPCqc1BUEXxO6qYFeX+yXx4Fbl29xu3d5evbc2CHjVqGuGRyv
+2V7XkuUHhvLmYV8AVUFHp1yLxhEZsMl4eSoPjVnNmY/WoljJeNjC7XmHwllsvqJt
+59meh7FkD28DPducKnjfsKElqbc5pjeVi24302nHTS41eExalgHCd07j2sQVjXgF
+C3BUP2Jl+tU2QV5/jRH2GCLMkhEwP/lPdK5usS9jXhJo0sb56M1ak4ECfavrxHHh
+TSmgD9IaqP0ChOVIZ04DuxYxX2MURQIDAQABo1AwTjAdBgNVHQ4EFgQUC/Jkv7Vf
+f/VAeY8zrBqvyWe+L4cwHwYDVR0jBBgwFoAUC/Jkv7Vff/VAeY8zrBqvyWe+L4cw
+DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAeTtgmsIFI6LgxbyAIc/8
+dZXmP9DKXZkv17UEAKoJC/d+IOqDogXoeRhbo2cLmIXCE5cmhp+xsXZnxke4Oq39
+az6eBlcwaPUUTlzP5MiIqDpzbhi6sjQhp5FmH2/RtFkVzjpNm2NP+7IW1lAxx3is
+qxXBCVXYXmiHL6rW5BwNrlGDqwUhFDVZJL4QIBENqwMC7qTubYiukBdaqWz8uTYs
+WFOo73fYqG/SNbFifq78czTRoXTTr085Yxnprr4whuqTPpmBd42IUzOxRHF5ICPX
+316S6X3b65mTzzz15p1KquUe+VsULnUZTtOOeyIqpm8VWSu4EoKK0c2w8bZkgImR
+ttAMRnA4S00ZuhQ1CnJgMX/54krJWdswJH7O+fTsu7A7jy2PhADbyhPx61pVyH2H
+zYm+7RPlvGgdkqvdyO6EeZN1RRIPkyUb+6bbCwHPIDRc+DXh5dq4w0wN7vctMMri
+eo+OrxK97O4egmg67J3XCYBCmPsnH0vaV/UTOgmyeo7Y8NqMulUOCVz1PhidW0r2
+M7dRB7958G6Z1tuuFXr0Y+88RDyTHdu9XqCLHjLAjF2PIqhPHZ59KnHVmb4bWICK
+4D3rdOS0woeiXCxUQxekBh8ZMBIzyeUONrkYykBwV5sZrMZt26GGMlNyJ7uYcFzW
+MsRX8eO4RytlNdVSGVSrLpQ=
+-----END CERTIFICATE-----
diff --git a/www/nginx/warpinfra.key b/www/nginx/warpinfra.key
new file mode 100644
index 0000000..fb31d8d
--- /dev/null
+++ b/www/nginx/warpinfra.key
@@ -0,0 +1,52 @@
+-----BEGIN PRIVATE KEY-----
+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
+su7ZYG7K5L+RRjrWZagNh8X2s6qeaA==
+-----END PRIVATE KEY-----
diff --git a/www/run.sh b/www/run.sh
new file mode 100644
index 0000000..5924b83
--- /dev/null
+++ b/www/run.sh
@@ -0,0 +1,11 @@
+docker kill warpinfra
+docker rm warpinfra
+
+docker run \
+	-v /opt/warpzone/www/web:/opt/warpinfra \
+        -v /opt/warpzone/www/nginx:/opt/nginx \
+	--link ldap-service:ldap \
+	--name warpinfra \
+	-p 8000:443 \
+	-itd \
+	warpinfra
diff --git a/www/web/.idea/.name b/www/web/.idea/.name
new file mode 100644
index 0000000..6f3439a
--- /dev/null
+++ b/www/web/.idea/.name
@@ -0,0 +1 @@
+web
\ No newline at end of file
diff --git a/www/web/.idea/deployment.xml b/www/web/.idea/deployment.xml
new file mode 100644
index 0000000..2c45a15
--- /dev/null
+++ b/www/web/.idea/deployment.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="PublishConfigData" autoUpload="Always" serverName="localUbbuntu">
+    <serverData>
+      <paths name="localUbbuntu">
+        <serverdata>
+          <mappings>
+            <mapping deploy="web" local="$PROJECT_DIR$" web="/" />
+          </mappings>
+        </serverdata>
+      </paths>
+      <paths name="s1WARP">
+        <serverdata>
+          <mappings>
+            <mapping deploy="/warpauth" local="$PROJECT_DIR$" web="/" />
+          </mappings>
+        </serverdata>
+      </paths>
+    </serverData>
+    <option name="myAutoUpload" value="ALWAYS" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/www/web/.idea/dictionaries/dresen.xml b/www/web/.idea/dictionaries/dresen.xml
new file mode 100644
index 0000000..c1e15a4
--- /dev/null
+++ b/www/web/.idea/dictionaries/dresen.xml
@@ -0,0 +1,24 @@
+<component name="ProjectDictionaryState">
+  <dictionary name="dresen">
+    <words>
+      <w>backends</w>
+      <w>bootstrapform</w>
+      <w>clickjacking</w>
+      <w>csrf</w>
+      <w>dyhost</w>
+      <w>howto</w>
+      <w>insp</w>
+      <w>ldapdb</w>
+      <w>passwd</w>
+      <w>sqlite</w>
+      <w>startproject</w>
+      <w>tabpanel</w>
+      <w>ubwued</w>
+      <w>warpauth</w>
+      <w>warpfood</w>
+      <w>warpmain</w>
+      <w>warpzone</w>
+      <w>wsgi</w>
+    </words>
+  </dictionary>
+</component>
\ No newline at end of file
diff --git a/www/web/.idea/inspectionProfiles/Project_Default.xml b/www/web/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..ac21435
--- /dev/null
+++ b/www/web/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,6 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="PyInterpreterInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+  </profile>
+</component>
\ No newline at end of file
diff --git a/www/web/.idea/inspectionProfiles/profiles_settings.xml b/www/web/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..3b31283
--- /dev/null
+++ b/www/web/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,7 @@
+<component name="InspectionProjectProfileManager">
+  <settings>
+    <option name="PROJECT_PROFILE" value="Project Default" />
+    <option name="USE_PROJECT_PROFILE" value="true" />
+    <version value="1.0" />
+  </settings>
+</component>
\ No newline at end of file
diff --git a/www/web/.idea/misc.xml b/www/web/.idea/misc.xml
new file mode 100644
index 0000000..977ffde
--- /dev/null
+++ b/www/web/.idea/misc.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectLevelVcsManager" settingsEditedManually="false">
+    <OptionsSetting value="true" id="Add" />
+    <OptionsSetting value="true" id="Remove" />
+    <OptionsSetting value="true" id="Checkout" />
+    <OptionsSetting value="true" id="Update" />
+    <OptionsSetting value="true" id="Status" />
+    <OptionsSetting value="true" id="Edit" />
+    <ConfirmationsSetting value="0" id="Add" />
+    <ConfirmationsSetting value="0" id="Remove" />
+  </component>
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 2.7.3 (C:\Python27\python.exe)" project-jdk-type="Python SDK" />
+</project>
\ No newline at end of file
diff --git a/www/web/.idea/modules.xml b/www/web/.idea/modules.xml
new file mode 100644
index 0000000..f589ca3
--- /dev/null
+++ b/www/web/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/web.iml" filepath="$PROJECT_DIR$/.idea/web.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/www/web/.idea/vcs.xml b/www/web/.idea/vcs.xml
new file mode 100644
index 0000000..6564d52
--- /dev/null
+++ b/www/web/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/www/web/.idea/web.iml b/www/web/.idea/web.iml
new file mode 100644
index 0000000..36d59bf
--- /dev/null
+++ b/www/web/.idea/web.iml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="django" name="Django">
+      <configuration>
+        <option name="rootFolder" value="$MODULE_DIR$" />
+        <option name="settingsModule" value="warpauth/settings.py" />
+        <option name="manageScript" value="manage.py" />
+        <option name="environment" value="&lt;map/&gt;" />
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="jdk" jdkName="Python 2.7.3 (C:\Python27\python.exe)" jdkType="Python SDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+  <component name="TemplatesService">
+    <option name="TEMPLATE_CONFIGURATION" value="Django" />
+    <option name="TEMPLATE_FOLDERS">
+      <list>
+        <option value="$MODULE_DIR$/warpauthWeb/templates" />
+      </list>
+    </option>
+  </component>
+</module>
\ No newline at end of file
diff --git a/www/web/.idea/workspace.xml b/www/web/.idea/workspace.xml
new file mode 100644
index 0000000..3b90aa7
--- /dev/null
+++ b/www/web/.idea/workspace.xml
@@ -0,0 +1,962 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AnalysisUIOptions">
+    <option name="SCOPE_TYPE" value="3" />
+  </component>
+  <component name="ChangeListManager">
+    <list default="true" id="a5a69002-7777-4433-b658-71ade1ab645a" name="Default" comment="" />
+    <ignored path="web.iws" />
+    <ignored path=".idea/workspace.xml" />
+    <ignored path=".idea/dataSources.local.xml" />
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <option name="TRACKING_ENABLED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
+  <component name="CreatePatchCommitExecutor">
+    <option name="PATCH_PATH" value="" />
+  </component>
+  <component name="DatabaseView">
+    <option name="FLATTEN" value="false" />
+    <option name="GROUP_BY_TYPE" value="true" />
+    <option name="SORT_CHILDREN" value="false" />
+    <option name="SHOW_TABLE_CONSTRAINTS" value="true" />
+  </component>
+  <component name="DjangoConsoleOptions" custom-start-script="import sys; print('Python %s on %s' % (sys.version, sys.platform))&#10;import django; print('Django %s' % django.get_version())&#10;sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])&#10;if 'setup' in dir(django): django.setup()&#10;import django_manage_shell; django_manage_shell.run(PROJECT_ROOT)">
+    <option name="myCustomStartScript" value="import sys; print('Python %s on %s' % (sys.version, sys.platform))&#10;import django; print('Django %s' % django.get_version())&#10;sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])&#10;if 'setup' in dir(django): django.setup()&#10;import django_manage_shell; django_manage_shell.run(PROJECT_ROOT)" />
+  </component>
+  <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
+  <component name="FavoritesManager">
+    <favorites_list name="web" />
+  </component>
+  <component name="FileEditorManager">
+    <leaf>
+      <file leaf-file-name="models.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/warppay/models.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.0">
+              <caret line="21" column="26" selection-start-line="21" selection-start-column="6" selection-end-line="21" selection-end-column="26" />
+              <folding>
+                <element signature="e#0#39#0" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="urls.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/warpzone/urls.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.0">
+              <caret line="11" column="30" selection-start-line="11" selection-start-column="30" selection-end-line="11" selection-end-column="30" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="views.py" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/warppay/views.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.5707434">
+              <caret line="28" column="12" selection-start-line="28" selection-start-column="12" selection-end-line="28" selection-end-column="12" />
+              <folding>
+                <element signature="e#0#36#0" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="urls.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/warppay/urls.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.0">
+              <caret line="5" column="42" selection-start-line="5" selection-start-column="42" selection-end-line="5" selection-end-column="42" />
+              <folding>
+                <element signature="e#0#41#0" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
+  </component>
+  <component name="FileTemplateManagerImpl">
+    <option name="RECENT_TEMPLATES">
+      <list>
+        <option value="Html5" />
+        <option value="Python Script" />
+      </list>
+    </option>
+  </component>
+  <component name="IdeDocumentHistory">
+    <option name="CHANGED_PATHS">
+      <list>
+        <option value="$PROJECT_DIR$/warpauth/templates/warpauth/profile/change_password.html" />
+        <option value="$PROJECT_DIR$/warpauth/templates/warpauth/about.html" />
+        <option value="$PROJECT_DIR$/warpzone/ldap_settings.py" />
+        <option value="$PROJECT_DIR$/templates/media/chart_js/vendor/Chart.js" />
+        <option value="$PROJECT_DIR$/warpauth/ldap_connector.py" />
+        <option value="$PROJECT_DIR$/warpauth/views/main.py" />
+        <option value="$PROJECT_DIR$/warpauth/util.py" />
+        <option value="$PROJECT_DIR$/warpauth/views/reset_password.py" />
+        <option value="$PROJECT_DIR$/warpauth/admin.py" />
+        <option value="$PROJECT_DIR$/warpfood/admin.py" />
+        <option value="$PROJECT_DIR$/warpfood/models.py" />
+        <option value="$PROJECT_DIR$/warpfood/util.py" />
+        <option value="$PROJECT_DIR$/warpauth/views/admin/__init__.py" />
+        <option value="$PROJECT_DIR$/templates/admin_base.html" />
+        <option value="$PROJECT_DIR$/templates/media/css/sidenav.css" />
+        <option value="$PROJECT_DIR$/warpauth/templates/warpauth/admin/dashboard.html" />
+        <option value="$PROJECT_DIR$/warpauth/views/admin/dashboard.py" />
+        <option value="$PROJECT_DIR$/warpmain/views.py" />
+        <option value="$PROJECT_DIR$/warpmain/views/main.py" />
+        <option value="$PROJECT_DIR$/warpmain/templates/warpmain/admin/news.html" />
+        <option value="$PROJECT_DIR$/warpmain/views/admin/dashboard.py" />
+        <option value="$PROJECT_DIR$/warpmain/models.py" />
+        <option value="$PROJECT_DIR$/warpmain/admin.py" />
+        <option value="$PROJECT_DIR$/warpmain/templates/warpmain/admin/news_list.html" />
+        <option value="$PROJECT_DIR$/warpmain/urls.py" />
+        <option value="$PROJECT_DIR$/warpmain/views/admin/news.py" />
+        <option value="$PROJECT_DIR$/warpauth/templates/warpauth/profile/information.html" />
+        <option value="$PROJECT_DIR$/warpauth/views/login.py" />
+        <option value="$PROJECT_DIR$/warpauth/urls.py" />
+        <option value="$PROJECT_DIR$/warpauth/models.py" />
+        <option value="$PROJECT_DIR$/warpauth/views/profile.py" />
+        <option value="$PROJECT_DIR$/warpauth/views/register.py" />
+        <option value="$PROJECT_DIR$/warpfood/views.py" />
+        <option value="$PROJECT_DIR$/warpfood/templates/warpfood/main.html" />
+        <option value="$PROJECT_DIR$/warpfood/templates/warpfood/view.html" />
+        <option value="$PROJECT_DIR$/templates/base.html" />
+        <option value="$PROJECT_DIR$/warpmain/templates/warpmain/about.html" />
+        <option value="$PROJECT_DIR$/warpmain/templates/warpmain/main.html" />
+        <option value="$PROJECT_DIR$/warpauth/templates/warpauth/register.html" />
+        <option value="$PROJECT_DIR$/warpauth/templates/warpauth/login.html" />
+        <option value="$PROJECT_DIR$/warpauth/templates/warpauth/profile.html" />
+        <option value="$PROJECT_DIR$/warpauth/templates/warpauth/reset_password/change_password.html" />
+        <option value="$PROJECT_DIR$/warpauth/templates/warpauth/reset_password/token_gen.html" />
+        <option value="$PROJECT_DIR$/warppay/apps.py" />
+        <option value="$PROJECT_DIR$/warppay/views/main.py" />
+        <option value="$PROJECT_DIR$/warpzone/settings.py" />
+        <option value="$PROJECT_DIR$/warppay/admin.py" />
+        <option value="$PROJECT_DIR$/warpzone/urls.py" />
+        <option value="$PROJECT_DIR$/warppay/urls.py" />
+        <option value="$PROJECT_DIR$/warppay/models.py" />
+        <option value="$PROJECT_DIR$/warppay/views.py" />
+      </list>
+    </option>
+  </component>
+  <component name="JsBuildToolGruntFileManager" detection-done="true" />
+  <component name="JsGulpfileManager">
+    <detection-done>true</detection-done>
+  </component>
+  <component name="NamedScopeManager">
+    <order />
+  </component>
+  <component name="ProjectFrameBounds">
+    <option name="x" value="1" />
+    <option name="y" value="1" />
+    <option name="width" value="1918" />
+    <option name="height" value="1044" />
+  </component>
+  <component name="ProjectLevelVcsManager" settingsEditedManually="false">
+    <OptionsSetting value="true" id="Add" />
+    <OptionsSetting value="true" id="Remove" />
+    <OptionsSetting value="true" id="Checkout" />
+    <OptionsSetting value="true" id="Update" />
+    <OptionsSetting value="true" id="Status" />
+    <OptionsSetting value="true" id="Edit" />
+    <ConfirmationsSetting value="0" id="Add" />
+    <ConfirmationsSetting value="0" id="Remove" />
+  </component>
+  <component name="ProjectView">
+    <navigator currentView="ProjectPane" proportions="" version="1">
+      <flattenPackages />
+      <showMembers />
+      <showModules />
+      <showLibraryContents />
+      <hideEmptyPackages />
+      <abbreviatePackageNames />
+      <autoscrollToSource />
+      <autoscrollFromSource />
+      <sortByType />
+    </navigator>
+    <panes>
+      <pane id="ProjectPane">
+        <subPane>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="web" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="web" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="web" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="web" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="web" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="warpzone" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="web" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="web" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="warppay" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="web" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="web" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="warpmain" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+        </subPane>
+      </pane>
+      <pane id="Scope" />
+      <pane id="Scratches" />
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
+    <property name="WebServerToolWindowFactoryState" value="true" />
+    <property name="recentsLimit" value="5" />
+    <property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" />
+    <property name="settings.editor.splitter.proportion" value="0.2" />
+    <property name="DefaultHtmlFileTemplate" value="Html5" />
+    <property name="FullScreen" value="false" />
+    <property name="restartRequiresConfirmation" value="true" />
+  </component>
+  <component name="RecentsManager">
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="C:\Users\Chris\Documents\git\warpzone\warpauth\web" />
+      <recent name="C:\Users\Chris\Documents\git\warpzone\warpauth\web\warpmain" />
+      <recent name="C:\Users\Chris\Documents\git\warpzone\warpauth\web\warpmain\templates\warpmain" />
+      <recent name="C:\Users\Chris\Documents\git\warpzone\warpauth\web\templates\media\css" />
+      <recent name="C:\Users\Chris\Documents\git\warpzone\warpauth\web\warpauth\views\admin" />
+    </key>
+    <key name="MoveFile.RECENT_KEYS">
+      <recent name="C:\Users\Chris\Documents\git\warpzone\warpauth\web\templates\media" />
+      <recent name="C:\Users\Chris\Documents\git\warpzone\warpauth\web\warpauth\templates\warpauth\profile" />
+      <recent name="C:\Users\Chris\Documents\git\warpzone\warpauth\web\warpauth\templates\warpauth" />
+      <recent name="C:\Users\Chris\Documents\git\warpzone\warpauth\web\warpfood\templates\warpfood" />
+      <recent name="C:\Users\Chris\Documents\git\warpzone\warpauth\web\warpfood\templates" />
+    </key>
+  </component>
+  <component name="RunManager" selected="Django server.web">
+    <configuration default="true" type="DjangoTestsConfigurationType" factoryName="Django tests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="web" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="TARGET" value="" />
+      <option name="SETTINGS_FILE" value="" />
+      <option name="CUSTOM_SETTINGS" value="false" />
+      <option name="USE_OPTIONS" value="false" />
+      <option name="OPTIONS" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
+      <method />
+    </configuration>
+    <configuration default="true" type="PyBehaveRunConfigurationType" factoryName="Behave">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="web" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="ADDITIONAL_ARGS" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="PyLettuceRunConfigurationType" factoryName="Lettuce">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="web" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="ADDITIONAL_ARGS" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="Python.DjangoServer" factoryName="Django server">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="web" />
+      <option name="launchJavascriptDebuger" value="false" />
+      <option name="port" value="8000" />
+      <option name="host" value="" />
+      <option name="additionalOptions" value="" />
+      <option name="browserUrl" value="" />
+      <option name="runTestServer" value="false" />
+      <option name="runNoReload" value="false" />
+      <option name="useCustomRunCommand" value="false" />
+      <option name="customRunCommand" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="PythonConfigurationType" factoryName="Python">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="web" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
+      <node-options />
+      <gulpfile />
+      <tasks />
+      <arguments />
+      <pass-parent-envs>true</pass-parent-envs>
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Attests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="web" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Doctests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="web" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Nosetests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="web" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="PARAMS" value="" />
+      <option name="USE_PARAM" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Unittests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="web" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="PUREUNITTEST" value="true" />
+      <option name="PARAMS" value="" />
+      <option name="USE_PARAM" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="py.test">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="web" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="testToRun" value="" />
+      <option name="keywords" value="" />
+      <option name="params" value="" />
+      <option name="USE_PARAM" value="false" />
+      <option name="USE_KEYWORD" value="false" />
+      <method />
+    </configuration>
+    <configuration default="false" name="web" type="Python.DjangoServer" factoryName="Django server">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="C:\Python34\python.exe" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="web" />
+      <option name="launchJavascriptDebuger" value="false" />
+      <option name="port" value="8000" />
+      <option name="host" value="" />
+      <option name="additionalOptions" value="" />
+      <option name="browserUrl" value="" />
+      <option name="runTestServer" value="false" />
+      <option name="runNoReload" value="false" />
+      <option name="useCustomRunCommand" value="false" />
+      <option name="customRunCommand" value="" />
+      <method />
+    </configuration>
+    <list size="1">
+      <item index="0" class="java.lang.String" itemvalue="Django server.web" />
+    </list>
+  </component>
+  <component name="ShelveChangesManager" show_recycled="false" />
+  <component name="SvnConfiguration">
+    <configuration />
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="a5a69002-7777-4433-b658-71ade1ab645a" name="Default" comment="" />
+      <created>1447875511859</created>
+      <option name="number" value="Default" />
+      <updated>1447875511859</updated>
+    </task>
+    <servers />
+  </component>
+  <component name="TodoView">
+    <todo-panel id="selected-file">
+      <is-autoscroll-to-source value="true" />
+    </todo-panel>
+    <todo-panel id="all">
+      <are-packages-shown value="true" />
+      <is-autoscroll-to-source value="true" />
+    </todo-panel>
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="1" y="1" width="1918" height="1044" extended-state="0" />
+    <editor active="false" />
+    <layout>
+      <window_info id="Remote Host" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.31135136" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3201804" sideWeight="0.5235294" order="6" side_tool="true" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3201804" sideWeight="0.5235294" order="7" side_tool="true" content_ui="tabs" />
+      <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
+      <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32994652" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="GitLabIntegration" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" />
+      <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32919955" sideWeight="0.49786097" order="10" side_tool="false" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24973261" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
+      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="File Transfer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.3201804" sideWeight="0.4764706" order="9" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Django errors" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32932165" sideWeight="0.49786097" order="14" side_tool="false" content_ui="tabs" />
+      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32822758" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+    </layout>
+  </component>
+  <component name="Vcs.Log.UiProperties">
+    <option name="RECENTLY_FILTERED_USER_GROUPS">
+      <collection />
+    </option>
+    <option name="RECENTLY_FILTERED_BRANCH_GROUPS">
+      <collection />
+    </option>
+  </component>
+  <component name="VcsContentAnnotationSettings">
+    <option name="myLimit" value="2678400000" />
+  </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager>
+      <breakpoints>
+        <line-breakpoint enabled="true" type="python-line">
+          <url>file://$PROJECT_DIR$/warpfood/urls.py</url>
+          <option name="timeStamp" value="1" />
+        </line-breakpoint>
+      </breakpoints>
+      <option name="time" value="9" />
+    </breakpoint-manager>
+    <watches-manager />
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/warppay/urls.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="5" column="42" selection-start-line="5" selection-start-column="42" selection-end-line="5" selection-end-column="42" />
+          <folding>
+            <element signature="e#0#41#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpmain/templates/warpmain/admin/dashboard.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpmain/tests.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpmain/views/admin/__init__.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpmain/views/__init__.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpauth/admin.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.26842105">
+          <caret line="9" column="0" selection-start-line="9" selection-start-column="0" selection-end-line="12" selection-end-column="12" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/templates/media/css/bootstrap.min.css">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.33333334">
+          <caret line="4" column="15952" selection-start-line="4" selection-start-column="15945" selection-end-line="4" selection-end-column="15952" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/templates/media/css/bootstrap-theme.css">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpfood/util.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="11" column="0" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpmain/views/admin/dashboard.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="8" column="49" selection-start-line="8" selection-start-column="49" selection-end-line="8" selection-end-column="49" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpmain/views/main.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="9" column="4" selection-start-line="9" selection-start-column="4" selection-end-line="9" selection-end-column="57" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpmain/apps.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpmain/admin.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="5" column="0" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpmain/views/admin/news.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.05964912">
+          <caret line="6" column="21" selection-start-line="6" selection-start-column="21" selection-end-line="6" selection-end-column="21" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/templates/media/warpzone_small.png">
+      <provider selected="true" editor-type-id="images">
+        <state />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpmain/templates/warpmain/admin/news.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.53125">
+          <caret line="17" column="14" selection-start-line="5" selection-start-column="7" selection-end-line="17" selection-end-column="14" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpauth/util.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.11929824">
+          <caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpmain/models.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.3877193">
+          <caret line="16" column="0" selection-start-line="16" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpauth/views/login.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="22" column="32" selection-start-line="22" selection-start-column="32" selection-end-line="22" selection-end-column="32" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpauth/views/profile.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="-0.7">
+          <caret line="13" column="0" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="43" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpauth/views/register.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.13508771">
+          <caret line="14" column="0" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpauth/templates/warpauth/profile/information.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.25">
+          <caret line="8" column="59" selection-start-line="8" selection-start-column="59" selection-end-line="8" selection-end-column="59" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpauth/urls.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.05964912">
+          <caret line="2" column="0" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpauth/models.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.3140351">
+          <caret line="23" column="32" selection-start-line="23" selection-start-column="32" selection-end-line="23" selection-end-column="32" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpauth/tests.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpfood/tests.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpfood/urls.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.11929824">
+          <caret line="5" column="4" selection-start-line="5" selection-start-column="4" selection-end-line="5" selection-end-column="46" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpfood/models.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="38" column="10" selection-start-line="38" selection-start-column="4" selection-end-line="38" selection-end-column="10" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/templates/base.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="-8.5">
+          <caret line="16" column="57" selection-start-line="16" selection-start-column="57" selection-end-line="16" selection-end-column="57" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpfood/templates/warpfood/view.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="-3.2692308">
+          <caret line="5" column="0" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="56" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpfood/templates/warpfood/main.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.15625">
+          <caret line="5" column="0" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="56" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpfood/views.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.50701755">
+          <caret line="26" column="58" selection-start-line="26" selection-start-column="58" selection-end-line="26" selection-end-column="58" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpmain/templates/warpmain/about.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="-2.6153846">
+          <caret line="4" column="58" selection-start-line="4" selection-start-column="8" selection-end-line="4" selection-end-column="58" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpmain/templates/warpmain/main.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="-3.2692308">
+          <caret line="5" column="25" selection-start-line="5" selection-start-column="8" selection-end-line="5" selection-end-column="25" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpauth/templates/warpauth/login.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0625">
+          <caret line="2" column="32" selection-start-line="2" selection-start-column="32" selection-end-line="2" selection-end-column="32" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpauth/templates/warpauth/profile.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="-3.9230769">
+          <caret line="6" column="63" selection-start-line="6" selection-start-column="63" selection-end-line="6" selection-end-column="63" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpauth/templates/warpauth/register.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="-1.3076923">
+          <caret line="2" column="0" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="57" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpauth/templates/warpauth/reset_password/change_password.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="-1.3076923">
+          <caret line="2" column="0" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="59" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpauth/templates/warpauth/reset_password/token_gen.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="-4.576923">
+          <caret line="7" column="35" selection-start-line="7" selection-start-column="30" selection-end-line="7" selection-end-column="35" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpauth/views/reset_password.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="1.7298245">
+          <caret line="71" column="33" selection-start-line="71" selection-start-column="33" selection-end-line="71" selection-end-column="33" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/manage.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warppay/apps.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="4" column="19" selection-start-line="4" selection-start-column="19" selection-end-line="4" selection-end-column="19" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warppay/tests.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warppay/templates/warppay/main.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpzone/settings.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="192" column="1" selection-start-line="192" selection-start-column="1" selection-end-line="192" selection-end-column="1" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpmain/urls.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.32807016">
+          <caret line="11" column="11" selection-start-line="11" selection-start-column="11" selection-end-line="11" selection-end-column="31" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warppay/admin.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warpzone/urls.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="11" column="30" selection-start-line="11" selection-start-column="30" selection-end-line="11" selection-end-column="30" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warppay/models.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="21" column="26" selection-start-line="21" selection-start-column="6" selection-end-line="21" selection-end-column="26" />
+          <folding>
+            <element signature="e#0#39#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warppay/views.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.5707434">
+          <caret line="28" column="12" selection-start-line="28" selection-start-column="12" selection-end-line="28" selection-end-column="12" />
+          <folding>
+            <element signature="e#0#36#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/warppay/urls.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0">
+          <caret line="5" column="42" selection-start-line="5" selection-start-column="42" selection-end-line="5" selection-end-column="42" />
+          <folding>
+            <element signature="e#0#41#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+  </component>
+</project>
\ No newline at end of file
diff --git a/web/LICENSE b/www/web/LICENSE
similarity index 100%
rename from web/LICENSE
rename to www/web/LICENSE
diff --git a/web/manage.py b/www/web/manage.py
similarity index 100%
rename from web/manage.py
rename to www/web/manage.py
diff --git a/www/web/static/admin/css/base.css b/www/web/static/admin/css/base.css
new file mode 100644
index 0000000..a37555a
--- /dev/null
+++ b/www/web/static/admin/css/base.css
@@ -0,0 +1,967 @@
+/*
+    DJANGO Admin styles
+*/
+
+@import url(fonts.css);
+
+body {
+    margin: 0;
+    padding: 0;
+    font-size: 14px;
+    font-family: "Roboto","Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif;
+    color: #333;
+    background: #fff;
+}
+
+/* LINKS */
+
+a:link, a:visited {
+    color: #447e9b;
+    text-decoration: none;
+}
+
+a:focus, a:hover {
+    color: #036;
+}
+
+a:focus {
+    text-decoration: underline;
+}
+
+a img {
+    border: none;
+}
+
+a.section:link, a.section:visited {
+    color: #fff;
+    text-decoration: none;
+}
+
+a.section:focus, a.section:hover {
+    text-decoration: underline;
+}
+
+/* GLOBAL DEFAULTS */
+
+p, ol, ul, dl {
+    margin: .2em 0 .8em 0;
+}
+
+p {
+    padding: 0;
+    line-height: 140%;
+}
+
+h1,h2,h3,h4,h5 {
+    font-weight: bold;
+}
+
+h1 {
+    margin: 0 0 20px;
+    font-weight: 300;
+    font-size: 20px;
+    color: #666;
+}
+
+h2 {
+    font-size: 16px;
+    margin: 1em 0 .5em 0;
+}
+
+h2.subhead {
+    font-weight: normal;
+    margin-top: 0;
+}
+
+h3 {
+    font-size: 14px;
+    margin: .8em 0 .3em 0;
+    color: #666;
+    font-weight: bold;
+}
+
+h4 {
+    font-size: 12px;
+    margin: 1em 0 .8em 0;
+    padding-bottom: 3px;
+}
+
+h5 {
+    font-size: 10px;
+    margin: 1.5em 0 .5em 0;
+    color: #666;
+    text-transform: uppercase;
+    letter-spacing: 1px;
+}
+
+ul li {
+    list-style-type: square;
+    padding: 1px 0;
+}
+
+li ul {
+    margin-bottom: 0;
+}
+
+li, dt, dd {
+    font-size: 13px;
+    line-height: 20px;
+}
+
+dt {
+    font-weight: bold;
+    margin-top: 4px;
+}
+
+dd {
+    margin-left: 0;
+}
+
+form {
+    margin: 0;
+    padding: 0;
+}
+
+fieldset {
+    margin: 0;
+    padding: 0;
+    border: none;
+    border-top: 1px solid #eee;
+}
+
+blockquote {
+    font-size: 11px;
+    color: #777;
+    margin-left: 2px;
+    padding-left: 10px;
+    border-left: 5px solid #ddd;
+}
+
+code, pre {
+    font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace;
+    color: #666;
+    font-size: 12px;
+}
+
+pre.literal-block {
+    margin: 10px;
+    background: #eee;
+    padding: 6px 8px;
+}
+
+code strong {
+    color: #930;
+}
+
+hr {
+    clear: both;
+    color: #eee;
+    background-color: #eee;
+    height: 1px;
+    border: none;
+    margin: 0;
+    padding: 0;
+    font-size: 1px;
+    line-height: 1px;
+}
+
+/* TEXT STYLES & MODIFIERS */
+
+.small {
+    font-size: 11px;
+}
+
+.tiny {
+    font-size: 10px;
+}
+
+p.tiny {
+    margin-top: -2px;
+}
+
+.mini {
+    font-size: 10px;
+}
+
+p.mini {
+    margin-top: -3px;
+}
+
+.help, p.help, form p.help {
+    font-size: 11px;
+    color: #999;
+}
+
+.help-tooltip {
+    cursor: help;
+}
+
+p img, h1 img, h2 img, h3 img, h4 img, td img {
+    vertical-align: middle;
+}
+
+.quiet, a.quiet:link, a.quiet:visited {
+    color: #999;
+    font-weight: normal;
+}
+
+.float-right {
+    float: right;
+}
+
+.float-left {
+    float: left;
+}
+
+.clear {
+    clear: both;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.align-right {
+    text-align: right;
+}
+
+.example {
+    margin: 10px 0;
+    padding: 5px 10px;
+    background: #efefef;
+}
+
+.nowrap {
+    white-space: nowrap;
+}
+
+/* TABLES */
+
+table {
+    border-collapse: collapse;
+    border-color: #ccc;
+}
+
+td, th {
+    font-size: 13px;
+    line-height: 16px;
+    border-bottom: 1px solid #eee;
+    vertical-align: top;
+    padding: 8px;
+    font-family: "Roboto", "Lucida Grande", Verdana, Arial, sans-serif;
+}
+
+th {
+    font-weight: 600;
+    text-align: left;
+}
+
+thead th,
+tfoot td {
+    color: #666;
+    padding: 5px 10px;
+    font-size: 11px;
+    background: #fff;
+    border: none;
+    border-top: 1px solid #eee;
+    border-bottom: 1px solid #eee;
+}
+
+tfoot td {
+    border-bottom: none;
+    border-top: 1px solid #eee;
+}
+
+tr.alt {
+    background: #f6f6f6;
+}
+
+.row1 {
+    background: #fff;
+}
+
+.row2 {
+    background: #f9f9f9;
+}
+
+/* SORTABLE TABLES */
+
+thead th {
+    padding: 5px 10px;
+    line-height: normal;
+    text-transform: uppercase;
+    background: #f6f6f6;
+}
+
+thead th a:link, thead th a:visited {
+    color: #666;
+}
+
+thead th.sorted {
+    background: #eee;
+}
+
+thead th.sorted .text {
+    padding-right: 42px;
+}
+
+table thead th .text span {
+    padding: 8px 10px;
+    display: block;
+}
+
+table thead th .text a {
+    display: block;
+    cursor: pointer;
+    padding: 8px 10px;
+}
+
+table thead th .text a:focus, table thead th .text a:hover {
+    background: #eee;
+}
+
+thead th.sorted a.sortremove {
+    visibility: hidden;
+}
+
+table thead th.sorted:hover a.sortremove {
+    visibility: visible;
+}
+
+table thead th.sorted .sortoptions {
+    display: block;
+    padding: 9px 5px 0 5px;
+    float: right;
+    text-align: right;
+}
+
+table thead th.sorted .sortpriority {
+    font-size: .8em;
+    min-width: 12px;
+    text-align: center;
+    vertical-align: 3px;
+    margin-left: 2px;
+    margin-right: 2px;
+}
+
+table thead th.sorted .sortoptions a {
+    position: relative;
+    width: 14px;
+    height: 14px;
+    display: inline-block;
+    background: url(../img/sorting-icons.svg) 0 0 no-repeat;
+    background-size: 14px auto;
+}
+
+table thead th.sorted .sortoptions a.sortremove {
+    background-position: 0 0;
+}
+
+table thead th.sorted .sortoptions a.sortremove:after {
+    content: '\\';
+    position: absolute;
+    top: -6px;
+    left: 3px;
+    font-weight: 200;
+    font-size: 18px;
+    color: #999;
+}
+
+table thead th.sorted .sortoptions a.sortremove:focus:after,
+table thead th.sorted .sortoptions a.sortremove:hover:after {
+    color: #447e9b;
+}
+
+table thead th.sorted .sortoptions a.sortremove:focus,
+table thead th.sorted .sortoptions a.sortremove:hover {
+    background-position: 0 -14px;
+}
+
+table thead th.sorted .sortoptions a.ascending {
+    background-position: 0 -28px;
+}
+
+table thead th.sorted .sortoptions a.ascending:focus,
+table thead th.sorted .sortoptions a.ascending:hover {
+    background-position: 0 -42px;
+}
+
+table thead th.sorted .sortoptions a.descending {
+    top: 1px;
+    background-position: 0 -56px;
+}
+
+table thead th.sorted .sortoptions a.descending:focus,
+table thead th.sorted .sortoptions a.descending:hover {
+    background-position: 0 -70px;
+}
+
+/* FORM DEFAULTS */
+
+input, textarea, select, .form-row p, form .button {
+    margin: 2px 0;
+    padding: 2px 3px;
+    vertical-align: middle;
+    font-family: "Roboto", "Lucida Grande", Verdana, Arial, sans-serif;
+    font-weight: normal;
+    font-size: 13px;
+}
+
+textarea {
+    vertical-align: top;
+}
+
+input[type=text], input[type=password], input[type=email], input[type=url],
+input[type=number], textarea, select, .vTextField {
+    border: 1px solid #ccc;
+    border-radius: 4px;
+    padding: 5px 6px;
+    margin-top: 0;
+}
+
+input[type=text]:focus, input[type=password]:focus, input[type=email]:focus,
+input[type=url]:focus, input[type=number]:focus, textarea:focus, select:focus,
+.vTextField:focus {
+    border-color: #999;
+}
+
+select {
+    height: 30px;
+}
+
+select[multiple] {
+    min-height: 150px;
+}
+
+/* FORM BUTTONS */
+
+.button, input[type=submit], input[type=button], .submit-row input, a.button {
+    background: #79aec8;
+    padding: 10px 15px;
+    border: none;
+    border-radius: 4px;
+    color: #fff;
+    cursor: pointer;
+}
+
+a.button {
+    padding: 4px 5px;
+}
+
+.button:active, input[type=submit]:active, input[type=button]:active,
+.button:focus, input[type=submit]:focus, input[type=button]:focus,
+.button:hover, input[type=submit]:hover, input[type=button]:hover {
+    background: #609ab6;
+}
+
+.button[disabled], input[type=submit][disabled], input[type=button][disabled] {
+    opacity: 0.4;
+}
+
+.button.default, input[type=submit].default, .submit-row input.default {
+    float: right;
+    border: none;
+    font-weight: 400;
+    background: #417690;
+}
+
+.button.default:active, input[type=submit].default:active,
+.button.default:focus, input[type=submit].default:focus,
+.button.default:hover, input[type=submit].default:hover {
+    background: #205067;
+}
+
+.button[disabled].default,
+input[type=submit][disabled].default,
+input[type=button][disabled].default {
+    opacity: 0.4;
+}
+
+
+/* MODULES */
+
+.module {
+    border: none;
+    margin-bottom: 30px;
+    background: #fff;
+}
+
+.module p, .module ul, .module h3, .module h4, .module dl, .module pre {
+    padding-left: 10px;
+    padding-right: 10px;
+}
+
+.module blockquote {
+    margin-left: 12px;
+}
+
+.module ul, .module ol {
+    margin-left: 1.5em;
+}
+
+.module h3 {
+    margin-top: .6em;
+}
+
+.module h2, .module caption, .inline-group h2 {
+    margin: 0;
+    padding: 8px;
+    font-weight: 400;
+    font-size: 13px;
+    text-align: left;
+    background: #79aec8;
+    color: #fff;
+}
+
+.module caption,
+.inline-group h2 {
+    font-size: 12px;
+    letter-spacing: 0.5px;
+    text-transform: uppercase;
+}
+
+.module table {
+    border-collapse: collapse;
+}
+
+/* MESSAGES & ERRORS */
+
+ul.messagelist {
+    padding: 0;
+    margin: 0;
+}
+
+ul.messagelist li {
+    display: block;
+    font-weight: 400;
+    font-size: 13px;
+    padding: 10px 10px 10px 65px;
+    margin: 0 0 10px 0;
+    background: #dfd url(../img/icon-yes.svg) 40px 12px no-repeat;
+    background-size: 16px auto;
+    color: #333;
+}
+
+ul.messagelist li.warning {
+    background: #ffc url(../img/icon-alert.svg) 40px 14px no-repeat;
+    background-size: 14px auto;
+}
+
+ul.messagelist li.error {
+    background: #ffefef url(../img/icon-no.svg) 40px 12px no-repeat;
+    background-size: 16px auto;
+}
+
+.errornote {
+    font-size: 14px;
+    font-weight: 700;
+    display: block;
+    padding: 10px 12px;
+    margin: 0 0 10px 0;
+    color: #ba2121;
+    border: 1px solid #ba2121;
+    border-radius: 4px;
+    background-color: #fff;
+    background-position: 5px 12px;
+}
+
+ul.errorlist {
+    margin: 0 0 4px;
+    padding: 0;
+    color: #ba2121;
+    background: #fff;
+}
+
+ul.errorlist li {
+    font-size: 13px;
+    display: block;
+    margin-bottom: 4px;
+}
+
+ul.errorlist li:first-child {
+    margin-top: 0;
+}
+
+ul.errorlist li a {
+    color: inherit;
+    text-decoration: underline;
+}
+
+td ul.errorlist {
+    margin: 0;
+    padding: 0;
+}
+
+td ul.errorlist li {
+    margin: 0;
+}
+
+.form-row.errors {
+    margin: 0;
+    border: none;
+    border-bottom: 1px solid #eee;
+    background: none;
+}
+
+.form-row.errors ul.errorlist li {
+    padding-left: 0;
+}
+
+.errors input, .errors select, .errors textarea {
+    border: 1px solid #ba2121;
+}
+
+div.system-message {
+    background: #ffc;
+    margin: 10px;
+    padding: 6px 8px;
+    font-size: .8em;
+}
+
+div.system-message p.system-message-title {
+    padding: 4px 5px 4px 25px;
+    margin: 0;
+    color: #c11;
+    background: #ffefef url(../img/icon-no.svg) 5px 5px no-repeat;
+}
+
+.description {
+    font-size: 12px;
+    padding: 5px 0 0 12px;
+}
+
+/* BREADCRUMBS */
+
+div.breadcrumbs {
+    background: #79aec8;
+    padding: 10px 40px;
+    border: none;
+    font-size: 14px;
+    color: #c4dce8;
+    text-align: left;
+}
+
+div.breadcrumbs a {
+    color: #fff;
+}
+
+div.breadcrumbs a:focus, div.breadcrumbs a:hover {
+    color: #c4dce8;
+}
+
+/* ACTION ICONS */
+
+.addlink {
+    padding-left: 16px;
+    background: url(../img/icon-addlink.svg) 0 1px no-repeat;
+}
+
+.changelink, .inlinechangelink {
+    padding-left: 16px;
+    background: url(../img/icon-changelink.svg) 0 1px no-repeat;
+}
+
+.deletelink {
+    padding-left: 16px;
+    background: url(../img/icon-deletelink.svg) 0 1px no-repeat;
+}
+
+a.deletelink:link, a.deletelink:visited {
+    color: #CC3434;
+}
+
+a.deletelink:focus, a.deletelink:hover {
+    color: #993333;
+    text-decoration: none;
+}
+
+/* OBJECT TOOLS */
+
+.object-tools {
+    font-size: 10px;
+    font-weight: bold;
+    padding-left: 0;
+    float: right;
+    position: relative;
+    margin-top: -48px;
+}
+
+.form-row .object-tools {
+    margin-top: 5px;
+    margin-bottom: 5px;
+    float: none;
+    height: 2em;
+    padding-left: 3.5em;
+}
+
+.object-tools li {
+    display: block;
+    float: left;
+    margin-left: 5px;
+    height: 16px;
+}
+
+.object-tools a {
+    border-radius: 15px;
+}
+
+.object-tools a:link, .object-tools a:visited {
+    display: block;
+    float: left;
+    padding: 3px 12px;
+    background: #999;
+    font-weight: 400;
+    font-size: 11px;
+    text-transform: uppercase;
+    letter-spacing: 0.5px;
+    color: #fff;
+}
+
+.object-tools a:focus, .object-tools a:hover {
+    background-color: #417690;
+}
+
+.object-tools a:focus{
+    text-decoration: none;
+}
+
+.object-tools a.viewsitelink, .object-tools a.golink,.object-tools a.addlink {
+    background-repeat: no-repeat;
+    background-position: 93% center;
+    padding-right: 26px;
+}
+
+.object-tools a.viewsitelink, .object-tools a.golink {
+    background-image: url(../img/tooltag-arrowright.svg);
+}
+
+.object-tools a.addlink {
+    background-image: url(../img/tooltag-add.svg);
+}
+
+/* OBJECT HISTORY */
+
+table#change-history {
+    width: 100%;
+}
+
+table#change-history tbody th {
+    width: 16em;
+}
+
+/* PAGE STRUCTURE */
+
+#container {
+    position: relative;
+    width: 100%;
+    min-width: 980px;
+    padding: 0;
+}
+
+#content {
+    padding: 20px 40px;
+}
+
+.dashboard #content {
+    width: 600px;
+}
+
+#content-main {
+    float: left;
+    width: 100%;
+}
+
+#content-related {
+    float: right;
+    width: 260px;
+    position: relative;
+    margin-right: -300px;
+}
+
+#footer {
+    clear: both;
+    padding: 10px;
+}
+
+/* COLUMN TYPES */
+
+.colMS {
+    margin-right: 300px;
+}
+
+.colSM {
+    margin-left: 300px;
+}
+
+.colSM #content-related {
+    float: left;
+    margin-right: 0;
+    margin-left: -300px;
+}
+
+.colSM #content-main {
+    float: right;
+}
+
+.popup .colM {
+    width: auto;
+}
+
+/* HEADER */
+
+#header {
+    width: auto;
+    height: 40px;
+    padding: 10px 40px;
+    background: #417690;
+    line-height: 40px;
+    color: #ffc;
+    overflow: hidden;
+}
+
+#header a:link, #header a:visited {
+    color: #fff;
+}
+
+#header a:focus , #header a:hover {
+    text-decoration: underline;
+}
+
+#branding {
+    float: left;
+}
+
+#branding h1 {
+    padding: 0;
+    margin: 0 20px 0 0;
+    font-weight: 300;
+    font-size: 24px;
+    color: #f5dd5d;
+}
+
+#branding h1, #branding h1 a:link, #branding h1 a:visited {
+    color: #f5dd5d;
+}
+
+#branding h2 {
+    padding: 0 10px;
+    font-size: 14px;
+    margin: -8px 0 8px 0;
+    font-weight: normal;
+    color: #ffc;
+}
+
+#branding a:hover {
+    text-decoration: none;
+}
+
+#user-tools {
+    float: right;
+    padding: 0;
+    margin: 0 0 0 20px;
+    font-weight: 300;
+    font-size: 11px;
+    letter-spacing: 0.5px;
+    text-transform: uppercase;
+    text-align: right;
+}
+
+#user-tools a {
+    border-bottom: 1px solid rgba(255, 255, 255, 0.25);
+}
+
+#user-tools a:focus, #user-tools a:hover {
+    text-decoration: none;
+    border-bottom-color: #79aec8;
+    color: #79aec8;
+}
+
+/* SIDEBAR */
+
+#content-related {
+    background: #f8f8f8;
+}
+
+#content-related .module {
+    background: none;
+}
+
+#content-related h3 {
+    font-size: 14px;
+    color: #666;
+    padding: 0 16px;
+    margin: 0 0 16px;
+}
+
+#content-related h4 {
+    font-size: 13px;
+}
+
+#content-related p {
+    padding-left: 16px;
+    padding-right: 16px;
+}
+
+#content-related .actionlist {
+    padding: 0;
+    margin: 16px;
+}
+
+#content-related .actionlist li {
+    line-height: 1.2;
+    margin-bottom: 10px;
+    padding-left: 18px;
+}
+
+#content-related .module h2 {
+    background: none;
+    padding: 16px;
+    margin-bottom: 16px;
+    border-bottom: 1px solid #eaeaea;
+    font-size: 18px;
+    color: #333;
+}
+
+.delete-confirmation form input[type="submit"] {
+    background: #ba2121;
+    border-radius: 4px;
+    padding: 10px 15px;
+    color: #fff;
+}
+
+.delete-confirmation form input[type="submit"]:active,
+.delete-confirmation form input[type="submit"]:focus,
+.delete-confirmation form input[type="submit"]:hover {
+    background: #a41515;
+}
+
+.delete-confirmation form .cancel-link {
+    display: inline-block;
+    vertical-align: middle;
+    height: 15px;
+    line-height: 15px;
+    background: #ddd;
+    border-radius: 4px;
+    padding: 10px 15px;
+    color: #333;
+    margin: 0 0 0 10px;
+}
+
+.delete-confirmation form .cancel-link:active,
+.delete-confirmation form .cancel-link:focus,
+.delete-confirmation form .cancel-link:hover {
+    background: #ccc;
+}
+
+/* POPUP */
+.popup #content {
+    padding: 20px;
+}
+
+.popup #container {
+    min-width: 0;
+}
+
+.popup #header {
+    padding: 10px 20px;
+}
diff --git a/www/web/static/admin/css/changelists.css b/www/web/static/admin/css/changelists.css
new file mode 100644
index 0000000..fd9e784
--- /dev/null
+++ b/www/web/static/admin/css/changelists.css
@@ -0,0 +1,341 @@
+/* CHANGELISTS */
+
+#changelist {
+    position: relative;
+    width: 100%;
+}
+
+#changelist table {
+    width: 100%;
+}
+
+.change-list .hiddenfields { display:none; }
+
+.change-list .filtered table {
+    border-right: none;
+}
+
+.change-list .filtered {
+    min-height: 400px;
+}
+
+.change-list .filtered .results, .change-list .filtered .paginator,
+.filtered #toolbar, .filtered div.xfull {
+    margin-right: 280px;
+    width: auto;
+}
+
+.change-list .filtered table tbody th {
+    padding-right: 1em;
+}
+
+#changelist-form .results {
+  overflow-x: auto;
+}
+
+#changelist .toplinks {
+    border-bottom: 1px solid #ddd;
+}
+
+#changelist .paginator {
+    color: #666;
+    border-bottom: 1px solid #eee;
+    background: #fff;
+    overflow: hidden;
+}
+
+/* CHANGELIST TABLES */
+
+#changelist table thead th {
+    padding: 0;
+    white-space: nowrap;
+    vertical-align: middle;
+}
+
+#changelist table thead th.action-checkbox-column {
+    width: 1.5em;
+    text-align: center;
+}
+
+#changelist table tbody td.action-checkbox {
+    text-align: center;
+}
+
+#changelist table tfoot {
+    color: #666;
+}
+
+/* TOOLBAR */
+
+#changelist #toolbar {
+    padding: 8px 10px;
+    margin-bottom: 15px;
+    border-top: 1px solid #eee;
+    border-bottom: 1px solid #eee;
+    background: #f8f8f8;
+    color: #666;
+}
+
+#changelist #toolbar form input {
+    border-radius: 4px;
+    font-size: 14px;
+    padding: 5px;
+    color: #333;
+}
+
+#changelist #toolbar form #searchbar {
+    height: 19px;
+    border: 1px solid #ccc;
+    padding: 2px 5px;
+    margin: 0;
+    vertical-align: top;
+    font-size: 13px;
+}
+
+#changelist #toolbar form #searchbar:focus {
+    border-color: #999;
+}
+
+#changelist #toolbar form input[type="submit"] {
+    border: 1px solid #ccc;
+    padding: 2px 10px;
+    margin: 0;
+    vertical-align: middle;
+    background: #fff;
+    box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset;
+    cursor: pointer;
+    color: #333;
+}
+
+#changelist #toolbar form input[type="submit"]:focus,
+#changelist #toolbar form input[type="submit"]:hover {
+    border-color: #999;
+}
+
+#changelist #changelist-search img {
+    vertical-align: middle;
+    margin-right: 4px;
+}
+
+/* FILTER COLUMN */
+
+#changelist-filter {
+    position: absolute;
+    top: 0;
+    right: 0;
+    z-index: 1000;
+    width: 240px;
+    background: #f8f8f8;
+    border-left: none;
+    margin: 0;
+}
+
+#changelist-filter h2 {
+    font-size: 14px;
+    text-transform: uppercase;
+    letter-spacing: 0.5px;
+    padding: 5px 15px;
+    margin-bottom: 12px;
+    border-bottom: none;
+}
+
+#changelist-filter h3 {
+    font-weight: 400;
+    font-size: 14px;
+    padding: 0 15px;
+    margin-bottom: 10px;
+}
+
+#changelist-filter ul {
+    margin: 5px 0;
+    padding: 0 15px 15px;
+    border-bottom: 1px solid #eaeaea;
+}
+
+#changelist-filter ul:last-child {
+    border-bottom: none;
+    padding-bottom: none;
+}
+
+#changelist-filter li {
+    list-style-type: none;
+    margin-left: 0;
+    padding-left: 0;
+}
+
+#changelist-filter a {
+    display: block;
+    color: #999;
+}
+
+#changelist-filter li.selected {
+    border-left: 5px solid #eaeaea;
+    padding-left: 10px;
+    margin-left: -15px;
+}
+
+#changelist-filter li.selected a {
+    color: #5b80b2;
+}
+
+#changelist-filter a:focus, #changelist-filter a:hover,
+#changelist-filter li.selected a:focus,
+#changelist-filter li.selected a:hover {
+    color: #036;
+}
+
+/* DATE DRILLDOWN */
+
+.change-list ul.toplinks {
+    display: block;
+    float: left;
+    padding: 0;
+    margin: 0;
+    width: 100%;
+}
+
+.change-list ul.toplinks li {
+    padding: 3px 6px;
+    font-weight: bold;
+    list-style-type: none;
+    display: inline-block;
+}
+
+.change-list ul.toplinks .date-back a {
+    color: #999;
+}
+
+.change-list ul.toplinks .date-back a:focus,
+.change-list ul.toplinks .date-back a:hover {
+    color: #036;
+}
+
+/* PAGINATOR */
+
+.paginator {
+    font-size: 13px;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    line-height: 22px;
+    margin: 0;
+    border-top: 1px solid #ddd;
+}
+
+.paginator a:link, .paginator a:visited {
+    padding: 2px 6px;
+    background: #79aec8;
+    text-decoration: none;
+    color: #fff;
+}
+
+.paginator a.showall {
+    padding: 0;
+    border: none;
+    background: none;
+    color: #5b80b2;
+}
+
+.paginator a.showall:focus, .paginator a.showall:hover {
+    background: none;
+    color: #036;
+}
+
+.paginator .end {
+    margin-right: 6px;
+}
+
+.paginator .this-page {
+    padding: 2px 6px;
+    font-weight: bold;
+    font-size: 13px;
+    vertical-align: top;
+}
+
+.paginator a:focus, .paginator a:hover {
+    color: white;
+    background: #036;
+}
+
+/* ACTIONS */
+
+.filtered .actions {
+    margin-right: 280px;
+    border-right: none;
+}
+
+#changelist table input {
+    margin: 0;
+    vertical-align: baseline;
+}
+
+#changelist table tbody tr.selected {
+    background-color: #FFFFCC;
+}
+
+#changelist .actions {
+    padding: 10px;
+    background: #fff;
+    border-top: none;
+    border-bottom: none;
+    line-height: 24px;
+    color: #999;
+}
+
+#changelist .actions.selected {
+    background: #fffccf;
+    border-top: 1px solid #fffee8;
+    border-bottom: 1px solid #edecd6;
+}
+
+#changelist .actions span.all,
+#changelist .actions span.action-counter,
+#changelist .actions span.clear,
+#changelist .actions span.question {
+    font-size: 13px;
+    margin: 0 0.5em;
+    display: none;
+}
+
+#changelist .actions:last-child {
+    border-bottom: none;
+}
+
+#changelist .actions select {
+    vertical-align: top;
+    height: 24px;
+    background: none;
+    border: 1px solid #ccc;
+    border-radius: 4px;
+    font-size: 14px;
+    padding: 0 0 0 4px;
+    margin: 0;
+    margin-left: 10px;
+}
+
+#changelist .actions select:focus {
+    border-color: #999;
+}
+
+#changelist .actions label {
+    display: inline-block;
+    vertical-align: middle;
+    font-size: 13px;
+}
+
+#changelist .actions .button {
+    font-size: 13px;
+    border: 1px solid #ccc;
+    border-radius: 4px;
+    background: #fff;
+    box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset;
+    cursor: pointer;
+    height: 24px;
+    line-height: 1;
+    padding: 4px 8px;
+    margin: 0;
+    color: #333;
+}
+
+#changelist .actions .button:focus, #changelist .actions .button:hover {
+    border-color: #999;
+}
diff --git a/www/web/static/admin/css/dashboard.css b/www/web/static/admin/css/dashboard.css
new file mode 100644
index 0000000..05808bc
--- /dev/null
+++ b/www/web/static/admin/css/dashboard.css
@@ -0,0 +1,30 @@
+/* DASHBOARD */
+
+.dashboard .module table th {
+    width: 100%;
+}
+
+.dashboard .module table td {
+    white-space: nowrap;
+}
+
+.dashboard .module table td a {
+    display: block;
+    padding-right: .6em;
+}
+
+/* RECENT ACTIONS MODULE */
+
+.module ul.actionlist {
+    margin-left: 0;
+}
+
+ul.actionlist li {
+    list-style-type: none;
+}
+
+ul.actionlist li {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    -o-text-overflow: ellipsis;
+}
diff --git a/www/web/static/admin/css/fonts.css b/www/web/static/admin/css/fonts.css
new file mode 100644
index 0000000..c837e01
--- /dev/null
+++ b/www/web/static/admin/css/fonts.css
@@ -0,0 +1,20 @@
+@font-face {
+    font-family: 'Roboto';
+    src: url('../fonts/Roboto-Bold-webfont.woff');
+    font-weight: 700;
+    font-style: normal;
+}
+
+@font-face {
+    font-family: 'Roboto';
+    src: url('../fonts/Roboto-Regular-webfont.woff');
+    font-weight: 400;
+    font-style: normal;
+}
+
+@font-face {
+    font-family: 'Roboto';
+    src: url('../fonts/Roboto-Light-webfont.woff');
+    font-weight: 300;
+    font-style: normal;
+}
diff --git a/www/web/static/admin/css/forms.css b/www/web/static/admin/css/forms.css
new file mode 100644
index 0000000..2a21257
--- /dev/null
+++ b/www/web/static/admin/css/forms.css
@@ -0,0 +1,499 @@
+@import url('widgets.css');
+
+/* FORM ROWS */
+
+.form-row {
+    overflow: hidden;
+    padding: 10px;
+    font-size: 13px;
+    border-bottom: 1px solid #eee;
+}
+
+.form-row img, .form-row input {
+    vertical-align: middle;
+}
+
+.form-row label input[type="checkbox"] {
+    margin-top: 0;
+    vertical-align: 0;
+}
+
+form .form-row p {
+    padding-left: 0;
+}
+
+.hidden {
+    display: none;
+}
+
+/* FORM LABELS */
+
+label {
+    font-weight: normal;
+    color: #666;
+    font-size: 13px;
+}
+
+.required label, label.required {
+    font-weight: bold;
+    color: #333;
+}
+
+/* RADIO BUTTONS */
+
+form ul.radiolist li {
+    list-style-type: none;
+}
+
+form ul.radiolist label {
+    float: none;
+    display: inline;
+}
+
+form ul.radiolist input[type="radio"] {
+    margin: -2px 4px 0 0;
+    padding: 0;
+}
+
+form ul.inline {
+    margin-left: 0;
+    padding: 0;
+}
+
+form ul.inline li {
+    float: left;
+    padding-right: 7px;
+}
+
+/* ALIGNED FIELDSETS */
+
+.aligned label {
+    display: block;
+    padding: 4px 10px 0 0;
+    float: left;
+    width: 160px;
+    word-wrap: break-word;
+    line-height: 1;
+}
+
+.aligned label:not(.vCheckboxLabel):after {
+    content: '';
+    display: inline-block;
+    vertical-align: middle;
+    height: 26px;
+}
+
+.aligned label + p {
+    padding: 6px 0;
+    margin-top: 0;
+    margin-bottom: 0;
+    margin-left: 170px;
+}
+
+.aligned ul label {
+    display: inline;
+    float: none;
+    width: auto;
+}
+
+.aligned .form-row input {
+    margin-bottom: 0;
+}
+
+.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField {
+    width: 350px;
+}
+
+form .aligned ul {
+    margin-left: 160px;
+    padding-left: 10px;
+}
+
+form .aligned ul.radiolist {
+    display: inline-block;
+    margin: 0;
+    padding: 0;
+}
+
+form .aligned p.help {
+    clear: left;
+    margin-top: 0;
+    margin-left: 160px;
+    padding-left: 10px;
+}
+
+form .aligned label + p.help {
+    margin-left: 0;
+    padding-left: 0;
+}
+
+form .aligned p.help:last-child {
+    margin-bottom: 0;
+    padding-bottom: 0;
+}
+
+form .aligned input + p.help,
+form .aligned textarea + p.help,
+form .aligned select + p.help {
+    margin-left: 160px;
+    padding-left: 10px;
+}
+
+form .aligned ul li {
+    list-style: none;
+}
+
+form .aligned table p {
+    margin-left: 0;
+    padding-left: 0;
+}
+
+.aligned .vCheckboxLabel {
+    float: none;
+    width: auto;
+    display: inline-block;
+    vertical-align: -3px;
+    padding: 0 0 5px 5px;
+}
+
+.aligned .vCheckboxLabel + p.help {
+    margin-top: -4px;
+}
+
+.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField {
+    width: 610px;
+}
+
+.checkbox-row p.help {
+    margin-left: 0;
+    padding-left: 0;
+}
+
+fieldset .field-box {
+    float: left;
+    margin-right: 20px;
+}
+
+/* WIDE FIELDSETS */
+
+.wide label {
+    width: 200px;
+}
+
+form .wide p, form .wide input + p.help {
+    margin-left: 200px;
+}
+
+form .wide p.help {
+    padding-left: 38px;
+}
+
+.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField {
+    width: 450px;
+}
+
+/* COLLAPSED FIELDSETS */
+
+fieldset.collapsed * {
+    display: none;
+}
+
+fieldset.collapsed h2, fieldset.collapsed {
+    display: block;
+}
+
+fieldset.collapsed {
+    border: 1px solid #eee;
+    border-radius: 4px;
+    overflow: hidden;
+}
+
+fieldset.collapsed h2 {
+    background: #f8f8f8;
+    color: #666;
+}
+
+fieldset .collapse-toggle {
+    color: #fff;
+}
+
+fieldset.collapsed .collapse-toggle {
+    background: transparent;
+    display: inline;
+    color: #447e9b;
+}
+
+/* MONOSPACE TEXTAREAS */
+
+fieldset.monospace textarea {
+    font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace;
+}
+
+/* SUBMIT ROW */
+
+.submit-row {
+    padding: 12px 14px;
+    margin: 0 0 20px;
+    background: #f8f8f8;
+    border: 1px solid #eee;
+    border-radius: 4px;
+    text-align: right;
+    overflow: hidden;
+}
+
+body.popup .submit-row {
+    overflow: auto;
+}
+
+.submit-row input {
+    height: 35px;
+    line-height: 15px;
+    margin: 0 0 0 5px;
+}
+
+.submit-row input.default {
+    margin: 0 0 0 8px;
+    text-transform: uppercase;
+}
+
+.submit-row p {
+    margin: 0.3em;
+}
+
+.submit-row p.deletelink-box {
+    float: left;
+    margin: 0;
+}
+
+.submit-row a.deletelink {
+    display: block;
+    background: #ba2121;
+    border-radius: 4px;
+    padding: 10px 15px;
+    height: 15px;
+    line-height: 15px;
+    color: #fff;
+}
+
+.submit-row a.deletelink:focus,
+.submit-row a.deletelink:hover,
+.submit-row a.deletelink:active {
+    background: #a41515;
+}
+
+/* CUSTOM FORM FIELDS */
+
+.vSelectMultipleField {
+    vertical-align: top;
+}
+
+.vCheckboxField {
+    border: none;
+}
+
+.vDateField, .vTimeField {
+    margin-right: 2px;
+    margin-bottom: 4px;
+}
+
+.vDateField {
+    min-width: 6.85em;
+}
+
+.vTimeField {
+    min-width: 4.7em;
+}
+
+.vURLField {
+    width: 30em;
+}
+
+.vLargeTextField, .vXMLLargeTextField {
+    width: 48em;
+}
+
+.flatpages-flatpage #id_content {
+    height: 40.2em;
+}
+
+.module table .vPositiveSmallIntegerField {
+    width: 2.2em;
+}
+
+.vTextField {
+    width: 20em;
+}
+
+.vIntegerField {
+    width: 5em;
+}
+
+.vBigIntegerField {
+    width: 10em;
+}
+
+.vForeignKeyRawIdAdminField {
+    width: 5em;
+}
+
+/* INLINES */
+
+.inline-group {
+    padding: 0;
+    margin: 0 0 30px;
+}
+
+.inline-group thead th {
+    padding: 8px 10px;
+}
+
+.inline-group .aligned label {
+    width: 160px;
+}
+
+.inline-related {
+    position: relative;
+}
+
+.inline-related h3 {
+    margin: 0;
+    color: #666;
+    padding: 5px;
+    font-size: 13px;
+    background: #f8f8f8;
+    border-top: 1px solid #eee;
+    border-bottom: 1px solid #eee;
+}
+
+.inline-related h3 span.delete {
+    float: right;
+}
+
+.inline-related h3 span.delete label {
+    margin-left: 2px;
+    font-size: 11px;
+}
+
+.inline-related fieldset {
+    margin: 0;
+    background: #fff;
+    border: none;
+    width: 100%;
+}
+
+.inline-related fieldset.module h3 {
+    margin: 0;
+    padding: 2px 5px 3px 5px;
+    font-size: 11px;
+    text-align: left;
+    font-weight: bold;
+    background: #bcd;
+    color: #fff;
+}
+
+.inline-group .tabular fieldset.module {
+    border: none;
+}
+
+.inline-related.tabular fieldset.module table {
+    width: 100%;
+}
+
+.last-related fieldset {
+    border: none;
+}
+
+.inline-group .tabular tr.has_original td {
+    padding-top: 2em;
+}
+
+.inline-group .tabular tr td.original {
+    padding: 2px 0 0 0;
+    width: 0;
+    _position: relative;
+}
+
+.inline-group .tabular th.original {
+    width: 0px;
+    padding: 0;
+}
+
+.inline-group .tabular td.original p {
+    position: absolute;
+    left: 0;
+    height: 1.1em;
+    padding: 2px 9px;
+    overflow: hidden;
+    font-size: 9px;
+    font-weight: bold;
+    color: #666;
+    _width: 700px;
+}
+
+.inline-group ul.tools {
+    padding: 0;
+    margin: 0;
+    list-style: none;
+}
+
+.inline-group ul.tools li {
+    display: inline;
+    padding: 0 5px;
+}
+
+.inline-group div.add-row,
+.inline-group .tabular tr.add-row td {
+    color: #666;
+    background: #f8f8f8;
+    padding: 8px 10px;
+    border-bottom: 1px solid #eee;
+}
+
+.inline-group .tabular tr.add-row td {
+    padding: 8px 10px;
+    border-bottom: 1px solid #eee;
+}
+
+.inline-group ul.tools a.add,
+.inline-group div.add-row a,
+.inline-group .tabular tr.add-row td a {
+    background: url(../img/icon-addlink.svg) 0 1px no-repeat;
+    padding-left: 16px;
+    font-size: 12px;
+}
+
+.empty-form {
+    display: none;
+}
+
+/* RELATED FIELD ADD ONE / LOOKUP */
+
+.add-another, .related-lookup {
+    margin-left: 5px;
+    display: inline-block;
+    vertical-align: middle;
+    background-repeat: no-repeat;
+    background-size: 14px;
+}
+
+.add-another {
+    width: 16px;
+    height: 16px;
+    background-image: url(../img/icon-addlink.svg);
+}
+
+.related-lookup {
+    width: 16px;
+    height: 16px;
+    background-image: url(../img/search.svg);
+}
+
+form .related-widget-wrapper ul {
+    display: inline-block;
+    margin-left: 0;
+    padding-left: 0;
+}
+
+.clearable-file-input input {
+    margin-top: 0;
+}
diff --git a/www/web/static/admin/css/login.css b/www/web/static/admin/css/login.css
new file mode 100644
index 0000000..cab3bbf
--- /dev/null
+++ b/www/web/static/admin/css/login.css
@@ -0,0 +1,78 @@
+/* LOGIN FORM */
+
+body.login {
+    background: #f8f8f8;
+}
+
+.login #header {
+    height: auto;
+    padding: 5px 16px;
+}
+
+.login #header h1 {
+    font-size: 18px;
+}
+
+.login #header h1 a {
+    color: #fff;
+}
+
+.login #content {
+    padding: 20px 20px 0;
+}
+
+.login #container {
+    background: #fff;
+    border: 1px solid #eaeaea;
+    border-radius: 4px;
+    overflow: hidden;
+    width: 28em;
+    min-width: 300px;
+    margin: 100px auto;
+}
+
+.login #content-main {
+    width: 100%;
+}
+
+.login .form-row {
+    padding: 4px 0;
+    float: left;
+    width: 100%;
+    border-bottom: none;
+}
+
+.login .form-row label {
+    padding-right: 0.5em;
+    line-height: 2em;
+    font-size: 1em;
+    clear: both;
+    color: #333;
+}
+
+.login .form-row #id_username, .login .form-row #id_password {
+    clear: both;
+    padding: 8px;
+    width: 100%;
+    -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+            box-sizing: border-box;
+}
+
+.login span.help {
+    font-size: 10px;
+    display: block;
+}
+
+.login .submit-row {
+    clear: both;
+    padding: 1em 0 0 9.4em;
+    margin: 0;
+    border: none;
+    background: none;
+    text-align: left;
+}
+
+.login .password-reset-link {
+    text-align: center;
+}
diff --git a/www/web/static/admin/css/rtl.css b/www/web/static/admin/css/rtl.css
new file mode 100644
index 0000000..8c1ceb4
--- /dev/null
+++ b/www/web/static/admin/css/rtl.css
@@ -0,0 +1,256 @@
+body {
+    direction: rtl;
+}
+
+/* LOGIN */
+
+.login .form-row {
+    float: right;
+}
+
+.login .form-row label {
+    float: right;
+    padding-left: 0.5em;
+    padding-right: 0;
+    text-align: left;
+}
+
+.login .submit-row {
+    clear: both;
+    padding: 1em 9.4em 0 0;
+}
+
+/* GLOBAL */
+
+th {
+    text-align: right;
+}
+
+.module h2, .module caption {
+    text-align: right;
+}
+
+.module ul, .module ol {
+    margin-left: 0;
+    margin-right: 1.5em;
+}
+
+.addlink, .changelink {
+    padding-left: 0;
+    padding-right: 16px;
+    background-position: 100% 1px;
+}
+
+.deletelink {
+    padding-left: 0;
+    padding-right: 16px;
+    background-position: 100% 1px;
+}
+
+.object-tools {
+    float: left;
+}
+
+thead th:first-child,
+tfoot td:first-child {
+    border-left: none;
+}
+
+/* LAYOUT */
+
+#user-tools {
+    right: auto;
+    left: 0;
+    text-align: left;
+}
+
+div.breadcrumbs {
+    text-align: right;
+}
+
+#content-main {
+    float: right;
+}
+
+#content-related {
+    float: left;
+    margin-left: -300px;
+    margin-right: auto;
+}
+
+.colMS {
+    margin-left: 300px;
+    margin-right: 0;
+}
+
+/* SORTABLE TABLES */
+
+table thead th.sorted .sortoptions {
+   float: left;
+}
+
+thead th.sorted .text {
+    padding-right: 0;
+    padding-left: 42px;
+}
+
+/* dashboard styles */
+
+.dashboard .module table td a {
+    padding-left: .6em;
+    padding-right: 16px;
+}
+
+/* changelists styles */
+
+.change-list .filtered table {
+    border-left: none;
+    border-right: 0px none;
+}
+
+#changelist-filter {
+    right: auto;
+    left: 0;
+    border-left: none;
+    border-right: none;
+}
+
+.change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull {
+    margin-right: 0;
+    margin-left: 280px;
+}
+
+#changelist-filter li.selected {
+    border-left: none;
+    padding-left: 10px;
+    margin-left: 0;
+    border-right: 5px solid #eaeaea;
+    padding-right: 10px;
+    margin-right: -15px;
+}
+
+.filtered .actions {
+    margin-left: 280px;
+    margin-right: 0;
+}
+
+#changelist table tbody td:first-child, #changelist table tbody th:first-child {
+    border-right: none;
+    border-left: none;
+}
+
+/* FORMS */
+
+.aligned label {
+    padding: 0 0 3px 1em;
+    float: right;
+}
+
+.submit-row {
+    text-align: left
+}
+
+.submit-row p.deletelink-box {
+    float: right;
+}
+
+.submit-row input.default {
+    margin-left: 0;
+}
+
+.vDateField, .vTimeField {
+    margin-left: 2px;
+}
+
+.aligned .form-row input {
+    margin-left: 5px;
+}
+
+form ul.inline li {
+    float: right;
+    padding-right: 0;
+    padding-left: 7px;
+}
+
+input[type=submit].default, .submit-row input.default {
+    float: left;
+}
+
+fieldset .field-box {
+    float: right;
+    margin-left: 20px;
+    margin-right: 0;
+}
+
+.errorlist li {
+    background-position: 100% 12px;
+    padding: 0;
+}
+
+.errornote {
+    background-position: 100% 12px;
+    padding: 10px 12px;
+}
+
+/* WIDGETS */
+
+.calendarnav-previous {
+    top: 0;
+    left: auto;
+    right: 10px;
+}
+
+.calendarnav-next {
+    top: 0;
+    right: auto;
+    left: 10px;
+}
+
+.calendar caption, .calendarbox h2 {
+    text-align: center;
+}
+
+.selector {
+    float: right;
+}
+
+.selector .selector-filter {
+    text-align: right;
+}
+
+.inline-deletelink {
+    float: left;
+}
+
+form .form-row p.datetime {
+    overflow: hidden;
+}
+
+/* MISC */
+
+.inline-related h2, .inline-group h2 {
+    text-align: right
+}
+
+.inline-related h3 span.delete {
+    padding-right: 20px;
+    padding-left: inherit;
+    left: 10px;
+    right: inherit;
+    float:left;
+}
+
+.inline-related h3 span.delete label {
+    margin-left: inherit;
+    margin-right: 2px;
+}
+
+/* IE7 specific bug fixes */
+
+div.colM {
+    position: relative;
+}
+
+.submit-row input {
+    float: left;
+}
diff --git a/www/web/static/admin/css/widgets.css b/www/web/static/admin/css/widgets.css
new file mode 100644
index 0000000..d3bd67a
--- /dev/null
+++ b/www/web/static/admin/css/widgets.css
@@ -0,0 +1,565 @@
+/* SELECTOR (FILTER INTERFACE) */
+
+.selector {
+    width: 800px;
+    float: left;
+}
+
+.selector select {
+    width: 380px;
+    height: 17.2em;
+}
+
+.selector-available, .selector-chosen {
+    float: left;
+    width: 380px;
+    text-align: center;
+    margin-bottom: 5px;
+}
+
+.selector-chosen select {
+    border-top: none;
+}
+
+.selector-available h2, .selector-chosen h2 {
+    border: 1px solid #ccc;
+    border-radius: 4px 4px 0 0;
+}
+
+.selector-chosen h2 {
+    background: #79aec8;
+    color: #fff;
+}
+
+.selector .selector-available h2 {
+    background: #f8f8f8;
+    color: #666;
+}
+
+.selector .selector-filter {
+    background: white;
+    border: 1px solid #ccc;
+    border-width: 0 1px;
+    padding: 8px;
+    color: #999;
+    font-size: 10px;
+    margin: 0;
+    text-align: left;
+}
+
+.selector .selector-filter label,
+.inline-group .aligned .selector .selector-filter label {
+    float: left;
+    margin: 7px 0 0;
+    width: 18px;
+    height: 18px;
+    padding: 0;
+    overflow: hidden;
+    line-height: 1;
+}
+
+.selector .selector-available input {
+    width: 320px;
+    margin-left: 8px;
+}
+
+.selector ul.selector-chooser {
+    float: left;
+    width: 22px;
+    background-color: #eee;
+    border-radius: 10px;
+    margin: 10em 5px 0 5px;
+    padding: 0;
+}
+
+.selector-chooser li {
+    margin: 0;
+    padding: 3px;
+    list-style-type: none;
+}
+
+.selector select {
+    padding: 0 10px;
+    margin: 0 0 10px;
+    border-radius: 0 0 4px 4px;
+}
+
+.selector-add, .selector-remove {
+    width: 16px;
+    height: 16px;
+    display: block;
+    text-indent: -3000px;
+    overflow: hidden;
+    cursor: default;
+    opacity: 0.3;
+}
+
+.active.selector-add, .active.selector-remove {
+    opacity: 1;
+}
+
+.active.selector-add:hover, .active.selector-remove:hover {
+    cursor: pointer;
+}
+
+.selector-add {
+    background: url(../img/selector-icons.svg) 0 -96px no-repeat;
+}
+
+.active.selector-add:focus, .active.selector-add:hover {
+    background-position: 0 -112px;
+}
+
+.selector-remove {
+    background: url(../img/selector-icons.svg) 0 -64px no-repeat;
+}
+
+.active.selector-remove:focus, .active.selector-remove:hover {
+    background-position: 0 -80px;
+}
+
+a.selector-chooseall, a.selector-clearall {
+    display: inline-block;
+    height: 16px;
+    text-align: left;
+    margin: 1px auto 3px;
+    overflow: hidden;
+    font-weight: bold;
+    line-height: 16px;
+    color: #666;
+    text-decoration: none;
+    opacity: 0.3;
+}
+
+a.active.selector-chooseall:focus, a.active.selector-clearall:focus,
+a.active.selector-chooseall:hover, a.active.selector-clearall:hover {
+    color: #447e9b;
+}
+
+a.active.selector-chooseall, a.active.selector-clearall {
+    opacity: 1;
+}
+
+a.active.selector-chooseall:hover, a.active.selector-clearall:hover {
+    cursor: pointer;
+}
+
+a.selector-chooseall {
+    padding: 0 18px 0 0;
+    background: url(../img/selector-icons.svg) right -160px no-repeat;
+    cursor: default;
+}
+
+a.active.selector-chooseall:focus, a.active.selector-chooseall:hover {
+    background-position: 100% -176px;
+}
+
+a.selector-clearall {
+    padding: 0 0 0 18px;
+    background: url(../img/selector-icons.svg) 0 -128px no-repeat;
+    cursor: default;
+}
+
+a.active.selector-clearall:focus, a.active.selector-clearall:hover {
+    background-position: 0 -144px;
+}
+
+/* STACKED SELECTORS */
+
+.stacked {
+    float: left;
+    width: 490px;
+}
+
+.stacked select {
+    width: 480px;
+    height: 10.1em;
+}
+
+.stacked .selector-available, .stacked .selector-chosen {
+    width: 480px;
+}
+
+.stacked .selector-available {
+    margin-bottom: 0;
+}
+
+.stacked .selector-available input {
+    width: 422px;
+}
+
+.stacked ul.selector-chooser {
+    height: 22px;
+    width: 50px;
+    margin: 0 0 10px 40%;
+    background-color: #eee;
+    border-radius: 10px;
+}
+
+.stacked .selector-chooser li {
+    float: left;
+    padding: 3px 3px 3px 5px;
+}
+
+.stacked .selector-chooseall, .stacked .selector-clearall {
+    display: none;
+}
+
+.stacked .selector-add {
+    background: url(../img/selector-icons.svg) 0 -32px no-repeat;
+    cursor: default;
+}
+
+.stacked .active.selector-add {
+    background-position: 0 -48px;
+    cursor: pointer;
+}
+
+.stacked .selector-remove {
+    background: url(../img/selector-icons.svg) 0 0 no-repeat;
+    cursor: default;
+}
+
+.stacked .active.selector-remove {
+    background-position: 0 -16px;
+    cursor: pointer;
+}
+
+.selector .help-icon {
+    background: url(../img/icon-unknown.svg) 0 0 no-repeat;
+    display: inline-block;
+    vertical-align: middle;
+    margin: -2px 0 0 2px;
+    width: 13px;
+    height: 13px;
+}
+
+.selector .selector-chosen .help-icon {
+    background: url(../img/icon-unknown-alt.svg) 0 0 no-repeat;
+}
+
+.selector .search-label-icon {
+    background: url(../img/search.svg) 0 0 no-repeat;
+    display: inline-block;
+    height: 18px;
+    width: 18px;
+}
+
+/* DATE AND TIME */
+
+p.datetime {
+    line-height: 20px;
+    margin: 0;
+    padding: 0;
+    color: #666;
+    font-weight: bold;
+}
+
+.datetime span {
+    white-space: nowrap;
+    font-weight: normal;
+    font-size: 11px;
+    color: #ccc;
+}
+
+.datetime input, .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField {
+    min-width: 0;
+    margin-left: 5px;
+    margin-bottom: 4px;
+}
+
+table p.datetime {
+    font-size: 11px;
+    margin-left: 0;
+    padding-left: 0;
+}
+
+.datetimeshortcuts .clock-icon, .datetimeshortcuts .date-icon {
+    position: relative;
+    display: inline-block;
+    vertical-align: middle;
+    height: 16px;
+    width: 16px;
+    overflow: hidden;
+}
+
+.datetimeshortcuts .clock-icon {
+    background: url(../img/icon-clock.svg) 0 0 no-repeat;
+}
+
+.datetimeshortcuts a:focus .clock-icon,
+.datetimeshortcuts a:hover .clock-icon {
+    background-position: 0 -16px;
+}
+
+.datetimeshortcuts .date-icon {
+    background: url(../img/icon-calendar.svg) 0 0 no-repeat;
+    top: -1px;
+}
+
+.datetimeshortcuts a:focus .date-icon,
+.datetimeshortcuts a:hover .date-icon {
+    background-position: 0 -16px;
+}
+
+.timezonewarning {
+    font-size: 11px;
+    color: #999;
+}
+
+/* URL */
+
+p.url {
+    line-height: 20px;
+    margin: 0;
+    padding: 0;
+    color: #666;
+    font-size: 11px;
+    font-weight: bold;
+}
+
+.url a {
+    font-weight: normal;
+}
+
+/* FILE UPLOADS */
+
+p.file-upload {
+    line-height: 20px;
+    margin: 0;
+    padding: 0;
+    color: #666;
+    font-size: 11px;
+    font-weight: bold;
+}
+
+.aligned p.file-upload {
+    margin-left: 170px;
+}
+
+.file-upload a {
+    font-weight: normal;
+}
+
+.file-upload .deletelink {
+    margin-left: 5px;
+}
+
+span.clearable-file-input label {
+    color: #333;
+    font-size: 11px;
+    display: inline;
+    float: none;
+}
+
+/* CALENDARS & CLOCKS */
+
+.calendarbox, .clockbox {
+    margin: 5px auto;
+    font-size: 12px;
+    width: 19em;
+    text-align: center;
+    background: white;
+    border: 1px solid #ddd;
+    border-radius: 4px;
+    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
+    overflow: hidden;
+    position: relative;
+}
+
+.clockbox {
+    width: auto;
+}
+
+.calendar {
+    margin: 0;
+    padding: 0;
+}
+
+.calendar table {
+    margin: 0;
+    padding: 0;
+    border-collapse: collapse;
+    background: white;
+    width: 100%;
+}
+
+.calendar caption, .calendarbox h2 {
+    margin: 0;
+    text-align: center;
+    border-top: none;
+    background: #f5dd5d;
+    font-weight: 700;
+    font-size: 12px;
+    color: #333;
+}
+
+.calendar th {
+    padding: 8px 5px;
+    background: #f8f8f8;
+    border-bottom: 1px solid #ddd;
+    font-weight: 400;
+    font-size: 12px;
+    text-align: center;
+    color: #666;
+}
+
+.calendar td {
+    font-weight: 400;
+    font-size: 12px;
+    text-align: center;
+    padding: 0;
+    border-top: 1px solid #eee;
+    border-bottom: none;
+}
+
+.calendar td.selected a {
+    background: #79aec8;
+    color: #fff;
+}
+
+.calendar td.nonday {
+    background: #f8f8f8;
+}
+
+.calendar td.today a {
+    font-weight: 700;
+}
+
+.calendar td a, .timelist a {
+    display: block;
+    font-weight: 400;
+    padding: 6px;
+    text-decoration: none;
+    color: #444;
+}
+
+.calendar td a:focus, .timelist a:focus,
+.calendar td a:hover, .timelist a:hover {
+    background: #79aec8;
+    color: white;
+}
+
+.calendar td a:active, .timelist a:active {
+    background: #417690;
+    color: white;
+}
+
+.calendarnav {
+    font-size: 10px;
+    text-align: center;
+    color: #ccc;
+    margin: 0;
+    padding: 1px 3px;
+}
+
+.calendarnav a:link, #calendarnav a:visited,
+#calendarnav a:focus, #calendarnav a:hover {
+    color: #999;
+}
+
+.calendar-shortcuts {
+    background: white;
+    font-size: 11px;
+    line-height: 11px;
+    border-top: 1px solid #eee;
+    padding: 8px 0;
+    color: #ccc;
+}
+
+.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next {
+    display: block;
+    position: absolute;
+    top: 8px;
+    width: 15px;
+    height: 15px;
+    text-indent: -9999px;
+    padding: 0;
+}
+
+.calendarnav-previous {
+    left: 10px;
+    background: url(../img/calendar-icons.svg) 0 0 no-repeat;
+}
+
+.calendarbox .calendarnav-previous:focus,
+.calendarbox .calendarnav-previous:hover {
+    background-position: 0 -15px;
+}
+
+.calendarnav-next {
+    right: 10px;
+    background: url(../img/calendar-icons.svg) 0 -30px no-repeat;
+}
+
+.calendarbox .calendarnav-next:focus,
+.calendarbox .calendarnav-next:hover {
+    background-position: 0 -45px;
+}
+
+.calendar-cancel {
+    margin: 0;
+    padding: 4px 0;
+    font-size: 12px;
+    background: #eee;
+    border-top: 1px solid #ddd;
+    color: #333;
+}
+
+.calendar-cancel:focus, .calendar-cancel:hover {
+    background: #ddd;
+}
+
+.calendar-cancel a {
+    color: black;
+    display: block;
+}
+
+ul.timelist, .timelist li {
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+}
+
+.timelist a {
+    padding: 2px;
+}
+
+/* EDIT INLINE */
+
+.inline-deletelink {
+    float: right;
+    text-indent: -9999px;
+    background: url(../img/inline-delete.svg) 0 0 no-repeat;
+    width: 16px;
+    height: 16px;
+    border: 0px none;
+}
+
+.inline-deletelink:focus, .inline-deletelink:hover {
+    cursor: pointer;
+}
+
+/* RELATED WIDGET WRAPPER */
+.related-widget-wrapper {
+    float: left;       /* display properly in form rows with multiple fields */
+    overflow: hidden;  /* clear floated contents */
+}
+
+.related-widget-wrapper-link {
+    opacity: 0.3;
+}
+
+.related-widget-wrapper-link:link {
+    opacity: .8;
+}
+
+.related-widget-wrapper-link:link:focus,
+.related-widget-wrapper-link:link:hover {
+    opacity: 1;
+}
+
+select + .related-widget-wrapper-link,
+.related-widget-wrapper-link + .related-widget-wrapper-link {
+    margin-left: 7px;
+}
diff --git a/www/web/static/admin/fonts/LICENSE.txt b/www/web/static/admin/fonts/LICENSE.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/www/web/static/admin/fonts/LICENSE.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/www/web/static/admin/fonts/README.txt b/www/web/static/admin/fonts/README.txt
new file mode 100644
index 0000000..cc2135a
--- /dev/null
+++ b/www/web/static/admin/fonts/README.txt
@@ -0,0 +1,2 @@
+Roboto webfont source: https://www.google.com/fonts/specimen/Roboto
+Weights used in this project: Light (300), Regular (400), Bold (700)
diff --git a/www/web/static/admin/fonts/Roboto-Bold-webfont.woff b/www/web/static/admin/fonts/Roboto-Bold-webfont.woff
new file mode 100644
index 0000000000000000000000000000000000000000..03357ce4f5833006114f2e790a7b89dbf69d4f90
GIT binary patch
literal 82564
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

literal 0
HcmV?d00001

diff --git a/www/web/static/admin/fonts/Roboto-Light-webfont.woff b/www/web/static/admin/fonts/Roboto-Light-webfont.woff
new file mode 100644
index 0000000000000000000000000000000000000000..f6abd871351b74882016af8e796aa6566803035b
GIT binary patch
literal 81348
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

literal 0
HcmV?d00001

diff --git a/www/web/static/admin/fonts/Roboto-Regular-webfont.woff b/www/web/static/admin/fonts/Roboto-Regular-webfont.woff
new file mode 100644
index 0000000000000000000000000000000000000000..6ff6afd8c863f4ee4a2bd032a93c5dde5bf15f0d
GIT binary patch
literal 80304
zcmb@s1z4L+(=bX6TC7hYxV6OzQrrqWEybPSL4y@{59E2EKnZTap*R#TZlSn`7AO`V
z#fwXd70F3o`TqC+&-b0{I@dY5X7}EmnVsExcki8<o%m@fDiYiwARxFSSxZ2Hf8H&B
z`j0xk_<#Ns74<amj460L<L_krd7NJ9je;T`SBtL$@rjp&n{Zi4TMLB8EfNsCeoH{`
z^P~LCag7p4|1|-@n>ToTI=&OcnDO|87DzydfItDyM}X%iuxv@?sj+skawi~Ad_h2P
zkB@-he%ygfDW$cq_frA_6-zwN%ioEtg1pqu-QER{%f`#A!^^XM+#pbDZ{>w=tEP?T
zdHApNhrM%v9Uf;yKrj+OaL4{TQRIx@TU#p|f;&{xcpgD~61!4aZ+(kL65OHw-R>Da
zv60;phrD(1_Q&IR@!}u^1b^tg%Lt5ecC*IwF((iZ5Ml9n-dYJ_q>GimJHZ`}cldTs
zf2Rj(cYnHCx!B@yMfmzGevH{q@5{j4-MqXB?r=g02%dNl5U|sK(oBBq?rDo}D{+M9
z>%{Yk<~GZHz?Xlo2*Gfa+wbua^c_9n|NR_QQg8ELu(q_ZwETV#LPhw8CB)Ls(gsDi
z%DBl$$gyck{e)1Fkh+%i9syU?U0MSFh5e;R>40yoN5@{8Vb1q@`RNmxqE->KtPj(p
z75^v@7k6EG&VM=078s^esIx|&sL@G(PDUF=zerF>`09-TmAj21;J)4ci2NYCw}F9n
zwAy+*S9zItK4Jos{}@l+3YqXL-<s72nVFfDqQIq^RAyVWPB9J+<l;B6GW$PSa;!76
zIK~8DSzb$@jf_^)jlP^ZqB)ct&`{4>L*xd(-e$IrM=lAtv1pM(Xfyr!>YnPP%+0ga
z7~4lAXOcPi#^<R5M6+g{L0FQkoN0)EbR8eFV_p45A3~r3T4QTG3hy}M!;DHlb9=ko
zA0SWp)#??*zW0yn3M;-j>Dn`QOEZBt5uYNS)!ZPhxOVM>`7Gw_U#)$gt*^JuXgI%m
z?(mkDzWI60jk&Y9JeK69)-R~Xg&qyDU;gqUm2}1LS7&|w3YO3JmrSZ(Yu=P6M7}MP
zOojCHu<79NTt5pnF5p}z+@%s7c`~0#Esc&FWmxd_L`O<x&u+JL<mWs-z1sU8N5m4S
zJSeYN%f44AuXe)kHn-gSk-TDOp=my$dde94rP>&$5edtjn_tamHoHFGL#JUWNHQ(v
zd;+5*uQ4*Rr+K@lyUT+O(EM|TVCEm_VmGa`)&Ahft3xS>T?>tX>?d4e8jBB3=e!wu
zSSEMXx!4?y1G@dN(pOr_qs^Q}_PguKyfi&KL7L%vKh|FEhg$c3nTJ{QhCJHxbM+@{
zwsS-6IS<L;G+SVo2h~&9h=YyUg=V!2ezp3Dx{#q^^u7G`)-l{$ezkyohE-IljU2>5
z+xrLXH4e82bHD+AVHR<%x7aJ#7ueKSBBmTa?}@@I7Mb-QYVpXZ!tJ|LBaC)|L~3JY
z9~MmiaBk=gjkyV~{T4?8-!Cl5;d{7TAFV;uE^B00-%adi@M7GI`Z}`x<wedFJIvxq
zN?UuV$+@a~PEcwWhV*u6{PBUxwQQNzV(hQ)OMR#h9Cbi0btrWThcA&@te2TO5TX8S
zEqyk>n;cvJA=Af2oNvsgY1QvlPAA{cf>IbydwSO_QI=5%Xtl&LXchZmSwxgIj1&#-
z53H~BlinTA>@P9<GVlGT_)juK##ETr_>pCn<UQ6S*6c8>yDa89?^P-tlU_QBVBE%G
zkH7loH|jmYm21W?Bjv0Ja|fd<*VsE^GSb7lEXkKYn~wE@p@VljV#AI4{P?<cXF6j}
zJ9;n71`Y+yQU2_C+<iO%Ytb19lh_9ULmeHsma5z`%O#Th$Gb2Ok*fnE#`we4pbJ?|
za-O~I4!P{@C+j;y-$6liYjrL3;+D@3F}+vkLdf_Hmce9ot$vZ0<3X?<(vm#;j=v_L
zBY|_wS&E{L7wUX#G7m#tP|pO)+?m2`tBIyM(+|Q}(`AVVL!lmW{SU^v!Z%#WWPO?i
zkvYc_oAE^GP39g}e^RZwJw3o*Q1|t)EV8psaGyO5c0M%*V{bZiac`i4mPU}@?)ur<
zw-`Cdwcwg)%&gGuyJM+=T{<^Q)1H<T!EJ8_IyXp1h6ml6ClVM%toL{DccG!s;P0}%
zuFywkN<DwwB)$y|`@+bV7%BEv&8AsN$y<?z5#H<WubucKF84=lau_NK<j$kntI_>>
zD%-j#nNK)J!eCU=pxLt$;T7Y$Ld&<N%p;E2Xv!dGl#iBJPV>m_vJ)qCk{sA-yZ%0L
zfbNbw`0-sP?)<K7SB!PX;*F#~rZeKQTlL&PJEtYp4HulSE}_Lf5(cmxe$Xu(m8DL!
zT)vh=zg)hNL$CUGGWUZSuZG;-ufK@mW<U~?N*Q8|`%`;2uVj>dmHHBIpjIs-_zD>V
zB<Fglk=AV)ce)2RZJPYG6U5|0b+O*sj#q>%=nx5RW%S?IG7k+`$<;qQFK0y;e7BxW
z<~xiP&R`Dznqp+_{%C46v>}LQG|amISPT;X`KQ2Q-wat%ihqt?r&IL;Hlmg9$KYA6
zgZaZ-^w{HEyRLB?bQ)Uje)B?PSRT4G^ik1@(AkEbv`kCSt)Tz1ETySa9vMHI*~G#r
zM_#b0tN4QlMaSa4PVUlIR}*L0@6=ZhrYs(ax6O3(?cvaKxcEBUZ2PNjCfA2ktm!a=
zqmR;@WARx_0!O3YAB~LRp1URO)c}X{h=%ggmKajT-7=vk+mF{ld{-XSl0s>W8ESE3
z>`I#)zW1@isq~(O5ftCj+FjI@gr^%=`)xPv*H<*UouH0Pc_xFUGsopVE4r7wse`&`
zqmN{2RW{|S2-W@QF#f%a_&H(YEA86OW8P0uGD#3OXInR$_o%bIC{^7qgkBZ9LWRmW
zz3v(---fwh)lvmVJfQLsDB+4MwWQgh-{2P?>ajtc%)TUxUY$msJ9EVe*sYq_F3BQ%
z-SEz3<NIrqAp@#;TuDP)9^ZxhQC#rn20IeqaJ%Tb*@FP_c)ltdHNzx7D(C&crn9BK
zFP5U)(8MY(8=%1_D&Rakb+1e6%!28vCX;^WK~b#VrJiKnRAzB={ZBE3X1(`<2y3J9
zNmB&0iuIf5x*^l0z6y_FR@lYn$0P9QoRo!Ywt^{Y%L~!9GyZUDtiiUc*=4NsEPIwm
zqDJ4{yyAO@LAPYpbM?#U7>l0K^eAJasMnRR1r4nEW~}b1);-CpdjL*^fXT@xsHo1I
zrx0GRA8dsYqwY{;-{axh1#)c#(^<Uw7aWdaiAVku4v0to2`(0zhT8uHAqLw2Ehrjj
z{}W^l*a*{`qW-3R*G(I0MT@$1SZ?90m~+$LJLJ7;kLYZTy)k1s`1+1c1rYyyM&M83
zTSq3uE3FKJzCTm>UIeW71Tlt*4n))pQi8jlM;;0q2A?*yx=irdo#bBjebedtrtEn`
zAq!&>Om$;f2EF3-sRx}o+e&LTPn|p4gB9oP&!Dz>OZ9P{-#Jt6X++&Na}l9xZG+CV
z$-OPXuvd~_B0N9b+xSy><Zm(OAZcXqA7~uK#-E%cf4@q(=b}7Hm2%JCeR^GoeBEO`
zd$oEF)SFoUrL&_n)0<h#)a;Gqmn6>*+zzsFg+HuS>qB1UY{yf&KR*~?^#{bSc)a|(
zwD#`d+C6|3<%o71+i88%+xWO2F)XXRrho6c3p3kJP;4Mh=k(tMF?cIk)bbrD*UB8w
zW=CU>pE47o*Eb<FvV$}i#CMdk74B+$CFT1<T=g|_Upga&L&YKK|8qubr0$4LT3{>J
z`2Qg*x|H=<@)VZ1NWiW+?$m8eTaT6xB0%wcrOaSWnWk*)rsGcb#<cioxf8-`*>pU>
zOVsDH=MHQmTh0(f#9K;kq{&p9?X~R~WPkK*YwBBe&S=?MD!TZ(Gc)s*5~{RRh*_gm
zhLA>3hPwF$PD~y0D}Wag$WB~G+;0>cUq`)Ld#CvOm~!yPZ0wOEs<%S&an0t-j)k9v
z1~7@nU%lnuSTt2hRIHwH^Rk797u6;JsFQkL>l!NW5UZFyE9YU;4=*Z908k|rypG#9
z(bXB6q4`uC?(FakY&1ko{V6=$+3J5RD#z}+JDNs<)}*rOXIE0b#Ov}%$N9l3OUIo@
zHYxrKu#}J!=WNPK!9Gb_pGULI#il{dn+w*$w!V-41EK<QHg0=Pyp9MrA<WCGUL;3i
z)Q~567NM!ol0Pc6W4;+h`^^2N>)dDO+-*=4N`cO{u4g~_eBA5PM_<i4<IYqUanki}
z_q}d4t7>Z;*M?L<%D*dfW3BnWDJU{_U!lCt$nBsEWc)cj>XXXo@tCnMgZ;c}HLDn!
zvyA2?U9JZxTTN9WEv0s=$;hH6iy8X)63dEeV`xEgZTy0e&C(S63h!EGRSEd%mi<Z9
z^lV%RO=qt?E+h(7;#*_7?xaj%@fAn*F>eyRiYmPRZmPek+|Ifm_bJRNdE7Lua;42i
zc$Pg&GCtLv8MyM&U{!PVX5~U~NDbx0o;|DDqB+0EwY%unEehOfr9gSHXK$%4-dx`h
zFhg?UkIt=Q@*tPxT%UzI&Kd3gdbtHP>bb0ahqa0Vk92qrsOWtlcCbl!u)UUvA1J`7
zrNpRLw4c73d&XU(F2V^enk}FvVS#W*@~+?+w#F!`xm8<BxHd8iQk>wr|5+I~1vzhK
zLWE}lS>vZA#<k1qRuZ${>@Dwyyu%*lP5UWQ%FwJT+=e_7u;#G)+v(o(hRlam9Iq>)
zzEC`Gc=vFeBH#GAh}t{5s4u)vGTC3(zj=%JKas@sZ>&Uhj5GiSl;Pk0RYd#|Zd_2i
zkgE~w@_g$2MX<oymH*+h>OYu^mv1Ddv^-q%My?&Wz8{tvqh?iceHQ^oId8NP4|$%2
zetM&ZcsoqNZCp_JZiwrdkm~yw-o!+9p-*pKBb0|I9<i^7AQmT*u8cijs=1~mpxM`b
zA4z7jN7k>qBN$Oh?Z%$sY6o`1OT4XF?0)sA*(aB-o-fqM?S{K~ThrLjKMr>~de&qv
zR&e}R5%}y}b*PiVvxZIZFJRTbPkGG{ayI*Nj3wLY4_uL}u#}OaCO_+}<4_~LXH|r0
z#j{yNqSNRcR&?)@{tQYMgp81}=*_LMnh>zAnXR2AnOhUx+qd1@SNEreW^b3yVIOqg
zJ@X_hUJb<OL9G#;?J=FL{{orj7@5X@LCQ?RB)zVQysDG30~vSKvtrRAZ#r%>Mb)&#
zN!y}^zf!0ZChzK+{HaQ!>~M#h?}hyPB|u%)b6-%OD|}AlNe%a^s6t1{`&qzo=5u~f
zpDnya{Ye`4s*r+d$@@`&N5+4HtV?^osoMwUiK#D-DgArneKEiz<$0WLpAK9?^@%h$
zgi~R!=zR{LF8R5uZl4CcMdgV&H-ufGvgmy(pf2gTfo`8F+(_jK@V`f*lpdHyV^qh*
z1Q-hpiCHhv7JS*gK1p2=+VLcs*X@oMB%@>94C&DUw+B?C{N1yi1#brh=kDZuui@7$
zK`pt5CpI4vugPvMO|<^>7|{BZU6Xd$xpU-$r5nQ<vN#Of5*J0BZ|E!MIw&}pZv+Y+
z+}r=Ses@!;Mx7ZF0P{JawMI^9JP0~r=`_i=sV?}x!ANV;@R}P;)T_lI6>n>QA3;=P
zy{vXUX=xi?+u?}+UlpmJF4erkrp6_$pB4{lcv}%QTGL*9$mj~xQi*6UZS@ZU$Yb*E
z$1g-GGn|_?Vs=CK4@693DqheD)Ls|&sR0WL^-)YyiPuZ+vkgKWP9HI+m28?kQOT;S
zMM)Cn*Mxq8z^HiD)k2|;=<P$jT#egb(n+_jHu6;kh?cTNKXK1C0V|2K++xza?(2y5
zgwz!?<p82jM6>7xroqMb=+sz08lbfw0C$^%R6Ri^b=0sO0*9~uSp@j~;^~zRzBhFE
z@9m8W=}P_-_`vp*Sop8Do8fMy>0`flKG%8o`=>dh%hjksA)Ld9jw44lMuV`NfarAd
z*Gm-v+UiTy>1}3$KJ5^6+OHtFi#FVF$Kfu{o(R~}29pnlDH&n%#y*{g`!qvFPKt8I
z?KdH^$Mq?;@N|B=K+!1{O2ggqdKbHSPtT{r65+&pRt!z7Va~PLCvqyJ1|T_LNr-{^
zO=bEoW5LsU$c}CQ^f0_UnF_=S+<ck1&f{OPO9$<{e7+qhya|s4uJYl@t%UQhcnv|~
zKwo>$P7j0H6e$xyp9YBd$Kzk?cM)zaiu13=4BOSxaj-I&Sw!7fJ3L^v?%K`c9yVmq
zp90G%j0-7Y`JBwiYRcWl9aAclJJ9mi@syQJb$Xzw;Asn_I>6VRSHInGP7~I=qObZx
z{1SQD?YZOKztT9qV%m7Q%TP_)>y(`v(~4SwBG#czq1bt1ls!-)uj>1MRn$q&PAJa4
z^XOjQ0q3o@!B{bRW6edEh`Y$*xt|;c)PGRQGDF8JG9}75Ff<8=Btuxolg7-KRUBG0
z38f@MqYo+rB%PL(m-Xr=D(1J)^O$dYyN+k4VrTnzkv^<f-gmC14tpO!gV?W%GH-Oo
zk!7wO?VqB4>L)ijPU>r9e#GA?NTfT=W}W$hYKIXI1khE}b8=f~BxIt2T&&eCIrr78
zat4Z&)+g7&<ox#gT@Ph_4DatQjdp_%$dET0Q*pqnJAG%v*&BpJjf^DRkgkXpt;7K~
z2XzWG_o|eFdg=RZfS{S0da1Ho(oc@46;eS{wYKCw_Xyf*_6Xn{k;-aw#EteF=*%Bp
z+^c*FG2bYxMfbvNTDFt~na8gMTi&1ZZ+5DspToE=1$vD(&H6hS(sTQM+LYvx3iWA5
zv<&|tOx35t=b<ZqP(0MRe~asx^Hb<kg3l>Gq2Y!+x4lLG6m`*%L*?9f+|}&+%aSt4
zlCm80cHsEdj5hvJ`g@g@tPP2@45edQ=0Qq-Vl8ZIF)x;UxtDmeGybvmI}NUTTavv2
zs3wIV?>F{8*;%fvo(4!fl(SiW=ooA-h>SU=im9==H7cnY@VO4Yx0XeR>ArrHKE8z;
z!+533rENcmp~;H#m9%c^*R6RPDJF{G?<4cj8xA_{Qxu+>X*|Xy_q9l`<&N#fBGv0_
z785ODt=8@w*a=&xtfHVyrUZSMTKZY>=i-=P6?e%sAgx8OR86?RBUhVcK6Ok)`};v6
z<H26bya=UR?`2rHPp4`&5+&r7f#ZO6DI6fjF(h>lfjaN?xdt4eF^xu%WL*7<&I9~2
zSV`n(!w;ItwaOp3GxHyq<cqcuGDKy@z8P06u(K|BeCgXE8M9_hFgP%rEliJMF!q#H
zJNT9mB)V>nSR73P8GEv$jn3?cGw7u`%Qy`kB@A|YPC_JMG{=5|uqz>0us?LqvgYvN
z=y&1EAb_IRsSqKuvh!V6@MR#`MyP;R-g>4laY=Vta!qZTdH-$)t^{K}4QcZ%o+6X^
z620G<axvlday8km)<K>psSheEn5Q+iMTx!qXK^Q~&qvlHN6U0eN%cOgM2({Gvd><Y
zTazN|vd>P|BSUK^`Al;vVw$s87eYQ|rShuN`p)4M4re~nvGGuiY_rDh*P5l1k)yL^
ze2NZI{}Zo|C!`^icAQfdJFj+Ind)7dDHhAF{ITx-v3+q-`}<3>;z0w**R-eLC<WCg
zn-*bC#)D*I?O$>6TvN?f6xh5XbEyYYM<Rz>=f%WW3oEmlRi6?DRlE+Ii!d7Fq{c?|
zLm`5B{}09CC$Odydmb1<HPd=HmalKhz_SMf;<XoWv-%Bb^=UW3Z(xVD+5QV7%zXCo
zuFrCtJ}EW-p_Q6VHuAo_s&CrhY?B)DF)4k)5m?SA-dkR@sg61<d?CeUFOW*91)f&}
zzb~!A%k|?M)qtq;C8U33E8&U4x12P<b!Fl6=7a^G*$>%O0`|M3^S?Z&lB)!)cW(^R
z>b}`J7h`&anrgH8c%2q|#+|Js!A2-*gs7{P<W{w3lP3eXHMZ&}uFz<}08!_&;cP|+
zHbl*&*88C6+B|<FaxkAfo1C*G6QxW=eOerM+`nb_ews#qEU(cASyYrD4K#wQG6Ri7
zeQF(d48E=4NK(C^92uJVclGBY_J^L13i<HXhi&J~g)dzsVe234mb&U|ERE!?`Mtvl
zds0l5dW@0VL#abZn_{sh2&@sJO-IzH&~ZoMTlVOu>8Ow8l=`5<@{(ncMrUcJmoY-Q
zq9hLF5~%G|RXk&&##fYUqAb&x5a{^qbXs<&++{}hUU?~@?!?T&hXEa}*uvbZ^3s15
z%1RMBTKfgL3kougBo_5$rFJ@6;{~~y3NoV6fsSg8(+J0MzHhqVkHt-TYA)r71>Gu-
zy_$__UZLr%5s4a`@~RoH5*d=TRnNuu+aC;^6#EanMXxp4DwbC!L$;264qZ2HU0E5H
z$4~s~4#*CZUD1AnBe<C!Oupkqu!5Lx<Or^$2b1y3*WV{O$d4z`{^LqB<@`}ICGNXf
zc^6hX;>NF%K4dUqL)C}D@MEfJx$By$Pgcf&sGU=_AecdSn0cahP<Zb+1}7(R7FcqO
zd}D_Rj<Pp8_}A6!V=s33YMY@{($=JBhC(oGNWYLQmLFlwK1vOtD!Y>eqVwdD*R&lf
zCzVWnRw}fv7m+=Z@Egf`U}i&qXlApg?78ARm1#Pf;FNK6+rJz{1G>yIvGAW*1tEYW
z%d9lQDXdNmhZcBd3!9;F($<V;;=(C{PN_k(be`fG2X>2JIpP^n3B7cl5|qoMEr^Ll
zRsJRBP5%hSiG;O`fh&5t4Wwek;zYs~-MRg32pKlrd?=8*KJNVZ4*ckuY!5v&^pxw4
zgJ+gDwW3zUkKsRL=n6RHf7-myCH<QGEKmrxg;f3r8ZYZPUY4>`bt>4aYBAGkW5yKN
zylK)ZIy+MJ_y<xstCsDkQF%3E@~Kl7MBvxLy0P<3aSJ2z%#U?#+bRQb+9)CXoYNpU
z`xosu$kFZqBA$~)Ey((<+u}u_0<C~^u+PQlUwl@T)554I8q~3@EY$g;MIsveb$PBO
zMR;qY1!3!I!x&4(LNk>?6Z?SW9yX&nVFRa`ySdH~V3%1Rj^!Gk^>Cg4a<QAgZ^~e|
z<TQP}NrYARLy<`L2rq}n&{#d%y5m@$P2=ls{(--rZZvP32furd#O+1mh;VWu(h^F0
z-x=#zUs{{}Vg6M-ySRGeW_U&BoGDw_*Bv$YBsZ0s&?j5m*L``eJHVP~E0(F`L87i&
z(X`mDY`K^Y3$OYf8^rg)A%`r9tjZqwvRGV~(6v6xt-+4`6q`Y2qxz!Ff}r^5BB@tJ
zMwYFan^?6IdERZhPp4hxrwFO#;TN;GWsdPho*AQw1>ZU`958!ny8JqO!JQ77CYjwy
z&h_br+8`2h;%dF{i8t#MEidItta?3ZMSOP4QT*&d$Ue!2DPr7y+=VhP+{tZs*6D<P
zsuk9GD=jC6NJ3%k51is&+>AAkCvI|iHAqGTu6me;K?k9;*_KEp7yG~Hh8nM)?i|UF
zac_DH$5=ZSNe*T^p-L-R<c;Oxq;C9ou$1Ma7?%UVbI;SDyjIM0_e)D=k;fU4<E)!H
z*z|zKmsTa|<=JY)V^f=S*vbIZ_3+q>iLA7-QM-~1+gr$Hy7-u>aQq}puo$OXALA72
z*UDk!YLI?DPE;}keJd;EG-iU0GPa+|A}i@j$<!KG1X)dTSbr*+*?W<fv9t-KG;*SB
z%5bp)&o?#YxVTBr#Wf|%^o5N2HU_)M1r_bP#n%naAI?$kMV+xpf5~+wn(saXT)Fwa
zV{({iN}JC^Tg+K30QXXTD?3MS7tCF1>Sh-(bGv(|XU%7XL4}>ex2R=jx5nmq^gh$s
z`I)9PDz2Gwuk%bcs4MuhtTRhvJeqSa*%zK;N3!RAr6k>pYN+3HzJdpjBVBQjtvT^M
zQ|Sp*v)lZGGne)+{GX!tDcYy`>ksG7_dMHssv8c`kN0@MHqrZzSBYlUvkO{#f$iOh
zIjw!g_F>m1Ti<BDW-2ikZV%_!szx8*$R%63`u2UAGqv_XLR6bwb?c~?i<$K7*Hd>H
zGl5z3sYlqNrFdV?s-{nAtJMLi_+-xZ?NZL6V(Zs~yW#_8>-@f5p4LnH2Z4Uc?ej~k
zu0GAJ=%pOjY=%RQHWk-TL0@FnnZ2}HIF~@K@T{GZ*1P9Q=P_9;xqbpI3a)kFRYa@b
zl4tW|=OOVDk!vc@v;RQ8c_DaR*4Js#<U9(zHPcR3-Iv;?wWQcQ?BZ+d8V&RVn@tv*
zhF5s&yJo4i@AI#HG@JR>Vq&<pv&4U%akaSbYtbUGWat`CLcw80$)Bh!qO#6@Lb*?2
zMj6T3#@@ym$QH;E$R5b~i;a+tkb{t&kTZfUf<1!MRdo^3!YU{$_{_tv;ANetPTpL`
zT<QhyaR9_`HJXDdW<S9EB1Imk+PjMtcq?8Le10akJJ~UsD^D)H-czkmLOH0a6o)ut
z<jaXVL7lOo?%kt%+>_dJk5b)!cFNnkQ!sN|(8z9~-LG!3LCae-hjQu5z0Mcn*TD_b
zufA%mz_j=-F@|clu*XHh09JsUZg!!B)(UI_kM&c#Jzt&-C&mT2Z}a#2_uub-)6W);
z>umj5xhmP82M`8K0L`7RF*#*v00E#Kj~(}IL3*LTyr7{VUV@tdpLR!;QQ1+~Y#M^=
z`tXt+cNH>>Tedjq!lhkf36fy4f11#l2W|4`RZ_sIDyW>Ob^#24Vt6ck9L@)?dd<V%
zk&BSxlHw*exY*(<vZfjYA}cO(SFeb1*%97>Yq<A{ms=8SIMc}WJZ!?X7t5qk|F<48
zVw_w<5-j3PTk|o@v+!D&V{(lcCif=uV|vNaM5QuJ_u`5-2{xc`GSTtoa?7Hi>D{^0
znHtHrP?$N#$EIUgjT0*_n(skt4{jyyWCH!>(%!9zc?AbQ+{zn`+9{NH-Z7i9%hg{8
z#{%T^FYNzf!>K2%=RHZf7M90%t4u$8A&1jh3y*?F0^+%tK^I%8Mdk3j{bNVDX4S^<
zd3XRZ4w|x_mzH#m1tr09RZk`iRc-@-!*Ve8%dI*#9Ns<5o5d5sc%s_Lgdd(LFf50|
z6T9)m^z}TN<ZG-oo~V8@k%lJ<<6ClEZhgfQGuQJBlSdd}^AxFidR!j?4ho8i`qMnJ
zpgjX<`5Yz9ax)^kAZqogf|r7tLT*89j~tG((a>AZ+rV3g@uP(LN}hO18!(V35O|G+
zPjbUS;ZuOygH%gqvOL<9Ysz;?umbH9Em~Er!EmjosyBe!M+(DobzEe+rsXa2g0EKc
z{))*20yc>Al45qMj<mE@3-K&!4lzA)e{)}Q3KjcNjjr`@N))@onc?Q}tZQs+>)5k5
zQ_cnU(uq26*Z_&x`r+;Qb;y%egE#zCi9m(**H3~%#Dapvg8apTe58Xsq=Q_<f*izx
zir;r?zxiliU##G4`~<AqCr*>mv^n?Gnh-)<0-+~9GES(w@gR-s^>fF2dKRJT&sp}<
zZ*4C+KBSZ$O;D=dUcMg2!HuNk1z#Vt_TyLNx?mla!P{BnZ!8EBRIAg~DKlaR01bdM
zJTu&4T&h$IR9RGD061LF^kUR`+dCY_FEWA)1-BUr>I-VrDU?w=hReX88eZ%km9YYp
zxa0J*OE1bH*^rJGI>+xJB@hIp36fi2n)n~fG7#RCo|XwT;aT9iuJ4`vv;S$oW&a=j
zFZz!pgwu6JG|DqdQq(~_CEO3DQrsO>8${TRGAV!>k5WtCsDkbmbNfuD2sx;xiWDnn
z>auEZCzj|bgNTbHccvIO9OCvwlsq$8#m5sfH<i`B){7-4CmD?$;z~r6v@;7i#&wc5
zhm^fUilRbrSD_+bb2u`m-neDH)u7CGcrK)Iza*+f<OzbKVDgQ2=6e;&XAaMwYuqmy
zJ{FP8=1`hix6EWzOO|)=WYZuolB8@T8OR|2K^;?gD<1c2Sz^b3t!yfmWFpuB_5TKf
zj4rb4r!71}SKst6!Ic2<Jj|e%)&8%KQy}51!Tm(96Cue3>N@;vYdu@t#b@w1I10|f
zgVHt4Z_)Iq?~%*nzufv(xJ+Y!-+c~gZ6v`|HvlD`U%)t>><S5s;}5G={e|#WxEXwc
z%7P22d*5RPd#n5UtKL`judlzVel_{Zi8_0TW=Qx2)YQ%{YXKj>U)AZih7VF{apme(
zYIoFJ{K=*3tee6;5^iHU#~(Ir{#ECz@v(frF&qe(<#si=@O{pP>#JNxC%zA~FiHhF
zJH6iF|Ed2I#902LMnch}dKKCq29KnQ=h@`(<(4&s=3l5j=?mX?SAL`bQV>=kQ2;79
zDdb65YXGMf7;QC0FyeAASjXeXA8bOdq=T~Rk~t%~#JBAt#OW}5<#GCEem@z5-gK=Q
zFyfZ~s=G%_$Q-i6S*pccx3(Bi$luwrHyJHpfyJ&>zx-*a6)O|GS5w2_Iau7)1?@>o
z7GMl&8-EO@PlS%LCc#v7PWY0Q{kR8!99$ec9NgES#3Z*z3V}+;=B5`vi$s)Hzy^u@
zpo>xgb__+dccXjQYTN*)WFZvDp9C8Lom6!wBfq6_VeYC=@0ePRzDRQ8Ry@(NQ?&*l
zZRs2;dzxReE|nbdO({<Rp`)UcstWm#)B>YAljAx_6(k1|R-jj>Qzyv}HPPQG`H}yF
z${rEUcd5(-SOOq7SRArf|4aAu>-I~-&sTd8QAMKwYbrw$aV{uOX%c^p`;PCaN;8)$
zh*!5#55Qx<{ac@~{O8xZ)<gZF2m~l4F6Bm%gQJsB+A-SK_!rAcLK$4ll(Au?QrE#1
zNzh&WB)4(ZHtl1`oU3;Azx5h)*Eq>dLoM^)$_>1gM9sBqz^ivL(^<q0Pqn&IZ6&6v
zcn9fs>^JF`>L*kvhZI8UA<>YE1ULy;G}(mb1W-kV)E6laD@g8XF5tK{`1YR~4da;Q
z9XJ<Zz>oQuwGIwQhE}*GxjoQ4sp?Tdrb-MqA3nb{SZBk0%w7j)Br}tv{l+)I`FJkx
zB)4Kb*Nh61O4=c_r`eP95<{Vkq<T5r4ClNwIAOy$=B|Uk;yDA8+-wC#np<c#4o?(|
z-x24l&T(8It_q;Q5FNVi<^!4y@UQ5PWM~)kL^A<xBWR9&j~WSp?*6Tt0CYBfG14qV
zy8&j5apZ2$y+Ay|uYI@<vcIQH7S7t^yX(nREMc$$mP?5MhE!fe^)%;l-RP}=4O5^_
z(UWdeU7#2e^p8<d^YpSKK1tQbTu`<6B)3cawtJ<Dv{iQaSn%fxI4LC;G^Ra9isl#-
zRTBi`O$cyx3RDfDtE-b=rdvcsr(mE{am44K+D>J`bJiEm=b@_k_00<SAm#TV3RTO)
zO9Y+p{jIuB#YB}uWd?}kAqQO`l!_1Fx$tEV*SB+?<te4K%uRnL?2`6B?2iX*aYNP0
zliVcre=oN+no>uA+uUGGZw&u}CdCin%~T{*$YMi>D2VMGv3&LGex7{%rmZum)2w@?
z^Kq_hu5zwmj;Cm~$5)OGvs&d{x$58VM}+}FEmpwOshV!iX>9oU23}J87jlR-*-~tP
zw^9#WoDbP{kVnMN(%i-kPpYa_k&PC^&9}hICjBA@cxdfe?r1YJ@8!%pc1&CC&yJqv
zeF}ZP>35>bH;xSGzsh499<bs~6JJOHv|>P~^PMa)W+28pW!0!Z0G`Lg|Ii86Iw0C)
zP5FDO{qd7yhbZA81|Y{79sXMlwEs(aoQjXi1%PCCD(@^PET}JtUe)fmBF1<&O`ClM
zeFd+8ml1?KgxrL{2(Ae3h{5^ZUIeoEWw_fT(-XchHDs~-_Umvr6;qQB{@^<874Y*k
z1b%5!)dqRu455a{GX3XNNOtex<{17<#AG3~VmrxA!R(~!quPR-BD7*R$t@gT`=o|U
z^&M_r;J-9jEZ(9Lh5EgjTMg0^$d6yW+Yf@5!$VtYZ3F)I0VZ|+dw@M@|Jwkqdl2Wv
z|1xDu{dJC$R&D#$`+58SaqMVU8dVup7?sX_;L>;2b2f0+ai-Gsu!<*|+=fTNgQ!fF
zf*t*pWM)PBsq;<BsLr@TO|2f2=_ql<=`vPGXdQ$4CHnoX3Ra)|L!@*6ONG|w<z?D>
z+>`K_=M`nKBtgi8f9UkSR*QEo87d1$8o3eJV0YyON>3!8x=N5EsyUV0tn9+@rOFoi
zd&(x)vi6w%80bPwrkEX$3;rl@UM`CXDaV`UD)}-`exT)2f0o|IdNTe1g(8{shtEk^
zWtQib9aG$b^iOVvl!<<^6&(60W<F`6PF9nx`+@e4P11VttI4A9mQG9Lm#=jpl;M*O
zQf40ip~Ct>iO6x2?Oj>!ZFEa&Ln&u4LranyrD5hrF70dBnTXw7L`?(uxEP{kI!9Q$
z4$uH#)`zt*1GPmmd^_l;h<}=fP>kk(7%T4KZpH>DeB-Lf4ddbFH^5Z!pWfNM&3eE~
zgcCa^sj5L5l}&Nx!fpnjISXdL`BPAD<!U4eiZRylY3-41EQ+Qw<mLdHzpqcVVlmUr
zUCnCf*}l3?`iYPPS~nmhaiV-`1_NU{9r@`M>7^GK1huVNbgCc|AO~Qg7HzT{fjn&H
zs!DxTrSR&;?_HxHl0|a+PcY!;4N3*cA~k%j#(5dCQ{*50cdDdK^xwD`>bt=(e;phg
zaf1x02uc+U{GH+U5ZK$T=5zzP`hUHBeEvV)zOuhzgtn@`;f~c3&+LC1Xs9mhP?Mdf
zjnk5j<<`@>rDeq^Z8e$hbM~#P7;JFgC2|ES=iXQXw$6LlXqESn=7Epo&2!R6J4R|u
zPUYxXrBDm7Jmz6zfyKLpfsiL>FnL!z<0rZM;$nODx+9>A5H5C%K(R<m-9#PNev~#Q
zzSz5I)inI@T$i5mtT<)#Jeu1<>)o#qVRlS>Ndp`Io;}F1d<fKFa1kO^974RWqKBy|
zEt1LExw?s&%zgbWk7Macp^V1P)gP(Qyn>`dYrT`;I9251$+Fha!z_`Jb1==u6>sdx
zO`76m$bJEIB1{JvKgET?IOqk;ISq#(S*FWUw4docLciO8tvD1B?0>LzWgL4FT&;L{
zYgp(@-2QH<C#|&y2`<be;R`n)#$cRM4zKi2g1hkotqP$mbxDW91}DKosz@#4?dbto
z@<L6LEA`Qhs}J}QH6$Gt;)ye=ayl2XF6{d%j+m{gA~~~8*3H%0!)8<Dgz4~kF1K09
zQShIt$O*II^KRgc!Aj6(3N)`X>Cj6zlkv<dZS?#YDD&Ycm_QAwWjTEQg!fW5j2#nM
zyM6^gK(z|-d`5wqg7Pa@%PHm$ua5A2zd%4)x+W{ESeja)d4oxZ_l!+O&K~Z7wvZDx
zDnS%W=jFT(TBTRAY3v(Or?pyk!{=Xl$@EBdNexJKNI|6W!UEx)GHQjr78zS@+I7lx
z_=S)$*(sHfygqfWz5>Jpp>ESUUg6KX&yAQif@<PETID>ks+rM2Mmi0j`!ju0S_$e!
zKo94V4*9?*o%U)-ahKuqYQD?mCU(qKlZd{~hc9vKm)#uPd*k4p>L2AlnCu^u1z}U6
zu;rvf4EW?GSPhAD+jiI_v2y#YD;It!XG&kxqU#aab1uh!c{@}*AKUr(P}K0~2BCB*
zJ5~st=+i;EVYx690V#*rmm}vkj2l<4<4<l1l)ecHJl_+L`PkfZUd(@q{Kk#}eOkXV
zPlIZWBpqg%(H9;CH>)89{D#j_yqC!3;!yxnz<>ChOyCl^%8v2tSiee2gJMo50sSKV
zQ&w7=tx(L*q{9mHli*o=v!LPg*L>rT;cO^udHO%RKaT^dso93uZ5qA4pN82VBy<Fy
z&H=nWL6mC+2bz6&mWpX>(m$k^r5Cki?IW0VUVijfKW<rlgx3b8^N%NWn{@EjX)ff!
zZpyMD^eKQ_jC%yI@mdJgq~GulfA%MtSpQEDX%RmgneKIhk1DG=I=wz!z-$1zO}wdQ
zcp@`tgh;KXu3oF3BpXX}wL^LnVV-GdkJ(u$++<8Bj$7U6co}mz-oX}7XT?b(gazQV
zV|A)rkQ|-kcAYHGlnio7sKB7kDKF)dvp~jg5lI$1L(p<*Y+>N1>at}xl9%)J--bU2
zhBaptx()5;LZm8!EYb$J_^pgp+J!y2vF!V<!y991)s{$avVdo16<-bzi$hYyU?YPz
z4G)@Grpd59`E9)8LcD)4;N7GY7#_^mNe`vRN};*NH-d`9FFSrxi!yDy$O`c3{g0L}
zRr_4c<Q7~2V8I>Q@=l)(pg}bb-~&|Q?NPI^SivQL44@MbY*cFbam>o}T=ibdK&mFW
zZ{H8x<FwcSsW^HC4RyKxKM|>f+|_!E`Co7_ZU*73!?;Y!>8<q9j<U;FX5^PR`O!;t
zy(f85Je$HgC%EXDdiDGEy-bpUzy=&xLb&60TvSz1YG@!v=k580z@r)`FNgE(nnyd<
z4Ocr_gg$~Gz!YHN=7%9yK(QfJO})%y)>zuI9rE+n%-HRJx&-2$!5J)tn0+{d^Fkk~
z6;dS5NA-VsEV<;k*_X4rn`(z#%h6Xv2Lt_Nx-phHleTc6u>n1P_8nIU`<b8yZBq?V
z8K0pl%llcqo;r2yuoC^a2T<5FWanB(%~)yL^O<jRf{$XAT}D}aSe4}ZQV&_mUplrW
z_`|YEkcXkjbJ}a1vRhOoBrXn~`$|a3t-riPBPPU8kg5=47Q;~3^8PUKr*st9nxFk<
z(snG3-ySJ~I83b8F&({4cEt}Uwi479Zd;57BwsLZt4#6O!6BKe4oym#s59jWtjr{E
z&uLq~f0q}y?e_vC=vH6ZkZ|*q?|*b^B+wkzZQOxef&Ce=*~ZO%q~uKlq>o0dbK}-x
z8rVznAeM8ie^$SO1F8JD4vM@}IbK*~j{7N%TeX(8jzwp(=xrJ?rfe9E*cTv36e?Li
zru)44{q7?lct%7iH8*~wqDY(iVsvB3N38MN7Lqf`4mJNho%H>U&dnlGmy^k_Y{!0o
z@>r;OpxH6Ub~1j|8WLOp5(^{$9vC;Hi>+W-FY=YAJ0KPRQ7+OkKWeoTmUAS>7HkR$
z@Gu`|dGV56)z7)LYWGRuO)HDsLiIAzCWR-bt(s(414BM`+SJ0T9y+v3t^D|fM_f*d
z!ky-s9dzd`6sz5+=QjjvfOucbCg}cD1{YfK(o8A9Oo`2f)w4<Gc1C9zf85UK<j&|A
z%sk;kzklztUVv*H5Ig%WHWDK>@?Pp}Qf##=&cB8gx%+-gsvdpKRu(4-_NWf6I7pw(
z5SZJ9Bj7I;oce9>-uw7#<Ah-y)Hi26p=;6I5bpffWfV=1(BUx&whRS3a}i}sD>a7a
zXzo1<UlNN=PlLDo4FD7FlQ1ShB_dHl&bmr(lZ040=Gy|1Sz|a0Fr=U*-AC1syP5<R
zm9g6l$8d9C1GaCEXb`Q;+Aj<J@yhD>E{1j79@!v*x-j_aXng`G4EvQ%LKO{ATiqLm
z*M}`Io(pOPnkH_*r9ValJmJ?GGW<#Liwl1*^1)wK5U)VeS<)m-zy8CN7kpY4OIJo)
zL|aK)KwCn~Y#-NPTVfsOTq~m#%zqZRSPUPf66YxaZVqN37#U6(Nn|x|WGn4izSV2(
z%oCj!wdRV<B$otU?Z|cdY<Tr-#d<mL@#BCd8n<c}9Uj$^aB+Ya6&8R)zxH$`8Q%ZR
z;G^xW`?d<`#7FN`MdidtDK{)te9uM2pKw(5(+0--V(&2I6Z?0V;%Jvlk3H;s%H;G$
z3|kEIRqL{7*2hHlZ2gVz<3^TR_Hp(uuAUmYWWR#_-0BNN>g`3T(T0OWbfC#I@38;m
zBgKqBx6kn#a%n7Wgo;mHcuI;x>lHVJ@XMjT?0njMT72g$f)<lt_-G&FTQ!e~+NH^Q
z_!a=BJEr}z#y`;|#ay?eGQB*#_#$um^^(veZ)b&3wULTR(f{cBA+2_OGiW<~+SSLD
zQMHrvB|dRcyqrrFUrairzs&5HoCG*zzIJLn05wT|<n<RI3P>mvGRk6I9x>xk>PT%@
zkHcRY(ljDW$3q(>ZzZdiZ6QdeBI`H^(z{_eS`xq0e|vQeGso5JIg?e{E5&H4HKS4y
zyl?jfJTuydzaz%yW4dDo*BKLPHQbwZ_~Rm&htCeDatM^w25`&jL5qwEFW%Id>l9q*
z)v4%|aM@#&RTRPtR1*zs0LBVct1yGncNyvUO-|ft+oL`v*Jax?BY2N03=l>o59kH-
zQsD%e)Gxy3f?r;e63*I7?u6H<o9pe-#nwv@7pqaF0UPY^x!NE_%mgj+uL+mU&tj{6
z8g}XT={GGrVvo9fb{E?k4diBadWcLWWWKb0yr#0MWOiIwPdG(6*Rn@e`ppOn>^Oas
z*T`ZtVbZM-aP;Y|5B-#WuS&q2-Z`q()WhXsx64#q$l_PqsX~>jM9!%SrYNNJ8+x-|
z)4}S3q{9@~yDNw(JNPh7Ic9Bz_Dniscz`*}Zuo7DIhSg-X&tu|@LrSkgq)lcrM@zY
z%RGWfoKto^{_a@IAL+&-@G<R+QvOX|hnu06)EAs#7h*r50Vi<oa;gHNdO*C7>!vx8
zc|CWV_YZGVn*SQsEy^KaWIaJX!$xTNl+fx$ge7f6eT?YR-r>H))nCDLvW|JR4}9Bh
z3WEn^o$S%A_<-3Qf4$Q_AsC|eI~<0XuWIVC+b3@y4cX3?o@pVM)}XY`ylFXwWgL`L
z2$q-~y>icUV3{WR)(z~A`#%1?=?KQ1_qc>;bX@MIz#Ki&;9}x|56rsTcjeRm^Ss4L
z3I4|;bdB-IG%Q&bZp6>v0ZZhXi@MAcJ?1Ynu9Dxq*;%L1y|a$C<@<G#z%cR9tT1q|
zNQNbRSllJ7^d9bI2-+P5{IQF9WKPz0|1shGcjWinqa318r_he4a{j>UU6H92S~|KI
z@p0Pg>}Laet;1cErgdBP-F{)KA7Jip*0bas7)x=EnJIpuTA^|WOM|gjjk*|y?w&=z
zP)vA@8xb&cm(HToKIrJl8tx(eNnNkS5`1HilCsk28b~eNecHV#gAH51^?N^lZ?yhn
z*RlD{ts9A~^ZWLp_L@QlD6!a{1;<MRF{1vC5_*UW#)-l9ad6rGp{1Jk_jAhQC4M6s
zZBFYWtbOK8_tzEXO44OcmQUT;-<i59DR3?YiJNP(Efp(F&qpWbx#D7NY@7-O7ur0^
zUFzJ7SG;nQo{p`(AViBJztuKQPy}~5`g5iOUUu)YoRx@|%{L>O$7ZknJ_InD$(D`F
zl$^UM*|g4eD4Tu@*{>SE4I7=^yBWK+)&?uRwCHJd>eWFaWS4^_I5n=)9J<^-R+)3W
z6KuFSbPo8%0^2&=FYM|(4~-0CuM3D5iA&qRu|rup*(}~Cx!KK)V7=-5zVW%a4S9%O
zwQu_1?Y0xffctySyGg}}!;dVeamO*vvbKapo)YU4@lG-+zg%*G(K=fa@oa)|@JkQl
z#Ft5Y#5?Vh^99@3Iju>?9a5r<zexi&Z6apu{*VU?x2$9+MnJuY<)yu(<cWl1@{{RM
zU%tjz{%}UwNX%XLWsmPllA4XRlIDzEl165JC5=oMB*h5P2r)wVArfPY<6rs~tq-i7
z4#gjT(tj+-Hr7judI`z341{xAR^-|ZiBF_&U7pd<NoA&u@gmQCBErTk#$F;lp7cJm
z6O`wyf4A~SeN28>Kw5s7G3rZqrR7_QfsnVzp|FTxI4P6H6M0I|*q5)+p@bJKc;WOB
zC3bxB_Si@Ap!&G{dgF;N)6V#zs?ug=>PDb8L3lE&ygjJ<yE=PsH^=yQ^@#2a-Z0@t
zQq-QM`=)Tj%lfSR@Jo1p@grIjliTCW+DGPD^LFb{FZ3d#GkA_#y}5xe!_^inm}3tX
zUYcnVeS}6e37a_wp>wy%o9<09xhR!L&ugl)KpqQ5F1XFR9WQ+I-Ds@YcOw6E<1A+$
z-=K7|fH@NnIHL_Btr?tO^S_C^A+O<_qx6^gnme?sa>h0_L*8&t1Aq6D>r7r3w)eDz
z2;E(h!vu*;@7?1@q}R#S%31!x>~#ssOq1IN7BM+U&E=u<vP#Zq&eEK5RA<CZN2)>W
zPAwzmwv{)HH;oQ<_^5vESmT+A>=nZm1EK?EKA1F%-p#nJx~X!oa%&J546g6YxNKek
zYXF1VJ9G3Ftqv_+{30g2;+oft?Lu=tXAk=dUG2yQv7oO%1Sf0{?ysrKIpo>k)ayX%
zocN%>Wnf7T{<66)2p>B}pNdtPvCIxKt`fGsDoK{^&w*sNf_k?owY*9*+*++%(;Ze&
z?)FDgld<ck>V6zGxP#jz2|uJXM#MwTM^2P!iA#Khab2<fD+k8xJHKU)^&)MF0CApF
z$DG;NLdZ&p6*)eN-?dtA-CKIM#?w#`7pSzbq!Fjrp0zaIvAp9d%CxwD;A?*9?Uz}C
z5A6?%X?ary<N##*#pg9P>mRofY4qU3{6c2<T`6du=dP82;9N>B=?of?=|`x0fYNh!
zN`z#_HLTk{Q@yxRI#-&!iU}GJ@e^JoHP3sTHx<;~`8kuOy&rl-(fn@Tcn9%mV{}ny
zYNm5{dBdj_jM}|A2u56f4*u+v2wXjtKYv!k(i-n?wl;J0E9&aq?5V3v4SV&wS*@kg
z4p+}Ce?BkU4p$GbvUMwv(+9j{P?F3)>^)MPUhPh$ZrG+;QejFpg<cdZnc^S+>D!#+
zP<@zD?fXsL-VCu#Z`kWyRbktP`j!X}G@RJwZ;qBZ%eaaOK5f0q-d=JQpThsQApLeS
zc=)H`0kGt}MMj;7|3%b&g~;umznwCC9}Rl<OsI>fh*(JpBn~=-JjblFFR(8hFNl8q
zw$4ee#pp_|;;rUw-4;|JJtadSlYWr#W7xaqjX+5dXQ1#B=hw(aGG$T`Gs-Xud4DDZ
zEvof%rd?D%+3D#K=C+(X<u$BIbMciqw@!rUwG%B%(_v>xEO~y6)O+k364Z$cmvAAD
zT%pwcMSdr)?S)8W-Z`JP>+wRyY{$K_9!BV&R5`whRxln<oamDH#da8dq*yE(37gA;
zYd)tMKPTf*SLppdwR$llf9^1{l_?g|<bYcK0id)vbHhpR9d=-B^Y~+TotYEcZ{>$#
z%MfEu^B2pniqxl`cii=`THe~PhwXyH13Z2p(<Rx)j_-|j-&{^Bj%~LHXrVXyN*y|w
z9lPAxK-Ry&;UNA`hG*XjzH|tRpSd0{!>asCQ!il~7NuQu4_cL8wRhE5&+Mf|7>P()
z2algv1jX51hKy$Wi(EbL+(15byvW8$V`#EqK2<Xq1xHg*Zxa4q#M!M#A-?to{Rww<
zt_YhN$aWh&KWv1>lAXb1oA1|NJr|IwQCSo7eiR?mSy0^l_ZQU&Q$@+ltiia08~WSj
zplNyqdFH*@pNEKEBJo_~OpoQaGZHA7<ck25>Ae5ekVUc4RGJgTpy=><y7*sCQB9^Q
zr1oaFzgE5+{aOK=%4Mq!Z`RPYMb47Sv_M*heu}J(u}wufg>#PSm_B|vP6h9xxVSTW
zr`~9EcluUI_gp{(_loaUzFGjfbVK2Iz%V{h7G{`<Bi_YW_x?K9x4OBS#iyOx+h7eN
z98#<jhU2J&S<uXM)jZzCbdl|1#I<p*F0MrpOT&xIGx>v&K0h8=F$F@5B69&V`JDJ_
zd#}__87rn=%eCY;82l4iOCAg}ioBIKiVXQn>ZdmL1JkRV3+|wd&N203J7{r+-JtHh
zkO=xCjZH19eP3Ur_Tcb^eWuL`tIjjgokq&BU8`7MO{2nK*2=FaGN%S?5B+`?9u<N|
z0V}`agB}fT?QzwG#>$;d@y39ew`uQ07mBCfY6*|_wC%N9nVogk^0&XN9Ibx1`w3V+
z8YgrJf-zYe=-7A8L1||U<O-SsQ!gbd^Ft_Rv}bkXJC`a;4Wv-cMY2-!&L!l(61X2b
z<*7L4J>XCnKcP#`*SriJZc~`1-|aD3v$v``_G(UAm~*vYsP9~?enW{y&*ts<L2rgb
zX7Pnb(|Nz<4ljQtFs<&&pAjKtZM1H>^mY<X{1<X2N7Vq@0K%g~lz7TJ(q5xKs!dO6
z-jRrh4)Kb3Q@XH*zWKiZP(ZK0G7wA`g0Fm3irQqQjrkm{Ce24GzS2<3urf#UQKR`b
z5L#-!km+OaFOVPSUhcUZ&f**x0Ot^aD41C1m8%GWRT%^Vu;?<dq$DTZfGzFL%~YHZ
zW=!ye{?EX6^0Ei3j3p8lGmIr>GK<;FVJ`D{kNGTMA&YpQ4_M3+YZy1V#U1YQANRP=
z10M3|R5hzy;WB@7iHrQjpIqQP=QztBoZ&Rr>Ejf?bCTcqm0vi)bbjVIOHWzn;wSki
zV=^iu@<E1WLx$wN49bA?OP};gk913yypvApkao7oTWOURc_UtVEwALIG)t3sq){5A
zUh1S)?#c_P7PqX)bE%R_c_vTgiB!mAaq*FqOPToT*GwI_glNsuiR%bQ0UqKqO5oOh
z)Sv-z@W6{iv|s?&FoY4@!WbrT8$N6x1AnlMV*JGp%CL_kRN~lJQEkqeP<V{pT!7bH
zG%;v5aV8#qZH_|`qOdYW-4lZQ75^Wlk;4Rd+GAj5S;aVkft7)Qbr!2J0|TQxgl4|T
zkjBJ-3?48ry$@hehz2qhK>UKrqGARI2G0L~*%<x-`5eVe!3qqF^Zgka7+9=WH-ObK
z0RXW;4;lb?+RfB`OjlJL$MN^M-yehz1xkPqc|E^N&;zBWiGm2CU}&0TC?E)=pb}bH
zy7e@13(U-@Y^60z9GWDeX6xCWW~<d7t@@*!i}c=0|F*VfTiLz0Bd|t)^>1f8=X=gS
zXRovKIR_91`!y&tVzrr-8d%4y4W_=xb`nW9vk_d$Hr1;3sDtXH`c*~Ncx#q*+WNx!
z((1E*6D1-eBv~?Lm+Y2<^0j;?-^X?&q}s|ZvfJ%HCNI^abegucqqFriJwxZ~0$rl(
z^%mW#59uTNSUe$~8c&Zq@$C4Nc%5T8iB7UJ)|uegPL5ONG&oIJUtQq$GnZmv6a`Uq
zSv=s<bQ)KuI$>OYTH^*>pBvX%<KiDzn{jnWmwann#CF=)h4yy4)40$nIzwxnrKjrY
zI&YY(%eZ>}<*FHSjTz=@9C9h+`pdW^x)fcEevUqiPDO{KeNlB(9?gy>hI_+~;Aprl
zYz|k4wP9trJS+;%2R{XU!H>bY;D_LN(A)oMe|vvve~y3F&-NWZ?rY!n)BQ9*#ZUH=
zykER?-Zx&a*W-12<=z6X*vq|8@8!6WTYJ96Eq9l>Wp1gP=T34HUFkcJdC%zXq?Xub
z**bW?|HGDOjl5jcU=D{jMQmth{l^}IXG<_iy@Di@h>?t9w8_O)B$L7z#*)g_q?sIN
zFplv|V4_L*By1*|?8I@%<XW=G<~pwD25uyWo4A=NOl2CkFr69P%1m;Z#ccA(XAT9-
zrH~@#QOtZ6P(mpSxs5Uwv6$Og!cy*F8Rgu`a_*vn6|AI^DymsU4YjPMj(Qrnn>DO8
z{+&F@Q#{QJyi6yDImBypbA;FFp_gME=LBzXl2g3NTfD>DyvzH%$47j~$9y95*upy2
z(<1YEgf1RnlT`5#8)Y54*e`3@D(htf%{(l1(jfI}zcg~MdDZP4<us4e#Qm~Hl}MA?
z%zd;<35~Sz1TU#{l_4`FSLRBg<VijsNHb?tfh>^<StN^Pqim959+f##Bn#O=2kkt=
zZk}Tg&+{yM**EZ;yvhMy;i9Tgt9VeYRF$fV$5f4~RxADn$<_lM0002~U;qFFIt8x)
zn*fCXk^rCpr2xDD#Q@0y%mBpzmjImrumH6HzW~Jm$^g~?+W?dRqX5qUrvRz|xd4xN
z+Fen*PFq0`-3<=|fyCG#IocGnnUDhSg*Heat}epJc4Ik0+KpV~VqCxnP#{r*_G<=c
zC{v_OgOCd(K7mh&l$kY&qBJ`@vvbawGfT>ms&{F<=c#iRNa1dSW}AK|q}oM*2h#P8
zMn>AfBP}*FdgZ!(zmLIYH04ejKzYww%0ouePM{X;xqmW0gW*2^%RC2zmS&osT4y0W
zgur|=ZfWo}qgi+TL0_>tTnz?>6w_4P^~Y4o|CZ)lZ5g&UGn#jBAtFDR254%njX=|%
zI;46&j$#RN`E0BWCZ?=E$wY8rGF{bFEi=A$aG&ffI@qL2bKn6EuvMOdhvTCOh4d|n
zGD|~*gV-uDLc}D8LQXk%vOg(MK9YnnZ<5l^xM8h<apW~HsLj(HzRYG*+gpb)ei29T
z-7m(H4nDG>Hb#Wlj#vs{0+EnWRlcFdb1#blxzzqM5G7!F`t4sQ0<AkX5iezJonwp@
zf}Y<t-}z<5-Kt#YMWMTQRW(%Ul;%S(XW!!yPmhJ+pt0c1=Y4;pK<y2S8x5KR!I0jK
z-v7~Bb;MQP3m@5UHM6l6000000RRF2{{Rno+SI*wU{uBSI6iaRwrsL@H=9lG4FU=5
z5<=)T^rF&{-m8EJL6ojYlP*G}!&8cKcM~j#ipnCO_^jx&qVV__^*!5Do|3)!oilTH
zlK}cHzu!MUG|A2EWbVwIe&(DrL?B%W5hlokh)7JNH3<+(3aTWT#7YI4si=ywC#so?
zG;*m*iY5+dmmGeX7F3DsH@}4zkY>$&YKEGVp=NXy()DcmxIRT5^vBVz(nSKplcR*t
zIkLvy;p6Y{Q(JXF76~6)x}*`W-(;`W1onds3NKNenp6sd7yI0z>Qj%NJsW)ME&7G{
zUQHp6yI6cmSP0|F#7bI`fB?g3CSMhaB378D;-#9cNTZkh5)2HJRw&FC29JWD5{@mG
z!pvPIFtW*q-xky0#1GC+6rcK$#_K=-A(-JCzNd^3X+OLtiKNjXBoGJl54aN&eLi2n
z1n&%(ZBg)CMQEJKUQj8h$tl?$pPwkzm9d`qq->A3N|xA1q9Zj8Ka$}i#bUL?M^sBM
z(h@KE6QZlN1cyHk=H`yB4!Gm21(hA$E=xhB*&Syt@SEUsQ<2{cpP9_~nMtw~Xl{q!
z27eJ1UG2}H1zO9*lkMO6<s@+zSWmWp^OrsNpd~sgg+!AJ-p;-&_#IwVX-P1{L!6`1
z8fSCiP?dIf6m)Q~?<)Hqi{G)2hxLKKif4ZXV<v^iNe+*bf_*Ae!#&fmUF_%(L|m#v
z#l1*QNlh!f>7Ujy5y4QL;mUw7pNL;RcNY7~a^Y7=hAXR#n!DB#ntbQ>J4r2kd*kb_
zpI#sE_<-60+XqyV+OD;9=Q?`#qjax62EQKF53bWE(Vh4O?SO`Wbt`I{Nx8}{(uC|J
zfyMwuEe~K}stz=kaYq|BvJ?bVM50)qKM9)EBy3il7QoV`MOySFe=1-SNx!7}1!uLE
z>hP<u`LQw8S|e=Bhlf~)-wc3=_xiJ;tH<jvgdUAj0okHT{rRfuthC8V8QGpvzd05f
zGfRm-NmiYJJJFtOXhwYW#m4!(EsI;^<`vT77A;Ev`%|eqt3_^Brs9r`^T02$ipiZ-
zTu4_4FF!GR*`_61F1-En-*!Lw!kNYQ%%6Y%?zhgqUA61jXY?s~=ZZx$hcEHAd+W%d
zcif+U5qIs?CA$|*A6wqCbMWx7H(jS+aejn*Ba<n$-^nZFAh9EslcuB%SwjK^NU6=`
z>VO2h;*XcBt6F6jNcIAMD|l3G>`|4gsn!<xgFhN@G}_^hg(U-?YG#K&9UcqevC!df
z0gw5Br|oddqH!an<TTuf7KQLjN_Igi{6hS#nyXHKa$0GrKOT0=pORXNdji|w^Twsn
zSS2enw}kCaJIXi2MLjg<FFv1gaP{hg2Oe2-X!9L?dJedwSMLGig*Rq~O6ll>s~<UZ
zaFy}FojrTqA@%ON<e8_J_FZ!9*pgn8C-v^zYwFZqH3`z(E;k-M+;7R#PcP}W^w_bb
zy(drZ-LKb_DZL1Aw2rmkN$<eEWdK%{lC>m|gxnzwH!er24p?yGN+j5#)@+M1?LhgN
z1PHn*;72CkmMFDai{ks{c2xV@z|W?cfE{9~)<Uhaq~$bnz}{$4PA$Jwi&X(HlS@lW
zHMdiXhaJmFf_+MW7Og}*L6oTYM$I@P0qQUWf}H_`iJ`PTE%pKCcuZM&(KIVFn{QMJ
zHAPbw;8h8H&i1V1`gQ&Kynb}|*{PFf(t(W%wSK)`5dJx6z-v?fq1Of<UDab<dwqNU
zh&D@Fwp>%%Xl%bbhSEpwf9~$_6?Yzf?%Ac|HuN5#PwupP=*r8(zLY1m?Qre6Ih&go
z(#n*s4+u{e-`jO`?y#2aM$O?gxmbLTc4a)gfOBwU-)59KN|<-EFH-}iokUS2Aist`
zxBU2}ehtT3sW%sPDHDiFT!d;)w&7OzTNe{iu3`r%Nu!FOx*bl~gIuzbwm+`qu72~v
znq1|${+du`p=*S~k#yd4Jzqa$*AMCW^Ja_`n&Q|BjGb10Z1IxcUN?42r&{a~@=APh
z1coQ3EM?Wj_m|}=&(IF~tIsI<uBr4ZI?_%D(<`%Pj10Y}&$sCJh29^@_FyP|SWJ>i
zNi<0(0Z~Aq7*nJPm;5r&ivt!e3$Sn-msXxUpIG7nAm*9!N`^N7-n!3P-R$QbE7z@h
zXt!`<=Wt!G8TLfib7MYv@9wu@?0#gk)Ixfe*vOqkBSjz|{nS#e$zBk{$lZt)m>wng
zNJV6HQAL{d63Sr<N=<LTV#UuaCg^6h;G>mT3jB6sOEW-jX1FudEVUoq9HblcIYD7$
zfIg`Y3+To4O%CH`x=!1W&jH3cIEO0X76{)Cy3NXhkHH_dJ@B;tHXr9nAyN2Mr~<0X
z#Buyos>Uy>Nkx8w8c7^6fkq;S=jMJ==qDuZ+=+j?557$z7vOIj)zd)24>$y3iwJYU
zFFpk79s7b8F5urgYFCIJro#{q^-+f~=E=~$2bHG3zfYKsGY9y9!{DEwN7-;-RSI)X
zoMbZRk@h+s2`@@9xS?ONl`{CMEu22D)2+q|S(ySS&|;NyvN<>2{~&bZgZD$h^^2FT
zS+{h_8bP4Pex;fE7r*KQuj`j-`rmgw|J-gG+V$+SyI{_*!^F<QoMhCxB;-p-V16n%
z(oe&V;iME)zHrGfQ3S3;0k|e(19JeZuM6T?>H6a>|7auqf%~uqbfHujGm*?7foNQ%
z4OS`QxN-0h$3}@uL`+KJij9*gHb5tS1zw}Lu!CZU*CazzLL#g^CK{NROAUxNEATbq
zx50*JF{N6Z8c>L<lu3YGgN>P}2k@<!hIy4cYmNNh4`08$WVyac5VqHp)ARQanLlOO
zs+XnY!1a%h-uv0#^gHF9tAvcL$A?W^wtGITp&Vcp18ZnZ){#Iyu0e*W%lSAn88#r0
zjLV6Iw%BBBi;cGwRN15QlR@0san}kElqlp;4e)q1fk}OT4!~ALO&|>*+XNZ}0t-nj
z)l{`gj!MqVXA&+7<h`Hdz>@7MC;(b4aPPFzhLXPkD1be%73Sq;8;fV6A2@fpaB9cG
z@-<5y*}s3~%mw$&-F8Zpsc`<yYtzTfx;J#;r2bEOzcOvpw(`}F>{u~>)~fZ>l!M<~
zd}Gp6MNKM~oV)TV$JrhL%QC=eD~TaPNx%}ukSb!c2zF5PeTXDXk#-bmmP=Zc7m-#I
zy#X_01!e^{%fi%A3vvY&)pi>$nwDyUszo!|O+mSKX8|sOfskkFAxwPd{P{EbIJ#SL
z(E;~}Kh?C}scUq=PT?r^GCJP{@NvPs(g1@4DG~UjMBw8<__)l~mC-2<b3v8Imf`@=
zc+AyIn~u3u>4+iGu>EQ^gG-`4tR8E*iPRq*Q+S>L(iNUZg}K91zfV9tS=M44n&UJO
zr{+3+vcv4_4@0Z1GB(=fDhR;$^fl>gvJ}9~QliBc(tyJi%avE^HzRvaDb*5HKYR=z
zjs_41h&i$JCa?lDO?fWBU$H$cY3Xz$k>~Cb0;^{}xMuAG^QI&m7%2QBbg`&tZqEz<
z{O+q4exnPO1uL{2Ymb%nRK-Te^^sXksi4<h{#5_%0*B#h*sFX-k9lM!3B==WrH1(q
zkY<%LJ08_ErvjUk&sb0rvLLUP<iJhwyJ2%0!Ox5&rjt42QPps(ezOTzl8vgXyHs<k
zNRT$CW-iqvRWsqbR0jdH^q2}kmrzoGA{mmxl1NGY1+S)A9}a%1q;cuufvb<UdveUF
zPk(*qg8t)~efKSTXv6Z64`m7Yv_B=ZUuNR=gtTuf=d>%Uxp-OsmHMu~@X?EpJ^EDt
zE`Sqb0ax<?C!$CP5-=mCQd}WpV)i1<d<pHwuxSK>EMPV<3`MkzMzkbmrcrUhKtKt|
zDt0(sW5u)j_pb$ixhA_SD)i@dtA1|J9@<M#X%g<QNG8GlCc^%DNERs~OG&_uJDe0&
z?V7?4=ViDpu)}#cm1b;*<6(ytWCUmg#5??{u)j`tbUL&sY;FwCjf?zIu=UO1qsG~)
z^MobFos=Om4uPQXI|*=zJk=i~!q28of0R;st5U}pf)r8Z_>Q~kJx|)PeD?BRgC~Dj
zI_-hS^cxp0=|2VcEt$KcV(tU`8?Bo@cG-%t)7Q|Ai%vCZ{Pf&cF1-2j+@}i)PAxkB
z*=H9QZQXYNf}J~s!h6=Nxo7GlD>%N5to=^>uYqrqNx&MGb4&t&##<GiY8CB<$g9J*
zBqs8-3~t^dz9j*h@Y|8|$EuZ9Rg7m#SFHdgd#M(W%tK2>+`~nKOe7!^36M)(Nh)RP
zJ*u#Vge>8U9jU+g2{r4Nuk_tlmfCsAphu54+c4<8AA&2(C$CT6ymI;m@x9NeNB{R9
zdf5&Af6~()OHVpe^+5NYRJ``s3!{1-JK%qXklI?VD@ZLJxuEM2hY7!nGoXDus3WtW
zJr8w2afU-7st@^9cQRdEApS}$gaEg5%O<x+c6S$>h29-BNGPJ$w$b~~S34Eg)$@E0
zAE(>JPsC4|KO~WBGUjSjVr1lC<|4zVf{04t>v6Gj&C6nEy8Ylmy7%Bgt_wXvhKQHN
zukf8E#W^L#c{%XrM})zH28E7@Lx-ICx2nW``?~({Hh5n<nE!kRvs5yRTPXfyTUctF
z8%pi8`cgXyU}pFFQ)9tE@uI<Nh;e4vr2?7;L`PgHm)=&@!lZXxGBQ6U>L$4z4JIsb
zy*jy#N?tp$x+?g|`gtuqLE3E6_<?h#j#zq%X1pzp+xOb}s%4jEw;ViT)9kzNTRd#q
z-0@>>9DL^;+`qYc8|93=9kiM*<P|Qrv>2a16%18;_LnHtTJxf+#xlu}3bal|ez#n$
zWf%EHG*!DYoXi8GG><XBDkYk<2d%Li_n&ll?T<Mq4x+Vo4z2xZp!DCh#M7iQF{xd9
z^j6Tw6Jz~(h{ZG?b|6FTXt9WDcH_e4#jTNtDo(#C6E~zWn6z49sb*2NrltN)CCnKB
zELKav4RVr<bRsG!37A!uTari_TlI+w!)@L{AQ|xNfgb6E@(*%bmbe)2o$I1+(Rp+c
z-KJW;_`K&dk9Xsk2iG_~|2#BxX>UpKS=#v)Z8bae)4Ha=rLT^0(gC#f&=c)*yZn8;
zzEU46%(ivv)p1%AN`<1t(zFLx(l6+ff>V#u@4BSFc~_qS{eL<`MOxaTr4)K@)?HVQ
z)5Y|t?$y`pkLbM%vZgmKqQB6&k8W+=Au7osBt}IW`b7co>?^>tO<;XA;aayQ`WWM`
zQp|(`n@|wrql%b40aO56V?~D_XxLd|hUm%=vkC<JVL>>*H1yf>7ir}Oimd%HfG*Hi
z3(3M9pr9l0j*IY)Xc7-L_;^FNj{%Ov<U<B<q=b0(ss!XnnGE_dz>yNXAn+MJ+u*kp
zWXm!jb`~_G#Hc9fh(A7t*<D(KigGUl%@gM8^h$NSHz$MpYO*ql`BPTL5&G#>D$E<R
z;Yq#b3w<ShVAZzAm)Z44X@^;Bwyo2@m9=1S)V93Xch;YKf9FH@FWf5cTsUL?eT=T>
zgS>eWXf=zBB7qDVR;x3@1j+?Ft}jNywip`{Z8lq$3l`#X_!9t=K~qZs5;lANIjCj3
zU>zB-pqMy7S93~fSbVqi0ByQW%(o-}gLR_d@Ofh0u_jP6$$VOJ{rcudg_o)h9y)X8
z(7~#ggpFH&xvrlV1_M6W>1eug>AQ-e><H+;1@#+m=)d`&P-Nxo!)xd$fIq_Kdw`7v
z_+>K#GS)C;TnLWXu#K)+9Vn(5Z*hk`%IVCO&VU_uwxcZs+}H~=g^mEj{EB{q$``7u
zFX%U9P2Z<~`-WbvAJ|E)@0@>|TH#Ij?gDtX4Y)IZvnBjy32;K@=qF1I{csXtbC;RI
z7SJFxtC!oohOx^HUH)}MoFD2h3=SO;PRUw@-l!sUeJAJ3_}(^b%^mrB>)vUW**nen
zPV4R8X}r*O(+iJ?n?fywNuiziGHXTX0sgLqfGe*uT$xi3S8jtKRY}Pis01eAt8a%Z
z=+`uR0|}}47YRu)g)rLqr3~a@Nq{(7YN<aa*&tD_{nbMs1<;4FB^3xkRX`~r3u*fs
zzpP&^ymV~$lW%?e)Uxe4`m;hz3%&MY4Lo$FO{j(TTekRBSy3MH|8ZJ>@3k9U3Tcm>
zq3`c_g!Zf3&+8119Sja);v7VieN|SG?Wna5iZ*tJpxL+^R^sYL7=Cz2;R8DaHZ&-_
z9t?)s$y#WZu=$Sx!ivy?{CzLOx0TG!&!`8#Kk*O1XfK~dhQ$B2Kj=n)4}k664cnO6
zEzuFX#lnUHq<3CorlVmu+Bnj4J0co(+XD83=B#f!z?;zU%gZfp(O-CJ@w}O9g4cuR
z7tEn+l}A?YULjd;{PyOL(<i-RHug-Wj3<Wo%u=^!qMhxTh<g?jaY+bXbTkoI9AkYN
z<vKpD5SX#YLQPpT3$|^Bko<)Z3JB%G51}uY!uCBNtdv9jLpE919GYdotC;!o433X)
zGWJjj?_oe>7%$2ZX9EL{8^D6w`E4C7DLr7U7*b}8WwQAqD`7^d!OUa$Mk27$C2t14
z?H6Q3TuM+$vD%q70`CCHf+&zjv#3cu0$l9x3Vrw2prUtQt+xi@a$~Ht=Z^tW7kcBA
zG=<*S(GUmAZo$F&hzD3F8MCk>SkVv`n7w2+X5tqud>%fE$4+bxLE$9@aIp)%{IDPm
zg0~M9ZXDr0C0V%Hr(_EIluZ9ipOQ^7d`b>fArdJ3$RsXg^3Gzl1v;4Ab7%)rOU<;m
zenS6mt^R88;<4vG`uN#n7a51Q(sBA8{Z~B%Uwi2oYP(Pi3i6v&K1WF{IY$g0|2p#_
zxJc*v91r+=mBq$z&C-z7+q}r_W6-Z@aC^VYrZy0+QdUL+jfhjBX*Ct~P__Ozow9ZF
zmM!|@vi9Sdv;Ph~FMPdc;llmg|29V+4twPSx*b9SD(;mB_9_Y|#5OF|6p{b2c6L&e
zXlxkD{KQzmlW0{!W!9_$I1za~DkDfORRt}e-bOMfI@8wvY&*NO|HrB?$`0QB=UaO3
z#XH_#_F>b)+ik0{uV>}sptEO@i3Zj=IM(^IP^n3(Q))OzPee1zt0i(vE6t1Mr6zL)
zAU2Vcb(E^9u&xBc^_nE6*JRagy<t<P(AYSSJFAegLzMcUpg;dmbKmUpsi`?{=Ebd<
zryr*YPj1<;U4LIb{=tRWe`}t1eA()*Gcw~dSC&0Ae`9F1=v=aV(JGkzT#!`@06tAo
zR^86$h6iu{WN1rPu`M|s^_oI<>XrrzX%aqlOXI9P!He!TzuV*W`il^bX{xhQj>_Ub
zwq#(Sl_c7obK4`eY+qah!DXDONyuMITFezry|ZH7fk!L9_?<>wy7tIJ;;E-st=Y2g
z#Any^@4kG0|1L^*DXX_Fo-zL6qLNGdk6xwAmpm!U$^-i!o<4d>v(hgPXqV>CeOci=
zEC=9tkm<lc!AgC<g(iC0;kR-L=^!90Y%9=pp|Imf1zi_)mLU4rbEGADdJtU|e|#sq
z+4x&vUq6HKRZ>C%F}Saa!EZIIFMJ3hqSMZSgE5~2D!pK;ppTWY2cKFeWWdBGTY|4_
z-+Ml&pZo1!`g^ome50oH$(LSw5`X@v|4d`>y>YOv-<h71VR#M+zEkm`Zo?E9Ke2>8
zE<Wn<m7q=^cZrr~C>gZ;!_bw(!0+B(xKQ$f_+<N}yaMC7$w|Y<5)%u&9tW+YiYY4F
z10%<=)lhe}Mjh-J-|nvVd${5D>gu0e?7W*eH23Lf=%ERxPqsVrLwoMsQwpOs`Ly4a
z2(ykoee$)gKcunlG0^Tf?KdYuyXmw@ss!2WaIuqV+R-Y=ipd<~aK*YC99YB44N*<p
zz&9j|%B@|WD~;kpVY#sAESi^PqFFf~evqJKQsGr9WhzPUT+;Vy`sZ<qTmOe9Yc)Mz
zp{K>?YI?r@y7=551H_+Ktf+~G{pbw)dx^=MT!Z?}J|5w~We&HP(827NtW2g@DE~jp
zLOausb?^7|PCD@4x|e?Zoqj;yFMJ`q7dj`j3KfPjh0dXuVa$AZ$Jg)<GigZzCfsu&
zs+z-5gqK)~G}9%fky}wSH!*1j?}P`xZ075QH&Q^%{IBQ(^ntH*dInU2WZ`Pf0G$X7
zPtb2Sli^8WScZpnRFNyf99c}<YwVX0FBKN_K{L<+lHndJT0>O4T=R=qxLI0JvHr#a
zLqFJ{pA#I)QlPD3g255MQP7JbNY&wp6;m9sNd>6g0EvZv6TM-w0+l06^|?3DWv5Q*
z=S<I6{JyvX#?7l;A$H<tJqX3TlfsyjvW6!;l-TrhbUk}#d-hI7$VI5%vv-;<!SGcI
zf05$wQ=mKwH0}t$+!XfictHGvqMTuS=_R^cU%X3MUh&@^d|mB?e~9sH&xngz!hl9%
zJ6iBCZG7Ty4#jam_=oUOs1ZF-R;G`H{!;BEaS!uWCf3ur@PQqT8OkcK5J{}4nYfd^
z<4)-+{Z{@rkpK%|0abzxqj{(%vwaieFoXspW&qv@5yIK1E9*}2+VS1;H;VonxACWe
z&ijkh52RFK<n)`FB6;TOfJ-3E-U*o5sgF4dOcAk3h70vi^u-i0dPXN{wnMWahqnWV
zw*yKzv5EOjrN+SFJ%EJG(B%YrLco=ghf><3YDs{OP4b}0LsFs1Zx+#~7-u+2+k{<B
zro0x#ElZdq3OJny<eK4WF`S3cXWEUAF3p=ZX8wx;oi+c3=PyS&-n80iiGR{ze{lHF
z>Bka3U$B8Tt2jP=^gUy`2#QIWHFDgGTIhP~87-Rk&h0n#>8(8m&g!m}vpv}WJh?!L
z2cDc3mfZn6?ui=|5(W1p86Vi$l0s3=rL&E2az$K?Mo+On9@cB+Cl`JvDk2Vaivm5O
zW|HjY4T{P*EUM4we|M_<Od-$YGQ6bR2frcc+dlE!<*$M>_OwVZ%w05U?IWw#jd(Ce
zi4X1X(MLb6-*A7ce>Lc?Ewp&R@UsWpC%+rko8#hGfbWM4zJKPA5dL@l5o$w!gcSBi
zSW}D`4<{OwriffdEu@}5!jvhD{r$>`d9$fdxoq5~hgNJE@kl@{f8gNN{|e^D|D+|e
zXFLIx<oLB;?QMME^1`8tB(It>gVL4^CgWfozZx)^$#rQiE)gbD7$y>fiDYgF6Alc`
z<PCc&Yycr!5ra&;6FG1U;G<2|qF_mG8xQu8&{AgSB*hLVI`mNA&#UjWR+;n8J?_i%
zqqnpOZci<KV)EI`!H3rmEziweIOx$;^gnJY(~f0bgu8zKW_7;-H0|4i!2vz!?_K(T
z`y#FhVe>V>CJxp#ngn8TId;idP73<sEwNJA7tfbtjb#f+Fw7KOL4s9vR#_x_tOvc8
zCe`my5yR{lpQJLcrGtY9?0shn%`oxVd${`R$>2mbmfBzY$3H@S#En}gY;W1O^~(=e
z>o?vL=r{8gPF^LLn^e>0`p=iA$Oqmm^)7AImo}y=WXJrSdl1K3!D7xUO^F9jAz5@C
zg%xNji=oq8UgQW0YVYwyS{#c_a0471-g;4TfjBqANYt4UkZai~b5tOKSlIM^{LmzF
zT*Z$hTOB^JKeJooc&9IU@W3-?g5pz~S3mud&H9+6Odhv-bInlkDbD9+=)ENZd!0fG
z@Dzyo&@%vI>;#XBf!CP@Vh}?<PPGZ!ZuG09I+%)*9l;)ROf@?Bn<76$`HlMx+^kZH
zwI?A6%!oGxj1*4dNvN}<^D(|u%U2tqR0;PA-2P0&K(85Jo}2tcar~~Iul769EwyxC
zzl|%3w~jsgW$@v3!^-n=?;pHAjA(cDTYuy9J6{&$>`2X7@$jOqWq@!8&fd|B{@m>j
zKsb=MAj=8Rkc;#+bP}tN^RpP_XEAmBEH*;_f)`nU&ERF|<*>P!ga_g$hJG04UcjES
zc&vj--4JYbVEogs2Jf9aba_6osZITcyz_BrxbW1&OS`qN`H;Z`k!J$T2hULo!?q`4
z4hlV6SP4Kc5Gue5`w@v(^{Ha9&%GxY3`(tUoR#~Z$HN(+_GP^{oeN{ez$!tbX5f`z
zbp#)%#Nn(tiu|gT8?_+u9UQbyui?5BIXJ>jn_NIXcjxHn7HX%y!DBnpd~XHykrlFO
z=y++%jhRoLuqd^`Akx7`*k2pGJBoCw)A?k0UzKPhGI!cwkOaC;*f!hQHb-%>!A?0v
zo56Jq&kd-9G)vtW98bG_uP>lS!G@lw#MhM5Bf35G0{um|!+YxXF_}cvhTFTl_5_vq
z-@oCwpxndc!aau0;YdW^3{nB2gcjxVr<tlXw>K;evS1*=QLSaMV<l#;Ch`bM2YiBJ
zAxq#vZ-DVisg~#j%GFfPRnr<cPdp4;JU8J?eeBVqix140QIXf;$=Qca2WQQk_@M3V
zoN2@7rAe(H?K^0~gpt#)Tn#N0R_}di-E?#44q^4<>w9&n`O?rUL6r)@+FYbx9iB&4
zhR9wI!`Yf{LUEU|5Sw}nqI+&ZbS=8&fhosN2j|Qiu_Q-oy>Ia7i<d%!geNzY_v~Er
zxxwe9#xS2-VvB_Tv)CfW!U>2~5;>y}M@f#Q(wARRS+BW#S-%n7v|;_`Esw6>B&cye
z(h~i`PjNr%Z_(nPj$OWdEbhqHUmxK-af3caY6SCAx%}ZOj>KuD-hL&UBH~BoWFmn4
zR2ynIs<CCD;n)?FKW>BlC36kOWo%tU!%3hGHJt5f#k;4T|MGHh!uH~v@*(RsZdyO6
zJVzfRf3mLMo%*Z#AE@DU=@R-usO-}F;(qt@|LWTX^#Xm2_^q*q$%X}uYp~%O>Uer`
zod`8F0viwW4fFJ9#?x^nwunYxRv9CA$8e3ne6vPSf}Y6RYXsvSD^A`XZ1Ly_&<Iwo
zyW`%xynFkvf5c$ay}K{|BUez`wMUKM%^sbE%ywlzycoe<;RviJCLGOQ4-hs>bv>sk
zA}%Ap7{2wyPi;5jsmGMZanx0~YG_=(J!xXU=_yj{-2+FNq~{c%m>c-cnV^T9hj%t5
z<$vPa5&my{J053s#I<w67NyE8fC}~gtgwqG+MUxR?Bd}(Hyky6)7eBgY?`~!X9}m}
z&Euvn7{BI~i(gefKNo&qG-}G^VQb%byZY4M7tEnOm8oNgb?bCzTBEHGtUNVg%wk1W
z%I1#h)Uhn3@y-V}K09^7O2fa?toA#hT<!q6%NP=H;o74>S}-XjbN$8S4aZkXxa^1y
z6F&Tji^NyPSsLmvQ7%pb1cPsw4x{o=s(Kn&Zn4_zSn%S-4lUHi(MfTG8<#%{It)<q
zjm@EZ`n0#mtDK%q6~ZQ*>so+Qjno?W+CWaN+)b*4CyWlG*xNXaFgV%nV1}7H>^f3e
z_!@dZsKQ(!^&Ckh5mh&LZE(_zsjIVse!Fk)RR39eN?06P`t<Ta{lusnXZH>n^)=3`
z5cus?n3n}?QNx!cM0`o;A2Y>P-`1ss)_LItN>s)5`+0rtHmP+;?$bxOapNq5O;bYT
z&tP0PY0iC0TC|T1?N_3Fb?&5C=0h@EIbxkFhrPgMyoTA}Sxqk<Nl+3$-u;hcC4KMP
z`q@2~8Y#K&?Sc0WSi4rxLIWx)1ntIIVau^&p_wGSwhv$q4gEO6U;A;AnBcb2LONC7
zcjd~pYx+Jq_3Iyh6tV=5K8J1yRfj&OJM_sgUZUPx{D!Tu83|ZXNl`%=CE*vq66H&N
zB`&-~6_*$tQ@2FwV@e~akhuuD4m9zzt62)QeyW!?+Oa&oS8S|um#xEqq#{`3kVnMk
zH_~VBx5*V$ncZ~`u5T2q?<9j=1OJZjf8gI4CG-rvEc!xzVa^&c_KAmUt{MKF4*FJM
zkJ65$0=@#>RC#zn2gb_)U0I6oL^VU=F)K+-&qK#Pn3@=!5}U+`2iEL?y>%s(vO_JP
zCX3TA+quQb#0MiJOdSY2zD?Zk-C^3~gRke$x_c1(yL(pt>jx(bX<HV}dHd)OCHG~W
zSo!wUy-f@EO}@CYGJAf>k4G-fevr+1lm0Uu%zQ_nOa1xLA=1jGp#HP+^6#D5-??F}
z^TTUREvh1Xt)3!(9IQ3Es4Avzt>Puk>SbY7PQKP8QROy+hv5;fH4bHu77f<56W0pt
zoGq0v4ebSHUAvi;4XV@3QNu^U|1%rCc4*>^850k^_FH!4%8S$Y7Bt#B^X-)<vhFMS
z;pp3Q7HxTO_QfMVmcV?M(oNEjVirlj`GPuZF;@e!`9+N9NMs8(GMbp1HoBVWd{GIg
z#W_&CTO1fA<Vq-Ia|H^ApQ1CMMDde47dO^8Pxo*mhYQE0M^_GgY*6blEjo`~|IG5?
zTL!fm=j}3@e)7nx-O7B0bNf11U+CPcS+i-qxsI|?Uqc50exi*46o}e1=tF;L8@LSH
zU?bQD`Wj3&lfHiYZRQKHi66<ip!1d!PzI{vY|Nz>Q&c6hr<?p9>HGvbjg618&2WSy
zsnrNS)Ogd<G5k5MwA7!Jz(f4~aoCia0oxIyR$6Td%p{Zns;01)geL^W(3`y^aV#k)
zR~UQtxwGqzh+<XPOHw6>ffZ+;4+`eS7ifOQS65QsT_Z>QB=WqoY5%HDqxlREG1qN~
z93+|KVG>BD+>rnhIiR4+Hd?B#A~adC7idl%931Pdv?VKMSbJ8HmKib5onV}2GUGfJ
z1Y0IE&NB%HIAkW*<*ivk!e?U)Y9_2%O<+zGzY@(tXi*n2EO(J1LwLb%44?&+FlCrB
zihb>AabDSO>*Z7DK9hu(7mpi1&r0{}<CU}&;Y(W6%-XD(B22EJ(Qj41drX->ciThy
z&lTH-A8504r~S<2Z5&6Y)c#W*F8#zJJQot4ypxpW^Pvw@YYHsd%p*IcOa5$?IVKy!
zq~lZ`y_qe6B0^1;ECf_zfSDsX6CdN8m8y$@kNETObSjbX51Ojb-Iaikc4wv8>Tog@
zrUT{aUU?;k?p5O9@!sLHM)d0O(?)jKIAx8uxU}WwwHtZ`#*7X0-n{Oy7Ny0_9$oiP
z-xnrMe4+R9em@;M^3zX8j{P)yU7r)<C!OlIZSCfgcI{hjTeqX%3lqmx_Svv@Rr}7J
z+N~7sKc!!%mQyFGS^qEMKq}zCao}NbWFC)W2%ia5In-!k$8Z9_L&k&Ls#rH`097Ye
zMpcIb#{#tu8IzsIl-ODLgWbdeY68)A{4E-g0<GqF#v6=t1r)#V5I$7^AiMdg7l;Y`
zFZF9WnNGQ^kD{&gWps(YEU2%>KrmV&YoV#a_K<hcllSW<Y1#cxF5+;l<HaVx=el&$
zzoL7_mx1no7UOHa5zh&~g{*9>QMxKU0CeFa-9XOq;9s=CRHn13c34nWk-q>%UKx8s
zuGilJ-jMI*k-#XKS~ytt8@GJ5bZjn!=fWa?I{Zj?Xm)Ihb|Sw=Pq@E3p1Yvn%)?AD
zG>>APnzvLdR6AN#izlm~d1>p8T@aC?(LLl(Z^r`BiC-;HozE&!>ACr>yEI4!%l3Jt
z2q8ss3Bysu9fW%4q$TWQ4-44LV=nViqlR?tN~11UQ%Mp}?OwO(v4`LP&zEC{bSu+;
z`|5N3Jy|&Q>Z;YdHoo=4*TF~LYt<{G$AB#titftp*;B|HvA&Ua?byGa|MG$|fA@kB
z<Hxt|cH;P`b@{$W#vOb8;%ADmVby{WBPMp}aI$j3<Th$tRP6X}Bc^wVN{DeyVCUh|
zH{u8bmMuv*`od3aOo`@asu8yC7vq@z%AzsiBJc&ii77otKE3g&^vyZ=2cr$G{Z76j
zp8@^MLyE~0T>tdP$VPOmTduD16<9E$*#~U}K7@8bk)@z2Ih(a6Lu)qk8fT}Ydf$?r
zpG5IY=_qdF=7S{6cVH?g20%B1-_pEVGl$>Fqfar5x&#v?^8sj<7`K?6>|<Ob8=zRF
zIMaxc(8r<=cnpFIqp$E8eXzw1_+x#608C>j-A(gp9^I{v)j!cc*2gWRLw@^}4%MIf
z^*8<Sl~a3n`6XfVh!LYEO&T>~_+~-UcI`bS{DZcknm#}e>Sy$RG(g+x*Y&M*2DMNV
zou)sgzqH`#OS`uzqlc`YTYlfV!Q+(eySPuTT&NOVKqu*>fZR)XriK|bnA9SFHgJeW
zMOC7q$Z!v72G|uD4u2k=^dxyfg9D=!J);?@$wWo782EtAfyX<D{P9Lkg5QHmP9s%|
z<)=OYTa>Hx=5wDSn){cBKIMn^t!>-7OV9mOIlS)SC!(UCF<ZrqIeix_f4X&B-%RJ4
z-gk+Q&nj=xp=-<Lc4gf1M<3SDdWROcn<W;tzkgQKW^J=(b;fw{vE)8+y13bqEB5^L
zbB9UnNxRm54t#V8T_C<DW`Zi$EF9$>&bni!;4R5lq+aqBa=s;Em$Slyhx9>I`G1%H
zCN;owFKI&#-wxBk_&}V-jNj%A)0=~(4lJxHu?_nmF_P<h6NY;Mr+r?{>%g=pt;Flk
zhK3X`!~E<9h>i@fi5H|HLv-L=*{YTfKy8jrlB`nAr&cOXl8&FWL0<OfXixtnUZsF0
zP#@!31@yMa{~tj9!-)LwLHy%Scka-+jmf&hB6aDz=kZP>`j1<28|?p0-^Q@t3>Mk;
z&<OF)6^q-CN=uy9yH%r3ZioAh#w~kv)t{js&<?G7wn11el2gS#j9;Y^gFPwLk%xNc
zvIwU|!n<<n=FLbyOT|}&2Z4SNPCZBjG=UgYTrDy`1mXMNp6`FX&BbFKXB1F}MJx?F
zo|K3-?XH&{%_(H*<5MSZ+d5_1_7y#gTXgT?EAA<so>oyYZN|23GfH~&C@JaP8|O5h
zNaA(r7noBF8Ah1V3YwphOe+0VGN~hyOzQZHWK#8(WKv9f7*8Mc(@FYHzy6fiMR<89
zt<Wd#)W_3Zp|Xk!rmHRxDufI28zd2D1tQZXa~njyO&+2a?e!<b)TJUin4yR%h^_>*
ziEl|g1TZy7V2HUT@o<6i)cRGA51Y3`pi@H{E$r5$6qw0A>ErS1md+b6d+I7>`EshX
z?cLbhzM~iCJ6qTwT$RuAyhEO2DA&(1)bar-<ocd7w%0PxIHWw|Fs5F{p{9Zv;XrW`
zFz19%*m>q5<(Y?O)t`*n2|2vh0OlTQIdz$bTH0Ud9ky(kcbGey9_Zbn$H1OFSFY^R
zsb{xV-S!L0;l-Pt>fXMrPu1onC&al*VQHIY?MoMzwkT-bEMFP5V8N`C5s98LUGI5d
z9;?A1T@|uf+(BcO3rznc?!Ygi01$WtV-odw=!zGv3HmS6RcclA8V3Iz`WW$N=KC1c
zz@HU%L0i!aLL-hIH$RSY-_Eb)LBE!}fnQ6p!vvyZOAXH!Gezrpw(`^+XM}quj9Zu<
z^jn%NxvR&_d~`O476+E~C=>H;oSo63b4Hfl9Q_!Ch+SEXWQh?2CNfpj#;d9@uFVRR
zphgNZ!BItc8}RrjP8%(V59tEfUI!{x(}du_YCR-=_IE1(F+eZ_TVXlQ!fZNO>{=%u
zY}J3B+>F}LzO%yY4?f_ur1z!A;VA~=)>$l&f?S7SHmD)69W3b`YmK1SI0|De%oZdX
zrlLmS*)g}+xCU9`Gtg#1kD)z=q_2zWG<f$G{bcjz&2mkvTG;L!FlH{iceJpBu46gM
zO~QN<-YbOTg;72_ZYv)#Ie9c~`iz|au&3q&VFS}WD#ZdLUbYo6!ekY8RIe&^rzDQL
zQxeB*qGkW0mPGlfUAs@cxNG-IPY)e@*RbIO2M(3!eOq6AaqE5CUU*^K(5cgg+&6Ig
z^ns`o%p*s{72<x-33|m5&<T3c*(|s0c|zo`<ui^vDT)je9(Ux4eP}!}J4}*UIEiM9
z(dSp}1E1x<XW_mk$to5YeU=iU?2+GKeg4k+n8gK{ttMHBL#QA;Pinq+RBFTWzGeW&
zK@pM!3Uhps-vO$KBOW)^5o=_95mwMZv-7Mkg=c-4B3WN<C(rsyvSYxTO+<w(RSj4j
z@r-dMp+84d+)N4cfVF|eCZe&lgu8({idkQC*WFhf9~7ERoN(9dX~UPD5{2r@v;Uyo
z-?lILaBlJ7yEo4sF@Nz8%=l9Fy>?zIc=uhtW|mK6>g~)WxhyZQ8~KTjjI?);w3pMP
zbXcUlN4T91BuDG@9~fyLPX0#6M%wL>ab}Q*>-E1U(tjxRQjE`zCd9Oo#izT-V!}d=
zHR5ZSXcFy+!Z_V%3+9|eMRHDf4gfDqq*>7HivqI`xV^<$9k4`&r6hc}p%ieiymHO%
z^P8P4sFy`eOPERSbTO|n+RHBEOUw{yhL{&E&Jo`T^^Fz!g`STSUaeUc6MFwVZAM>7
zlQEB^up;#HPC828FQ~#<0rz*l-W79?V4eAF{SVN$Yp+8)%cWua-q_gp57@r&_U@7P
za{4ISci!G3+z$KxXubaSNdFmRDz<~JOz28Bejy*fb}j4wG9d93Ha>4JCtY#;+8?2P
zFdM&+k6+u3jdKCo7qRhq{~5LEbR@t@F!GR)FO1}HLQfV~t~>xFN}@o$)e^Zn6YpiL
zB8n+4(X5P5Aew<B8Uvo9m_s89coDJ@XWd~dXR6_}rAAbBMG}`#tr4E8m%Y?77*1cJ
zvHJJI_6lKfB#TMdu8T$@lb%vx?AvvQuRa4`|Hbf?<p-F?Kzj?mZ#0X}jkMn#X)mXr
z(^--Bk>PfL%jfm_PmQz>Cm+-Kk@n2UI5Wue6nXYg@|F0Nv=H>cbi(o<D2udAkXWh|
zaA@N&12@D%ODq)gM=U@#-Srn1(=yt9vHm>mu~>gWKS@W^ezf0Wy^{7_tOxYKV%kTq
z!brwBwfkj3{ufCgIixv8(J|59D4hL}iD$~*NZflOGdvJjejj>R2+vw?qMk6Ru~J&D
z;Ud8_j7C^iDAohqD-*a^YIEdck~5Ogp25y#QF7rg=yS^|VZM+wO3?u=xLIT!M*Qa%
zQ5Nq%>Tr)cwyo?t2vaBqZSOc@+uDJ{g1K3WknVk;$FYltnoMi|+(#LyN;v-CSGfA~
zfnP7<Srv`)cYZtY`!$0$x1i$IMontTxzK%?nJgQi_rqSw_#TV#X7th8fO96J58mEA
z(q2wKWAw+{dxYBo&Y#umZ;$k!L7rpnEDqRI2JP*QaSqd=Ks5)TeJsnlcaz@rayzPQ
zJckI&3yAKzbfUO$IEr7ed%dV#sYaX`JA7g%`r+7=Thlxa1gZTSD(N-f=)X|=7Wk+C
zB5V4m-@o+oclsOj{U_$k-NVm?u;#&R#YOVS{l=^ulv6VL;H0|D^E^At@<p*_QmZSi
zrgU?GKLyi0i`c=viRXaWjg<71Jg`fpSQqo;rmGr!xAHS2JXg_NrCOF6Fxg{`T%xd1
z<&Gup`e9hbEePlkh7zr={_eSb7nacx?*<0?bD9(^Z#QF-erWxq&Qq33t-t)^*pu@=
zE4@>{y7tK<jZ*g{Hyhn=AWhpm;PXBsXFT~hJH`a~uozp#0`Ms_`0rMd6ls?u?d7x|
z@kH7cqg|l``z6&I#~EoK-ZQPPU4Ap%PG&T!-@j>ie87nh$rSE0Q+7)IfXkMW&X|GS
z1SMat&+nC(E#g4EJI;rZzgkCcl~~fm!MUpl%2*rVu3Z>(iU0ydx5oVzIsC=^<RsZ$
zt+n=Q$qs*8j8g<Cb%mcrb{<YqjIqFuCSD}qWYzC#1V7t4E0f|lxhJUp%q-MQyiK@g
zp+v1rCYg;`?KS2xvj3^ah)0@WtRvU@`APdN{v#R=ejIx3vwuz*JNf=of_&}exyQX7
zk59bxKcO}P-BmI9p?+P8Ppy08ozAVk+<WAO;DoV#{#J0Me3fugpf%-7=d7X4b{!is
zZQ-nbPG!xBJNov%ORu@QK;Cn<#J8qNzp=yn&v<4_uaQGaFWo~ea@zen52L?H?}{<G
z0GA$yobJu!G>ZpStkB-ez>}3EInu5~+RJHs5+7+d8SQ{4?UNbYS-bpJxSh;MVC}V_
zm(o%4f1v$WLrza33iRIra<_~8qtULA@-%_<e-ql9%RhztgPcys{<Vite#_5B#+jkt
zAPUx_0lIDmJU^W@C38t26^S|<aHyaN`3noWGxLbDLhd`XM|_8P7#hbjf$}m`=Ls<?
z){|;NJV;VO5)gkuHj84{MAfgD08<>!fYs(f+)-73tPwKK>X`t$&y(|V;5(2r9>T;q
zZwi@W2a!E!?1#hmw2&-=y6Ru_r6ljJCT;s~?C?q7*GEs$FMsrjUL8ER?xDk3`{u9M
zN8h_jlY6z5XKI}fP1+on8GX>zx$wbBv#03)I`G-A`gt1v_m$_bKC`vW9q-`&v-mSc
zr+0BW9g`M@i`1C$fq@2mk25~N+vP}mIi1S*0B=`}c7X5Hq<Z5xBkjW{)El4ifq@+E
zU6WW=L3dImHI)L)_ih8KH{vUqiD_YRPZk@`z?Cjxh&LAUw0i4mgt=KgFZk*%UJD&P
zd-kj_=+r5F^qX&rzBk{5QODLUlp0Gf7_xp!Sk{N*2r{MrrL2!bS^unAa;u)Ou=iV;
zZCYR4`%{`RVedCtOCur8hPdY-t`qkj9|yC$E|5Mi3!~&(O)l)UY|7A4dd+3u-Hm%J
zn=oc_Fu##P`=oTqS-<Ice5;K0o3qjt9y%8nyY2m6->k>*In}Y{t?oZ=8?n8au;1bQ
z`iOpCl<o4dxB=^n*xs|)97bEi4cI=-Xp6W17-=u3lZg;%|H)_v*iKgJjq_}{oy_RW
z+gY3l8)uX;P7c$Icj#jzpAi>-OAOy%<SM8r<((kqZ;In%RU3JZf)T;zSCYd)J2z)3
z+!VvNBUt>{xZ8yAnVt_F>DuE@V)!C!d)8PRteGfv_M-Af#GbpC9HG4;^6vSFyt}ur
zxt@L5FJk8n2EA!_L=Hwp<mTWdck}-G069_CBK?Pn-MQS<2VlHrL~affhOl;4+kxrj
z`34NmGrgSUSTOqSVYHVq`sMvchWmpacb@6%yuV`f2iTV-)f+!E(tiluQP-c*bq}LG
zj`0oNe^jLZAaa@B8yVje8Gq17E*Drm2UAaIZ)Eh}MMpvVIIt5^lz3?GiS6Qa@pC!n
z|L=Ae&l!<U0&OIKrn!wr_XRvGBqE$Ml5N5`B+cQ&8U$LjH|*7pLPE)}&$5^fYV&$o
z_^90*aHeBNrvnz2?!?D*3oOj(@Vla`HCGYSN7J!5p5$TWb+lNZs1ytcj4ky`**E8w
zWEJDdCd+B~^Bj}w*Mq^o$}^$Xif5jwxY7KUT$8Zv&S<HzK}+iyEpc7pg@~?jZ#zo_
zR|*&{H8yDJ6-G;3=ded~j=}egtk*x{8vq;~#cY#?x(K#MGo9uL&{zSZJ>Gv9ZNz1m
zz7BI@BK?QaA4%KD_&p>22a!VzclmtGk@*Z7l)}bgwKW*+H8E)KG@~V!2f}Et52wB1
z09Zh$ze)A_kB{^pOn#!3k^WIee{5e%?vC`&jPxHuH`a~MXtj^g-k8zqLS4mLAL0Ju
zbb3hN9vOdjxWD)SEhNJtJ_ED?n;P@~j_oJQ;b1mnU!y&p-VL}88i2fk)voYh)Q1x_
zdb^L2D%R9?#5(Z+(7}k7J=)@YK8(Zj%NDPfok}?w;i6!WV!eRjEY{bF^r{-gUEJQA
z!$NFEtZO*BHA4*-3q*G}=+_x(Td-Eg#*M*HyC6J;+DT*+P1C=^uT3=sD|blbYm6hU
zy=vsAB$4|_AkoN}j}my2SHttF`iE4>?0g8OjuwVwhN&kcvN|YuOqG~`kBPX7gt}}6
zbQ-G(%nkuLmuQ44iHr#G1ncG?|1356XppM<5A~8-g3{lS-1JWxX0}LwXS(wnpd&xX
zd_LUAHN3VX`h04!*uhXa6w#@N*Cr7ww7&xF8yS6a-`BmhU6DR(cS8Gg`CvrXzPC25
z_CL^G1MR&See&@K*Um@!to;bubL8uh@dwx5LAnFpG}Q;tQ;gmU8Qu@8=C-LF+Mi&&
zzaMWu&)cg2AdlAh;^+_(OEFg!3u=sF@pu{a;?w^;;baF(&*5Xf405Jc)*RtA771Ng
z`yP=0^Obl9pM#0?7bMo+A870$Q(Krr5yy2pkKO@mJf-&rd*usfF1^#ROT4weFrJc$
zbyJ{!GlRy;^{1eHqn?d<InX}9Xiw9R@U=)CVJ*=Z6J+DwUlw7gQLM9KV<|i4+tyjJ
z^YAt>N3a5e?7UsIl^wx>bmjjDdV6|B_(`8XQEIK1(DQOg54|VTH}&EO-z+vE|7vdd
zNSo3`+!KIfPt#q{euvSXLnpE|W@CMpaDQ0KT>S{N&(gCo2PoWMoK7sPo!4{m*X#eW
z^s+Jj)Ajq)nQ~5~e`I{%U#CLnjQ&&W`U5`v5PHtYK`&%F!ahSouoxObm108efR_l1
zM!kT!l~@UX8L70+O|B_k?kNvMG5H&XN2kP#HAb*BfNSV$I_COIn&QytY0c!&$Z3r_
zDg~;z3Mys%t`SG2nP7o@JAM~V5Gu%KdnDtZG8TpBe>rZMol@s73R1iNi*UB)KB42^
z@`MASiot&y9Qt*qFqzjg5Tbz>*+>gsCGmf!vNEk#Ss7nd;zrhy^Jws~$AUuVLoJ0H
zp#iNAwGOot%1MOBcMto8L2vw-`Tw~6C>!=8wohdGB*OkWgN@IC*(C<!4SF`_JB9m0
zd(Q~$uQQp+{mz4^g~?1lzA0j#4tjw52fk$O@pa?W-Vb^pCHp`|{TpB$PwqBo9)t0X
zX!UTl3XE1yh*Zyv=T%IM0#4|pi#Mw2#HxNPGcSlyoQ0}>F|K}9orWoq)THiXC3cSO
zOly%6ZSShK?Z%7kJS9kjf4~0Z35(@1**tmpFkW_t)fMP1{wnnYnK&w(y&cZ-tV^az
zs>^ChGqS+aSf*#h6iPEvnmlU2t~l5!88MP-lhm8@!5TOa>vF^FE%#1*<}^&bI62zh
z#o4aw+<Ai*<w~s|yJOhJOEon(`Mt7f)KHOZDDT{+hRF`YZyyu!+usXz%;<=H|9r&0
zzjuncUjOkC|Nmeb&2$&;Cx{CB6+m~{$#j>S&K>9oIxTExNFD3^6LbXm4P-IK*M4WR
zvKp#6WF^-vSjKpylq%k$!79UX-##cAwrID+J<L?gt&bI05+H{87XmS?T3L*R#gf7U
z)|5tHP-;A=&2EWBP-{-izf0o9%QCUJXj;9}wRHvEGK^wA^_Au+wD|XK8~Tf7;Zkok
z$M0U=<#+vj@U_G3?r+`h{<eot3ms`Qpo%_G7NZKB)kgbJ%cZLpi?qaSyYeAn{*CXH
ze*->cf?O#j8%ZD?Wd&G0xe}%~GgCsd`mmU+R^qMl#-!ugy>+(+WZ7BTB-#WHceUnl
zFwY0Nt?{maMp<Ykq@z<y^_x=Qr_WgxV|67qXCcO_KhA@=mzxf&_u!`Z<DiqjsW)Oo
za6d@I=~+L$h*vpkcnqFXm-H=tx%6Dej;CigO#NQ<R)>zk#q~1@#e{GwIP;6l7&B%@
z{dDljqeo4tpI<nK=Y|_R=q%%LB?d2hD9q!8tBl7DG349n2#-4}9}o8jUN)8Svgvv@
z=Ea5kgM3pWJnk&xaV3Ub@C4&=7<Bpx<8ebckNcS0z^slDv*BAA^V!O5c$Ndl<}=i2
zZ_Vbz`;QFw2Yq`hqZQs?G5UiY(VE*4bM>xRCn+-i19S)T?atJ@VUAs7{0C@<+W$tz
z9~BvY5IM?hcs{-<GX9`D`22HVe-1JkP-^VY47Lx=^hC^KgZ5#@{(P?Q#r{~oh}jXP
z#`t@f9nlQNw<x~4{-Bw3tXJ<S1}%Q;P4$kd>`_)~M}vYzkjdU~gjn>=LNQVcv0j`Q
zx2x--#ei_RsQ|_=FOBrsXTi&tStaL_6*X^(Eh=akySt(GJ7JaF0r>ecBXd6%40xuf
zS$uv8BSgFbnU$}Q&6WbNaFWb+R#FzN1v|f^Cl%BW#mns*a}=l_Dq}xt3{Ff%-6NG5
zJgID^sS?aI12sLChZN6}_&i1-f~;^NpZnHiKIPIeOy|3HtzJT(Ftp+XPw6{Rp}!JI
z>Z6?^XL<u8XMMxTN9=5v`vF4{|KRX(*1EGqW+${ZWW%S-j_3UkM*N2NPWn&1v&Vjs
z@dr~ov*UUH>tVkn$cD$6oxuCw6X`#cj;BY${h4ks+&D}6H@WN9vrUjCEG7W^OYQ6Y
zp&(2C!~CIJ!0!Ky;csihzCX<Up3v@<T1Wa16Gn4<$GTDsf7=>1z*aUs%ME1y)4PrK
zd^SEm3+*003k7;TOz)2P7=H@;80o+q?qlTrqatUgGssHTpVd8L<8(0i!Ai!rSiT(d
z!;UuEi<m!`_qT`pgWf!l&6D?kHryZd=2|vS-oIz0{~%Jq_!jT~v(X>uzRbkVOi}+{
zr8EV)Y-;2o+Ki*px`g1m^8IyH-i>2Uqilv--Sh1JjBbtNW1A!l86mxnr7||j%FJ;$
z+JXID4R+OOcn7OkmqB<0j8Qp3spjE$AoVOjaLHbb)MT0T*{p_wjTa$J@CH&@;r7&I
zpePd~F_VSYBPISgD?f&1a=l)ig{<3F_h2fOCpxN&vu)SIkvbnqLk6BXb985V3w<P0
z`y|?+;>V3z(5bNA2ils-eN1N=5w7~)Ao}1IwZupaw;B~a8>%8s5X~&HDKm+yt@Wzt
zXE5Q*?&b-{9o$q`a0bR1l)v47(bAx{KezFp6>A*O({^;r>0h$D|83}B)oesP?HlQh
zhHGnZ+VYocbJSa#<o>I*MHCBTZGT#NVA7F}cMb?Vv@9#<wiO7<IyhHO*>Ebo^RB_S
zRw7_E@RUJH3Fw;rNg&~t8hFV!r!>d$B9w6scDatz$^AJjtvSI+X!hIPrKJsP<GI;7
zFw3q%l{{te-7ky6ndfe;mKP9`4m>Eo`b%bLy-_xg=U~f|r8h|mo^zoynG2)_IoPRx
zK4A}-8J?oZ)BzM};i)IF)cAN~0af<sSa&?n8>yF<U2hRLWoRoC1|1ef|4X;Y)SfGt
zmM&KOr=x35@|11EhtgaAGU7uSRNE8%O8gAPoD)71k!-XRvnBW$%9Ze$h-4#I!H%fq
zF?5ViuHpPp_&4K|EXIK8M@NkIC)k-aiwiP61no~mVw<)z+hZZvDiXAxikxxBF@4HW
zU!P(=oyV9yrPkM{pgmRJ4m=FjMQ2N`floFLSAVI`!_3TC<zSWZtOm=xwctzF=;%()
zHr-gUmoS^*rCylK*eh<MlR$<kVrzyIN2RNxDt|}JuzTpHlzowMY!((GEc3(;YdBTh
zpso_1$DNgDI{I7rfA?+KEL~0f*S{0CZsjpD>tIZQjhRj~b6wUAA5f_qkf|h|5}#Yn
zTKBgtTaM_p3*?Vtw{CU*%EozEIw*X=^tld3)|J_Zks7ib5gk~~!>D9zHG+d#C1X3H
zBD?Iy+Tb1(BNFssVSCqJJ<7HV(*D(J_RB|<&UfC`NtuUf5b)l;(*Mx=S^h*L5=rl>
zm**vg^SszsT}boZPo)1jZ``wRNGcZuBbTBd&!wnx^SdoAETNj+Z5e-4KFeR{Q}`89
z`WG1$hbH&zF>zv#UXvy?O-n5(NKJ1dC-)dTwnxtqclSsuXq=wjv?+&ASA76|A9QLL
z$tD36(aWkt%F37=MqOO1YSdQn@HBOIePyxh!X-V*`Zx6@6((k64{1Ak;g<t8wkmBg
zx@F^LF}6jngjx8WRnk{tJNXxQPk+MdXerf|4#jRRz+fEXeN`^Lco*X~RaU-uR_XyO
zfQ!uC;;^#-3iz{d1#q?nb@|!I%U8`G(dwxdjoQvwFueOtUqNf>#>my9Iu)glT0XK<
zA%n>Tz{_4N{@)5KH?W;20kDFoHXicMswK1B6^#8COI$t=&6@E1`@)a2fBL7We{dA@
z06-&_sf^hG0(n+{h<;ytjKR7Ose`ZPX1M=<4{6VzK>FDcojVL4*0J-5Vfo34xw(nS
z`QLULG^kUDJMZj}n46Q7nwO8XUUN<QQ5Tf~j_#ye&C~j#CQl4pitV9g(hvF`<ql{s
z59RCg3;Y95v;OO(uWCEXzn~^xBNK)zp%Kz2`W9tA&|oR9jGZ+Sb~$S}F5hw~eB+|s
z1{^E88c@f=_ypP=c!w%2F|t^)@>m8-XoP9Y?!letI@+hx5XCxU^5C+bmhL;H^qf3k
z+(Jzg>1wSL;DmRprsG>N{nyOl#BWw5ezV1>3`t9TE>jk(4_VVh{O3=?(I&zN&+o!A
zkq9A~6^o>yw)$~Bu66;-iNd0pK*$kd7J-idA;T9CvJC25sO=}8tUkwR<!$M|^ps+P
zze{P5Gs1a*5TSoS74hxVcPgNJjQ$h9zh|HHjW|(x&4^v;ZtyS*&m1*-nLY;th0Ayw
zLN{EM9m82!u$Uy9N=w59oj9ifoD@AQiDHQFlO=b)fhnaQP(}aagLCKV#j7(LJeTR>
z<A3MvMxF*(S&Nt~UCPc@Es?Xy@p=Glf?7ZNUs-!oqx}kNe+A>E*_mab(f$)iu3FL-
z{c`Mm+%Gr2b`~4IE!rroy}i+&wWC*8dI#I-Lq`9Jtp8hJFK<*9Li;w>KB2at_POwS
zP;TLR4ByE`_In<K6UK|C*RTB^34;&UerJV_Nx0B)r1m?S@(08RLp@}z;*akbpGXD!
zY<6AlHmfWmMJmY~cjSP59<C-reKaS7W~B;K4+|Y{JS&#zv)NT4JEg?B^JO;I#{8U^
z*QJHuJ48Oe&VFx7c>Hl)?e#Rw#Ji>XdR0oY4gGW}b)}(hD!`Rd@2XRFyXjxoV)qnh
z{CPe0bu{$9Q<D80W_uDIJCFAmz<LV9>tknI3Z8AjZZ?PCO{^|8VYjWof6axsBSPGH
zeXOF7#jQh?CH%Kohadjdd(&R|*j@n^OW6jjY<2f5O8karmIh%lvjTP&sqVTLECItW
zIKr<*;^CU1;uAH`3cv5%i7uSbrizNNuNm|=1#ue2eafiCZz4qvZ<IluKb-z;;<3G$
z{$0Q1A1fxHJ|*=JhT7l)Wj7$3v7Xo2dWs`8FnX~26T)|gM1_6RCga)!ftAt>2+Uh0
z;OVevoa{vz*WZ~`R{P&5s8wviMP`_&8`B8O=w&@!d?%DE(wFouq8PPB=q7aAQXz-l
zj}Lt)SA_j;Y)++heg^h?d$#8T0e*d1-EXWAZ`{Sm=2#Wujt0Ecl6`1jYf;`RF`hMK
z`uw7aU+0%yzmgdq&5LpTXx=X;dA*nelxAF(&Ft=YHzw>lNt#hhfM5xdIO2{atl|h7
zbRDRgm#a`u921YGfz<a+@EY~$7q11s(J#L4-=`>h144?jD-hVF2=9JMQ>Cx3$ofA&
z`CPvuefXhBlRw}0A{B&60k*^h-}dc!5&a@Y9c);4I|iE}u<j&ScLLHRs}*WycUs0^
zL8rv}JUot<Y{jfU3(NY$b)xq!372HX%Cm~C&dBrN(GglltO`1wyXBH0XAVB1oK-eH
z9n`=6_Usk?U*dg2n^5q`d$Cl!P*W_p-am%F|Ehl!ufIw=#v3(MW+Pu^_p%J*)kH9H
zCmoB*#iV$>T;^aIT>}nStKWzcGNPIQXaOg?%FY>W+{NNd1e;E>rKDyUjHH;SLc3!H
z6XvD1bQ<<F*w{`FH288s$`t?pJ1to|pNe|S`dzOcIedEG23-x6uNB^#N0UJg?9#8!
zds2UE<jy?_H0{Rx>fe8_o_|BX9KUDh-ISd#-#(}2FZ^B@GqqHS2HCNm%M^MaF|qc4
ziB~c1hi)?33z#2kgFaULmG$3Zw3o5|L6AZB%6}L#2xO=C7e)u`Vf<VsoA$Bx2?L)C
z*Y}l{O8rPONU7;Y^hYe;^+Z+|w_%A^DN>@9r2{zF9S~^HVeNse6u^x{^x9Zezlj~5
zuuv=&9{u@t9!_q)wG`{k$0m{6>FT1eCRUXA?rW44lW6m#w9V-~A--hCcwXXfZeHHK
z{URm)dURb-^J$M(qV#BNbjNO;yRb@s-8-6vl(tyvPawPWWm12@u~?92^9fIYh!1nA
zJm9$LX%3W5>5=<NSqT!i7cag@;-^PiHiq7tjLS;1V}ZyWQhb^bHEqQUupHdsmZkz7
z!G5H(n!0&m*Hw#~?j?;xbl#jwyo*|&fBpLjLl!&~x^U-?Hci$KTefY*Jsa-4f8K*L
zr*GDm$=abGK6_@wj;2k{EPMA~O$+rl!rT_E_b#1%tYYD`(d#x$<F(ZE(X39K4R`@N
zJ+7-0$IjN-8G^;Z(uc8R9BOYCD|)GzQctWm7mouXuPYz7Iv6e=S0m{e^eVR@`I#x!
z!pR1mf!A10#4@nP{hCzEVVmp0ctr;f41x{Kg`cb#m&pv<mZDb4wy0PIcUBEYCffj|
zDit{@gVp?vc+8v~gd8p^{>)$Y{tG5S|48^;Z!OS!C(gdrWA+g(NTtg6^S3MdcfEgm
z>^8+aDW^xN4`9z;qh=$LN;=CtPtV4?iiBG#+*ElI^YNxjj}pNtPCZ&IA`(wuMl=h=
zDv_LagSK+8stwEZP&vBArts78Xf<F-&u6FOiRnB$-NQ=VsJFZGvR>_)Hq^}@44;Ao
z_&09y_#tDe&p-FOESy|BVcx=-_rCk?!iB5n&)#%W04wDA3pZ%<5lhpv?(g~7!Q*R{
zvT>uk^cwWopdmdc%<iM?Kl(Jc&F|HRiWdOp8R(-+2;W+!k_MNKW)^A5{L;~6=CDpi
zB><ETG@G%6kKkqNcAKzxrRq#bXK;?jQjQ!I{ibAIlP-KIDP{J38ww;9O-*@535(2J
zEcr$A?iGjVN0!Z*Iw^fml~6JBj?Sa*9Nwbxg|!=LlmPnDY<<9vE1Txsw`A!(hl-Y@
z4K8cZ`qES7w9{eQOy)5SV_8gtiwrPyb6dkItufO7w^eO1a>4&nur6NV^~*P&mC80e
z*rjdFTiiBV0JIgybZo3(-uvcTvy*{~#d(;H9oJCD_IM378!IBz*R=oY8tryiZ_waJ
z3mROd9r{ji|M_*=&s0<y_h~bkB$a|4USvedhuyYeSC|++MZw|$$SSFk60bHC55Zt@
z(}ZTuCQXMGFL;1@#LSxad$x+PJ(L#rD9@+CxH8arc%6e*wLeIsz!uNISRw{HCemEy
zYE3Re-4wAAv5oj;7ZxLnNo7ntioe`PdFi~YVqRB_v*;2N7gS;l6<g6&CFw)jT3br7
z9pabm$fr}{x;Kfo#EZ5Z+x!j17nGE1lC){yG<lP3-9MwIU-yAj+9_L?uM=E!PG}s;
zWuq1Y%y}V`(?(5C_<aOh!(hFuh<8C2lI0|jN%;j)4bFzG_RPp-Zbd~}&Lxbr)Cvp{
z6)+Wqul9xSQ5f^VPbNGnzZ$~i;J0k1s?SQU*u*5`wr#tM^AxM9<(F#2sTCO1mSIqv
zJIqaPBD?J3Fxx2^EOymDUi9Fmof|g1`1;=UZTAI$0Q+|uRo1)f7y9>m9-mR(t__+j
z=H+8XO|5uhNBLt*mfdp@sBlnOi?&zJZ3;HYUq7_(!u&{%jnohJWnlQuIO#2rX&#I<
zii_MzU^Wm7H^(o!j0oE}R>Y!St$S2!o%|xLfb5Le)d^t@7ppQ5<MOKFj9U(y(IDzC
z#Vo3ajQXaaxciAGLbJm7xLa6NGfvzcuJ@b`Jj4Okc`qYcFE*Sj!YV7W3kG>D0R*1v
zMJRa;QvyTaJq~2+>}IyuC{}6(iG$xQaQmzf_XbK&U-{|N;Mm7Ya>|FSUAJ=WqGf<=
zm+5sHr@yZM*ZrOTb=%gVTFeP~>wx>EfBnxolyCYF@pBe)GZlC^2`heR$VIV}{wQ|I
zLsn$24lcaofOW??G&7<d7Ok-qu__T*r7#8Nej-Y8B_uLdZs9Tctfr+Yqh3N${X$$=
zU@d}GdAS16%4aWDOG4oOxog%P{9DyioRtq9eM1+_jjzzscLU1gRo5ySZ#W;HIBk)E
zMa_KnEE*lrM;-utK^Sy0ZW)XXpWP)Hx3#B5ifyZW`)%RvH)7^&tTHv9aS71EpB~ML
zUkauAcmEG}?*SiGwXTitwcAWGnPf_mNpF(^2@sqi2?^4B2T@QuC{jeFN-q|q3Q7@3
z08v0dDKnF(*Z`G5QNd%weym4DRO|&ZE8lwGwfCNx0G@NtJ?H!WzyG-xN%k!Etp4`r
z899#r@nIt+<111^w)A-Gj^sD!o4R)K;OWy3vbi6~&OYGoMsQw<|2F5<Kxrkd4oVMh
z-dsOQdJxYH+5m|A(p|$`hIn6GG}=o<_{_#DkTFc=2b?gU&5qHDI29|DBIA68Vv#pl
zV`jf6xMJq=rBbJgQ{E1L|L&t7$-Cm%(3XP_g?tN%xa=kxs&1f%e&TxKAeyHPVSNG?
zT0mD8(KF%CVdpppF%NT+V87)>`X`uBg}8SjXQNHz8_=c^(wVq;1)g9Tmx^ftUR5-4
zOVtC$x5B0;Ur@kkZ9x*qpbo80Rdy10>`{YXkgoJc`el%QPwT}GRR4bYsqL!RYBM2|
z@1}HN&G#-*+DVUm_db2wMLpzHD(U!ynDpK~JHBK42<Lbd?Jf6~dkO`x%d!NtrUEXA
zQvh@b?l!k<#4I_cRbeRvhM9H)2gMu{m!6?H47lLQCSIm<JENr!IG!XFPoqHgY%CtG
zo;gk*eKogTaeQpD6q|3Iv9fHDN`HTyEZUJfn8_$<FOx#sC;y#%5Nb;kd-oTmEo#gi
zt4Xua`%*l)W6&hjcZShIr7v5LOxPocKTgcv#<A5j?jlI#E`n6<B49TxdOzY*d9G#>
zCJ|obCeSwuu0o+OEV%bx^|<QaCv|H5nzsY}jed6gclxt<HTjaJy!L@plpd-dF1mi)
zvVf2!lbF2xfgVn#737sv(gONBx#6rjn)SDdFhvLyg7uoii;A3{K&q%Qay5<IJyyP1
z;NnUqSk{iPr24+G+Wm4N7P^A9nr!!{LWW=_ph5}A`4WiFbZZ6B`p(j0m=~P{Zq81=
zrrW7rgXJl+Z(4MG;pEv<l)*h;>oWM|cNZNjE;+d1y_ZE#4Us3_O+$+gpL^&aX-3~V
z_|SJp7ZK_1Nwgl$%G_DA=8_)hS9pi%Qp+H(h5MM<_?x3Y0M9l)e~{Pm4OSy+R^yG_
z((6et^b_#*=e73md^qOv<9y=tUHrK?so`hNsVV!I&Iz@q6L|z4wK$uW*HIUf>9T>R
z(rlzbXqzQ2Oj^M%6<-z}T+D<>gTRprby`T4Blt68xb~N4_Y;x3m?|{UTbK_x%&07L
z6g%8f{JNbQe7t7YVex(X`?DLjK2Bfz<9qt9IO6_0)Slfs^%Vz*>&4Kdm+HU!oB6`g
zcKcp?*-usa4fT`Z;tR94$s)OS^369-hB}yUnEp6Od0KD-Uun9IH|2|G*OA#^<VeTT
zH1sW{r9<G$jDC)E@bsA-2!SBk{em63FLA{YvCuVM06elLu%LOJtSLFg;~p@tRlun_
z1KxQ9^E_!TCE1!=VWV#yqi@+Oa^jN|Wk-DMg!yz*w{GPA`4eK}H%W@SC^RQ@SnMP&
zEpjUozf1eEwM%7ZAz5f9?BTu*xMR`)-@y||vtdO}R!m8RhSU@^q~@hQCtBhGrwiIR
zK|^xde90ipi<1lkoujRyjgFdSp{`j%Wq=Hgn<fENrC&}u1E`(;%wnMFNvlLu2y3OU
zDYM}bTR;G}kV!)mXZjWRLBi(+bVsKqP`#R=+JY1@&9k5K%97071BYhqYSMJ)ZBOpc
z$yz$-y0J5kPrrW1)l!qZ`q$k}KnolA_&7?Rm@{MMY|@jCdwd{W4+rb~`GXIAf8@Hy
zM~r-2h^U>r96nDYyd8GeR5qMawliJa1&kM<bJiv%$HkZUt!lJJt|TTSV3GMug!TzZ
zni}tt6vev)x~NT4^-?iY8KkXM1J%N8O(wP2JyV48ss#2<C1h<rc9t{|UpVYtJcT@d
z|6@pRNryEEAFiNZ=B>}$I(^;FP??g%#)I)C$Q1!BEj<?)V%!bi%C9QNndDuhp*Opj
zXmVvk&s^y`XL_{iS7&o(%e<m3k`*?=6G+7PRHB28h;zg;+2GG`02Y?P6zi9>Vfmdd
zcFr>@{c$#X7(s@OQqus%Ohhr(S=E!_ye|bxb&@Z0PIb`}I>mX_W%@1>s}JGC>h#a|
zIIDVT^_84f{UrUCjO4Oe=Ta>KSy5o{Z4^Xvsiv}LshE<QnxvJZ#-H|Qut5qs-$n*U
z5lr^@^MDc8gBj*PQ&OkI*>eiefJ)_5s)>1*p;9$Q8_A=Z--tw&*yU&zRr+ir5><NP
zKoo=Ow-?8-F6)cdc(+-*QoKJrf?)26KD%sTtQIBGl6hSkkhuf+*s}#y=VQ-7o&+c8
zq)1h$@T&tiG`RLm9=JTxH3C&k?9C=<UqNt(881#|OzD_5_FO5JxC?Y(8&8w_?;_G2
zWc=5_V*GXJEovs@oeT1PWIUqWY_4Y7cW?1P=)~{GkN>75g}$S=(lyn4=grZ$$M$IB
zaR}+)gG|tH#+>FeVODQ@0?{y5WRAm~5kV;kQJw@|PUGZg^v<wd02S1JJ0yAl9!8ia
zJv<t_F_b+)F&HG{&kzv@5^5u@Ami7sUAvxcR(zqA;>^&dFP?e!toUGP)UNeYr>x`q
zwWlB`zhiCbV6Cz=)*F4%*c^?J(d_)9v7=3Ehl?h<oHW8OWn3@0h6f7lhMsV>kizdT
z1XpdM@AF$_-$&=Dh5Wi_dHwrHpR313)pL5yAG=c)5s0PlXLrqcxKqh-4RfhI?zK+r
z?7al}(ByS3@A-YQ4dRk?v&IqL!{7+#G@Mcx88w<RT+=IJ`JD-l>j?Jn2*P?84Ng4m
z6a;p3CHedSx|xg*=NRZQc@4AaX$`Y!pccKfMgr0)9I#0V12$RtTwC$pvw|43@=Dj3
zDCDM?N<CDs?F?gAVCWupg#_SDtY_=iufrX|?(uWM<G-=3JZpR7d;$GFhu`5oXMHbc
z|K@v)yCw-sH2(r%9Gen69v`vQ#m5O|$ldbrxUxeVLc9T7Xyfw-+HtJK=s%PIwm*En
zJ<|OuE#iIhQN{0w{WIR@JSzBQXNwl3R#qHNz0!}TIw3c51v}a41Qr1ck_jAbRV<%y
z*PV`BssD??3vUF;R&fpWx~v1M$xURW*!TQ5l#p?Bvq<E5wBMh!Mz}ct0C-yjL7k6$
z$365_vU@qhuV0Pzdh6swLF7dUY}I^b4-VCF8o>YTcp>qnkwF@fIGs6$MDf0{|08MS
z9IgD4+|}_|CAsTMT1n3RN=KI;Yfr~WBD-^zigWPKp!$%wC3FM)!Tv2^`}|`jV~U0Q
zF3su0@oVKs{MtHeT$2nd?l(O?08&P@`CK4zQXB|9>2et9f(78AfRD1Z7?j<GvL{1x
z-o;_|U_s@-4p^J-&5;d6``o<z1>!Tuw+3E5RQJRa2lhPXzvsDUh)S;bgb-4^Z1&PM
z^f^jDqtB4l>a?vJW-qyY%U#o^+`D?B>ih8B7su@`Ek3Z|#Al~*KJY%k^WDuj-<LVi
z=I|*-6kA|gH`{$mCC_Tpd49l-B(SlH$o`-zJ{t_Gq0Wl$!lR-*<op16uy|pQaS!#=
z?;$dn6l49xCGt7&{z(wp89YOnf}t9LDjUkUIFNC1hK!5jE)uhm%Zkzr_B`A1l1+49
z(R9UJLZpqs&`;#lIZaeS?gSH4Q|Riy&JSrGt}oPcIN0xd^v}rx;iCKt9hU^#H_>Z2
z!nqK@jSY7&o}K2r#t35ua3?Ua2<L<!4SOsmq52fNUy85P<9=bnBXmTxC!Ibbsl8M(
z{EN`J*4wK)PR&it9i4yG*sLNZ(S{t6CR}Jge_3+Ey|MOdIuGJ!S<Ag({l5c$Z=9p>
zAiKx*<6h|==3@pPuzxBGGyzZ>Ym&|U{)!d_uw5PmQSdBCg0o7}`5!`m5~w$3qL%5v
zAY*%KSjbxbd!1di!i8@S$9J?ZvvSooP7Ci?IjxuASM8T1^g^b(!ga@2Y@TrR`e1NW
zVD689NMDdwX{%j}GSbB-&kqoXWv0E!`m$3HOlxrb?W4z!LP&}6US`;EZ%1U_MTtPK
zeP>V{a7^s0i$D~ET))^!H<>GO?+*@tAEK@3Gaj$axc23?zy9*tc#GN0>nrUSbpvKX
z@5&>Qo%t?wflNR-#{Q>_49j3klnfRSG|>_XnrPtyO!NdS=qj`bVHtcedZN87Leq5W
zGFY_e0yy+m(2&4MHKC&*ft92SOF#(oxEqtZst56?0qtXuc3&iV;hG2}Ng95EQ%KVL
zh>5c>GoVXaP?yxFERie7JmlcCT#WE&XbFTp+Y!82O_1f|?4%tv6opU;<Yq<cGSJUX
z+R9qAd4&EMbC`JP{_z~@zwFedIuz9#*k4aE`?4X*zC>A=ZOFnDSXgFBMnEdpSz@zO
z^a^IQFTuV7ap*MA+W~-{-Nt4Vpk{U}pnVCs^ZpdHFJl#+b8WLAo~a@E99k?>)TAER
zoRCt;?8~RbX9K%-21Cz_?SeaZ1)dcZ()6d_No)Gj@4wRz$t!BLpTry=Sd)63SOPWb
zE5t<~q(9RT{fX`%3b!{7H=I>JW3oR<a09EMU__--O?>is_Ct>8OkJXsV78(jpeL1u
zQPv&Y;(+3nWE(>5$7v3y3`o98Fr#Y#6_&EdtVnyA+fJe~BM%=x*(fjaBw4FxMzZA^
z+x_Ca$h^=paqz{pPtDk#Do4DDWT<_@ogd@n73gdfb#ZpVWG&%ARTtuqYe}6<O$SyZ
zxRU|zEMDfqCDxAG7n3$|Jnt`&=UaOTH;++{67T}CQ=6wYBZF73BaR=*8$tRkeXZ$^
z%_M>TyyYQrgZJ>V7e8Qk=$Oz0vTfcbF=b^KgA?P0-NN}Os$IxoHt^6eMq<DPuCNj<
zcFM64{Z4~h1;PyJaI41iU}-J~lJXVVAB(ZsU1rQqMT|thlOx`@C9NvTY>o=OTqvGo
z6Rkk}l7XV%e^_z<Mp60j^-YH)sm-AYul>ODQjXutLq_+C_GGJSI!js+x7Ae9S>3is
zmbY(JdXKsky{v>>$Zo_|aj~&pubut`E#v^nDs?F?yaA8^H&-uW^rd)w2^_H;?t=`_
zE)_QNJV;>3uyYJxR|40{QV@M5$H8<nv~41jnT#u<OxHB;C6Au|cKFrfrhasszD-JQ
zo-*ZT`u0}~7A;=zrChaPL!VjMsmrh3v}Mzvetoar*sFKnema+Mdp3@UoM`c1&WT<l
z`e>3|wWWS6u6<WpEx&?uk|gZ=Yx@Yk!(qOReZ<rYn>pG%dg1)-7n?^(N7*s1btXBS
zCAEq0-vIk>&WfBBZZ+QSsPs82g<9E}m;{Csc??V_{`0?LMzIambyC0Xwlwk7nqWu{
zl3C<w>W`0WTFrEGGuc=_nhL=FAqwJ;Umy81j7y4Vp_gt$DGy^DFxrL^FJVKO|93Xj
zdb;|1l2sNgC)wZ8)nxr2^i)-_ioPaZNhs|^4&xs&bd0=BOW+UoZ&Jf|(zlpn^~hyx
zDDm<(l<Cqol%3m9_DkAO0XxbhyUqfFm?>$MXjTOjAOb;4B=3@@l|MDR@_)nzl0Qj&
z>fWg{SInLBx4%uldCv43S3D)E=MTMfX3XHR6YEbrNq-|%YM&`L^c*~J`+#1ZM~&^K
zt~|J7W6!znoW;X7?tj$a+OEf(K4w>$qcN2Jb-PM2U(&8xb4(?FXLc3MldD34D2W%2
zOM+NWH4Gc9UngH`ew@urTmQd;>2&8;B5hAT7k{F&E`jO9_chK*v@K^oqp>*u4{W*i
z1R{Do@15ClX>!wvgTz0BbnPQ2_mGpnkyC6!w$W4cD1D2MUAYFox0}x8YSB2|(Nr-i
z#o>n4R|Cuapj=ACtPZen15&KDQb*+RYHQ&pCi`YeMyq7(Z)`>CmeB*MTvh*))cV44
z@thb+kVG*Q=3l>nd!l`Wt<8H;7b^)ynowLLz0Vwm42rfNVEk)><g;LqX0a)6M&7z`
z94r?>xKvJ#z9*w=48;FIjlmk}<{-@k<T7bnJ?2MgT<PpPuEFm>j7_<pkO>-Ax}Fc^
zOvkvDE9NrkDp`@~D#_e_gDZjEWDv4WwrTXQoIBcYO3^t(FUt=nj`{QR$G(!qTAeI3
zAjyC1{NfMMT>KAG@yQO=;0aY%y+_Ki@7>w_y#Alc@8~YApfwTs9Xi$m=8la-du1#g
ztsYTRgluN-w-J^LflSR_akFo{!V^yKfjs+S_N=uhAQvNJ49*%dmg!MH2u+y^JszlT
z_s6tgk~78TZ>6Q}0y|kM5U|RCkkbk(+yU-g;3?s*H1<%2SfCCdtf6l<g0;OgtGg0~
zbvyRs6W6XT3s!6#{nE#uKyFj8{GOpvWbfh&VGLX?E4-piEDt@^w!IF83u#Z}_ww>6
z9{Ard4eH4s`*+dv@ZQ3?9KrWC-6k)_v-KCg3Gv_cO|UcedGM|vJJ+M7?M#HrWGwLD
zVLnisNZ*9`-|$T=3QoDD)9g0EVCC#C$37NAq#b?!j=2d5VmdqRcP1p9;%8fVH}Y;V
zd=ujT!Z*Rjy#W4SAGov~F$;0N52(xVP91s4`Ht7a*#C}af|F!f;-bPf;ibSX`CbTj
zs(uK~gnE6ZOEw4GBi65rd=%n;!bjmO%hj~$NFPOW@;k8}efyomv_+6uCyl#tBK=u<
zpoZRXXx;iF(gXDuZtT<R7IxnEvo+ep`gTeG1a6%qZ<PK2Z~7;aqx5|6PwWqB9sJqo
z-x#*2yoc4$y->Y|M+w;3fH$i3Gs-_9{xAF!(Vg0SQHP>>!}r((CQCkNvLqMq^)Bh3
z5dT&GgdO}7JeBxz&WG}fqTI6F3Vx}f%iSYr=;;&0+NC!vTw#{zBC<$~T|RgCnt-SZ
z4G(_^SJ4Mgd{1s>^5obmrCPc3iMd16l^@U-KQI1*zW6bp&xW&VKIW+B3O8!jQoJ6{
z$4qq-3?vJ7rz75^&u*SUx-DX0)6TU32<P(vJ|0?dtt8qp-_Mt(0hVZUUM?6z5Q@O}
z5NX=76%Z1IhLfKXg;}(3&<0xrd0x+h1oiDL5~G{2_77-N(H>D~Ap#;Pa?~~UH;Dfg
ze?xg=e?vdw7=P<W&yy2D`YRI#W5<$IT7T0m<hg?F6W2b;uEm{nxcFU<8_C$4gs_cu
zISz@&oDc$O_=)zG36srDK`u8zY)66T?sMc_cNlqBxd?f;xYXAK5iyH&<lQ1Pj*0;I
zt4R_3*aYsGB3_T^V6933Sh0xdm~ly*c&teV!nOc4i_IQ`YNup?VPmpVCh=YxUXh87
zt-)`<MND3@uR6C?MgqV?cG2K@U!DKAzs;u~0X*;DLm%&c%p9{3kUS)!0rkGBb2YRF
zJSXz0hC_FPt$J9$yL?W{#rj>H(}p=I&WN0p#J|W%vHxp1Dbebm2~ZC?ugS$K;9W~p
zk=#KSippJgUrH5xW;r{$E1%MpK^<of_1bGW7BAZrfFrBI&c7Vj2YY^)_9oM?U4K0L
z9R)$%hB;rDvtiS69Dvh@c(~!ib2e=MtDFs&p0lA_MuwC^1If5|JIYNb4HsV`)+47u
zT+!zPr=&ZHb>fZVCefd_k@tTlr|7sRL2QBf^gMlI)0DnF$3u=h8^=~Q4#?FQ6_Kl<
zORoP=t_G&`hch*dF&G0tYe$#1G)vsAcb;8Y6UZhmL&TWS@4VwEN1XqU@w1(OfuHT1
zA0!><(J1`vr)!>nzJ`9^2tWI2+=pn#E9cm`{Mx_+B8J`ni*EO``|SYcopOA)-wk}X
z!GpVN`r8)GKcQg&=y@F$)ZZ+Z*O&jLybe^D=|N3#yl|XuAw2#*yWy;<i4qj91YG1Q
z_}*4tI03+~gqRi0Q62IXdg@#$Rd8#-QAuN)scoc{4$3pc7&0(TF9UcKlF-+b#B5B+
z{{p}06|8IRAoDo^kS<JBoKeYFQR&Nb1d5xt!h6<H#a5}J(r*Ey$P8plGLxdkl@V~N
zI!2tPm%FjzB<jj7f`!#W6&keYY+`@6)7<i^f)V9+KDckm_&M3f#jB2I%$<1Wfrsv>
z7+z3SHn;OT#6iD!f4aY2d;hc#=s(0xq!}@j{;tF=Nv`up=^M}0cW6%fR9DlwW*zIF
zBQ1`ecO`8}bWuP3gT6(7r-7=LEvpFnW0^gq^u#><N+FN}^Xl|s8L8idCFH54z654r
zCvwnXTLPLJf?r5Ml3-46snw54US~F`D0dWj9iquCvH#PGNtetxaV$->4DDt)Ayu#6
zutwdsftQw&<z!k&nM(3jk-wdzFNePThP*%_W-K<G)M8z5Z%o!0aGV+vHZOBE4qshN
zx}E4?3heON@$fnI!{@|ADJL90JKl?S?Ot?gn6Y??q&rcch!B=Z7Y7x+r-NU9d5O59
z+_&bXmufzOAer2^zAulHi47m%{gKvq48HVI=<8ozAph$z*!9$;#zsfM;UMWqk6dJU
z$mKPpCw-!ZPJo+GF0a2qQ>ck>q~Tk2wQ`*4G}|>T)U8A0rMsaw>DgL5nFqp9v&M3L
zTO5<(O(ZwKhcbJmi43e%sOPXF*_7Y!O)>Kr?sve~b9w?Pn17s-%tpx3_Iy^4KgR)(
zZ>a7d(4HCdjhg_#UJldAr3ew=E&FFlrw~y)a{O3S>M8k{=0>HS9#edwi5;VoPdisP
ziAX*r)+V9bVSY9?oK+Sv-KI#mTbrLey(~H{FDf~k>$woMNx&l61Phy=LMe}_yzJZ|
z{xPJZhuQkr{1jo5HUvkr?Z_jgQ}YE(jy$}I3eynB*`FY3P*gYz<^M#>VVeEMpg-Za
zw>4d7$r42*?dfx(de;(7*LnN51V59HE#4rBsO~(wT&Yo39^&eb?G5VXcAu7WhkWQ=
zb*tXw<@rE$v2ol%X*K|E&8H1dsmW}2)QTiN0RwI%PV;6U1dD{h2FaN#xl2UrUQs-;
z;lX3;H@!}l9YH7?@;L1Uf5f4p7yDsl{b-7^$=;|RV1UN(e#B@%yAGotPQ4#QOt6Lf
zk#KQ8irgkEIkcBNePY(6V^e4NN&Z5I>Hq_n6w>$c&vT@8moBU?uQR>p7mYt;9M|6h
z0=SQjEUCKqL>uTmlGh(^KI4zEYekJwwp*O0=zy0FU6^tr!Y<XSO0tXhH4*u~G%*^{
zU$-;YPT1VNew-{Mt&HhAv5h_}w&!zL|EP3Lcpk|Uw5KtbPcgahHJeMPkP21b3E}?N
z$rd0bXXY_*bX#TK^{~)SyUY;M8xKKIT`7DBG9qzbY6xx^0-N@yf<z*sG4m&89V0L5
zvk&=t5i3wYKhRbI#<78|LvO5IN33<+6ZTZL3b7JGB_O)GoGHXwk)ly%!-;dlN)$#?
z>ZNhMMNrusnrjpaU2-`n8?&G5Ofj)a9`Y<Y{O)`X0vZS5B)pgee{3GcS~-Ah8$!IU
zin83WR#!qmsVhQt!O3P|!|y*7&^ezes`M(IlYH)caOLJ1sX_alo0r#<j98LErhoIg
zct?zA3N3v78+s3!{?NkW&_;1~`of3kJxUTyC0_~p_?01Y8)il10opU-VhAp;W^qH<
zI9;}Z#cj#;da+<K(W94vW?K=%KSi@2T-=lZWLzl!%!a`$5Hzk;O>z#5-R1D*LNQ@&
zjM;*dk>Ehs3_0CM4R2LmK>+8-i*OF^vdE!ll5}yyTPNuk+r&rb(a(?n?f9&_N-aV4
z$|bk`<nulB+22g$V?t<d>>D3F^w5q4PCAerie0edA?X2nlyrdc%8(;(zC*)aYAQ4r
z9@cJTb80S}JqLp0#Cy>%UKdv&IM~qTEcQE?o=Reg$79eba=o=q=J<Gk$;SPTAh()w
zO)+|VAl+h9GcPI4vp;T9nYv^xhKa~^_)D5qqNgRXc_r);h!*=D#ah87?0g9@5B{ay
zark(;v@Z0wf3ip5juh8dSBED5OS?q|8^JV??G>22BB2;+jZ*O3o3ml=5_r@Pq<EdI
zq$F5N0&&i!>=QgS8F?^sC4V_{5&W~!dkdqpMP}~O$+6eQC&WR<t1p`gIkhS1-)xuJ
zZO&qCmjR1`B7?6tu`+V@{^|DG92_S78rpc-O@?>*^EEZJ-9O!KqR@+Wk#?G<3C)Bu
zVU@s@B1uab<IXILJBd59d}XC|Ej4_?a-5?=rqC4HAiV+S!UiF0*h3ZUK_NR@wTVg1
zTflH__6`<Fwq)crEiS#HRT=QLrkdE$Jzhjjkx=#nwm}9a1gCP0#x|r;$U3(S^;s<y
zxP<Wf6lS6raHqX$A1uCo!_IAM)>N-uvz-2ow0x6T?wEf23i|t-o<3bibn1U=%{mPd
zb?)tpH_Tdccg><{H!i7p`?2vmn>F<<dg=2vW!<jHT2#8z+?^w)ib78|M{}4C40E(O
za*o7*e~tn+G@@-lmUXG=ijm~-Wcf_s{sH>ie`CVJ;r&ZZSkKxAo8Gc$&5AW^mMok%
zgT78mkN!G-*u-0ZK6*u;t|L1QxV5HFc)Eu5x@us}pxzy?*|KMK&spx=xq~<EXVWz}
zlTDX;j!ze}yEQy7hf3~3yIrf>Wxwxigu|C5lnRp?<M1^zovBMHK#Y(SHo1A}_#<Li
zw=@Fu*#=xl6Al-0g$@^DkztC`5v4n;veKVdz<$bZq8qi1k^0*5)M3ysv7}i>bSIvp
zc1h&Ef}x(9zZ+07JT-sF6+?(PuwqntBwqKWko*$UGnbUQ0~tAYH_h#$=dDS4jGE0u
zCcEXQM`ERDnP0{{DB*bkklq%+&+gAk1b#waR(Ku~`Td=kg#a~jdO-;)Coma-_(ZUD
zaXJE7FdqiGf$k^guGESmeL{*j1PnYwF94u=bC>xi^uo)wHS_OWElWwgOZx0?UD(+o
zCw6Pv?(x<oy<(he=G?uSqkJ2QVAU%hd2YR&mOZS=0>za*)Kj>0&k3+QlG$EyDaV8)
zh|42|kN`GVjKr(b!<pY$dI+FT0Dch{w%DU<SKY~{$;~-x?kA;NM&)`_lhq_^t8Qs@
z<sQX%;neKeQo;IrED0M$rDMMfGX>3eAjivn+4r~BzaMNIL`u@WAGRDxJQMB)+oq5U
z5$?z(ifG*}UOsDAog13obyc1>C0R+f=CrZWcQvPh=vp*8HesWrv?{KD63+<E18^FM
zd6>I0Ms7`pHZ(L)=%1Ryp1b*T=?%dH`S-MU%y1=W)A@i#Dl;^$#NOr^azC5S8$428
zg*wI5hUto^mTB0RZiri4gnp@~duq{&47RCqJa}v6c|g$V7?_amnVkU`nD!JIHyAL)
z)@EkqxHWL{%L8IUL{4IVE(?lD@`AzOzXFR{pF&pCX-ZqNgwEr7)0l=8>^wbgjB!Hv
zMAgPwGU7|>GA%-!toi9v;HjL;p61}w|MBQ$dx}K|?u$A`QL!ecHsGkkV}NcPhQUUk
zlyJ&q=z21hu92Q1)97lrFTj7;)bt(Osl9{&!Vf~A9DH3Zxeqa2^C33nKEymvU;z9&
zpcI(dE4}^>%9+}39Xgv!{B7X|85rqNtRy9Mz2b%5Ows9O^Y>u`?9ZfDf157_q!ncU
zCY7RRqd&*zY0jqMD)x6}0s^5r%0Wi;!W5|_1Ssxf547#p8+9Is-#dW)-QVsjtn_6$
z9!oE1+OlIO+%=AJCdRyAM+MBu1<-nc!*42NmsDq_7X^Cv=?~Ak+5LU{UEU>G=1ux%
z?nsU^CL=CTJ}ObJiXv~43Eh-)z)e{OZpw*svVxg&CV`K#d_;a#*&M@1*}j7heU!cD
zPwPSQr!{MFCw;rvTiLdXJhST(j>}HXb90+_`U|I}@_51Io9Epzzr4)x(~MQ~UgT@5
z+SGfswf*|ywG|`R_Wvtu>MsB|3Ru;=zgSh7ud1)JJ<zBB09;dtzNS2oWpI2%uc@9`
zQ>14phwJb!yQcrBYdx-6RaTFtqh~A{JMg-+pljH`F^gx8Ebft2RdQox;LCGQj9gb%
zzHY>!@5zzK_4HKXdXgX8e@mJtC$eRGdw0jJuXQNR&27=~wXGd@zs;67F`2&kZTo-F
zkK1~^ZAq?tcmCvC=HEWAyp`jp>8s{xIRxnEHz~rELJ#4j5RiC$805Jx%M+-SFbD%&
zU;uj7qtxG_i`QG%&LTM2TD7y)bw~Zt*NK@TJ#j@_uvKbd!$hVYwllsSHh))0@%8w-
zu;04a{2kc`9oUZ@!jZ9F(6%kp0;IwcPbE}+`?}hFWtF}zj)2;v2-cvZy*4p7&j}xO
za6D#nWyR#XdCIuNJpvwkAThrTnpQge&T?EXIDzG;Cum1ZHAS=C+0k;bYhYBIzy-Aj
z!A>f2liX!){4<-Re=yD8zMX&i`y_*Y|4!$*WmN^kEADvcz?~E4W*iS4IG#Oc{E~eS
z-dR4PpsIXsr+4W&vWG}zzUshAu~YaYk(i54U&m%VY|y+zqZ26Z|K{vM_CH)Bj2S48
z2`NIputEr=ftN2Im%yKq<MHqZZoU#(9z=vpJ?+nDvz%{3Xu2Fbrk+96E5n9m_ZS>X
z<T#P}sXUUOYp)fPk{vL~IUq44obOD?aP?&{oh(5GoeTgi!NbBP81QtQ-g1ZJP8JhL
zDUsYx$>c5~?MZm@T99=cwyA42tgn_%Sh@|hsA<Pe%vj=7?G3_}L@M`hu3dpP;0v_v
zH)0woKSx`x$|F<73v@M|1z?!>p8a+a`yc2(x6#|7E>B2>+_6hwD(Jqj2vi!pJG8V^
z2lt63LGeeNT&crhN4T!p#&EPDh^KQ~l(YKSuIb0#q32Q5M>?qKg%{~>p?Wffr!^t&
z*X@Y=#rr7!Py1-QL?16k_2PX*Ft5kIm&L&H>sPE=xpGqQu~#^V*C#vFv8%qUDSqG!
z*0*Unq*yR;f!8bTAkONnP@Dzqk5^Jm1^CD9oYI{XyiEVzlenLJ^dF?4H~r)!$?Z-*
zdhEcbV&(it$>c{DK1zDgiI2{Igl^ck;1On(ug3SjCGV7WDD{|+=~H!LfPhN$luMs#
z^UIcS>Z%P>qeM1P*`}wiIxBLETuHe}ZxJzv91MLT?>ak~ytfeEe?f6cKdVWCT_{Gz
zh8RrdsEsEAlO{+6;sE&7x)>B8;9uqt`JQ~tzHnm(x$M5sY%0m`Id#F^ZLTPxZ{MM~
z?wEhe<a|e~^7#TGf|5jjRfh-)vu=D!DG;DoLC@kf5|aH4TE!Cg!3lm*!2nG_vcEIa
z@(O0Ynp`F#JWbjRR6d-yYDOoVYtl?f5_9o=1&!awtRdOK-zO9PKA<oFi9njcwXO_7
zLCgMU7CO*lroSl%g#@N0mJ02K{=z8XR$&ntE(E-A?Asu>M4*iq=DJNgHrExNKnV!o
zo4jx*00qVM><Pw=N?OE}1d7Jr;_-NVy-Vvl^MBjBGkn&&AN#l6J-+l(-!N~TlmE*>
zo<KUrztSP1;u<m%{-veVH_xk)TKJ}W^hh*h5}IZ$M2FsDaQ4@kxIfB-ZYO5*)w%eC
zLQIV4!Jf7D)OF|2%00gBHvhHk*#uAB5dQ2&k8g<0Kbt8Bvp7q}?Rw<EneGN_(cc5=
zwF|EBcI*tlUEAI6c%tjTL1V7JY3d@lyN1{U)8{P&sW98&8wbW^XLhcV2eWI;0-ka8
zHue*U5P#u~?58$vwi@LiItrt(Ufuufck;jdyz%cHl&PafPnE?9Exn%7i96x9X|gzx
z{nlcVS(!QpKfA)?DV-#?QKp1{ohU{9Cbo-uk2&f+Pey%4zUwz(e1ElBWmQS2!T3>@
z`;TWomQ+=hkaXk6Ki?T}<BbDYgUV(kFQTpSBTX=V#68@XUT?ZbInJz}7$KhBJ}E*L
zvv`_7mPZn&zwkBj`bAj-gf7IK8$=tko%TE8A%=+vzfefyisvw6wnR>A=(78r$N|Rl
zbMs}6J|^1z0@ECPg$TZxWUsSWUFlgG8k~}3k_ucV#aZDr6%nV`Wnur3+)71(OI4%_
zm(%1dt5A~qlA+cWq;QN#kJ>vPA8RK|yDhiO9X)q+w`JsUk#y`*KpR?*v2W-kT1j6q
zcWn2San$nC_4dt5Wmo$4Sn+~F#>CV8s-0X#x6ik2?&9*-KXJWCpYATcw=!=2ShRun
z(|43@Mtyw|udipeuwA~s;XTaTe@EVK)QJ@FIuZC>8rSgN|4-ufPic9qFos(q$ADqP
zbi2emT}K4?F+8CE@F*Hb?z?>){OF^L6Na;E7B8;39aDz0L-Tmh9&4KAXN;QWv61{E
zPT-%g2*%X&m}4yGREy==xQZ5YOaNfK#3UEoS&H44%(iq4<X8iRE@tWml*A;hwnd-!
zRAQtMvkkpNY!34tIzu;+3G3IcTgU!xy^5|<d_NpJ{(b0>_}K$<<~&4)b*HXwtlwH)
z2$QYgg_x<~3Mc8Ps$qQQjIhrIYS$bd<lVCKkV35HYp`n&%_;UetD2LGC~mP1Ecmj*
zF!J1$2xw?SjZ(_Vt<(q*Tu}uK(Fm+2IHzkiW|wW7c;e$vf;Vg|3l}DQwf?|5I$C*u
zRllqBqJ++!L+1dC_2ffIhra9EIaFUkiz*C$n0%G8Tc|2>eaw&>XAY->#Nr^sSnjaD
zV0|n`iH#R>i|jkZXM#Z*qxeWanoN*4hS%<NQD!n-s3Nl75(xp-@OMPj@QB(5h>7@u
zT>BdGLy+3!D$<5Fg#t{{a8~2Du>!(poQ|sp?`B5>xav_e(sKHcu^zf^!7RRj1?#jd
zF@RreQGlx6f;uTw#3XPQxiYWLM$OdAq(g|RBh&hzxVJ`}TtiE1LPNy8tRFvXHKh^#
z5dUlaux^1ORFXqK36c+M$O~KOdo?tld<g5=a6+DeI2_mUxvotVqHyF8ZzxePK;)8*
z3UL6D6Lb){NaQ$IBjh;VmBz?%h&c3TByQZFfHpKZ8a1v8^Y<F0V^||PxKaHr^3bUN
znGPm3?jTm~j)?5w2)SxYNbjF}3+o@1G4F7*3fL!w<QVc0o>8`GHBg(Cmx0d~hzQ`h
zybGT%phE$dhdmGC^KZxj<cFR_he53=d;SmYc`@=sKf>PA5&3dkYVYAZ(3_bwn1=8F
znm?EN8fUbDt!W};;9Ir&#~1?>!Wv^mAW5x=#fhq?)6TY$gtxt<!0Add@bpB)wbe56
zZ3(ag!R8YDQe+Y<kRj^@w_vr}cLc|7?L*rBgH9udexv*PZ5^xlLi1U_#k)fNLquHr
z^Uooks|9(U*R%DF?yq=Jf6f2V{+2cB@8)3dtqDTIw{$<b?N9o%Yin<)40!WRa)Jt>
z<K&eiN3gV$o!xghZjX=*F&sOuYhfBZ))>~sIPI3OthGeTT34wr2@i6jE^8ApsWTB|
zZBiocRXD^cSX5%ij2-|ajc3X>X)JCdYf|0zrf&w%oS7_U{9OzM#M$Dx(8r5|@*Oqn
z*45BQ#JdzW<rYO;8@ffl1IO?*n{$hr!sdLUmf`GRV?brWo}dlj^4We#fYJ%$aOmT3
z;8HkX98QN0+{vds#(t@u>y_DE-wuBD)%B$7w{#YHlnLB%LHTgaks~#sH^?K@8hVoa
zOs(=^+$X&RK|RFg-3Ipn=JCcGnMu6f$r`SAvSSh`uk8&a#AD_fbjfj1nJ?!l)JvYC
zCbgINVWTMpIF|X5^NApI1W=QdXAsjnvTx$WeKY^3`sNY$MAsn$=zDY}vc&HpxIdQR
z{n1>zKdu*eJ?mz972Y3bwfkc{j%BYPm~KTG*)Lq}qVW3zBz;|+giK&q@Dgv}&xuGn
zC9`uEiy_*889g>;lOdIO)-;z%x%Rz5@dc?}XlXFimfZ}uh-+)kpB3*6EzorUWgN=K
z$Ucbw={`V;y;w@`H)@Kv)Q{DQiixnN;gsof#8@4!^}*?7;xU$qM~f~Vld+IVFqSqY
zl1T<aNa3WicrAk*bkuk-ontM!^tlAADw3SN2h!*HBi_YR#mDb|4=K+=&(Q`ZfWC5X
z$lW$=-L6n8WI*F{)*z~fkcZ$pqrY5KvR*Qk40`?F>g*cn=Dm@kaxd0S(@D|Nl3*#d
zz%iT^Q8|JbD7R`DC{{f-30jb=Bnva*O$HnaQ;-9(cnQU_8y~cOXE>b+QriF>MMp*n
z$kr?{0E+B>mkkmGO00nYo396!vPly6Rq|-J2I!p0Lzn>Q+>YoGy{V+#d3E2(ll$7=
z+<eaqr*`c+2{BAckBU<_-kp^*V!(ir;x$AiF=Ui1R?~(c{o_P~ke65d<HK!yU;QI6
zfc}H7Afri_xx3@r+&5s*P0LnH4CBDaJuaRD@&Cdcl(oV+Fk&zfbAVCJ0`@pO2V;o+
z9d+4*+m~lnq~5$>?;W@Aqd&az0sT%aA2z_|Y**Z@ihNgoj#SCw<`4F_t~nkT=RPo_
z;I0EtugZOseo6A*y=q+k;1>CvM_<*J*QnjbbfBk^)47SJ>+D4xXbc?+HCOC;5AAs&
zJ}+Q*)lR&_D*0U{w#4^zr<<XUo!wzS@aN>+i@ElohMMzEIaIO+&x-cBkRV*8MUBO{
zGqv%e#f&$$RWI<>P}^--J&UuCs&*_0ItwxfTCD7DfxO^YxVS}hH**M*BsZjSxy!sw
zJ|*+X{7>nK*{_<9o!P(+afbLs{rQ>%Du@X+QM_1oJ#!V%vTcYOi4@jhnk+}D&&pvV
z;;@Q04$4=oXc1TwID&*up5?^oke)}O+7UPhko}`6v_K+bKf^>?55M?D@ZDz&GOep?
z=wz}UI1M|ob@&0-p{*t}UeV@vvuuHNfEsmNpD%G-6?Ch*1#^lgaoku`EUZjnKuRiy
zO~=u*pqNB+2jOEuyNKaRd<-fSF)-!YzXE?m43EIDTff$3jWzQmPXkL<D?-vMsdMcW
z<mMn*MrVt`;NIYclZvxO6l*RlW4Gszp?Y$?;^cQ|4&A0?%5B)bxIts)P-I{h2*e}!
zL42HED`fH-U<o$F=RvT9cmpg!YY#nD_=>R6)W*fAW}aGXHxLxu5xvY2kNu40_w{c{
z+iPm-&+8@l(sq7s)-hQ=0&R`AHCf&opD$wbf3w_%J^xi(mmYY>gfRtOx^{g@RKb+U
zvL`IKPC%&;QN$0TAQ2qBsvV10VPhq__{NH_^bv<YDY^18W&Mx_5)C^@zT0*Q<U!h1
zd^XgX^*f9=5Ycb(-|n{yiYx8vzt!((NCGlx+a*v5Xh19vz0CH{3XX%x`rS8-J%cp`
zY62>ND)775d=hwR9Z`H;n&ge7>jDouXDjw<02PrHbt{6S{d0f#^Z3e56OV#%wJSa2
zt#4^7^6JjTndu?qXb{#5MEXg-(w0Dem8Zy89wlsU2R58hn<*~{SwfMpP~i111$uE~
zN-0b%(2VCmRH#WLJ$yQwRK??uPt^1Aa<x2pDDTJxmRzgZ4*Bsui`@@CHa6QSSa}Wz
zMTrR0l>vlW0YS;GG?0p14#Arv*pqTiszawXV!t!xLUD1nFL9u_anLpCWZ)T+PKxVW
zh|2Gwo2q-a^c-DHAE)<i+abnFQp{toJo<)Qri@tNATBbJZlxzCD}T~sEecoWw<q_I
z?rP$(tCZ|hzf;cl((o~pzXK7!r4Z%;c_g3?2-D2-nf%R;b3vMUHY`&S&kJL_i}2)W
zYa-%t<!H;*1Rg<AiwxPob#W$}D~r4C5ROgo+gu#4EzXW?j1FIVr7z#kE)gtu_M*yx
zSr56U2!<!2EeTJ9n!B}m%WS&$z4t<Wq<h!ju(7;v)#1C(&<nHXk{3ks^^7^=mrB=n
z9h-XiJNnZn6O<jVRC*S-?n{b)HfJ8}qS$V$egO8wKso@{-%%(|#2mBh#GzQ{`!O8=
z^TD1^;?K#|m*gQv++*~&AJgz`w<De{VtJvT{R{1RE5u{k(J(=N9rfs;T(<e+nfi>5
z97Xp^B*$y0ObGE6R!l{Vb2%bPN*rt+YZbFrexpeCXpkn7EQgg-cdmU$aIt9qyA=BA
zYmzE{`jL10YB5kvp8#J3m~o4h^IzXf-z&I3?~%E?9th1we*~p+7V6PAX#OV6@L-09
zKLK>;WI?%DhmPtha?&*FEl@T=v8<Ggbrs;8j_P?9iBhX|oT-}*y(2z<7;Jz*^&Smu
zinh%9`;$xPuX*?9+;`KxD`^?5%N6t;r3Pig3Csnw%cC*=kp}S()RE5c=NR{3b{_35
z|Ay-_L>ng%a$-WNUhk94k(!d_ON=xzjMRjp!39==6)81zgcrR`HoA15n|{Ilo3qO@
z;^RBpuk5N@fPenJ`>~jq`=LZ%{E%6K;QQ;1I8vADqxfI#BUWEy9}}$5M+0^0=5QYi
zXe+d@wRz|EwK4AycX}XfU$c3?0iQD&4l+3`!=)r$hJ(xt%WyGYv)|uQzs2`^_<IyT
zzGpN0-aqmE-)P@^7@s#juUP8_=M_2Z0VnN4Jg<mLsRI9RH(oEjXm~_>tKMFiEZmK_
z`Pg20MQ<-mZkmqm;|0OQzi$Qper>~9wHomR9*N*K>8Ep;u<t*D-_LO>tU4YA8GP#q
z)LE`$wqdRkL>z%gzE-Pl8)lP4E8NS9!6>QOuo7GDOb?d+=IZRNF|n24OsN%BYa(75
zD&Y<ms~rmunF>}>F6wD#Act%M6F->M>8L2my-unZ<v;5uZ|-%4=g1n;i%g{t)ziPx
z=YubP_Q)G{ss5yR*JR}n(zdi<rMn}YN}sxd9-|Y;82Z|8#QKK9^|sp^zLh1pzb!%N
z1-{OsP{)qrR6l0-?GkOCr;}2>t@4VkRBsD&U7j9s_geM4SD4H?G{U%hAJ^|*_O8EU
zO*~@2oAPvDGkd<5OvAPOPWo1PS@Sis_ZOt0{(B2+-<;hE89IId$Dv7!<|RSKmCOia
zLoAg6)*dsm_Lu>^5V8zKSOJ?IF$-(s6B5&SF^u2gM3Ja4BUMPmNSz(TVq@q+0x&gr
zF(M<$E#kAA=B#|+!R>3wY%#Q48b|2(4}PTIe{__d)$rdpuc;=_C^fTblJ)Z!U;6ws
zj)~5co3lG41O2rcj*c&_w9(N1OCxGe{`rU=+P;pAlR^)`h-REVL%;j*2>r&TPT9KQ
zw(8X|pe?hh)Arf1<6pd^<H@V%4PJ}s!XKoUfs3$Hi*u{O^zpy&_&DOvTaEUUHEto^
z{&A!I<j!gs>mBxtmTNv)ID~tK^C-Wf@prNIUDBhm;l-S2EIu(e;(cbe&vUf*og&v7
z@B4~9&*krHUV-fqtJ&mc{rW&_A0X4&bHqr3?<W^{`&|D0h$WBn@wzr2dvHED9>h)^
z4?>up|4X<%&d2Kp@A(L${o_Xa$$}cuzPG^_GK`cP?Gc9p+q36PLcy6sn+xCnw)Xx5
z*dA>fobO-x`wRK|cQAR7gYsYszxRc=bpI^G2z6W<_WS{zb3^r*thPe(KIAh9E#w2*
zT`&>92eG%5$JyuS6XEk;+1}@$=VAXkFuA`#@v+aRj1X*v(((iC+1t+&Rp573M>ehp
z<tq01r(^N+gZIMc!f)E=ooH{x9pM8wEBQ4aKySHSgb(1X_$tTx=h*s!9XP)Q%{Ok=
zS#LxED(&NVJSrBeoH6|jPnyqG={FlH9&wjp<N#e3#2rIAk^MFI(3`#`SCOl~r;{Go
zNA{nkJLp4VO^rA=^pe;*bazc?oY*OJSgZX29KA;U5dYnNr0e~#FcrN`U^jjL^UuHh
zlD@ZLJGt_+AATTzuOZLTsbmdpUqkcAW;z~Z+b}j4)53V@X4Hl?=7T!PZdNYF8?zW-
zG6vq5JsxqrfcFpJshI+kmtUddMGYh58!|o^dg~0O!L{qjc)EH0TJlWroY>*~fZtx4
zw^wYl9oK6tJ5RqNeos$9>zg{6^$qwh$8c6L0D%HW81G(ovJws0rPUW_8r_3XyoJL&
zajNhH#~BVq1|<}%%RopMpHLam^@?_+qP(!kn?-<6@)83XG--xRva=57=8N*rzR>NL
z7}gm=?pfG(cmEqU_IUMuV~8*&Hb!-tnj+*0USXCH$bnT)^ZE--=!8N~YfEsiw!-na
zS-0IbsO$v&9nwo;!&pR47*8S_PZ@jA%nkn4oI<$hW9`1oN}rR{GPW#aA2>4;F%e#8
zgf}oIRdA}paG9RT%uKhcrMFk;PS`RHX>#nxC$3x7Dku)`d-r-{^z_?TX76ZP_TbIO
zKMCG_&($-EB&ldxztu}MXvubM#LgEwj+#l{cyi1uH<G!}4yV7-FT`s`47m=_C4)UX
zCFD8CyH%aPc^c1UIlGtNVC&sXm?i`=3~X+l;UK>t1N7>ASnlSfzU<S!rsz=dDIRb#
zI<)%oB$$?D2WQ!f%Vw*bh50ENkV*!ivKD6Q`wFnKKyU;UaJF!@OD|Q-B*wJBE{G*C
zEm3ui<z)Q1(9BzJn@IY1p0OC`BQKB0^y%#f%*$sSS@!U{HJg;Anzv3&-E~D1-{LNP
zMv=Fk81w3lch?T3zthj9t&euP?Y^3Ycg|UgJSz=f%4gU;&<rFC;>I-N2q*EtPFQM;
zIO{YN*;&vD38xU8yih@rh!qvuh%H%oD*%RDI)IEqNn&hPCD``xxEb3eNr`;Kmm6?=
zc)&$^A?Fn&?$l?aM_hj$DJq>bQzkiV#QCD~lYhkub<)^3#Y3~EPMbx~%T<qT8aORK
zWA1f*i<^m?m-pG(|Hif5-}zFSc6;yc{i_G{9XN`gg8{T&dL1zZieR<vM&=HzbZQzV
zwWZ43;gfh8m@$o&u5<HLQg>+}4pU&`Y)lsdmya90YI&9D)F=X?Ic8J^EctjU(zF#v
zVD_lhPE2+sxiQ`lvBXfKnj{S%j&t=hZ=E$UyWo|kNy}$^_|WbRYc`P^x&`lt^?hZ^
z!!6nRF6%NmFV%f#_q%SpuX@oPbC>=36}fW9etL?Ha~}O#dXB9vjPp)?oZ?@MQyX2t
zjnQ{^VN40!0Qr`Zx;Q>;#S@6jzi8M2yBUB?{$m55M^a9HI%edJ*Jb9tQjj=l?725)
zPnkN4xY@v^2RHBCJa9&S=3QgPG#{MobY1TqHDFlvpnd~KUg)k39M5ythO?&WxW-d>
z6+9wY3L3;bXA#QOE^p<uKMNezSqAD_7Oy5Tvt>6MEV>+)+`%t#zd0ST$U(DB0g6-t
z%kQYv`SVgq?xij`4$IcH>4qiJ7&5Hy(shyd*&|PxX_I%)SCbslP4r#Z+xYg9{70o{
zLT4$K#Id1tWcPV{T;GewsH1EDx5lXB%|#tvRSb`@qulhS;o`GoXrG&Az>z(IBFn#r
zjqzmQ)E@HIkL1-*HXGv8JBJ?~GyCA+U+8%@K(Q+`CtskiVeFl)A#jRi3R5+I2f8I=
zBYZMahReuu;9%03+~1MOVFkmI7*N&|^&)h;gL5LA(m2?n&F(`W6G^jY!k&;zui@UH
zcqB-M_FcN(xQ*EQ?S0A|>d2ip`r^Gjp3Hw*Up!I_0ey%~pH&ATm-EHr68~?HE4*%H
z=;!%1NQU)+TQ)oESvD^DrvMukO_ZyE2tZq~Vb6`3w@+KJ>5w2mkmG8b5@dVvRSh4~
zA!`xrFeGaPiW`u00(WP+hZp6g@+}AC4bNTw(-9zVkbNmFeCaI!L@G7oPhYytpPcdM
zQ_op{nZZ7_u*bEolw>F1@YSZJraJ+fFFnlW5MUp&zl6t9Qj=Y2>72)b_+4oln?nkK
z!&v}hveKUl`EO<u!V5UKKT=m$pqy8)(c>}lh-s7EIl^tEGZCf+y0q_n?==Tsd+p#d
zwk6V24j0>)NIv^&gFv6ffVhQ>YF@H5*G+$Wf&Ouv{zj^o4|;4&aB#nOza%4}&WGur
z#}Qxiy2$wxFE@WMd3Z*Xc+Fx8P?P&I>;bbWwNf8Qz?_mArF*p!8WkL}!L-7`B%y<S
ztkCem$knASO6PW2zG}mUQT?RYm}jl=@~gYPq`!;i;?GExJ9}Mv_E*)#+x|fYU0pS|
zb(iU7+jf#F*aP`YhXSk~L>z*8a-Iq+MPR9?mHJY&@L-A&9!$aTV2TzVyhvq+TS`em
zh#_CR-IoLoOS1;>#8KBTbx8B&#Wa&`<)s_g5zRi5=Y}ixRkoLbIkUbC9?#J)Pl!04
z(lcxf-GHl&oy}B;(T2w${&&WptN+oX2<t)iZqiD+g<UkL_GIFL{MpY20r>KvLu?Q=
z%lqseFn)cHcfW$mvj@tBEo=-Fxek|UJRLb~3^@ozo0A`-Aq;@q*p4A&yEUey&Xv|A
zhNCX(C@^s2sHo?&AK1MEyRE>X4a(}^pfB-E{y!EYrKIL?io>)Vorl9^hs<q^*@1zB
z3Vo~mT#p>VuZtzDYLWrq&kj`nmeosVFD1o<d`vtFdFF*xfx6uX4;^~!iI)RgUVMhF
z;xnI8N}nV5FWg_;^5JnWzWbq1ow)kmDbw!Sa{H3m8@5hUPoDl<v+2H*zL5JkRC1rd
zV*<UEr^7J;>8#vS$LE)ihGPQEhVRFHzjO(5k?OwU;Ut@L7||ujVZ?pE?76T-Fn9xj
z&sp<L&lb0m>$q=8y;W7%^Q*MyPY5o~1E?NBp6e?$PS*F)XVF{`ln>FDGF*Fp3;HT}
z`|d{j+2VS9KX3no(SEkrL=cVkR-^r7a%;r<A2-@hW=B-T@g9sC?^yY5ZM+Ag#yeKN
zD#ADZlF@#&{0_Ow@TK2vv>z?c6>Pk{Vln-wx0mJ!)!2X5UOu26)P3pFoVG4}zku)m
z#ArWTc$D;LXlU4h@84#$pWROl_s6Ul?Pm!)NGt9Av(#fo`&r$7j%e>O+TSMZCgn!|
ze>B?P*6UYoKd|`$oC<7TM6PE28PRy2R8{+Th2-jf>H2I%%-6@p_q`;%L9RBwZ>#Zr
zFU@pB^e@k7KTkMK<{IrkG1||Y(>kL4bff)OtbI?tz3B?0{a15L5$y|%_FuF11C958
zZnXb;PC~@^`x)cM*vUoXk2A(Uc+v2v@jpVJM9x?}_Ayp|UWmm!r-R6Yq+xWk=W8Qk
zB`+E6N6Sy){^GHcrAGVF@+84-w7=SDKU7#w#u)9LMr>thWsdRw?{PmCYx{8l?nm&&
zZc}}FdudMd6pRUfj_?1(Xg^z6jr(yOzW)KE{p@xo<NZ(Iek|7Z<K4I);r-*)pwWI-
z`7hz|;(jdF_TviNkG%gs8SQVY`Yk-4xF3tP{kU4&j}h~#nzVn%_G7yYeRlO&wkYBJ
zw&3$9O~Luy%!J6_)oD7$HGAH>p`Jajqld_9TtD7^ESrHC_Iv|<lH97Mu;=}>=hxx)
zPo=xj7q0ov$ymjXIs9Yj!{`&&a9UW8wqjlz_l<vKv>&a+kny^29Pg8>we{YB_X)Ib
zYgYC4Z2ev(w`lE8;C*s6U%zYled59Q|7x_KEqny`VZ&j3|2Cuj?1^FDziLi1+RqZ+
z#`6U4UyJt%Z$E3y&tc!bxx3N+HsL+e+vxv~M*G{w@%sel$23A~59{|4nbvro@IJYk
zuiwOUeYWu5PiEiOU@BvBtE+|y{R!!=ec#t0Z%8-o`9zdAynUt7zAGs-`uDXOW3=xo
z92C-x_K)lB*?Pp04o3UC_4dYk@b;aI_CtjaNPlDe4t@M&=nY(sPNoNy26d*<eyn2A
zaC{z?zm{J#-mmYEb#%A<A@08_t$hN{(@M6_>(SRfRBL}7&ktkY`yuY{Dy{!!+}|tN
zd8)_#Jyh%eI^5r^y?PDESJGXZw-4|>VC|Lhh>71rdp;iJD{tT1Xy29OqI~7;e=*v3
z754L32)2JoZ_oN;()*)~hyL*Pjrw!7(S9hqpT`*Q4{7b$e2$IP^5J%?*Qgan`-u5b
z#>=l5@7L!C^FB?z*gUk;`gx8FH)21(7_pzOH}Uh(gxxov;rzGL-t!Tj^EB!}ej`2h
zGgirOxZZgGi$?p=^4ln1@clUdBemxPalE|!Afx?IVJ8`F^e1FsnGemu@ir8|c~jTv
z=S`OBvjTA9>=x6+U&T5>67rzFA2|gH=(TdGUmzurvSN~%K5k?k?iTxrY1P%j|Eqt?
z##k#ZlYf-lwr<jx_k=;-4)E-0ahdW9e|Au~@y5$OQ|Nd|iL@07T?Enq5%Mks`g5PO
zfec~xm?C%uWMZ!q;sE+Jf~gVyFr$XqEOjDx@rk7xWuvpq>6Mc18#jhX8xE1{>Ba!O
zb31$Ijrh*ui{A-I1W*KHJyWOf3VZ&lbOLU@?Ibu3dUWhL`mk10K$vFxCwo^@n6Ek!
z`5qg+sS&P$3q6E;*sB_d>Bo=hS8V*(u(xI?K3jLGiaad{97~ivpC@e)mqTn%s{97-
z<4VH$yce+N>+pHiNASFgG)KSiiUzxQ7fE6Lu`rDpDt=TibPCXNArmW3@0T_@z|S@D
zl(#wyA1_D5=biN8e^;=szRCWaBVC_AME#`iQ|!OoN7)VPM-g|q2j~6fRn`%eGMEA!
z2VfMDDZsHt3UDmiZ?RA>W7T(+h8*s;cOxr;WDT7PwJ_v1x?)THSSW%a!Vo%IZiRW7
zW3<>`0<Ua>RAk7n2KHE<=M{tCpgxP9iR>3u50Xv#&2b)2z>e9-b_=t5<JrH(T4{&O
zeiJ-e`mq<7lZ;OBjtwEp=`6AwJBJ;tmSnAm_0@DV+0Od3Ty%*=(x-xz=^8#uDS#Ho
z$R*leT9r$kIT_YQ`%9~7ahB<s`;f!5e9FjCQ>Tm?HAVdB%4?@gx%SHIZoUQgz=MJy
z<q9v`3IV-@-F;5-wEkQU8qbUPbNF0>;DIW1XgF)S2JssKXRT7`E?gr#D+DTF7O(IE
z7L~8JM?;lU&eV0uuaK=JzGAPx3;X0MPo3QY5BzpW*BQ()*W%A;aE^X+Jo;iGjk1dU
zSY`8f04$?;#69ZAeryqc#y>;@d#ts{8Q}Escc=mYy8H@EvFu^@w*sJoeh&W?#oz~O
zTfvS_t4d!NyFUYhPx%gCQ6+-b`7^V$>W7F4YXsm%T%>@1?$Wqtcxo6X1V^`3qJHbJ
zbJ>cWJC`lrwRT|do&&Gy)oZ{?@x_}%m1N@1WxZw=6wK_keAmupy>BZhn9*~^PS&W`
z0BA&BV$BB(WIxHh`z|`Le{tVM`}QsBHU7rleS1xu*sDHOp4R!o>b?CI9%x@)-hTh0
zev9|Dt*B_bZ*lMO<9qk(HDN-pe#TF@o(rWXNEgh<iqn4IBhJC!O?U<;3!B(JdyK7Y
zu0VVy+*S(iCw47j-isn&A}ek!;+2SdGAUZ$AT+EOGo54!ol2*{dqxV6h)(Gtwl8u7
z+@9>F07yzG#y1l{%u{3IIAR_!Ef8-uF}V_mn~ePGtMw#VA&Mv}M5bpRf$|7i6Qjh$
zs3wZC;Ze3%SHXP+IT&m&s$x3!y^U~-bgSZK@<ym&3)KcE*pD-W_gQzbr8J1`)mR|`
zvQ2radnsHk76op7y?z5>gb>#qQ0f6qNAv_tSix?BifXgTAoNC-HcKoIUlTj0t^<PE
zBq$ust;n?(nYxqX{tX-U(aNWYRkcbz#08<9w;wumJDEdxUe#Q2rFdR>ik+~50*}Nb
zsAmERs*b47ZVw|B+<pcVuJv4SJI@7oYPbLvJ7k3W0jJqdq{!O;$lUO`%d+!t={9$1
zUH6V<J)Gi7DQ9+v?i;sInS5~Lu=3K-2{y-ecJAAtZc~D~`|^fGbdh#P4`FlIgvkSr
zew)wk!yFIdk0XVTK-{sM{su1W3{RaR<AW40mP;giY7^YC<`TpoF`f1&C7ubGu+Y^6
z&O+J4esE(+wl5PLYfacC-=x$hdeQ%u>Ir0`-!3zQwQ(U2Ic%wT2Zt?5YQhN=5`fP!
z)`7$(30jFM6F)_6_NP@87z_{zz@K<x$~EPdfy=SmE_K@`<&$S#`cM`RFC2UQ423*Q
zM=PX;P874!#g9pS%h=|nGI_FQP0iX@&%C}*y=~ftC2QGlgYGY{u8!M(qk!19I|0W}
z%jYN&wrH`9BEq@VQCmP94!{ofrF#8|D#H6|wZ1?W9Aha;(P1r`HG;KZ7o;wC6&nm5
zLI|12kR8ZGcFfFlwnLl4^%%>Un*BL&cJr}p*j>q{9%$N?NVJO*l1lV^G*ZSZx83%L
zob$pm`%W_UYrrk|dh6D8?0;LuQTu`?PquGmFOE-79$Y+|nZ$nvU;I7vs`%ROx$_>O
z>(&y5URWEtwNJYkWvRn;UyaE9j|1pg`6;xMdxC6{mXqCLchJ`QEWvZpA2_zaZ%ZZ#
zIBmW{FSu@fxqQ1pT@chG*gUoFBDSU2)+>UY#->tGU@F<x!v`)ez*zZ`Jhkyfxb;fd
zhC1z6i#?pwC@~XAjYK3h0^Xc7Pe4RSW|7No$YX(`k$exPf0U>B3e$++o!{bw;Lmrr
zH~~?bc;9o6L6k=Exoy7OqrQBbuka|gi?>2MYdmlF)2Gi3=k4NcKHE{B)#kGted^Z%
zN58}<j>T3RXR$g<d^THcf-T-z@>Cps?i&0k*H)XC>t-Jn+G-05^PMFD_G?6dhdqP8
z*gubW$ld`_pW3*DyaJ5)JYk7Tu;u0z6t-v)=JFQ&0$?*`Y9vkUlr##B00sguZm1E}
z2W9=&u3bygziKnHle2tk>$Q)PZ)qa?lP=1SuB)8V%Gr8e+pp;7qA>sA1qr_pw=LlT
zoAcB@`+|q(D|=7c?OPLUB=;9V7Una%<xaNFnM~%C3T=hGLZAQ+NgG9rn8hhkG-|Dy
z6@bpris=*1bo|k&L~`pAUptNg7azr=8;_J>DIDp(CHt+V&EJ~+*n}w&?KO7YS~)!n
zm5A0Y*)O>T&2rF-->MBeDOpTiK*on!Q%X**hIJHmnM70X7CK#|NQ%+|Tv58k{LPCO
zZj!|n-8yva*1c2vt}8_O{)M+!pT3z1t{---Sh{o9vgJ$_=+*P80X_Q+L<L~|c(t<M
z#9n=SjUQ01PP}hl{XaT`eEVhbzI}`PE!xi%07K~W+>S{NKT6Zt+@=dfkmHo3WB*`b
zPreDR>m)OqK_Q0cJ*1pQWCSbR+!1t=ffO6Yb4U#AOw`EYwA!8=8;=mi@h}b)rTY_7
zG06pKc43yFZb~1yXoC1gl1VKDxNQ<qOgpJ!T#E-*&aHXn;OLp^izlxbM~11_3~iS0
z^^hHPRx5eW|MI?ji?`7OHw?dT?PgIv_hwvN9O*<lyn1u9KK*W<3@}HJ2!gqv@*J}v
zQrUhg5gv$OnC3C^fDMM;L_JfNmM++=m_A;Y>%t#%RpX-7vg;x^T7mc@izx$HHsp&)
zw4K4r)goYNCj=GEmHw<aHvF`7K76RG1?KgPOoSm%)2c1~O>#jx#po2;SW`w!b`rHa
zz#xvMs(d6UKC1?Uq0Xw@?3u0Go_Tufwr87({iyfa!Go?FdiB-UD!vPQMfsZZ1LSMP
z3y(;lnd_f^di~4|Pd*uXvASA3b?wASLuOum(@j^ieKB6zD34~c$t1Xh*<2T5_LSFK
zCve<3rVR;*FDR&>@gz7s8l8)JT9Z1LW`71*#I!^mijH$^)Fp6h5XvlUMwx|P;pny#
zJ0e{IuYu&2O!o0)@qHsn+Zhk458X0Cz2Cb<RYqQQ6|E#M(n>Lv&Lww;z9K_Jx|@s_
zX$|i4O%315>*Rhyl8^-$S5CI(b#WYj4`Hs-@#nf^vs1FNzwkHW%SQb+CRs?8L3~2p
zDB!=S$!BnjyJCP9EY4Yp1%dtqER;6G3d4`SWV@DU$pN2pITxCCJ34cDww`Gd>3rff
zk`odt?&&+~sUhN!XGXnGPhAi*%2)R4bx)O;`5Ea?U;e6;9xAK6vfYG=Hl!zMMzUJ9
z?O4fV<V_8~s#hriTag?m#EEw^DcOgh)+<X=Z_RH#gS9!M9A#}{1X)~<ZH{PdKGWLF
zZ1~lbsvKl(ObsD%HMaSkw~-xM8~Cni*hXRB#oLr??*aNynCBi1XXTd4cS0h&s|RUS
zyD30hSITo^OZ^tJ5uVqOH`6ti6$qH7C)pi!lF8zT#fvpN#mM|rO+53{p~1u!Rmg%p
zDGEg!C$z`;_ebq1my*x=t|TVXiGK3V`}9n3=c*-p^Y<-Uwv@bahPc|aQl9&^)z0>G
zGJWsEU+D>w^4eV|zBq7u=iw*N&(d7}1^0fLw(|i#DgsVZV>!PZ3%pBXf!`zd35MFe
zsoweL0_E%TDcpxaf0hrhcgG7Y1p__`YQr#VA)yqG1G5--jxJQ05;l0aKiF$y2*kZj
zB#D4R+D#lA+9s#gzblF@LvM)E%nO_5i6_L@*3~GX@q<FQDmCac5|>G5C9rv17x~!2
zj<r2fXK`6g4Qt<?U6T9J$5NvCSWM`&BC$}-D8Ro2+$89v5DWK}q6Opu*B+^i+LInT
z9IBJ7IT89`!yn>|Ewsy^LGtkP1H>7u7ZV!Jnw~~{)*?2$H}T3zpWO?ISH2PryE@j3
zRs-B9oERgGO>-I-D@~G^zHh_y$#{)EBnK}}sLE|(_nUxisRg@2u+TUk^n6odBz*M6
z_|RIpPFbOdc6qYHxKl;bgg;L1{9$1KA9lTR{`|>Z-wzmYZpW!VgLf`k{&srC+bb5{
zA@$9CYx%;v?wY^itt@h((<kJLcWbKOqo+RZ^eKJ)oh>!*lG0Bfd6l>(7f&Lt*LIiP
zLeHMu+iCY}^z3BB(s_pV7T2lGnfz@pAdx-zj}ZIKPnf#z&^AT}+Cs@Xex3s?WRp1|
zS*r{Lvr;nHZOfyO&p}pniI4B-Xw&uahjP0XrzAE@9Wrd+=4>w=ft6@V#{Oq5vG*zJ
z&127hvHP(YJjdgRO-_^rwoYE*Mgf==puRHBQyU{Co00B-*;>AqrT$DakWkjTGh4F9
z#q1X*jeV_3A<<btl?m!rW9)vxT8TSZt@O797N8bD+3QaO-%BQ#WNd-h%9JO&A}-0o
zq87vi0CboAWL)X|j$J#9yRJjW4)a^aw4C3eQ>Vcb+ji+Vzm)J#26yTd{$yN-uJFl`
zF8xS~r$tKNZU?*eO>Nf7Mf!CWhvLI#seQX1fQOzG(yt3U51WMD();q~%t9+f4<~s3
z%;5P0)J$eyC}ybe2lG3OA5f7C$HC-fXBEzCQN<>bw~AgR#;hAM?K%3zDzYaOS~BDY
zvT<kqPGY|DRrc2pSJv@6cAKC|U&?)K<JtW=M0loyP+85a>oE-%LJRTpYC)EMlKZmH
z-GW1SE#mX}xNc3EVfiuon-c`ViBL%rLN$;gx2Y*veLq=Cr*1ewh+TD@rw#1C;ydDd
zp`uVz@f}LoiE9uAkB9qPA)lbN+#38P0DB|1zVH(K!OzAu%q1O!pE<s+fcUzW2w!x<
zMSf@iYB!B*yKU~>zumd&yZ=+$m%v4FCI9#9?rDa5hGDqx0Z~v!7!L75yb*7Sf}j$K
z2wupcq97ViMDdCT=z2trf^p3ZjBeDJb)%Sw$?hgbv%e&+CfWSdxEnXC#v{=DU%l7e
zGpNb#=KuL^78#01_dDv<tEyM^Ez;Kj+}Ep^_q{Rq-;%0v>Lt_}s99!V1SpUQJ{VUc
zWLF4krCzQV@$kX{qQMri7qN(SSkv$#t^zNHg0^9K+^li*ccZb_K1Kp@5@<8goE*XQ
za&)4m*WX8-51^)(lg8|F4xjdBhjXXD|HFGziGAguX;wQp>HsC9+1bTO2aX;`J5vhN
zz?8D6ov|5(cc-(9Y(80h^l~mfm{0Z_G*Cj&0I-07qgT%kT9Fx+P@b}2=4YR^uxS^$
zhOG-ueh?hAUmsL3XTjFCOs=6VlT@I`ywD4;k0A8WbYaqopKBa@fRX6JA{(8XV@GdL
z=#fl1(Bbb?P&>|x$rei-zE>T`>+Q(6GFrSY5qS3}F@2a3%xGpjlf%ql3Yob~6|;(|
zVKy>bnH}f})}`<P(VRSX_L^{S6KGDMd~|cKF|$^Od&iOASv{N?cdS2EWBtk4oH(jr
zB{URh!}#?4Ww;?Ys$FrLR{;Ro(zh5Znz2L&vrJeL7iW&um=OTbZov8{)~9j9^}rUE
zrJHa=XG+-|*PP)DR{j*Kp+*_aQ%%+|`a>Ev?Zcwf(dO4oR(INd8)l@PMziC!X2!|Q
z1NtBkEwq_+(Rjg+YA?o(*8LL*%BHo81fQ&dQwOk<6TQg5ddHa)HRd4PL2C?c5@WOm
zNw~_y5p5n5XB|ZwkBc*p(pa+a;|9<c)8X%i($51lmO|WmR-Cnfww@DbF3?yO;nroe
zMVZF395eO0^_yOUKCYx)UR%3mJO0tUQe$03d%enNUTw0}fe$<hE2&Xou@Ja9ItU+!
zeMexKJ4)L$A!7<Cu2~-DLCKbaLfopTcnOJxbc)5z24vwsn3AD|Ujrt?(CPSR_b~jM
z1q<OkB^w$b*+R8&Zv$Uitgh>IzhKeo;6elI8#?Mkf^>E8B*|nhp%2M!6bz9GCW;5E
z{EB!M67WtT4@xi~6TnpBUug{qN(b;)c5!j>1@SWew-_Z{*uT7B#`0J5^Oxt07%(7x
zM9RPsgOI2AcjP(cdQM?t&#v8zX1s&nDBeZ-Ppec$Q$k$Tlzz#5d;fsE#P5(-i%^(7
zZdOiG*SN$C)c5@&u@xm2k^gmj@}#o0n2Tv^Lrb1MMT<~iS!4U4>5CUnpPyS%kvo6>
z;4xzc&mS^+bbCgz@IhJGPw$Nx*<+}yd;iGv^q<}%q&C+^Hl|D0=zBXuBD;2N`z<9-
zA2lv#3|b<t>7LjlraiS)Y{6vlo5rX2o;*Q|=<Bf5&1t{t@R@o#-m5`O7y}V4FEN<q
zt&x=9!;DrB`pIClhD+8=w9y=O&1{IXb|YLP@iVxr7)w|bRK5b^)8K)13x-7j)Pv#3
zd7G$%*i&$DLwZwuViH+4yt+D5f`MM$=?yvDJKXQvQpGFWd#F!zVjok~m_Dt3U58I?
ze69M(sn*t|Jj?U!O72f>v2C&Z0>KoYk`Om4AZc=DLO;LAm7|yMT+#ORQHMyLe^|lO
zvoKE_#%uXK9$mNxL{3$rmpYze`nryLd>O=fa6giJ?+j);K0#P!9{)FPl+ebg@ySvw
zBjLjwcp0tkRNVNwW9<bDKT>rq5VpTHfbOgSl9puE(Mf@H-2g|Lp5vjlvdBds%9f7e
z&wD{=zheM6e87FIqi%iVV2E@u=m^IHw|Wy^g>5hoh3-M2?9mGs8eh&G7*!D&lsM+)
zfeFQ3f=&E)2#Fnn*^IT2q9MHu-a}>&>l4P%@$j+2$9OzG%w)#Q8LetM9(*RMac@;v
z^)OnUq}BC>`$nsl4o0i7csWN~T`3|zK#pkfvRYIG#fBs!YKWJY_`R`u0Lr@|B8jZB
zJ2KFXIgf3;aN#H`-oJ<%g=Oo~lTkSun3T?cC!9VlAXGhdQhL7u4*gd1ej#BY4BPP%
zng2S>lP*jMgXObTB~7%e5fUaCiwaBzj-{w2I)k@7Wp946;kD5yWG|kg_m3R8DAb8<
zN6D=0*#k9F@H`ab=c?&*l?n&8=OO`?!zI~%86tEht{jE#MIr3PBS+q6>o#2ZP@3yK
zd(7aVhB=PJXJ`#yi)}q;%tO={#F_9rAdXqFb>zypp`<!*B)WPUeR{b-<Ypc~YyTkd
zwLg_27x4i)jQ$1BEal%|Zwn1r1M_4?Qj8n`0KuIl#S--PusCpI=HzyV6r$*q9`5R)
zqmTn?6+{R-CEF*s%MQdOleeLi-99E`!kC?`>iE{ze%p=xa?>8wQ6Y8w_*9{E>sB;d
z_=v<I@Egz)!TV?QHI)=Mph5}^SwfPD)9+vWvYy|t?UC3~gI5)>R$cL2xsfc-DN=P=
zcb;fgzF1caHG*<%AAFB(1b2!v2mUg0VWW~PeO(~&3o<0L!0Zeq3&BkoN^_q~TKj5*
zh6oC=9cc(nkgp%=QSH@#Or4ZpcD+Tsk6h;#&6?>f-v6NT)ru7#@U{E)WvmGG-I06X
zNZr)Tj90kYtd}MZg&G`Kc7*bKm_R0%Y4Vr7oi^VvtT_Kn#gL$9Duxhmu?K-^36}iA
zxV=9)I!VP}2OnF(ycaotc|#a8AL;+}si<PlZd_h*=upM7jb~Yv*#1Xs7^08ve~er%
zpAi->Ilb<|`ZG%^g|nBD3-zzS8pPr?aKsi#jI;tycm;GuYSw!yw?IxbNl8$U&0tDt
z-LXjNfQCtY;|gFqU%7d+%51K>$=8baKmOzs@nPNR^;g!NVPuS54o@lGA*s?E0f$XZ
zFc83xfap$<QM)1Jg1`(q0(7!d9F4t@_mL9U5UQ`|jO{yEUHd=SS$u81`1USwO`ZI{
zRx(BjC;ZuWIlcH@(u<s*c~LzV+rEv}x8H@A?A|3hGZG)9V?GE0A4HH`sUG;4B11pR
z1EDYA0e=G3)8s{%$IA!5I!s~*3m*i`-~$j`{`idWRe)Gu#1csf5b;60g7Z<>SAV_F
zv+r!F+R$X)TDUG)6j4i$f1S7`-o$)y1vy>XBg~lh_WB1K-;VNsx=ZYrIu|)gILMRb
zHBwXTFwl^p_9*8hLmiX44lauSnkA{JYFmQ1s~yZK1(mCBVG}Q2Y{$#d{)lzNa_+9E
zm(~bP!SCbnSxeRkJW3Lr8u?NwkE*`_0+Qs4+~XGEztO<Dx+(Y|ZZ;4N?Xw^n0Ne!0
z!fKWv?l5*TP=?(Z%D%I3cILth-@JAHYm_d`n6Y>|7u|OC=%pqZA3BxDtW*V44J0v{
z7lMJv!JP#FEW0Zu{jg=Jc@9q32DT)@=mN&ls#~0xjBay3h-G<r@9?Ni)qbu0hzdOr
zU6j2u8^2%0#K{%f;mwTvW~IW7t3t)=B*lS|h0x<Az*4u(S>79}m+<r4mFGc`auSYU
z%Xd;s0IZO7tcJUORwV(j!ZAkt=m;(p>P3_*py@xh2%@!GJdO{twuM~HPo-Qpw(Tm{
zk8NuqW7x`8b2{Qf{14;wwz97hccL`^3khGwD>p6nENHtzA(?rdE=!os*B^KuMhh1%
zv^PON-(a~c+|g{d?Ff;Ju%EN>eug-sUbb3}u%mg&fo7}MD3@mpl<UCq&dL9-HY1kT
zH*O+t@$StV;+>X*8#f*}w6XR8-jkmqNAc08_pgbMk>k}}$BylKu=CilozSO>j=Q{3
zihb&BU$K>=PVs-&D`&Y#7C0^$y%t=SQntTT!BAfze(?oj#4o<=XxX%O?S_qO*VeKu
zI`$(96>t0~W;_<ZLcxzMA6{-k$IY#m-;(s|j(h4A{2q;@S91^eVnQE{dG#+uuO=8N
z=%wENHag(_5V`}J#N226l=i$#XUdU*@xt^Vyygk2OPKyt!dmeq&mnZup3qUoP)bk1
zJbe!0uerxmpGW@W`Rl~7d>LP>==oV_A!$$be@BI$jlxL$HKq4Z=$R;hDNyJx3VkAT
zk;#$is<&l2Q_5^()Jl5~rTt`PGZPGWv3R^6lYTy=^V82y!jTQ*J|_L7*juxalh{D#
znb!(llKq0)&x|JfX&RP;4R}ukGpm@UKp7|0*$ByGaFCN)vLVlkLO)jmOa+drltWK?
zgQLo<iE%T#pHo?Mj!)dop63{gyC?Xb+%-B+#rFiF)8ZCLi?M4-$cr;pDVq`N=0{Du
z6eNQT5hN=xxjD$JBL;X_mucv1Mc%@aq8a&lK1YVJhecIrL`km`AAa&h(>>HfaGNl*
za^CEv$qBCP_CsQ;Zv@M=o@)B!b%odP9O#uf$QT=CNB2~0yK*#^=|XcU`0j)Uzom25
z*I%kv5XN^WbNsC|$Btx<X?tF#<L5*W9whPrVn?|35|5~uD248?&?hpD%xsyidS9Xo
zOz9$;13}~$=}!%5{}OYY@EY`IA?Z(z)Sn8aKMP5JYNY<`B>j=j0Zd;@_YjJ0@21c<
z%5?mkbZ$3&zI}UcHuDX6{w!#(x+2j9ru^2o()@(LIfv<Mq~{3YVNAzoE<aG!hUu%N
zy%kGxe>P%9EFgP&6`AKr-&0=hBaTI_<T;d{^@yxv$5kxQ41%*n$Me=PhRMcsd?>Mn
zs^7_UrnDoFalmvaEHn{YWpew;9llJEG(VHc9$HEHVHthze9;s1F-%_}^*>A8C9O-k
z>T{Wn=WVdEj_G6_S4ivlhO&<7gx^-s=a)sv>&SgT)^R!It8AIC#)57u(Lu)e*xHl%
zSuVZTlgK3c9B1V@6BlILwf~(=XG#Y-DEt#k-n)#xw>y0=u|tS#sG{^`(Kb36Z<X}k
zUdnhw$+&3yjDje;=XlEPF~1d%eH4jh=UFnYB@#~OcceYBcS--3DEyx-(@FoANc`_$
zC$l+8X2bJ`GI~XJUY2Aemhtob$vIrj-(Wu%))U)zlw$jmm<p_RfkOZs7#ia*n86^h
znq4(oPXd9erRZqS8^0-76LY9$cMeHU8(PN-ht_X6^y8e}>^^M#no?3sLRLx1f)>>|
zMV_k^IbV*pll-1%&Jkt^^99-4R2F=$$bvZ&Y;&D0gvxX@xirR(u2<+8<@W78Wm$vY
zTTa&I8QFy2`z~2yDm%1_teMPgg+0@85KnA|vR56LIpP!G#g0puZY1NPdn}_PNaj&C
zmB^q~R7M1Pkv)78bap|lJZDJ9D>j~1cpZ;7*w1dys1#n$7;I1H<-LK&HCT~xACTuS
zm&R2?o<Cn41~#|Cqm^hb@#9fm{95Kk-Wj>!xsmDJ6&}rGI+&RXkG3j2I%k5P9Zzdz
zI$oC`JGx4tXO!Ew=jG><b@5W@YK0E#;wPW`%K0vE>v}vP^ZAh4;?mxR7}&gy%AcbX
z9kqtvg>_UN6Uw|K)miffI}_C6AW2aTQ)<z8QmkOL<S+39<QO+zn@s#eSb2t%+?yhi
znuD~YIE_t#6&$=BXhrK6s<H7s53W7ZYjxU-b=j=lefO2U9u(9`p{2eDd<HXqi~%aF
zX(emQ*J$yl;77zL2v=_G{o~-$J{Z9r3Q3%Cj-z-ffU!x+l?6*KAb`LD7mz=30U4fi
z0d<1Ev9GvRk3Rb7tGwKTY-iWYE<(X{@qdtgy<>1@L9{j+Ol&)ucw*bOCbn(Au`#iY
ziEZ1qZ9920v2M<(`<-*|cdE|*vHDqEz4z{Vs=D^--o2j2?X@2q@veFhR8uvXJ?;<r
z@oeVly>_TRsOWaLIGH6}o>{qvRF^Ak!;=!I;<jbNz$t3DhS9%>>Q}*np$-W4rM7v&
ztI`@<!?ntd5JY!-;+f*l2{^Z?V4y3!vTl5xRmj1Gg%hmDh{6Po<hn(BZXet37VONx
zuPkOjPjd!|0uTHVJd_JrJ#*Kduz^I%ESXBg?WJIAB5agu71m|Fa*44@7Zip-)cL}I
zh<8Cz__yg-RgE;8yen%(D<>S>5UArXr~cCb7%4<5)vT6W<lPy`gU`SZ$!GM~4G?H(
zGDLaXdbE`Q@fSUYLAcP;#Lb$$dT9IQTKHla0|j;uyT>3!lQdL>>|toBZf#vxy#Q7>
zR7IyrNRV#Gzr5L40ka-@-zliQ6?#*4c&tXNakiDUJ)T<^LdpxCmC=Z2T#oCt+sRw~
zp1VOm`Pta?M(JtZKEm_ki|P5#8YG4#6m!+8HDcL@_*RP%$Z6=zP4C26!oq@|@GCf(
z5^6uvH|Fb0x}ra;<R?W^(}Vy-#$FncPgQ~h_K0butf=FJHOWekg|$(Dz~;Qv>b}5)
z{#SCut3+LmT5dmw>ejOUwJvj&%fd9FyG-%psr#a){B4W{C71@d8krv=uv{8|CVV`w
zR%cwGG-c6Ge{|4!r1Vp3$o4jb*$0A6VPn3>3jAWT?H&a%Ud55m7=ik#P49ObUf;>&
zn0^AI^@=lR-BJY&PdnjKpCwEYdSEldO23|Of$|m`v&3q?3Gq$X;rt!4glPX7N(Bs;
zc_ZVjPoKqc*+CGcX&a!BlivjfMJuQo`=ctv&*ksi0{^=*z>Fegpyih3BdsmrYgDtm
z5e8&hPVbOP&v#eljw9ov8dMT7*zBSduTko!Yw-{DQWh~IG*`RlXwcor#}Gk&bIOPx
z2jbS|9+q@bag|905K^LGHK=jkUqu`y<%GU~yXkJ9eYq6f?Pi#+CRX#Yci@uwi+{1i
z&b!B1w%J{+)e8N;+G5A|eZDtLMmNqje-2<qFo*EFfi6bYCJ1%{Ww8fj9IQU_`OWz}
zTQ3`KMC2%dbdjCaE64`ay%CB1r|q#(FuXj*rF6VRqhf{n5h}8HfP{_;^KE#=GQN1f
zqEAp_uE?C~rEnK<y-e%aabk<e->t^a!!gwf4wad0PfRDLY2P`$S7}QzN{g+fnrl5(
zZom6s;lB4HbD~MkO_uZL-+{GoKuUyM8Zk1Yeu5gu#DYmWwc)jR*J$>8R#nlzN6h$A
z%h4H!hU{fh!nwFciUd+%F{A}1Ta1mB+%%?JWV4NUlj<mOu8G6d@At_xbo&4oom;`K
zNI+Qgt?s_qq8HYidBRS3tuG+;ChQGkGOK>=jFnfTq<i5Kv$T(SW`hfvB&dr#bL&H^
zVL00{vblDhXD026b#;e;M1Hf#;47&>Vcc@?4-d?v`$C%QiF`>CKQ}ZA<y4Lxx2_A?
z=L)82e;S{$B3jc8#y#OrGK_<5Ik9W|rLXN)^E=dP<0>fX6`P$pPfN$%KKK}0f$!-I
z_v3jNQI9o-pP<Z-Sm4$1YetYrm^J5uwvo67Qi_k$0o>h)TBjY}-McK=8xyJ<nUD%x
zy+~cXXYiZgzpgMXDo9Xz=N8W1V%Q=OtH$>r0jZh$pGQRhv|zNTdBaouZfE=LT(03+
zmbg9y+y6FuTovxwiFVn^+DJx8>v9@ybaWwgc^`!#9^cdKx6s+ERjoBzo=mPg{NrQZ
z5$O{CaC?Q==54o~ErrtGMix8tsM$l3+i<rd*d)3a`Y}jl$nOw<&DX^DO1vqUu|x*1
zA`fz417pw|ap;-Q%ixIW5RW#0jsSy8K^4gI^&kxAR0S1Geiy(gz3Fs;nKA9g6TTz$
zPO70E^@H{bT1;GYlo<?B`Ih`O0spr?A9PoBVG8`;V5ZtTA^snVPu=QS<nY%4yr<q3
z;EjZoS#>|4WB#((A%b3k-<E9g4kYBpgT*tII^zayqZ!?e;-KY(ZF9ALYbTC_bI|X6
z9Z<TfUZ$%?rqI*azFvyl-K*VsvC602k1zf+OxN|Y-?>}ATR;$&KTATf{QmZSnN3uO
z7N`(Pzp@>G<Y)(2BtN6GE4ltgAU;CpI~Th<bb5IGkwMK9Re|E(;(&C1v7yrnWrDN=
zPDD~*8uj}FI-msN!nQ~szsLrHlM<gR1J+c1K4g>Czg62kug+8V0OD>s`eNU<G5*Rz
z0t0VZz5nT6-&bk`jD1kr$$e-RSIWU2-vgq^6K?z0Lj<;SM2+p+)N`HAr$P~Ybc<>>
z>4!|}xw@6C(^Fi|KbRk4U-VzRrYCm|w*d;1<<8G0s%;|k@+_a#N(ruic@yPx$v%SM
z@jn@k#$jAO+*g$DG4AdY^<j3hdbdh<RW_wxZxo6)3!BAD+k)Q&;+`*XKx8PsI5_jk
z8dY^%@H~Fj@ECEe1AF$>_c<;l*;Vm_Xs>$gTfW0^MP}dqZ!NQ$VQ!a1@HQ+bGAr0k
z5#cHFzC7n5nobL$6(x9PJuDWj=k-VDOMf?YCL)5udnxZp6aJ2gCjt-}3LF_^c|^R)
zfN@W_8L4N@;veX+FDQAhbC(rYHO|Hxsr4OLPO1;&wlaODLrLzN2RWbTZ(y0`ITnyw
z9V!NEEc&0Pzb}lRtu)ounwvd^EZNqhDYAQf-a1!Toh}|jig?^r@+QZxc&HB@^Y2>)
zsKdEV&Im#16zH?Zq}9cGDw(3i;j~&Ap29wpMn00KcUXD-ik{niWt-*9Nxn}{nop~>
z@fEiWY<TRMjoZv!h%1KSnCW!2?Aso}zu0yox*8=)V6hY*<JsJmtFq^qtlIe!Ev*pY
z(fiipR?^`PP<lUra?CBLy?!J4kSyPXV`>4-PAb$d!+BvGJpPIMn`JppP^h1RohtLg
zda+P6(dSh7d*X6=Hnec8f-z-n@oO}bgQnmRp2pkfaPwg^YBT+dcjXrRoF*!R!~OlA
zB~P(w6zwPhg$<{#&DZLZE<Bq@O|Ez1xuk|T(6bXM3!9_#Rn`trv}pp?K#7$^svdDI
zZC8K6a7bZ&>6Dl|Ax$`3><#$zmU-(?pVI-I+HG&<+jf1rrvHZ~^9KHQ!qTrEKPkJh
z7Aq$#2@IKl&-oJId>GJoIN!M9^E^)_y&4LrL4du|O=t$VZx&A~6K%eIoJr7G1L0Cr
zX(x5|W4A@6PKclY_V;((tuAWbH<45JdOqHUXYp(caF_^^g$FdJfYHzF3;E$E=BZ#1
zWH5uGpYL>F_CK}%(D+ReVB>#paVCe^Gx7dJo<2B-q|#eAqog|#`Da&!CdI-276)b|
z#Ha@LWDbS-Gt<%SFQ}A@1;nx(TMtjq5-S7!Pws-1+s$40gA@__;*tk~gA6W*T@ChD
zlczd1_tfjVS=xnmQ+R1OgpGQW-87A$nbA%d))Rp5h{!Z(>;&G%tGHQJ(%nf7Ngq%A
zvo?|qT>q$NLi~#bne2eWd!K|z|32@n1XA=G#HiA<bJE;?U>H6ekJQhI7;<WS891L(
z(!s3uA5vpOwcD6Tp_s{sn|DuygqT<)0tsZT1Lp2AANA*#{4+DSTn@peR}sdR9}5&Y
z>$MM?nG2yM^3ynstSk09JHhd1QXj+K$v|oUuS5QjqM{I=`VVm6?_+f}`iPqqhHX}h
z?>9=x$DG9@GgPtZ5Bf^lsG4`K5B_DXkW&i?Cffk&a`LuPs2vGDkSYr&^a&;ZWjSjL
zbRVAK^7lOSd#BTHydH>b`uwHI@F^7EbIC-Hei8F=*a}a(qRKv{bf0S-WA_Ug2X&t>
zp}4MK8J%Dwd+1uX&FSVSaUvyKa2xH==Oyldyj%6LDB@ZMV=FcLW!dig42P?3Z;Jd6
z^QR+;2N>u4Ad-<x3iQw!NzJCK!{c@35eh`Y6egoVe;B*ciKeD#?kVQzx5YW|fp!~>
zdWVa-rUHHWn?&YDFRU~fUiL=`-qb$-FX1aDZZdm}E{<fY*Imnpg;{ETUn`ivbUjb4
z?^OW#ifW5L#&jV*)7(zA9j~+!P{T-sd`^ph7lp2Q_BHi3ud!Gutd?SY!d9~1B^}Pw
zIZbwZ9SwzIPCu4P8oR@{>b=K~JxmBF_NJCGo-l0IKeLaT&bd53;8R2?7oj`3F3B2T
zw5t<m_jc4&2{1|sdKg+GD)T<ZBHG(AexZ28w-$$8?%cjgFyS3GC_ikjmF1h4oVPWg
z>9V{HYHIun!loohHM7kk7X}x5%UDE_X2auT*A$(rUeb~gRQEr7Qk0i<4!-JSg%VI7
zJ;qX)csVuj9KVffY*ej)EGkAgV><+)VO6uW#9sD0mAqIsrTiorBzrnr6KJF6;%|4K
zsqSAC`%XkQee*a$q%Wr>^|C|J^H-~fLeG{Eb0u7wIpe)%&z89Vs=22{#kE>lHceh?
zD6QR!G75E3xaRwH<=U*j9eQMHe1cVtp;jp<yz{TL^%H!*RA+nY$#^0dl{TO=9Yl~Q
z0QV8O3I0>PYi@i_fnU6AJ}!z;A(Be63{Hi&WB2M}^hNNUoecSPe;WL>PRt-7x#0L^
zOR9Ro?W6?3humI6%eR<{mzJHKc5~77{_Rr#xh7O0lieF2KkXo5Gjj`_SoV@MTRF<n
z2s-0x-lh5=+@)G@S~bbydBM7Pz}aCL?Y>cRNs);U*FSSrn7eSF3e6}bu(JBkc?#~|
zy}tiBm4L4L({y_FgL#Z;G){6lo2Lr}u&2Z9>yypB;_14Ikk4`dv?n%;(~)ehtG2pf
zr}%<%Z4FikYzcz<g4?a#|H7{fPOuJcxLJ1a_MJT1U{zp;@1X|qxT|ji65>fWj^A7+
z)^uP-zej_eqha3NRqxYj`r=kyp?1u1-|xe_`R%M_N*fvLtE2_E5+x~H&Rd@h)T1EW
zA?M{UM@yRE232qc%Q^qiDMuOS7&D-2%MJR84Z&JlAcO|}lo!sTv~JerS4w(oGz+%~
z;vQ29YKFx#dGMtIGg_IJtm`o1d71hC=OvOT+q0&?bmH=C=|Z1=6Sdi8Jh)!$phV@b
zp>m7M9}Tv$?z}wT`SS45DP^QAUJt<hW?Le2M8s^Fl7~luxNI)<+fOs2kM?`6j|*O2
zFd1H6LaBk)xCSU~JKG<AgSK~B&#}rSad7KOu_xYQBf9)B7x*sISnJ1GfpSl~HyWfO
z5B`h<FZ$EGr+Sq5TX&Vt!DD)?I|=I#`8ZG#BQsOa5j&Oix*w<gWnMMYRpnT@dhHaS
z4Mzs5Qd`&i<3U^OlVd)vrq`RUrPV;umeJt^XCgoE>cTwh7PRE59q*6NgsY8I+V!T$
zXsYruD(Xr-m^W&u8KLk)fytIDn)A8XUY1?7!@)M`Jg2X-Ypec_Na)L4rA8cF>5+F}
z^SDq<YL95n{!~x206Pgla_TVpI5=p*ZqrV)z5USNaOb?pb(50gXX0rc_8Y^UujFkE
z^4CIiv?Zzi)<zGHx#ZNG`^@ToQ_!ESV&hk7l(-nOvL^`Q4fIy1+Xxk>CW`Ea=6hR<
zlZ_b#`kgjsoc<jwTD?xe&Y6|Zm*@dMbm!Gi)kJ4C#xEpC=|vY15D>t+v4M$!0my#O
z<n`~ncXoZ8LoRH=-Nud?dh8F0lN;4(>=>h;sX+lSWUwHVPjLMIb<ggv&yJLUfQIvL
z^+t(lY{<XR%myeBAd#~W@&DN-S{=?obqMFPzT+ed4wXbqIqdgrjAR;xf1@zBffTar
zK52LrG6gzxAu?+1Uz8vrk5fTmRIq@gu;w<8pTsH4ze9oW1yyb!b;e~y1qY1EF5LXZ
z3n_V5$hZIAo^qVM+9-y2?x$MZXSm+J-UQs2%+p{$e^(QKCf2>;>M0TJayer>W%>ZN
zJ&;WCPYSboovj%36np$DXp~IY^B7HehR?C;)VKbqef+Xxzo-p-MyUH!N&@_oi`*m%
zQy2am;51wQyKZ(fiuZHJayVbSC)%q^3D7S!z>)3Z!WC3IUnZDJ6&rA%Do@kC=yS>r
z$E3T>6ghjOx8J~?k4kgtzA>tQ)PQss%oTzn&(-WW<?=)_Vwomv;?ON>`d10di0p+z
zH`vRSCrT?!qRp(WOoG&vnwSAu&35z{P&P>ug!zEcvjN|SiPMpLzvUU3;Ez?>aLA-l
zjA%gnwSt3HuoW<hN)d|eyksaVf7Yi4teTFkRkNA-(w+pXUI=;1R=0e5Vxm1lZO%|&
zQrADwE6JDSD3I<Mb5}EnUfrH15N<l}(^B>iX-8MMDAK5AKkyjeF8T@`v-+jg_PIa}
zcmI#@&8LV5C2T7fCACgXAMtV<u5-uu?=#6i5op)kuYl*kclUkPkAi()$-ps*c!Ed<
zRN`*VK(~9y1Cj5xo7PcmcVehXk4QApx`!--gwFnTj{*WZu@u9aHahMEgIKn!<g{KG
z9{L7rJVy^>s0IJpE_a3_S0!9JL1lPlWFN+=+_uC^AO_^RzKCt#d9E9xy%Rb!y_3Cj
z_(zTKixZF{zSSGkiOwwI@s&7UMr?B!)#Naq#=PUx5T5S}zvzw$O-kn`6PpFyP?clh
z<Po&4vYwOK<;-f(Ot;-%a=CtaAUlZl7O^v=<M}W<FCR}mTuOI_&vetubjwVyVMo5K
z9Csb+F>hpDKMJ^&ryuZ?zQwi;3oUBCK{)>O_*sX2&9bPzz4xT#gIIIARcd~1tC$|n
zT=P`wm^S_reGV(FiXP@);RjJ&MY)m~IhKAXW%YBLy(M4Oq^xG4`{+}vWa+EuIRi++
zW%)^FPSIVI|EX>0Q|Pym-Gyy-@aHWKfU-qKX-hCUv}I_^I#t^IvJxo&X3JvzMx~9!
z!ujN*jb+Uk$(*vGgQ;z6K&wDmcr11Y+159mZNT@WF)|1V^oGxAtefk7CApExTH5ez
zn^^AXOS9bB3Oal267DEIyoJ|XIO~5Jz0dj;vDKh4&X?0tZ}hVM)A^XF(WCn7PiAaC
zK;ZeuP96KN5%D`Q#YlOXO$j$c{JAqb!GI<)^tbdH<;%|@U+`yL0}*$!;R(-c#Nkm?
zUh5r<QFpok1n`Z}$A&hB$H*$2h8?!o8!DSfcnOI@bb@KnUY}H_S2P)i#f~5k5BT)v
zYPtrmjeK)P0Z7A)DyW(|OgSXaSOfm6mMHFzk#&~3o<YwA+e*tQ>l?hrlGPX2X?26>
z4*2M6d#>(4T6f6D%(eG!WYcSLCxR=i<yp_KT#{U785?{V#M&5Xd*`nZokxgxw$*cD
z<|4I(uBlR|W#h($9RX{zw;L}_&NH1pMCTZf-~K8L7&onDoacIi4fi-1Z$$+g9iwdG
zyPzM0AH<I0`Ww7fyWMM<<T*x{e%m)VmEo-9i)iD{>iN|49GT62aSv*STs>c;ZxXSD
zSzvs8<SfkST-&*Kwa+ulrD-t|*(#4|+}C;NSDtttd0%BYd-}|N``*Eis5?EF_dU<O
z!;nvM+3RvRT-i)qg967n1K`t{*jUSEH_(rD3LN6sMwPm9rGJF%<FHW#*1RLGm=3A-
zS?s|mZabYi2ES9sG^O;cJkUHkyh6F0=6jIq2LU?jb8;>wQR|$Ref%9Kwe~-(*Pl({
z*V^M2H~KR$Z=|%DHe~zS;}Wm>oyQIWTYW_2FF_GtCR<Zi6M5^{IMcxi$dSk~$@Og}
zb3|k41??<KIK6(Q5MH>|s(Fj%gxtwfJbnEnWcpCN>WZ<9O5O|~=5LAi{p9#yjH&}V
zZ=P-Tu`Ho>lCja)HS{7Hk#dcM@R6p!@!}PNn#J#Y`sMghb>F4;^;itQZoGQhS?4zM
z^N;e{T~}}<jxgPHym=Eo_H1+Bc{t4=ydEKN)nPpiCx1da!y)5{bwF0eAb)tU=M1#5
z;m01eMyDpb8@Xe0frlB`z9e_xj{NXsz-RM6v3@km@#9gBIbiaED|dy>QRTn4hVe2$
zGb__CP|G#DqCdiUQSH5ezUJ-(FB`g)i1d)hp4sk(LTf|(=X-ee0tjs;B0F(ufgxz@
zBc%v)Pl&D4`T{+QZ%K28jLhDsUEuozYfnMlg#d_Ps|!4t@;)JV0d`UYd8RyMW1@u8
zr5|E5AD)Rn+7?U>N_6ZwtQUU8<dJ063@Y9;*LS&)5UtfejkYM^w?R1{UiZHB3XfN^
zeWVvyiu!#q9g8M&MZ_<DNF5PdsnsEJ)Y-Yk--quFa(&*!JF|{hE|vwmhoV)|RN`<)
zP?-NZnOU_jC-vLQrVHaE6NQ-}3a(((G<kx&rkn|URodpA2>j6D2(Ba&JPbkRLsg`2
z{}Z$5%EA=?ajt7biIU8>+C@gfuxd`y4u(e-$Q}{&hSKE<Wwq}mIm@7=Fm6jJ5AhTy
zq92#s>Bc-ruls2l8R?zc9Cu$ZT0CR*yV<C_9WN;PuHykjp!~)tN8Y$AW@!&BKV`Mj
zYt?+PSZC(k3!Zd{vKSMsGImhCLb2#LU(rvLs1VI`nL#y4y;#53=>ypV`6jG_i*hwa
z(<ydwh<AlxIC5`m&Sdo_;uPsT=3x;356z#EFR-MC>A3%hU0fHg6cQrAKpYrQ!mPz5
z#fOPWF}#0x#A6}Bkc7!1{25K+9c7A@XwzdM5mDX-0(g;-VoeB1{%PUx#^K<`HyvkL
zPq!UsIY)DyWI0cM8|!JdZ?`4(X=3Zf{&{F<$ni@;HS2<i?icI0m#C+x`=F1>`6yyW
zq*_6=1qZkPrzh)6>Dei<c+8(q#YYh&b{sfkK8+tdF}i)%pUP-65j8QnT*KVU0GrcQ
zt3YZ{X>8e5ZbW=_LU)4P5haJF);6?vv^_K>UL1Y@+yNpAC)5hmy}|CmwZW!AaIg?$
z-ai7Cyloj|GETW9Ipy3C*{`yqC}W~&*j(98?H~WloUH0OxZK3u#Qi9|DWvn`k_w6E
z|HU2>A?$dJYB-IoJvY2ITqo5hJv#St9qOEJ?zh<|p^Q&@^uLtf6Dfz3sg@O#;aQ%t
zT4vDOlG)PQvfGkhS+{d{QRwE{Nkc8@o`I{tCkx8u&6jbh;HXM1DY`CFSOvFBZ{-hL
z{KAb9&!@6LS*Ny*#GDW`-DPIQiH}-}s*1w)2Xg>{(ST(4*WG1g;ZICU&lnq@oT8n~
zn$nrnnRw4=Qy7_ral!G)_zdY5-YN7m9%Qn@_6+?4%B&LwDjs(i&oq=~PRqiM-4QiV
z`Alo1W`#*p@tsUn$k>o3YzC@4w8(ssE^fxNFm`DSnPzzW!#T9AH;TC>-HVo0W+cOy
zu5MYArxKh!C3~>AwqaGcIYW0~xk1h*?#c+Mw&2qCkq~OC&v_Kzf8a!ti!@7h8j~_5
zdVJV4vEFiR(}vTFhG$sJ(NPCAb@<3h!h<>|MSX?^xb7jZN5s$zcTWLe>4eZrYMI(N
zD0l(zrz72FJ}Z5)`ziQi?n0P={@jHt1Pl2qtVqKMO$#QuiwS@r4P@$T+>JC4tEGBQ
z5t(p2zWh?TUr39i{SoY)r&5Zn25lVznI{GfGZLcQe+Bmp7XkMQhlb_m6w=nzwzv6b
zGkr7smrxQZH3p6-@m#BgG%JG^rfs;JSlB**Nhyn@_z#9r!79l$I?vF?zWsg>uP`AM
z1Dis!di+W})XCHl-C>oaN&>7DBT=rxG!*dVW!_uNSIpP;GeU*#DxUBi{_9<iBHqKK
zp?-AeU!*413)Tp|JSH+6E?f%z9D^l21S}dX9$ZP}pxBU@so0WOv{;px_7HHtX}@OZ
zEp;i?nx0`I*{P{heEVl?l7q~;OcuEhc|d~2STTtNu@X8p|1XMaG95?#7bnxB@pfia
zDRrmhHtF==)wHTsNgvXpI4afpMfz23xSj1azsq%2_G_B--kfa9RFrV(bvvuO^<4Q>
zDCioJgiITb(wsazB)D`w^Sp)SeorhFofAB4BV0!><9&;aV*n!pBAWDJ{a~zXza?|T
z4wj-+ep3fX%NMoQ|8<g#oMX4rZpvOKyxOd(>XBEUE8op5%>3X`uUM$yso?Od_@dJ?
ze#?G-Q><!iZdFt5P%NpwU!+^HUA$T*INx{0+<NRuxuE>Iviixs$l-0H(IM8V>QHf~
zrf_h5^|-;;(&d@dttQ|>c_RNoFq3U6647Un#yW|U0)G)oFwm!axpm%QELTWjys*gk
z&Ijb%)f?zSAzd$Js%Ev$aQ!|Jy4kFCZE16-b2(vw#9FBtzIpJv;QHX2WAke>!dlMG
zXE|jvWqa5Xtr?@SY&}%g0&QEA{Y);gm}?=ya;wppo6&d*z_JFP_F`7nwpz(-J@s%L
z?lIJ98KbF)nH6G^r|C)SrPhdHPp%D0vqRm4sjaG3)wFHZ*sPts%x~R`+bpkPUJ18c
z>blWxKCqr(>n~?PQ(I<Zx3Lcn4EhJPb#?gIEdcH3PjDKO5)&;T^ObeF=;r$x2~>v)
z2X*`jQy8G52sSRnrU8Eby=o9h?*IZHNYqE=K&S)B(W`qqOK4BIu6#w?F<9MbeaY>W
zxMdc0MaW}>v?j22ay9XY@K*hS91#|-NIe+nlqXz@ULJ`17ZW;|7x{ZUIi9kh2dL%I
z{W=!pazIQ7I^N|bLu?bdn&r~MCy23==rNvUI)6S)bEV~8#@8o!V}zvWrD7zQ4lu1n
zUGC*>g=y|%ybM6${1H2ly9eC~Yu{H#zxX9~mf&L9;i4N#uZ*>dajkW^?rxOz!#qOy
z%7tr%h=Q+>_mKC{#kk{cYiw)(I`lfl?zUr;6iB)|S3+p2u(VTD&8dEI5IizGGB?s;
z*O++<xmoKq*>(TpP4wAhK5_T#ZW55fo7vT>=TuYZ-sE1vu^e_b@NQo8<(20v*Hi8H
zNp)p;w(wZeSF)3XlH0_u?I{nS_p|fp<`*O!#bJaGhDy;x)^pHX?1t`IeKP9&VIPrt
zJ#{zUDP1#ManJ5ytG9Y_N3tE~zBzLD$7iUUS-+`fZsq*q-@|jxOQ<)IcVai!PJ;bb
z%K?vItt6_jP(3p7Z~szcy5F(b@os~E{t<(cMalkT83jWXYmVm=SdV>5{P6D?v%eqk
zjU~DZdq4P``3(14>N$#qPz2TSNB;}a3MwT?s0d{R_Ucas0;v-aAjo)oM}AjyMa~(H
z+X(-NG>t^qIqq5H%f?TJckY`FTz~MS{{@E|DAG4(c*)3EiQ5dXfOHczDuKBjx5K$}
z8Nw~RH+!u8uo2&qxfgo-k7t}`h-c-ORim@Ze%GPT^T+gC_7@m(r~@qs2q*~14-Al0
z5KIt#5C{;kZy)R%e;1%HAmAXN-!Va)3~avve6U1C{?DA=p&m@yb2W#u-TH{usv500
zHEXf<2VTNK<Clj$a3SA$*@Q8&vch(^dX;ikvglg;)J3v!M@>38IGcb}i0aah>#Fhs
z?Eve;8wlTDy~D6~by4h2ck~u=*QKKI-X81bOE7J5r+?|@1o<935Zf>?jS(>vu(0W~
z)$=iU4$pUZ?+0{{#kg5$j&N0M7xnF*&9$B+Os8}BsgL;<YJ)OOdDDd0$-5jTiXgLt
z?Pb+HXHFO<U4$3H@RYbrQvKY+0B<n&o_vMhv5svzgbtqO%5W@vpKxCN^|dalun8Y?
zUL$(DVsm{)Kl*%VaP;Ex*8jO4bXV+|pAOB&eXnXfrYASOK4-W{$2P$N?oW0g7@@yr
zh>RiLz~kfQKp?@bdcm6%p&n*IqIW|mu%V`A!43?;WP_z@!78C?`o?QvD`6}8&TAnn
zVXXVsYY{8qF8W?;L2aP%`i5&^Y+y6{j%y)gL+SD`ym!Ocp#^z<5dSa??^Ua1vjN}e
zcdO;Q1W^hX!bdd_M&&kub?H}0gVbdtXwQQ(>y4R(^I=4LHKa^~XfQ;a49Pb99))f}
zTZTxIh6p-8pazH?kg{NN2l5<f@gYunF&vmYcO@%Bf_BL&2Ru0;@pc^m(Az`eoLJSt
zxqFn)5cI*;yD$Lw>JSe`kdcioPgq(2eopYot|b66CxpR(zw^h;0GtB>eBYA;SSKvQ
z01YF&ejkU!4_bd#+F+DXLCone{7aaExG=D!ztE8eOx`du1~{}KT?Ry}cy?iM1_G;C
zk73}u*3X#Nq73YNoHoOl_(*;O0-T_f`(!$xpJKfjj^sKxDC&Kxj%+#vE4^%vbUJt|
zeXfptIz+xfJC5L+$Q=FAj%b_c90OC1a9L5>Ml`Rpv9{R$0=sNBBR@kKqfj<sTZU~N
zv^No3MhF-qn4$*4Zc!*^2g%%a(Ju$fI1xG=xZRAArh5tMu&TrGYLU#11g?V{9N4G(
z+FDtz!TkF5Z<)LUJNE5bd9DMfvckYQ!!f5vi1CM6>3c)c`cNi~5G5QHCI@sidP!0o
zP`qJt_l#Q6Q+I#sgnI35w<29fzU_SiKnTO3_WA(Ogs?ROP`8+!2sgcNw~(D-VS9Uk
zZ>?2{y*U6pVdTi(9RMsRoN{jr0Gkt0vUm1P^dIxRH2`8x<jLL(08}p=Yi|euqZg67
zcLadY`=h?M1o&3>T-kd7fNzI$>`ejSwj)~ht^iQmf86)B07%=BPkSHFApFoJdm_(_
z{9xvL1<%<0F$%kh&*=QoGrJAX`24X9yOGbR-BC5W70<ZcG4{Ke&zRlOH@h9rgx#@3
zyJ62LzEQcmCC@m%G5Wiy&ltYZJG(8<1irBXyRpv#?=XJD`nT%u2!101w+ioYU&DU4
z`e4E&M$Dz5yecxTDhddTl6qG8j*GH%tT`03q8Xwzvk{G`Rk9Vc<&C&i^47B%jhIz(
z7qjh+gjEW7v!RVBwz8SC#f><&^4hZ|>j_$8624XiAWh0~!sx}&wqn`~?2UA`5*rKO
z8P?cCR6-QwWkJP?lyXIui((69nVuGqSCU<e5-er8Zuy$5na8s_>*;QJx|SU4*^htG
zrwTxE$s&&zkP(zKFlU9wXQ550BnlcSkIDqasOLzuWMwR<=nA?l?AOB{i#{y;xcw0e
zgH8>&gAt1cP93-dV+spSEx1EtiVjWz+yU~1iKiyqA@W5Fr!L$<(}fMEHr!#;Mfa!P
z?f&$Ik*7xO!SqEFr%vsG)rA$OR_&qHMHi=@?E!X$nWtv$A$CO@r*7>**M%LYcI{!;
zMQ^9Rp8kY|VW)<k!GuL4r;eV1IfW&smY$(GMJJ~oo&kD=si&r%A$mnCr>>qs+l4Ks
zww__zMNg+bum1dnv8Tqb!Td!tr_Qf|-Gw!$)~})6MK`BjuK~V=UvmooSU!Y%=I#IS
zd<gl?>;L2U5cy(eWM*pUW4qkbsy^_v+ZBIwLW?~xv)jAl4WI;)=>@1CCId|MLe!6z
z0IqsLD~C-0TfMNAqX&S`wm-*VG{AT}nB!;);Jh73d7rX5&j09)2i2M#gul-y0ifB=
zXxX#%;MvY`-~BbhISs?kHAcW2!s9`$a6q3ky|p>O0+6^q;?EiT=tP^@U*ios0Zw<q
z-N176%XQ-2Ahz_|-ZI{RatzSjLgPat^&4gdRsaZj$H94_pZa}l`nGs;!vNU6N30CH
zAz6DU(@uyn$4c9Y_d2^IS%~KSIJX2kV3hr94mkKwlmk=_P^kbEhGX*1q|`gTPL7*_
zH=u8)08uX#P{^B+s6Py7=*>ygCjnIQW+fUJ0Xll~=JrworM#JQ`%8e9-rTu;=0Htv
z_S}IJpocfVelHeK%$rHSKNV=|&86R`4pjAK(;rv?x_a~N^l|{@yjgboTY$FSJUe~v
zKwWQ+oq;EykGFt8FA`AXol&4a7HIs=DbS|?RDNd_7?=S%zw`F=G5}@XnS1(cfY$Ha
zJ$?2-?RWN`fg7OLJHKBq5m4ft$*(^bX#URS*QXCue`oU>*a5n~^L_OS0Kc9oKhyp8
z^j|nWv%hu)UKl<zzxMnP7-xS5Aq<o<@rqX|nJ?lYh!^a!WkflOH_RDDaZq5RMN19C
z4o3`2504L150?*H4WAF=4rdH&H5J*kH#M;luT$eH;U-^|a$m<ze5UC)$~Ee;{>CGa
zLO66@TTl9};G(y!W#aKWW>MT(q^+{4mc6Kvi9c={DM|d;yplW`e5sX~KaHjs60*{!
z&QLHcXHc*_%SlnHe>#_XIRmWmhXwWDBgr65Ig_*6Wpuoh-?3%PS~09{t+EJhvaTx5
z2xqe!OmTQPQe(q$)&-6cG&2rt?8TEZN706F0}Gn6=8$v>>+$RIWn^^8F6Gkm<*wQL
zTvbWjCBHp|4pgv=h1eeDojbHzH-{Cs>+921+!*<G&!iEOB2p+1!doWz=nvL!UCJO$
z@tN8$&!eM0_RiGq8?1a=ynL7WdbFoz$|22_3)+O4a`6b7S0@qck_pPM;`g0@d&g4q
zpGYdtI8gB<ji-t;m;J7zI@t#Pqek*L%3HZ2zImLj;5|(KSEdOef%~RoOWV56xsY9T
zI?b+JL{%O$Nt-)w^pf;gp{(`0q*1?|T1xe!ygY%F?c>G8t+ZI>)8<^ix<A3IqFG<w
zN9sC5lfETV_YPmZvk}+pxLhlhYo4*i6Nh2JP>v#%fO_#C{0VR^BkO+c#ye#^cY5ne
zrkP!ILQgd#3DLTscs{A9eNB0^5O#oiTGiM-w<8l`CDgOMG2~qNe&Os<aj+(b<<ms_
zLy^B}v_5RQ!rh58eqqCDku__APIhXd3}rg2dAV?<+A1e`jE?@MlIpm=O?bgzeOx=l
zrEkqD+)O-7SzaS|{5V2wSh}S1*n-&By>Cs|9P<cZE>B`VBiZhaxFp_V?I1D}&Q=H+
zt*|kWYP`frOKOIp%tk=fv0pFK)5E4g!)sja6K<<FHEGDhJl>mOSvEJ9<l`PQi6=Yv
z57jl*!mV8me>RHs3Gu}0bzX#&Dkq(KDFQEtDeJiP!(N>D%E0^cZ_C0_sV1aaGv4oZ
z6uk-EZq@JK#8iI2EnmvYInBG7YIHUg+gdY(Xq07_r0I<{+Zus=`N~>cnp46hjZxHe
z+WF*`Z#nMg`|l3Z%D=FVDjb6&-E8}hlsc+G-*US&6KOa$FRoqhvAwpl-fWUL&1p(z
zQby{IDiW)od8dhUoe3bcw6iPbR;={Xl1sNrNPA++CBV6@R+JPahzUYm(aS`I<lxkv
zVY*8Cfe<cwxzooBYu?<MJ?FYSkJcl;R|_@wFHH(P)0ZphAKcEF)0@RCEoYOq?O3)M
zbHzCSZ9u1>EyM*`z%o!~qpbA*v+y_jQU0;a66h(eI0Jo-Bg98qs2kFl8uy4guP4my
zENPB-Hc6b#Rmc+NdR$x0QHf(X1#K;^!P1|BvK&=w7R*MPkApH5ZXqtpLXv?p7Zq+M
zDtx|fQ}dXgQPmGT;~Dv^AoW3LX+Hb)x4?}6!WDg9Nkal<PyHGpSD}IAyv5?@Ds}nV
zYsRe@m{Vo`Rlbl?83Q&Zh8`m|E?RUXg{a(I;d~qbT9xnA%0=Jjwf&!1Fj0BwGxVR>
zxc^}yV{3Vp`+b$pR5f0aQ}}~Jh%oImS`GI?L-77zkoY>L*0oKhF1nh0ufm0eVyNz^
z*f#u+_YN5a3FW^{neMhOm{J)Z^?T`UL4Pc)!2bnO-3tU&o|X1Sf{D<&J6RwOv#F53
z0S|;xe=Lju#e3SV@&6Cdzqj5V^vA*p{5SCSIDs1sA;R+2d3M|z`41rc46{cWoQwS5
zAm7P77(AJD|0gjb>VFwoM}r7(W&E`LUUaBpPR0=9Z;#tR8cKFAv!5fx9(D)4o9eyr
zHnCp;R^WdDWzSbY_MPo>w1>#%KaipuVnO-DbF~(ttpA61rM<V{8?<hPXa2AomSh2K
zAL$L*xkB@l`-YtcjWODX&-&H)SIy)dz(XWWd<Issx6)Y2H9$M$Kg|Dl+E7jVfsdK&
zGt+-k=KH^Z|Dxl60soV!|54LT<*oc&d@J|=A?5$7@csQPm1`c;?vTn&;uVsE?)m#v
zDvvUx`r1vOc~|khp2ECBVUb~-0vFj93n3y@bRZvPuGB)dOab`jjc~spQq;+2(Nn_{
zyAAXbZ7oY8Xaqh^wEGz76<f|Ee6;K6b&g_H_Bjp>alPqojGI*^@kt)tQSy<VRW>vm
z^(31^T~v{SKW^mkX%g5gP$T@gQJfzwyr-HeRsGdNig;Wv5~?|Vf)6K@tM5y`7XO}s
z@Vb84!cd_o8(SE$Y~Vw0t$CKWw_n@Bnbkr@&pNHZP(HXFXv;~1XIf6BD+jsM6(3c0
zy?%~Wb?L4{A@?9FN3q1RvK&0OwX?Le$YFp`%#yx%*gx89A>-#dH?+o7*Iu<kOQG_V
ztj;jrp)>H$Da<-o@A+0VyYe7wiImT&)0&uE-&ePVm&rVfvYIS!P$fZSKF=f~L7rSW
zSyp+z$fTXr^>M=`Pf>60T&=?kzf9lk$T^W^ZC>&|E}2Nm^y*&6A%=C@HDx%fwXOY_
zY$Pi~h0U2-!EtGT%h+?3*?JPOhBk}~4=qKT!`Y3EbHXa3V0ptNLn|l|eELQ4ZnAvt
z?ixbCwXw#tvD;gYO4-L)mhDlM#_H0Q{PIJgfBSqChVRR9XZ4_d^PqY2YJB}8w{mN#
z^5N(~v#Di*t>i+$xxL(ZSOL$g(eykGHIpY*;Lo=FiigFe%i6We#&xAzyXkmZ(gDx#
z@2+X-f*#eWt5OQvGwcn=2Cd8$7fnm{5gnW2iHx)6lu|Q`sE&FrLan8#WmKYxX!VZc
z=yq*nSI2z2Y5bL??Vio0YCBV(Adbh5>U`f5MD+pBl+2~ogLBIn4L`nWe7+_8=&dEG
z1MbwG6Yi1YQ<tMtmlwv=T=UP9tk&c7B@a2rC*%6I_J~Tm)zWUm5wTPT)^loBZcI$q
zzI;^;9}gxyzJ|$tha=h4uNq0dRyURTiYx@$sg2=z@bfR6teJ6R&20RSUAsznx?(6T
zYDW*7;SBwM?e0+%g}}#!*_ZA*j*Cl~K@ZX8wVhP?*<EjCF2j#^9V!N;m$UsSn!?ml
z$7!roG|$(ht90qt<jX>nl!P_u<6r3)o`O7Ezcw5K>k&%s#zQ?DlWjRACLAb7izm>e
z3m&F9O3>DN5a!D^6I{ymxEh|8xDR9sT+jD35VKSsEu`#Y9m5}UzPos+a?Ncz!(V7&
zsvbxaCR}#yihBg_n!zl>Mdyd1(CkP2LG*slk?@~;Sj48L5c>p?d+&6se9L`p3CQxN
zFCfD4u8RJID|6f-%g3~G0%?_@P;T~cc*W&3FW7s&OqkuZa{Y6pK$puae|3dZa{#yk
z1<`w#Iq`=;;Jc|{PAwsE_5I_`)O~jLi5gLcW&3T|8DQWH?Z|C{*-{*k-Kh6SvhqZs
z_A>MpZx08cE8MN`q$k`*k#XoSz)d(+|HTXG*JYX^?JMV&qH+xJEPnOhlKE0oNV2P6
U5+{zuf?@lC+j6Kse)s?X0ZPdgP5=M^

literal 0
HcmV?d00001

diff --git a/www/web/static/admin/img/LICENSE b/www/web/static/admin/img/LICENSE
new file mode 100644
index 0000000..a4faaa1
--- /dev/null
+++ b/www/web/static/admin/img/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Code Charm Ltd
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/www/web/static/admin/img/README.txt b/www/web/static/admin/img/README.txt
new file mode 100644
index 0000000..43373ad
--- /dev/null
+++ b/www/web/static/admin/img/README.txt
@@ -0,0 +1,7 @@
+All icons are taken from Font Awesome (http://fontawesome.io/) project.
+The Font Awesome font is licensed under the SIL OFL 1.1:
+- http://scripts.sil.org/OFL
+
+SVG icons source: https://github.com/encharm/Font-Awesome-SVG-PNG
+Font-Awesome-SVG-PNG is licensed under the MIT license (see file license
+in current folder).
diff --git a/www/web/static/admin/img/calendar-icons.svg b/www/web/static/admin/img/calendar-icons.svg
new file mode 100644
index 0000000..dbf21c3
--- /dev/null
+++ b/www/web/static/admin/img/calendar-icons.svg
@@ -0,0 +1,14 @@
+<svg width="15" height="60" viewBox="0 0 1792 7168" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <defs>
+    <g id="previous">
+      <path d="M1037 1395l102-102q19-19 19-45t-19-45l-307-307 307-307q19-19 19-45t-19-45l-102-102q-19-19-45-19t-45 19l-454 454q-19 19-19 45t19 45l454 454q19 19 45 19t45-19zm627-499q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/>
+    </g>
+    <g id="next">
+      <path d="M845 1395l454-454q19-19 19-45t-19-45l-454-454q-19-19-45-19t-45 19l-102 102q-19 19-19 45t19 45l307 307-307 307q-19 19-19 45t19 45l102 102q19 19 45 19t45-19zm819-499q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/>
+    </g>
+  </defs>
+  <use xlink:href="#previous" x="0" y="0" fill="#333333" />
+  <use xlink:href="#previous" x="0" y="1792" fill="#000000" />
+  <use xlink:href="#next" x="0" y="3584" fill="#333333" />
+  <use xlink:href="#next" x="0" y="5376" fill="#000000" />
+</svg>
diff --git a/www/web/static/admin/img/gis/move_vertex_off.svg b/www/web/static/admin/img/gis/move_vertex_off.svg
new file mode 100644
index 0000000..228854f
--- /dev/null
+++ b/www/web/static/admin/img/gis/move_vertex_off.svg
@@ -0,0 +1 @@
+<svg width="24" height="22" viewBox="0 0 847 779" xmlns="http://www.w3.org/2000/svg"><g><path fill="#EBECE6" d="M120 1h607c66 0 120 54 120 120v536c0 66-54 120-120 120h-607c-66 0-120-54-120-120v-536c0-66 54-120 120-120z"/><path fill="#9E9E93" d="M120 1h607c66 0 120 54 120 120v536c0 66-54 120-120 120h-607c-66 0-120-54-120-120v-536c0-66 54-120 120-120zm607 25h-607c-26 0-50 11-67 28-17 18-28 41-28 67v536c0 27 11 50 28 68 17 17 41 27 67 27h607c26 0 49-10 67-27 17-18 28-41 28-68v-536c0-26-11-49-28-67-18-17-41-28-67-28z"/><path stroke="#A9A8A4" stroke-width="20" d="M706 295l-68 281"/><path stroke="#E47474" stroke-width="20" d="M316 648l390-353M141 435l175 213"/><path stroke="#C9C9C9" stroke-width="20" d="M319 151l-178 284M706 295l-387-144"/><g fill="#040405"><path d="M319 111c22 0 40 18 40 40s-18 40-40 40-40-18-40-40 18-40 40-40zM141 395c22 0 40 18 40 40s-18 40-40 40c-23 0-41-18-41-40s18-40 41-40zM316 608c22 0 40 18 40 40 0 23-18 41-40 41s-40-18-40-41c0-22 18-40 40-40zM706 254c22 0 40 18 40 41 0 22-18 40-40 40s-40-18-40-40c0-23 18-41 40-41zM638 536c22 0 40 18 40 40s-18 40-40 40-40-18-40-40 18-40 40-40z"/></g></g></svg>
\ No newline at end of file
diff --git a/www/web/static/admin/img/gis/move_vertex_on.svg b/www/web/static/admin/img/gis/move_vertex_on.svg
new file mode 100644
index 0000000..96b87fd
--- /dev/null
+++ b/www/web/static/admin/img/gis/move_vertex_on.svg
@@ -0,0 +1 @@
+<svg width="24" height="22" viewBox="0 0 847 779" xmlns="http://www.w3.org/2000/svg"><g><path fill="#F1C02A" d="M120 1h607c66 0 120 54 120 120v536c0 66-54 120-120 120h-607c-66 0-120-54-120-120v-536c0-66 54-120 120-120z"/><path fill="#9E9E93" d="M120 1h607c66 0 120 54 120 120v536c0 66-54 120-120 120h-607c-66 0-120-54-120-120v-536c0-66 54-120 120-120zm607 25h-607c-26 0-50 11-67 28-17 18-28 41-28 67v536c0 27 11 50 28 68 17 17 41 27 67 27h607c26 0 49-10 67-27 17-18 28-41 28-68v-536c0-26-11-49-28-67-18-17-41-28-67-28z"/><path stroke="#A9A8A4" stroke-width="20" d="M706 295l-68 281"/><path stroke="#E47474" stroke-width="20" d="M316 648l390-353M141 435l175 213"/><path stroke="#C9A741" stroke-width="20" d="M319 151l-178 284M706 295l-387-144"/><g fill="#040405"><path d="M319 111c22 0 40 18 40 40s-18 40-40 40-40-18-40-40 18-40 40-40zM141 395c22 0 40 18 40 40s-18 40-40 40c-23 0-41-18-41-40s18-40 41-40zM316 608c22 0 40 18 40 40 0 23-18 41-40 41s-40-18-40-41c0-22 18-40 40-40zM706 254c22 0 40 18 40 41 0 22-18 40-40 40s-40-18-40-40c0-23 18-41 40-41zM638 536c22 0 40 18 40 40s-18 40-40 40-40-18-40-40 18-40 40-40z"/></g></g></svg>
\ No newline at end of file
diff --git a/www/web/static/admin/img/icon-addlink.svg b/www/web/static/admin/img/icon-addlink.svg
new file mode 100644
index 0000000..e004fb1
--- /dev/null
+++ b/www/web/static/admin/img/icon-addlink.svg
@@ -0,0 +1,3 @@
+<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
+  <path fill="#70bf2b" d="M1600 796v192q0 40-28 68t-68 28h-416v416q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-416h-416q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h416v-416q0-40 28-68t68-28h192q40 0 68 28t28 68v416h416q40 0 68 28t28 68z"/>
+</svg>
diff --git a/www/web/static/admin/img/icon-alert.svg b/www/web/static/admin/img/icon-alert.svg
new file mode 100644
index 0000000..e51ea83
--- /dev/null
+++ b/www/web/static/admin/img/icon-alert.svg
@@ -0,0 +1,3 @@
+<svg width="14" height="14" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
+  <path fill="#efb80b" d="M1024 1375v-190q0-14-9.5-23.5t-22.5-9.5h-192q-13 0-22.5 9.5t-9.5 23.5v190q0 14 9.5 23.5t22.5 9.5h192q13 0 22.5-9.5t9.5-23.5zm-2-374l18-459q0-12-10-19-13-11-24-11h-220q-11 0-24 11-10 7-10 21l17 457q0 10 10 16.5t24 6.5h185q14 0 23.5-6.5t10.5-16.5zm-14-934l768 1408q35 63-2 126-17 29-46.5 46t-63.5 17h-1536q-34 0-63.5-17t-46.5-46q-37-63-2-126l768-1408q17-31 47-49t65-18 65 18 47 49z"/>
+</svg>
diff --git a/www/web/static/admin/img/icon-calendar.svg b/www/web/static/admin/img/icon-calendar.svg
new file mode 100644
index 0000000..97910a9
--- /dev/null
+++ b/www/web/static/admin/img/icon-calendar.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="32" viewBox="0 0 1792 3584" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <defs>
+    <g id="icon">
+      <path d="M192 1664h288v-288h-288v288zm352 0h320v-288h-320v288zm-352-352h288v-320h-288v320zm352 0h320v-320h-320v320zm-352-384h288v-288h-288v288zm736 736h320v-288h-320v288zm-384-736h320v-288h-320v288zm768 736h288v-288h-288v288zm-384-352h320v-320h-320v320zm-352-864v-288q0-13-9.5-22.5t-22.5-9.5h-64q-13 0-22.5 9.5t-9.5 22.5v288q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5-9.5t9.5-22.5zm736 864h288v-320h-288v320zm-384-384h320v-288h-320v288zm384 0h288v-288h-288v288zm32-480v-288q0-13-9.5-22.5t-22.5-9.5h-64q-13 0-22.5 9.5t-9.5 22.5v288q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5-9.5t9.5-22.5zm384-64v1280q0 52-38 90t-90 38h-1408q-52 0-90-38t-38-90v-1280q0-52 38-90t90-38h128v-96q0-66 47-113t113-47h64q66 0 113 47t47 113v96h384v-96q0-66 47-113t113-47h64q66 0 113 47t47 113v96h128q52 0 90 38t38 90z"/>
+    </g>
+  </defs>
+  <use xlink:href="#icon" x="0" y="0" fill="#447e9b" />
+  <use xlink:href="#icon" x="0" y="1792" fill="#003366" />
+</svg>
diff --git a/www/web/static/admin/img/icon-changelink.svg b/www/web/static/admin/img/icon-changelink.svg
new file mode 100644
index 0000000..bbb137a
--- /dev/null
+++ b/www/web/static/admin/img/icon-changelink.svg
@@ -0,0 +1,3 @@
+<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
+  <path fill="#efb80b" d="M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z"/>
+</svg>
diff --git a/www/web/static/admin/img/icon-clock.svg b/www/web/static/admin/img/icon-clock.svg
new file mode 100644
index 0000000..bf9985d
--- /dev/null
+++ b/www/web/static/admin/img/icon-clock.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="32" viewBox="0 0 1792 3584" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <defs>
+    <g id="icon">
+      <path d="M1024 544v448q0 14-9 23t-23 9h-320q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h224v-352q0-14 9-23t23-9h64q14 0 23 9t9 23zm416 352q0-148-73-273t-198-198-273-73-273 73-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273zm224 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/>
+    </g>
+  </defs>
+  <use xlink:href="#icon" x="0" y="0" fill="#447e9b" />
+  <use xlink:href="#icon" x="0" y="1792" fill="#003366" />
+</svg>
diff --git a/www/web/static/admin/img/icon-deletelink.svg b/www/web/static/admin/img/icon-deletelink.svg
new file mode 100644
index 0000000..4059b15
--- /dev/null
+++ b/www/web/static/admin/img/icon-deletelink.svg
@@ -0,0 +1,3 @@
+<svg width="14" height="14" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
+  <path fill="#dd4646" d="M1490 1322q0 40-28 68l-136 136q-28 28-68 28t-68-28l-294-294-294 294q-28 28-68 28t-68-28l-136-136q-28-28-28-68t28-68l294-294-294-294q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 294 294-294q28-28 68-28t68 28l136 136q28 28 28 68t-28 68l-294 294 294 294q28 28 28 68z"/>
+</svg>
diff --git a/www/web/static/admin/img/icon-no.svg b/www/web/static/admin/img/icon-no.svg
new file mode 100644
index 0000000..2e0d383
--- /dev/null
+++ b/www/web/static/admin/img/icon-no.svg
@@ -0,0 +1,3 @@
+<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
+  <path fill="#dd4646" d="M1277 1122q0-26-19-45l-181-181 181-181q19-19 19-45 0-27-19-46l-90-90q-19-19-46-19-26 0-45 19l-181 181-181-181q-19-19-45-19-27 0-46 19l-90 90q-19 19-19 46 0 26 19 45l181 181-181 181q-19 19-19 45 0 27 19 46l90 90q19 19 46 19 26 0 45-19l181-181 181 181q19 19 45 19 27 0 46-19l90-90q19-19 19-46zm387-226q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/>
+</svg>
diff --git a/www/web/static/admin/img/icon-unknown-alt.svg b/www/web/static/admin/img/icon-unknown-alt.svg
new file mode 100644
index 0000000..1c6b99f
--- /dev/null
+++ b/www/web/static/admin/img/icon-unknown-alt.svg
@@ -0,0 +1,3 @@
+<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
+  <path fill="#ffffff" d="M1024 1376v-192q0-14-9-23t-23-9h-192q-14 0-23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23-9t9-23zm256-672q0-88-55.5-163t-138.5-116-170-41q-243 0-371 213-15 24 8 42l132 100q7 6 19 6 16 0 25-12 53-68 86-92 34-24 86-24 48 0 85.5 26t37.5 59q0 38-20 61t-68 45q-63 28-115.5 86.5t-52.5 125.5v36q0 14 9 23t23 9h192q14 0 23-9t9-23q0-19 21.5-49.5t54.5-49.5q32-18 49-28.5t46-35 44.5-48 28-60.5 12.5-81zm384 192q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/>
+</svg>
diff --git a/www/web/static/admin/img/icon-unknown.svg b/www/web/static/admin/img/icon-unknown.svg
new file mode 100644
index 0000000..50b4f97
--- /dev/null
+++ b/www/web/static/admin/img/icon-unknown.svg
@@ -0,0 +1,3 @@
+<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
+  <path fill="#666666" d="M1024 1376v-192q0-14-9-23t-23-9h-192q-14 0-23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23-9t9-23zm256-672q0-88-55.5-163t-138.5-116-170-41q-243 0-371 213-15 24 8 42l132 100q7 6 19 6 16 0 25-12 53-68 86-92 34-24 86-24 48 0 85.5 26t37.5 59q0 38-20 61t-68 45q-63 28-115.5 86.5t-52.5 125.5v36q0 14 9 23t23 9h192q14 0 23-9t9-23q0-19 21.5-49.5t54.5-49.5q32-18 49-28.5t46-35 44.5-48 28-60.5 12.5-81zm384 192q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/>
+</svg>
diff --git a/www/web/static/admin/img/icon-yes.svg b/www/web/static/admin/img/icon-yes.svg
new file mode 100644
index 0000000..5883d87
--- /dev/null
+++ b/www/web/static/admin/img/icon-yes.svg
@@ -0,0 +1,3 @@
+<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
+  <path fill="#70bf2b" d="M1412 734q0-28-18-46l-91-90q-19-19-45-19t-45 19l-408 407-226-226q-19-19-45-19t-45 19l-91 90q-18 18-18 46 0 27 18 45l362 362q19 19 45 19 27 0 46-19l543-543q18-18 18-45zm252 162q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/>
+</svg>
diff --git a/www/web/static/admin/img/inline-delete.svg b/www/web/static/admin/img/inline-delete.svg
new file mode 100644
index 0000000..17d1ad6
--- /dev/null
+++ b/www/web/static/admin/img/inline-delete.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
+  <path fill="#999999" d="M1277 1122q0-26-19-45l-181-181 181-181q19-19 19-45 0-27-19-46l-90-90q-19-19-46-19-26 0-45 19l-181 181-181-181q-19-19-45-19-27 0-46 19l-90 90q-19 19-19 46 0 26 19 45l181 181-181 181q-19 19-19 45 0 27 19 46l90 90q19 19 46 19 26 0 45-19l181-181 181 181q19 19 45 19 27 0 46-19l90-90q19-19 19-46zm387-226q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/>
+</svg>
diff --git a/www/web/static/admin/img/search.svg b/www/web/static/admin/img/search.svg
new file mode 100644
index 0000000..c8c69b2
--- /dev/null
+++ b/www/web/static/admin/img/search.svg
@@ -0,0 +1,3 @@
+<svg width="15" height="15" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
+  <path fill="#555555" d="M1216 832q0-185-131.5-316.5t-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5 316.5-131.5 131.5-316.5zm512 832q0 52-38 90t-90 38q-54 0-90-38l-343-342q-179 124-399 124-143 0-273.5-55.5t-225-150-150-225-55.5-273.5 55.5-273.5 150-225 225-150 273.5-55.5 273.5 55.5 225 150 150 225 55.5 273.5q0 220-124 399l343 343q37 37 37 90z"/>
+</svg>
diff --git a/www/web/static/admin/img/selector-icons.svg b/www/web/static/admin/img/selector-icons.svg
new file mode 100644
index 0000000..926b8e2
--- /dev/null
+++ b/www/web/static/admin/img/selector-icons.svg
@@ -0,0 +1,34 @@
+<svg width="16" height="192" viewBox="0 0 1792 21504" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <defs>
+    <g id="up">
+      <path d="M1412 895q0-27-18-45l-362-362-91-91q-18-18-45-18t-45 18l-91 91-362 362q-18 18-18 45t18 45l91 91q18 18 45 18t45-18l189-189v502q0 26 19 45t45 19h128q26 0 45-19t19-45v-502l189 189q19 19 45 19t45-19l91-91q18-18 18-45zm252 1q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/>
+    </g>
+    <g id="down">
+      <path d="M1412 897q0-27-18-45l-91-91q-18-18-45-18t-45 18l-189 189v-502q0-26-19-45t-45-19h-128q-26 0-45 19t-19 45v502l-189-189q-19-19-45-19t-45 19l-91 91q-18 18-18 45t18 45l362 362 91 91q18 18 45 18t45-18l91-91 362-362q18-18 18-45zm252-1q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/>
+    </g>
+    <g id="left">
+      <path d="M1408 960v-128q0-26-19-45t-45-19h-502l189-189q19-19 19-45t-19-45l-91-91q-18-18-45-18t-45 18l-362 362-91 91q-18 18-18 45t18 45l91 91 362 362q18 18 45 18t45-18l91-91q18-18 18-45t-18-45l-189-189h502q26 0 45-19t19-45zm256-64q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/>
+    </g>
+    <g id="right">
+      <path d="M1413 896q0-27-18-45l-91-91-362-362q-18-18-45-18t-45 18l-91 91q-18 18-18 45t18 45l189 189h-502q-26 0-45 19t-19 45v128q0 26 19 45t45 19h502l-189 189q-19 19-19 45t19 45l91 91q18 18 45 18t45-18l362-362 91-91q18-18 18-45zm251 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/>
+    </g>
+    <g id="clearall">
+      <path transform="translate(336, 336) scale(0.75)" d="M1037 1395l102-102q19-19 19-45t-19-45l-307-307 307-307q19-19 19-45t-19-45l-102-102q-19-19-45-19t-45 19l-454 454q-19 19-19 45t19 45l454 454q19 19 45 19t45-19zm627-499q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/>
+    </g>
+    <g id="chooseall">
+      <path transform="translate(336, 336) scale(0.75)" d="M845 1395l454-454q19-19 19-45t-19-45l-454-454q-19-19-45-19t-45 19l-102 102q-19 19-19 45t19 45l307 307-307 307q-19 19-19 45t19 45l102 102q19 19 45 19t45-19zm819-499q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/>
+    </g>
+  </defs>
+  <use xlink:href="#up" x="0" y="0" fill="#666666" />
+  <use xlink:href="#up" x="0" y="1792" fill="#447e9b" />
+  <use xlink:href="#down" x="0" y="3584" fill="#666666" />
+  <use xlink:href="#down" x="0" y="5376" fill="#447e9b" />
+  <use xlink:href="#left" x="0" y="7168" fill="#666666" />
+  <use xlink:href="#left" x="0" y="8960" fill="#447e9b" />
+  <use xlink:href="#right" x="0" y="10752" fill="#666666" />
+  <use xlink:href="#right" x="0" y="12544" fill="#447e9b" />
+  <use xlink:href="#clearall" x="0" y="14336" fill="#666666" />
+  <use xlink:href="#clearall" x="0" y="16128" fill="#447e9b" />
+  <use xlink:href="#chooseall" x="0" y="17920" fill="#666666" />
+  <use xlink:href="#chooseall" x="0" y="19712" fill="#447e9b" />
+</svg>
diff --git a/www/web/static/admin/img/sorting-icons.svg b/www/web/static/admin/img/sorting-icons.svg
new file mode 100644
index 0000000..7c31ec9
--- /dev/null
+++ b/www/web/static/admin/img/sorting-icons.svg
@@ -0,0 +1,19 @@
+<svg width="14" height="84" viewBox="0 0 1792 10752" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <defs>
+    <g id="sort">
+      <path d="M1408 1088q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45zm0-384q0 26-19 45t-45 19h-896q-26 0-45-19t-19-45 19-45l448-448q19-19 45-19t45 19l448 448q19 19 19 45z"/>
+    </g>
+    <g id="ascending">
+      <path d="M1408 1216q0 26-19 45t-45 19h-896q-26 0-45-19t-19-45 19-45l448-448q19-19 45-19t45 19l448 448q19 19 19 45z"/>
+    </g>
+    <g id="descending">
+      <path d="M1408 704q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45z"/>
+    </g>
+  </defs>
+  <use xlink:href="#sort" x="0" y="0" fill="#999999" />
+  <use xlink:href="#sort" x="0" y="1792" fill="#447e9b" />
+  <use xlink:href="#ascending" x="0" y="3584" fill="#999999" />
+  <use xlink:href="#ascending" x="0" y="5376" fill="#447e9b" />
+  <use xlink:href="#descending" x="0" y="7168" fill="#999999" />
+  <use xlink:href="#descending" x="0" y="8960" fill="#447e9b" />
+</svg>
diff --git a/www/web/static/admin/img/tooltag-add.svg b/www/web/static/admin/img/tooltag-add.svg
new file mode 100644
index 0000000..1ca64ae
--- /dev/null
+++ b/www/web/static/admin/img/tooltag-add.svg
@@ -0,0 +1,3 @@
+<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
+  <path fill="#ffffff" d="M1600 736v192q0 40-28 68t-68 28h-416v416q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-416h-416q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h416v-416q0-40 28-68t68-28h192q40 0 68 28t28 68v416h416q40 0 68 28t28 68z"/>
+</svg>
diff --git a/www/web/static/admin/img/tooltag-arrowright.svg b/www/web/static/admin/img/tooltag-arrowright.svg
new file mode 100644
index 0000000..b664d61
--- /dev/null
+++ b/www/web/static/admin/img/tooltag-arrowright.svg
@@ -0,0 +1,3 @@
+<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg">
+  <path fill="#ffffff" d="M1363 877l-742 742q-19 19-45 19t-45-19l-166-166q-19-19-19-45t19-45l531-531-531-531q-19-19-19-45t19-45l166-166q19-19 45-19t45 19l742 742q19 19 19 45t-19 45z"/>
+</svg>
diff --git a/www/web/static/admin/js/SelectBox.js b/www/web/static/admin/js/SelectBox.js
new file mode 100644
index 0000000..95825d8
--- /dev/null
+++ b/www/web/static/admin/js/SelectBox.js
@@ -0,0 +1,135 @@
+(function() {
+    'use strict';
+    var SelectBox = {
+        cache: {},
+        init: function(id) {
+            var box = document.getElementById(id);
+            var node;
+            SelectBox.cache[id] = [];
+            var cache = SelectBox.cache[id];
+            for (var i = 0, j = box.options.length; i < j; i++) {
+                node = box.options[i];
+                cache.push({value: node.value, text: node.text, displayed: 1});
+            }
+        },
+        redisplay: function(id) {
+            // Repopulate HTML select box from cache
+            var box = document.getElementById(id);
+            var node;
+            box.options.length = 0; // clear all options
+            var cache = SelectBox.cache[id];
+            for (var i = 0, j = cache.length; i < j; i++) {
+                node = cache[i];
+                if (node.displayed) {
+                    var new_option = new Option(node.text, node.value, false, false);
+                    // Shows a tooltip when hovering over the option
+                    new_option.setAttribute("title", node.text);
+                    box.options[box.options.length] = new_option;
+                }
+            }
+        },
+        filter: function(id, text) {
+            // Redisplay the HTML select box, displaying only the choices containing ALL
+            // the words in text. (It's an AND search.)
+            var tokens = text.toLowerCase().split(/\s+/);
+            var node, token;
+            var cache = SelectBox.cache[id];
+            for (var i = 0, j = cache.length; i < j; i++) {
+                node = cache[i];
+                node.displayed = 1;
+                var numTokens = tokens.length;
+                for (var k = 0; k < numTokens; k++) {
+                    token = tokens[k];
+                    if (node.text.toLowerCase().indexOf(token) === -1) {
+                        node.displayed = 0;
+                    }
+                }
+            }
+            SelectBox.redisplay(id);
+        },
+        delete_from_cache: function(id, value) {
+            var node, delete_index = null;
+            var cache = SelectBox.cache[id];
+            for (var i = 0, j = cache.length; i < j; i++) {
+                node = cache[i];
+                if (node.value === value) {
+                    delete_index = i;
+                    break;
+                }
+            }
+            var k = cache.length - 1;
+            for (i = delete_index; i < k; i++) {
+                cache[i] = cache[i + 1];
+            }
+            cache.length--;
+        },
+        add_to_cache: function(id, option) {
+            SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1});
+        },
+        cache_contains: function(id, value) {
+            // Check if an item is contained in the cache
+            var node;
+            var cache = SelectBox.cache[id];
+            for (var i = 0, j = cache.length; i < j; i++) {
+                node = cache[i];
+                if (node.value === value) {
+                    return true;
+                }
+            }
+            return false;
+        },
+        move: function(from, to) {
+            var from_box = document.getElementById(from);
+            var option;
+            var boxOptions = from_box.options;
+            for (var i = 0, j = boxOptions.length; i < j; i++) {
+                option = boxOptions[i];
+                if (option.selected && SelectBox.cache_contains(from, option.value)) {
+                    SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1});
+                    SelectBox.delete_from_cache(from, option.value);
+                }
+            }
+            SelectBox.redisplay(from);
+            SelectBox.redisplay(to);
+        },
+        move_all: function(from, to) {
+            var from_box = document.getElementById(from);
+            var option;
+            var boxOptions = from_box.options;
+            for (var i = 0, j = boxOptions.length; i < j; i++) {
+                option = boxOptions[i];
+                if (SelectBox.cache_contains(from, option.value)) {
+                    SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1});
+                    SelectBox.delete_from_cache(from, option.value);
+                }
+            }
+            SelectBox.redisplay(from);
+            SelectBox.redisplay(to);
+        },
+        sort: function(id) {
+            SelectBox.cache[id].sort(function(a, b) {
+                a = a.text.toLowerCase();
+                b = b.text.toLowerCase();
+                try {
+                    if (a > b) {
+                        return 1;
+                    }
+                    if (a < b) {
+                        return -1;
+                    }
+                }
+                catch (e) {
+                    // silently fail on IE 'unknown' exception
+                }
+                return 0;
+            } );
+        },
+        select_all: function(id) {
+            var box = document.getElementById(id);
+            for (var i = 0; i < box.options.length; i++) {
+                box.options[i].selected = 'selected';
+            }
+        }
+    };
+    window.SelectBox = SelectBox;
+})();
diff --git a/www/web/static/admin/js/SelectFilter2.js b/www/web/static/admin/js/SelectFilter2.js
new file mode 100644
index 0000000..acf3996
--- /dev/null
+++ b/www/web/static/admin/js/SelectFilter2.js
@@ -0,0 +1,198 @@
+/*global SelectBox, addEvent, gettext, interpolate, quickElement, SelectFilter*/
+/*
+SelectFilter2 - Turns a multiple-select box into a filter interface.
+
+Requires core.js, SelectBox.js and addevent.js.
+*/
+(function($) {
+    'use strict';
+    function findForm(node) {
+        // returns the node of the form containing the given node
+        if (node.tagName.toLowerCase() !== 'form') {
+            return findForm(node.parentNode);
+        }
+        return node;
+    }
+
+    window.SelectFilter = {
+        init: function(field_id, field_name, is_stacked) {
+            if (field_id.match(/__prefix__/)) {
+                // Don't initialize on empty forms.
+                return;
+            }
+            var from_box = document.getElementById(field_id);
+            from_box.id += '_from'; // change its ID
+            from_box.className = 'filtered';
+
+            var ps = from_box.parentNode.getElementsByTagName('p');
+            for (var i = 0; i < ps.length; i++) {
+                if (ps[i].className.indexOf("info") !== -1) {
+                    // Remove <p class="info">, because it just gets in the way.
+                    from_box.parentNode.removeChild(ps[i]);
+                } else if (ps[i].className.indexOf("help") !== -1) {
+                    // Move help text up to the top so it isn't below the select
+                    // boxes or wrapped off on the side to the right of the add
+                    // button:
+                    from_box.parentNode.insertBefore(ps[i], from_box.parentNode.firstChild);
+                }
+            }
+
+            // <div class="selector"> or <div class="selector stacked">
+            var selector_div = quickElement('div', from_box.parentNode);
+            selector_div.className = is_stacked ? 'selector stacked' : 'selector';
+
+            // <div class="selector-available">
+            var selector_available = quickElement('div', selector_div);
+            selector_available.className = 'selector-available';
+            var title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name]));
+            quickElement(
+                'span', title_available, '',
+                'class', 'help help-tooltip help-icon',
+                'title', interpolate(
+                    gettext(
+                        'This is the list of available %s. You may choose some by ' +
+                        'selecting them in the box below and then clicking the ' +
+                        '"Choose" arrow between the two boxes.'
+                    ),
+                    [field_name]
+                )
+            );
+
+            var filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter');
+            filter_p.className = 'selector-filter';
+
+            var search_filter_label = quickElement('label', filter_p, '', 'for', field_id + '_input');
+
+            quickElement(
+                'span', search_filter_label, '',
+                'class', 'help-tooltip search-label-icon',
+                'title', interpolate(gettext("Type into this box to filter down the list of available %s."), [field_name])
+            );
+
+            filter_p.appendChild(document.createTextNode(' '));
+
+            var filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext("Filter"));
+            filter_input.id = field_id + '_input';
+
+            selector_available.appendChild(from_box);
+            var choose_all = quickElement('a', selector_available, gettext('Choose all'), 'title', interpolate(gettext('Click to choose all %s at once.'), [field_name]), 'href', 'javascript:void(0);', 'id', field_id + '_add_all_link');
+            choose_all.className = 'selector-chooseall';
+
+            // <ul class="selector-chooser">
+            var selector_chooser = quickElement('ul', selector_div);
+            selector_chooser.className = 'selector-chooser';
+            var add_link = quickElement('a', quickElement('li', selector_chooser), gettext('Choose'), 'title', gettext('Choose'), 'href', 'javascript:void(0);', 'id', field_id + '_add_link');
+            add_link.className = 'selector-add';
+            var remove_link = quickElement('a', quickElement('li', selector_chooser), gettext('Remove'), 'title', gettext('Remove'), 'href', 'javascript:void(0);', 'id', field_id + '_remove_link');
+            remove_link.className = 'selector-remove';
+
+            // <div class="selector-chosen">
+            var selector_chosen = quickElement('div', selector_div);
+            selector_chosen.className = 'selector-chosen';
+            var title_chosen = quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s') + ' ', [field_name]));
+            quickElement(
+                'span', title_chosen, '',
+                'class', 'help help-tooltip help-icon',
+                'title', interpolate(
+                    gettext(
+                        'This is the list of chosen %s. You may remove some by ' +
+                        'selecting them in the box below and then clicking the ' +
+                        '"Remove" arrow between the two boxes.'
+                    ),
+                    [field_name]
+                )
+            );
+
+            var to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', 'multiple', 'size', from_box.size, 'name', from_box.getAttribute('name'));
+            to_box.className = 'filtered';
+            var clear_all = quickElement('a', selector_chosen, gettext('Remove all'), 'title', interpolate(gettext('Click to remove all chosen %s at once.'), [field_name]), 'href', 'javascript:void(0);', 'id', field_id + '_remove_all_link');
+            clear_all.className = 'selector-clearall';
+
+            from_box.setAttribute('name', from_box.getAttribute('name') + '_old');
+
+            // Set up the JavaScript event handlers for the select box filter interface
+            addEvent(choose_all, 'click', function() { SelectBox.move_all(field_id + '_from', field_id + '_to'); SelectFilter.refresh_icons(field_id); });
+            addEvent(add_link, 'click', function() { SelectBox.move(field_id + '_from', field_id + '_to'); SelectFilter.refresh_icons(field_id); });
+            addEvent(remove_link, 'click', function() { SelectBox.move(field_id + '_to', field_id + '_from'); SelectFilter.refresh_icons(field_id); });
+            addEvent(clear_all, 'click', function() { SelectBox.move_all(field_id + '_to', field_id + '_from'); SelectFilter.refresh_icons(field_id); });
+            addEvent(filter_input, 'keypress', function(e) { SelectFilter.filter_key_press(e, field_id); });
+            addEvent(filter_input, 'keyup', function(e) { SelectFilter.filter_key_up(e, field_id); });
+            addEvent(filter_input, 'keydown', function(e) { SelectFilter.filter_key_down(e, field_id); });
+            addEvent(from_box, 'change', function(e) { SelectFilter.refresh_icons(field_id); });
+            addEvent(to_box, 'change', function(e) { SelectFilter.refresh_icons(field_id); });
+            addEvent(from_box, 'dblclick', function() { SelectBox.move(field_id + '_from', field_id + '_to'); SelectFilter.refresh_icons(field_id); });
+            addEvent(to_box, 'dblclick', function() { SelectBox.move(field_id + '_to', field_id + '_from'); SelectFilter.refresh_icons(field_id); });
+            addEvent(findForm(from_box), 'submit', function() { SelectBox.select_all(field_id + '_to'); });
+            SelectBox.init(field_id + '_from');
+            SelectBox.init(field_id + '_to');
+            // Move selected from_box options to to_box
+            SelectBox.move(field_id + '_from', field_id + '_to');
+
+            if (!is_stacked) {
+                // In horizontal mode, give the same height to the two boxes.
+                var j_from_box = $(from_box);
+                var j_to_box = $(to_box);
+                var resize_filters = function() { j_to_box.height($(filter_p).outerHeight() + j_from_box.outerHeight()); };
+                if (j_from_box.outerHeight() > 0) {
+                    resize_filters(); // This fieldset is already open. Resize now.
+                } else {
+                    // This fieldset is probably collapsed. Wait for its 'show' event.
+                    j_to_box.closest('fieldset').one('show.fieldset', resize_filters);
+                }
+            }
+
+            // Initial icon refresh
+            SelectFilter.refresh_icons(field_id);
+        },
+        refresh_icons: function(field_id) {
+            var from = $('#' + field_id + '_from');
+            var to = $('#' + field_id + '_to');
+            var is_from_selected = from.find('option:selected').length > 0;
+            var is_to_selected = to.find('option:selected').length > 0;
+            // Active if at least one item is selected
+            $('#' + field_id + '_add_link').toggleClass('active', is_from_selected);
+            $('#' + field_id + '_remove_link').toggleClass('active', is_to_selected);
+            // Active if the corresponding box isn't empty
+            $('#' + field_id + '_add_all_link').toggleClass('active', from.find('option').length > 0);
+            $('#' + field_id + '_remove_all_link').toggleClass('active', to.find('option').length > 0);
+        },
+        filter_key_press: function(event, field_id) {
+            var from = document.getElementById(field_id + '_from');
+            // don't submit form if user pressed Enter
+            if ((event.which && event.which === 13) || (event.keyCode && event.keyCode === 13)) {
+                from.selectedIndex = 0;
+                SelectBox.move(field_id + '_from', field_id + '_to');
+                from.selectedIndex = 0;
+                event.preventDefault();
+                return false;
+            }
+        },
+        filter_key_up: function(event, field_id) {
+            var from = document.getElementById(field_id + '_from');
+            var temp = from.selectedIndex;
+            SelectBox.filter(field_id + '_from', document.getElementById(field_id + '_input').value);
+            from.selectedIndex = temp;
+            return true;
+        },
+        filter_key_down: function(event, field_id) {
+            var from = document.getElementById(field_id + '_from');
+            // right arrow -- move across
+            if ((event.which && event.which === 39) || (event.keyCode && event.keyCode === 39)) {
+                var old_index = from.selectedIndex;
+                SelectBox.move(field_id + '_from', field_id + '_to');
+                from.selectedIndex = (old_index === from.length) ? from.length - 1 : old_index;
+                return false;
+            }
+            // down arrow -- wrap around
+            if ((event.which && event.which === 40) || (event.keyCode && event.keyCode === 40)) {
+                from.selectedIndex = (from.length === from.selectedIndex + 1) ? 0 : from.selectedIndex + 1;
+            }
+            // up arrow -- wrap around
+            if ((event.which && event.which === 38) || (event.keyCode && event.keyCode === 38)) {
+                from.selectedIndex = (from.selectedIndex === 0) ? from.length - 1 : from.selectedIndex - 1;
+            }
+            return true;
+        }
+    };
+
+})(django.jQuery);
diff --git a/www/web/static/admin/js/actions.js b/www/web/static/admin/js/actions.js
new file mode 100644
index 0000000..95e8492
--- /dev/null
+++ b/www/web/static/admin/js/actions.js
@@ -0,0 +1,146 @@
+/*global _actions_icnt, gettext, interpolate, ngettext*/
+(function($) {
+    'use strict';
+    var lastChecked;
+
+    $.fn.actions = function(opts) {
+        var options = $.extend({}, $.fn.actions.defaults, opts);
+        var actionCheckboxes = $(this);
+        var list_editable_changed = false;
+        var showQuestion = function() {
+            $(options.acrossClears).hide();
+            $(options.acrossQuestions).show();
+            $(options.allContainer).hide();
+        },
+        showClear = function() {
+            $(options.acrossClears).show();
+            $(options.acrossQuestions).hide();
+            $(options.actionContainer).toggleClass(options.selectedClass);
+            $(options.allContainer).show();
+            $(options.counterContainer).hide();
+        },
+        reset = function() {
+            $(options.acrossClears).hide();
+            $(options.acrossQuestions).hide();
+            $(options.allContainer).hide();
+            $(options.counterContainer).show();
+        },
+        clearAcross = function() {
+            reset();
+            $(options.acrossInput).val(0);
+            $(options.actionContainer).removeClass(options.selectedClass);
+        },
+        checker = function(checked) {
+            if (checked) {
+                showQuestion();
+            } else {
+                reset();
+            }
+            $(actionCheckboxes).prop("checked", checked)
+                .parent().parent().toggleClass(options.selectedClass, checked);
+        },
+        updateCounter = function() {
+            var sel = $(actionCheckboxes).filter(":checked").length;
+            // _actions_icnt is defined in the generated HTML
+            // and contains the total amount of objects in the queryset
+            $(options.counterContainer).html(interpolate(
+            ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), {
+                sel: sel,
+                cnt: _actions_icnt
+            }, true));
+            $(options.allToggle).prop("checked", function() {
+                var value;
+                if (sel === actionCheckboxes.length) {
+                    value = true;
+                    showQuestion();
+                } else {
+                    value = false;
+                    clearAcross();
+                }
+                return value;
+            });
+        };
+        // Show counter by default
+        $(options.counterContainer).show();
+        // Check state of checkboxes and reinit state if needed
+        $(this).filter(":checked").each(function(i) {
+            $(this).parent().parent().toggleClass(options.selectedClass);
+            updateCounter();
+            if ($(options.acrossInput).val() === 1) {
+                showClear();
+            }
+        });
+        $(options.allToggle).show().click(function() {
+            checker($(this).prop("checked"));
+            updateCounter();
+        });
+        $("a", options.acrossQuestions).click(function(event) {
+            event.preventDefault();
+            $(options.acrossInput).val(1);
+            showClear();
+        });
+        $("a", options.acrossClears).click(function(event) {
+            event.preventDefault();
+            $(options.allToggle).prop("checked", false);
+            clearAcross();
+            checker(0);
+            updateCounter();
+        });
+        lastChecked = null;
+        $(actionCheckboxes).click(function(event) {
+            if (!event) { event = window.event; }
+            var target = event.target ? event.target : event.srcElement;
+            if (lastChecked && $.data(lastChecked) !== $.data(target) && event.shiftKey === true) {
+                var inrange = false;
+                $(lastChecked).prop("checked", target.checked)
+                    .parent().parent().toggleClass(options.selectedClass, target.checked);
+                $(actionCheckboxes).each(function() {
+                    if ($.data(this) === $.data(lastChecked) || $.data(this) === $.data(target)) {
+                        inrange = (inrange) ? false : true;
+                    }
+                    if (inrange) {
+                        $(this).prop("checked", target.checked)
+                            .parent().parent().toggleClass(options.selectedClass, target.checked);
+                    }
+                });
+            }
+            $(target).parent().parent().toggleClass(options.selectedClass, target.checked);
+            lastChecked = target;
+            updateCounter();
+        });
+        $('form#changelist-form table#result_list tr').find('td:gt(0) :input').change(function() {
+            list_editable_changed = true;
+        });
+        $('form#changelist-form button[name="index"]').click(function(event) {
+            if (list_editable_changed) {
+                return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."));
+            }
+        });
+        $('form#changelist-form input[name="_save"]').click(function(event) {
+            var action_changed = false;
+            $('select option:selected', options.actionContainer).each(function() {
+                if ($(this).val()) {
+                    action_changed = true;
+                }
+            });
+            if (action_changed) {
+                if (list_editable_changed) {
+                    return confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action."));
+                } else {
+                    return confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button."));
+                }
+            }
+        });
+    };
+    /* Setup plugin defaults */
+    $.fn.actions.defaults = {
+        actionContainer: "div.actions",
+        counterContainer: "span.action-counter",
+        allContainer: "div.actions span.all",
+        acrossInput: "div.actions input.select-across",
+        acrossQuestions: "div.actions span.question",
+        acrossClears: "div.actions span.clear",
+        allToggle: "#action-toggle",
+        selectedClass: "selected"
+    };
+})(django.jQuery);
diff --git a/www/web/static/admin/js/actions.min.js b/www/web/static/admin/js/actions.min.js
new file mode 100644
index 0000000..d0e87bc
--- /dev/null
+++ b/www/web/static/admin/js/actions.min.js
@@ -0,0 +1,6 @@
+(function(a){var f;a.fn.actions=function(q){var b=a.extend({},a.fn.actions.defaults,q),g=a(this),e=!1,k=function(){a(b.acrossClears).hide();a(b.acrossQuestions).show();a(b.allContainer).hide()},l=function(){a(b.acrossClears).show();a(b.acrossQuestions).hide();a(b.actionContainer).toggleClass(b.selectedClass);a(b.allContainer).show();a(b.counterContainer).hide()},m=function(){a(b.acrossClears).hide();a(b.acrossQuestions).hide();a(b.allContainer).hide();a(b.counterContainer).show()},n=function(){m();
+a(b.acrossInput).val(0);a(b.actionContainer).removeClass(b.selectedClass)},p=function(c){c?k():m();a(g).prop("checked",c).parent().parent().toggleClass(b.selectedClass,c)},h=function(){var c=a(g).filter(":checked").length;a(b.counterContainer).html(interpolate(ngettext("%(sel)s of %(cnt)s selected","%(sel)s of %(cnt)s selected",c),{sel:c,cnt:_actions_icnt},!0));a(b.allToggle).prop("checked",function(){var a;c===g.length?(a=!0,k()):(a=!1,n());return a})};a(b.counterContainer).show();a(this).filter(":checked").each(function(c){a(this).parent().parent().toggleClass(b.selectedClass);
+h();1===a(b.acrossInput).val()&&l()});a(b.allToggle).show().click(function(){p(a(this).prop("checked"));h()});a("a",b.acrossQuestions).click(function(c){c.preventDefault();a(b.acrossInput).val(1);l()});a("a",b.acrossClears).click(function(c){c.preventDefault();a(b.allToggle).prop("checked",!1);n();p(0);h()});f=null;a(g).click(function(c){c||(c=window.event);var d=c.target?c.target:c.srcElement;if(f&&a.data(f)!==a.data(d)&&!0===c.shiftKey){var e=!1;a(f).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,
+d.checked);a(g).each(function(){if(a.data(this)===a.data(f)||a.data(this)===a.data(d))e=e?!1:!0;e&&a(this).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked)})}a(d).parent().parent().toggleClass(b.selectedClass,d.checked);f=d;h()});a("form#changelist-form table#result_list tr").find("td:gt(0) :input").change(function(){e=!0});a('form#changelist-form button[name="index"]').click(function(a){if(e)return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."))});
+a('form#changelist-form input[name="_save"]').click(function(c){var d=!1;a("select option:selected",b.actionContainer).each(function(){a(this).val()&&(d=!0)});if(d)return e?confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")):confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button."))})};
+a.fn.actions.defaults={actionContainer:"div.actions",counterContainer:"span.action-counter",allContainer:"div.actions span.all",acrossInput:"div.actions input.select-across",acrossQuestions:"div.actions span.question",acrossClears:"div.actions span.clear",allToggle:"#action-toggle",selectedClass:"selected"}})(django.jQuery);
diff --git a/www/web/static/admin/js/admin/DateTimeShortcuts.js b/www/web/static/admin/js/admin/DateTimeShortcuts.js
new file mode 100644
index 0000000..d0acc23
--- /dev/null
+++ b/www/web/static/admin/js/admin/DateTimeShortcuts.js
@@ -0,0 +1,364 @@
+/*global addEvent, Calendar, cancelEventPropagation, findPosX, findPosY, getStyle, get_format, gettext, interpolate, ngettext, quickElement, removeEvent*/
+// Inserts shortcut buttons after all of the following:
+//     <input type="text" class="vDateField">
+//     <input type="text" class="vTimeField">
+(function() {
+    'use strict';
+    var DateTimeShortcuts = {
+        calendars: [],
+        calendarInputs: [],
+        clockInputs: [],
+        dismissClockFunc: [],
+        dismissCalendarFunc: [],
+        calendarDivName1: 'calendarbox', // name of calendar <div> that gets toggled
+        calendarDivName2: 'calendarin',  // name of <div> that contains calendar
+        calendarLinkName: 'calendarlink',// name of the link that is used to toggle
+        clockDivName: 'clockbox',        // name of clock <div> that gets toggled
+        clockLinkName: 'clocklink',      // name of the link that is used to toggle
+        shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts
+        timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch
+        timezoneOffset: 0,
+        init: function() {
+            var body = document.getElementsByTagName('body')[0];
+            var serverOffset = body.getAttribute('data-admin-utc-offset');
+            if (serverOffset !== undefined) {
+                var localOffset = new Date().getTimezoneOffset() * -60;
+                DateTimeShortcuts.timezoneOffset = localOffset - serverOffset;
+            }
+
+            var inputs = document.getElementsByTagName('input');
+            for (var i = 0; i < inputs.length; i++) {
+                var inp = inputs[i];
+                if (inp.getAttribute('type') === 'text' && inp.className.match(/vTimeField/)) {
+                    DateTimeShortcuts.addClock(inp);
+                    DateTimeShortcuts.addTimezoneWarning(inp);
+                }
+                else if (inp.getAttribute('type') === 'text' && inp.className.match(/vDateField/)) {
+                    DateTimeShortcuts.addCalendar(inp);
+                    DateTimeShortcuts.addTimezoneWarning(inp);
+                }
+            }
+        },
+        // Return the current time while accounting for the server timezone.
+        now: function() {
+            var body = document.getElementsByTagName('body')[0];
+            var serverOffset = body.getAttribute('data-admin-utc-offset');
+            if (serverOffset !== undefined) {
+                var localNow = new Date();
+                var localOffset = localNow.getTimezoneOffset() * -60;
+                localNow.setTime(localNow.getTime() + 1000 * (serverOffset - localOffset));
+                return localNow;
+            } else {
+                return new Date();
+            }
+        },
+        // Add a warning when the time zone in the browser and backend do not match.
+        addTimezoneWarning: function(inp) {
+            var $ = django.jQuery;
+            var warningClass = DateTimeShortcuts.timezoneWarningClass;
+            var timezoneOffset = DateTimeShortcuts.timezoneOffset / 3600;
+
+            // Only warn if there is a time zone mismatch.
+            if (!timezoneOffset) {
+                return;
+            }
+
+            // Check if warning is already there.
+            if ($(inp).siblings('.' + warningClass).length) {
+                return;
+            }
+
+            var message;
+            if (timezoneOffset > 0) {
+                message = ngettext(
+                    'Note: You are %s hour ahead of server time.',
+                    'Note: You are %s hours ahead of server time.',
+                    timezoneOffset
+                );
+            }
+            else {
+                timezoneOffset *= -1;
+                message = ngettext(
+                    'Note: You are %s hour behind server time.',
+                    'Note: You are %s hours behind server time.',
+                    timezoneOffset
+                );
+            }
+            message = interpolate(message, [timezoneOffset]);
+
+            var $warning = $('<span>');
+            $warning.attr('class', warningClass);
+            $warning.text(message);
+
+            $(inp).parent()
+                .append($('<br>'))
+                .append($warning);
+        },
+        // Add clock widget to a given field
+        addClock: function(inp) {
+            var num = DateTimeShortcuts.clockInputs.length;
+            DateTimeShortcuts.clockInputs[num] = inp;
+            DateTimeShortcuts.dismissClockFunc[num] = function() { DateTimeShortcuts.dismissClock(num); return true; };
+
+            // Shortcut links (clock icon and "Now" link)
+            var shortcuts_span = document.createElement('span');
+            shortcuts_span.className = DateTimeShortcuts.shortCutsClass;
+            inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);
+            var now_link = document.createElement('a');
+            now_link.setAttribute('href', "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", -1);");
+            now_link.appendChild(document.createTextNode(gettext('Now')));
+            var clock_link = document.createElement('a');
+            clock_link.setAttribute('href', 'javascript:DateTimeShortcuts.openClock(' + num + ');');
+            clock_link.id = DateTimeShortcuts.clockLinkName + num;
+            quickElement(
+                'span', clock_link, '',
+                'class', 'clock-icon',
+                'title', gettext('Choose a Time')
+            );
+            shortcuts_span.appendChild(document.createTextNode('\u00A0'));
+            shortcuts_span.appendChild(now_link);
+            shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0'));
+            shortcuts_span.appendChild(clock_link);
+
+            // Create clock link div
+            //
+            // Markup looks like:
+            // <div id="clockbox1" class="clockbox module">
+            //     <h2>Choose a time</h2>
+            //     <ul class="timelist">
+            //         <li><a href="#">Now</a></li>
+            //         <li><a href="#">Midnight</a></li>
+            //         <li><a href="#">6 a.m.</a></li>
+            //         <li><a href="#">Noon</a></li>
+            //         <li><a href="#">6 p.m.</a></li>
+            //     </ul>
+            //     <p class="calendar-cancel"><a href="#">Cancel</a></p>
+            // </div>
+
+            var clock_box = document.createElement('div');
+            clock_box.style.display = 'none';
+            clock_box.style.position = 'absolute';
+            clock_box.className = 'clockbox module';
+            clock_box.setAttribute('id', DateTimeShortcuts.clockDivName + num);
+            document.body.appendChild(clock_box);
+            addEvent(clock_box, 'click', cancelEventPropagation);
+
+            quickElement('h2', clock_box, gettext('Choose a time'));
+            var time_list = quickElement('ul', clock_box);
+            time_list.className = 'timelist';
+            quickElement("a", quickElement("li", time_list), gettext("Now"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", -1);");
+            quickElement("a", quickElement("li", time_list), gettext("Midnight"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 0);");
+            quickElement("a", quickElement("li", time_list), gettext("6 a.m."), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 6);");
+            quickElement("a", quickElement("li", time_list), gettext("Noon"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 12);");
+            quickElement("a", quickElement("li", time_list), gettext("6 p.m."), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 18);");
+
+            var cancel_p = quickElement('p', clock_box);
+            cancel_p.className = 'calendar-cancel';
+            quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissClock(' + num + ');');
+            django.jQuery(document).bind('keyup', function(event) {
+                if (event.which === 27) {
+                    // ESC key closes popup
+                    DateTimeShortcuts.dismissClock(num);
+                    event.preventDefault();
+                }
+            });
+        },
+        openClock: function(num) {
+            var clock_box = document.getElementById(DateTimeShortcuts.clockDivName + num);
+            var clock_link = document.getElementById(DateTimeShortcuts.clockLinkName + num);
+
+            // Recalculate the clockbox position
+            // is it left-to-right or right-to-left layout ?
+            if (getStyle(document.body, 'direction') !== 'rtl') {
+                clock_box.style.left = findPosX(clock_link) + 17 + 'px';
+            }
+            else {
+                // since style's width is in em, it'd be tough to calculate
+                // px value of it. let's use an estimated px for now
+                // TODO: IE returns wrong value for findPosX when in rtl mode
+                //       (it returns as it was left aligned), needs to be fixed.
+                clock_box.style.left = findPosX(clock_link) - 110 + 'px';
+            }
+            clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px';
+
+            // Show the clock box
+            clock_box.style.display = 'block';
+            addEvent(document, 'click', DateTimeShortcuts.dismissClockFunc[num]);
+        },
+        dismissClock: function(num) {
+            document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none';
+            removeEvent(document, 'click', DateTimeShortcuts.dismissClockFunc[num]);
+        },
+        handleClockQuicklink: function(num, val) {
+            var d;
+            if (val === -1) {
+                d = DateTimeShortcuts.now();
+            }
+            else {
+                d = new Date(1970, 1, 1, val, 0, 0, 0);
+            }
+            DateTimeShortcuts.clockInputs[num].value = d.strftime(get_format('TIME_INPUT_FORMATS')[0]);
+            DateTimeShortcuts.clockInputs[num].focus();
+            DateTimeShortcuts.dismissClock(num);
+        },
+        // Add calendar widget to a given field.
+        addCalendar: function(inp) {
+            var num = DateTimeShortcuts.calendars.length;
+
+            DateTimeShortcuts.calendarInputs[num] = inp;
+            DateTimeShortcuts.dismissCalendarFunc[num] = function() { DateTimeShortcuts.dismissCalendar(num); return true; };
+
+            // Shortcut links (calendar icon and "Today" link)
+            var shortcuts_span = document.createElement('span');
+            shortcuts_span.className = DateTimeShortcuts.shortCutsClass;
+            inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);
+            var today_link = document.createElement('a');
+            today_link.setAttribute('href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);');
+            today_link.appendChild(document.createTextNode(gettext('Today')));
+            var cal_link = document.createElement('a');
+            cal_link.setAttribute('href', 'javascript:DateTimeShortcuts.openCalendar(' + num + ');');
+            cal_link.id = DateTimeShortcuts.calendarLinkName + num;
+            quickElement(
+                'span', cal_link, '',
+                'class', 'date-icon',
+                'title', gettext('Choose a Date')
+            );
+            shortcuts_span.appendChild(document.createTextNode('\u00A0'));
+            shortcuts_span.appendChild(today_link);
+            shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0'));
+            shortcuts_span.appendChild(cal_link);
+
+            // Create calendarbox div.
+            //
+            // Markup looks like:
+            //
+            // <div id="calendarbox3" class="calendarbox module">
+            //     <h2>
+            //           <a href="#" class="link-previous">&lsaquo;</a>
+            //           <a href="#" class="link-next">&rsaquo;</a> February 2003
+            //     </h2>
+            //     <div class="calendar" id="calendarin3">
+            //         <!-- (cal) -->
+            //     </div>
+            //     <div class="calendar-shortcuts">
+            //          <a href="#">Yesterday</a> | <a href="#">Today</a> | <a href="#">Tomorrow</a>
+            //     </div>
+            //     <p class="calendar-cancel"><a href="#">Cancel</a></p>
+            // </div>
+            var cal_box = document.createElement('div');
+            cal_box.style.display = 'none';
+            cal_box.style.position = 'absolute';
+            cal_box.className = 'calendarbox module';
+            cal_box.setAttribute('id', DateTimeShortcuts.calendarDivName1 + num);
+            document.body.appendChild(cal_box);
+            addEvent(cal_box, 'click', cancelEventPropagation);
+
+            // next-prev links
+            var cal_nav = quickElement('div', cal_box);
+            var cal_nav_prev = quickElement('a', cal_nav, '<', 'href', 'javascript:DateTimeShortcuts.drawPrev(' + num + ');');
+            cal_nav_prev.className = 'calendarnav-previous';
+            var cal_nav_next = quickElement('a', cal_nav, '>', 'href', 'javascript:DateTimeShortcuts.drawNext(' + num + ');');
+            cal_nav_next.className = 'calendarnav-next';
+
+            // main box
+            var cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num);
+            cal_main.className = 'calendar';
+            DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num));
+            DateTimeShortcuts.calendars[num].drawCurrent();
+
+            // calendar shortcuts
+            var shortcuts = quickElement('div', cal_box);
+            shortcuts.className = 'calendar-shortcuts';
+            quickElement('a', shortcuts, gettext('Yesterday'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', -1);');
+            shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0'));
+            quickElement('a', shortcuts, gettext('Today'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);');
+            shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0'));
+            quickElement('a', shortcuts, gettext('Tomorrow'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', +1);');
+
+            // cancel bar
+            var cancel_p = quickElement('p', cal_box);
+            cancel_p.className = 'calendar-cancel';
+            quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissCalendar(' + num + ');');
+            django.jQuery(document).bind('keyup', function(event) {
+                if (event.which === 27) {
+                    // ESC key closes popup
+                    DateTimeShortcuts.dismissCalendar(num);
+                    event.preventDefault();
+                }
+            });
+        },
+        openCalendar: function(num) {
+            var cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1 + num);
+            var cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName + num);
+            var inp = DateTimeShortcuts.calendarInputs[num];
+
+            // Determine if the current value in the input has a valid date.
+            // If so, draw the calendar with that date's year and month.
+            if (inp.value) {
+                var format = get_format('DATE_INPUT_FORMATS')[0];
+                var selected = inp.value.strptime(format);
+                var year = selected.getFullYear();
+                var month = selected.getMonth() + 1;
+                var re = /\d{4}/;
+                if (re.test(year.toString()) && month >= 1 && month <= 12) {
+                    DateTimeShortcuts.calendars[num].drawDate(month, year, selected);
+                }
+            }
+
+            // Recalculate the clockbox position
+            // is it left-to-right or right-to-left layout ?
+            if (getStyle(document.body, 'direction') !== 'rtl') {
+                cal_box.style.left = findPosX(cal_link) + 17 + 'px';
+            }
+            else {
+                // since style's width is in em, it'd be tough to calculate
+                // px value of it. let's use an estimated px for now
+                // TODO: IE returns wrong value for findPosX when in rtl mode
+                //       (it returns as it was left aligned), needs to be fixed.
+                cal_box.style.left = findPosX(cal_link) - 180 + 'px';
+            }
+            cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px';
+
+            cal_box.style.display = 'block';
+            addEvent(document, 'click', DateTimeShortcuts.dismissCalendarFunc[num]);
+        },
+        dismissCalendar: function(num) {
+            document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none';
+            removeEvent(document, 'click', DateTimeShortcuts.dismissCalendarFunc[num]);
+        },
+        drawPrev: function(num) {
+            DateTimeShortcuts.calendars[num].drawPreviousMonth();
+        },
+        drawNext: function(num) {
+            DateTimeShortcuts.calendars[num].drawNextMonth();
+        },
+        handleCalendarCallback: function(num) {
+            var format = get_format('DATE_INPUT_FORMATS')[0];
+            // the format needs to be escaped a little
+            format = format.replace('\\', '\\\\');
+            format = format.replace('\r', '\\r');
+            format = format.replace('\n', '\\n');
+            format = format.replace('\t', '\\t');
+            format = format.replace("'", "\\'");
+            return ["function(y, m, d) { DateTimeShortcuts.calendarInputs[",
+                   num,
+                   "].value = new Date(y, m-1, d).strftime('",
+                   format,
+                   "');DateTimeShortcuts.calendarInputs[",
+                   num,
+                   "].focus();document.getElementById(DateTimeShortcuts.calendarDivName1+",
+                   num,
+                   ").style.display='none';}"].join('');
+        },
+        handleCalendarQuickLink: function(num, offset) {
+            var d = DateTimeShortcuts.now();
+            d.setDate(d.getDate() + offset);
+            DateTimeShortcuts.calendarInputs[num].value = d.strftime(get_format('DATE_INPUT_FORMATS')[0]);
+            DateTimeShortcuts.calendarInputs[num].focus();
+            DateTimeShortcuts.dismissCalendar(num);
+        }
+    };
+
+    addEvent(window, 'load', DateTimeShortcuts.init);
+    window.DateTimeShortcuts = DateTimeShortcuts;
+})();
diff --git a/www/web/static/admin/js/admin/RelatedObjectLookups.js b/www/web/static/admin/js/admin/RelatedObjectLookups.js
new file mode 100644
index 0000000..fa782fe
--- /dev/null
+++ b/www/web/static/admin/js/admin/RelatedObjectLookups.js
@@ -0,0 +1,160 @@
+/*global SelectBox, interpolate*/
+// Handles related-objects functionality: lookup link for raw_id_fields
+// and Add Another links.
+
+(function() {
+    'use strict';
+
+    function html_unescape(text) {
+        // Unescape a string that was escaped using django.utils.html.escape.
+        text = text.replace(/&lt;/g, '<');
+        text = text.replace(/&gt;/g, '>');
+        text = text.replace(/&quot;/g, '"');
+        text = text.replace(/&#39;/g, "'");
+        text = text.replace(/&amp;/g, '&');
+        return text;
+    }
+
+    // IE doesn't accept periods or dashes in the window name, but the element IDs
+    // we use to generate popup window names may contain them, therefore we map them
+    // to allowed characters in a reversible way so that we can locate the correct
+    // element when the popup window is dismissed.
+    function id_to_windowname(text) {
+        text = text.replace(/\./g, '__dot__');
+        text = text.replace(/\-/g, '__dash__');
+        return text;
+    }
+
+    function windowname_to_id(text) {
+        text = text.replace(/__dot__/g, '.');
+        text = text.replace(/__dash__/g, '-');
+        return text;
+    }
+
+    function showAdminPopup(triggeringLink, name_regexp, add_popup) {
+        var name = triggeringLink.id.replace(name_regexp, '');
+        name = id_to_windowname(name);
+        var href = triggeringLink.href;
+        if (add_popup) {
+            if (href.indexOf('?') === -1) {
+                href += '?_popup=1';
+            } else {
+                href += '&_popup=1';
+            }
+        }
+        var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
+        win.focus();
+        return false;
+    }
+
+    function showRelatedObjectLookupPopup(triggeringLink) {
+        return showAdminPopup(triggeringLink, /^lookup_/, true);
+    }
+
+    function dismissRelatedLookupPopup(win, chosenId) {
+        var name = windowname_to_id(win.name);
+        var elem = document.getElementById(name);
+        if (elem.className.indexOf('vManyToManyRawIdAdminField') !== -1 && elem.value) {
+            elem.value += ',' + chosenId;
+        } else {
+            document.getElementById(name).value = chosenId;
+        }
+        win.close();
+    }
+
+    function showRelatedObjectPopup(triggeringLink) {
+        return showAdminPopup(triggeringLink, /^(change|add|delete)_/, false);
+    }
+
+    function updateRelatedObjectLinks(triggeringLink) {
+        var $this = django.jQuery(triggeringLink);
+        var siblings = $this.nextAll('.change-related, .delete-related');
+        if (!siblings.length) {
+            return;
+        }
+        var value = $this.val();
+        if (value) {
+            siblings.each(function() {
+                var elm = django.jQuery(this);
+                elm.attr('href', elm.attr('data-href-template').replace('__fk__', value));
+            });
+        } else {
+            siblings.removeAttr('href');
+        }
+    }
+
+    function dismissAddRelatedObjectPopup(win, newId, newRepr) {
+        // newId and newRepr are expected to have previously been escaped by
+        // django.utils.html.escape.
+        newId = html_unescape(newId);
+        newRepr = html_unescape(newRepr);
+        var name = windowname_to_id(win.name);
+        var elem = document.getElementById(name);
+        if (elem) {
+            var elemName = elem.nodeName.toUpperCase();
+            if (elemName === 'SELECT') {
+                elem.options[elem.options.length] = new Option(newRepr, newId, true, true);
+            } else if (elemName === 'INPUT') {
+                if (elem.className.indexOf('vManyToManyRawIdAdminField') !== -1 && elem.value) {
+                    elem.value += ',' + newId;
+                } else {
+                    elem.value = newId;
+                }
+            }
+            // Trigger a change event to update related links if required.
+            django.jQuery(elem).trigger('change');
+        } else {
+            var toId = name + "_to";
+            var o = new Option(newRepr, newId);
+            SelectBox.add_to_cache(toId, o);
+            SelectBox.redisplay(toId);
+        }
+        win.close();
+    }
+
+    function dismissChangeRelatedObjectPopup(win, objId, newRepr, newId) {
+        objId = html_unescape(objId);
+        newRepr = html_unescape(newRepr);
+        var id = windowname_to_id(win.name).replace(/^edit_/, '');
+        var selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]);
+        var selects = django.jQuery(selectsSelector);
+        selects.find('option').each(function() {
+            if (this.value === objId) {
+                this.innerHTML = newRepr;
+                this.value = newId;
+            }
+        });
+        win.close();
+    }
+
+    function dismissDeleteRelatedObjectPopup(win, objId) {
+        objId = html_unescape(objId);
+        var id = windowname_to_id(win.name).replace(/^delete_/, '');
+        var selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]);
+        var selects = django.jQuery(selectsSelector);
+        selects.find('option').each(function() {
+            if (this.value === objId) {
+                django.jQuery(this).remove();
+            }
+        }).trigger('change');
+        win.close();
+    }
+
+    // Global for testing purposes
+    window.html_unescape = html_unescape;
+    window.id_to_windowname = id_to_windowname;
+    window.windowname_to_id = windowname_to_id;
+
+    window.showRelatedObjectLookupPopup = showRelatedObjectLookupPopup;
+    window.dismissRelatedLookupPopup = dismissRelatedLookupPopup;
+    window.showRelatedObjectPopup = showRelatedObjectPopup;
+    window.updateRelatedObjectLinks = updateRelatedObjectLinks;
+    window.dismissAddRelatedObjectPopup = dismissAddRelatedObjectPopup;
+    window.dismissChangeRelatedObjectPopup = dismissChangeRelatedObjectPopup;
+    window.dismissDeleteRelatedObjectPopup = dismissDeleteRelatedObjectPopup;
+
+    // Kept for backward compatibility
+    window.showAddAnotherPopup = showRelatedObjectPopup;
+    window.dismissAddAnotherPopup = dismissAddRelatedObjectPopup;
+
+})();
diff --git a/www/web/static/admin/js/calendar.js b/www/web/static/admin/js/calendar.js
new file mode 100644
index 0000000..1043dd6
--- /dev/null
+++ b/www/web/static/admin/js/calendar.js
@@ -0,0 +1,178 @@
+/*global gettext, get_format, quickElement, removeChildren*/
+/*
+calendar.js - Calendar functions by Adrian Holovaty
+depends on core.js for utility functions like removeChildren or quickElement
+*/
+
+(function() {
+    'use strict';
+    // CalendarNamespace -- Provides a collection of HTML calendar-related helper functions
+    var CalendarNamespace = {
+        monthsOfYear: gettext('January February March April May June July August September October November December').split(' '),
+        daysOfWeek: gettext('S M T W T F S').split(' '),
+        firstDayOfWeek: parseInt(get_format('FIRST_DAY_OF_WEEK')),
+        isLeapYear: function(year) {
+            return (((year % 4) === 0) && ((year % 100) !== 0 ) || ((year % 400) === 0));
+        },
+        getDaysInMonth: function(month, year) {
+            var days;
+            if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) {
+                days = 31;
+            }
+            else if (month === 4 || month === 6 || month === 9 || month === 11) {
+                days = 30;
+            }
+            else if (month === 2 && CalendarNamespace.isLeapYear(year)) {
+                days = 29;
+            }
+            else {
+                days = 28;
+            }
+            return days;
+        },
+        draw: function(month, year, div_id, callback, selected) { // month = 1-12, year = 1-9999
+            var today = new Date();
+            var todayDay = today.getDate();
+            var todayMonth = today.getMonth() + 1;
+            var todayYear = today.getFullYear();
+            var todayClass = '';
+
+            // Use UTC functions here because the date field does not contain time
+            // and using the UTC function variants prevent the local time offset
+            // from altering the date, specifically the day field.  For example:
+            //
+            // ```
+            // var x = new Date('2013-10-02');
+            // var day = x.getDate();
+            // ```
+            //
+            // The day variable above will be 1 instead of 2 in, say, US Pacific time
+            // zone.
+            var isSelectedMonth = false;
+            if (typeof selected !== 'undefined') {
+                isSelectedMonth = (selected.getUTCFullYear() === year && (selected.getUTCMonth() + 1) === month);
+            }
+
+            month = parseInt(month);
+            year = parseInt(year);
+            var calDiv = document.getElementById(div_id);
+            removeChildren(calDiv);
+            var calTable = document.createElement('table');
+            quickElement('caption', calTable, CalendarNamespace.monthsOfYear[month - 1] + ' ' + year);
+            var tableBody = quickElement('tbody', calTable);
+
+            // Draw days-of-week header
+            var tableRow = quickElement('tr', tableBody);
+            for (var i = 0; i < 7; i++) {
+                quickElement('th', tableRow, CalendarNamespace.daysOfWeek[(i + CalendarNamespace.firstDayOfWeek) % 7]);
+            }
+
+            var startingPos = new Date(year, month - 1, 1 - CalendarNamespace.firstDayOfWeek).getDay();
+            var days = CalendarNamespace.getDaysInMonth(month, year);
+
+            var nonDayCell;
+
+            // Draw blanks before first of month
+            tableRow = quickElement('tr', tableBody);
+            for (i = 0; i < startingPos; i++) {
+                nonDayCell = quickElement('td', tableRow, ' ');
+                nonDayCell.className = "nonday";
+            }
+
+            // Draw days of month
+            var currentDay = 1;
+            for (i = startingPos; currentDay <= days; i++) {
+                if (i % 7 === 0 && currentDay !== 1) {
+                    tableRow = quickElement('tr', tableBody);
+                }
+                if ((currentDay === todayDay) && (month === todayMonth) && (year === todayYear)) {
+                    todayClass = 'today';
+                } else {
+                    todayClass = '';
+                }
+
+                // use UTC function; see above for explanation.
+                if (isSelectedMonth && currentDay === selected.getUTCDate()) {
+                    if (todayClass !== '') {
+                        todayClass += " ";
+                    }
+                    todayClass += "selected";
+                }
+
+                var cell = quickElement('td', tableRow, '', 'class', todayClass);
+
+                quickElement('a', cell, currentDay, 'href', 'javascript:void(' + callback + '(' + year + ',' + month + ',' + currentDay + '));');
+                currentDay++;
+            }
+
+            // Draw blanks after end of month (optional, but makes for valid code)
+            while (tableRow.childNodes.length < 7) {
+                nonDayCell = quickElement('td', tableRow, ' ');
+                nonDayCell.className = "nonday";
+            }
+
+            calDiv.appendChild(calTable);
+        }
+    };
+
+    // Calendar -- A calendar instance
+    function Calendar(div_id, callback, selected) {
+        // div_id (string) is the ID of the element in which the calendar will
+        //     be displayed
+        // callback (string) is the name of a JavaScript function that will be
+        //     called with the parameters (year, month, day) when a day in the
+        //     calendar is clicked
+        this.div_id = div_id;
+        this.callback = callback;
+        this.today = new Date();
+        this.currentMonth = this.today.getMonth() + 1;
+        this.currentYear = this.today.getFullYear();
+        if (typeof selected !== 'undefined') {
+            this.selected = selected;
+        }
+    }
+    Calendar.prototype = {
+        drawCurrent: function() {
+            CalendarNamespace.draw(this.currentMonth, this.currentYear, this.div_id, this.callback, this.selected);
+        },
+        drawDate: function(month, year, selected) {
+            this.currentMonth = month;
+            this.currentYear = year;
+
+            if(selected) {
+                this.selected = selected;
+            }
+
+            this.drawCurrent();
+        },
+        drawPreviousMonth: function() {
+            if (this.currentMonth === 1) {
+                this.currentMonth = 12;
+                this.currentYear--;
+            }
+            else {
+                this.currentMonth--;
+            }
+            this.drawCurrent();
+        },
+        drawNextMonth: function() {
+            if (this.currentMonth === 12) {
+                this.currentMonth = 1;
+                this.currentYear++;
+            }
+            else {
+                this.currentMonth++;
+            }
+            this.drawCurrent();
+        },
+        drawPreviousYear: function() {
+            this.currentYear--;
+            this.drawCurrent();
+        },
+        drawNextYear: function() {
+            this.currentYear++;
+            this.drawCurrent();
+        }
+    };
+    window.Calendar = Calendar;
+})();
diff --git a/www/web/static/admin/js/collapse.js b/www/web/static/admin/js/collapse.js
new file mode 100644
index 0000000..7cb9362
--- /dev/null
+++ b/www/web/static/admin/js/collapse.js
@@ -0,0 +1,26 @@
+/*global gettext*/
+(function($) {
+    'use strict';
+    $(document).ready(function() {
+        // Add anchor tag for Show/Hide link
+        $("fieldset.collapse").each(function(i, elem) {
+            // Don't hide if fields in this fieldset have errors
+            if ($(elem).find("div.errors").length === 0) {
+                $(elem).addClass("collapsed").find("h2").first().append(' (<a id="fieldsetcollapser' +
+                    i + '" class="collapse-toggle" href="#">' + gettext("Show") +
+                    '</a>)');
+            }
+        });
+        // Add toggle to anchor tag
+        $("fieldset.collapse a.collapse-toggle").click(function(ev) {
+            if ($(this).closest("fieldset").hasClass("collapsed")) {
+                // Show
+                $(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset", [$(this).attr("id")]);
+            } else {
+                // Hide
+                $(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", [$(this).attr("id")]);
+            }
+            return false;
+        });
+    });
+})(django.jQuery);
diff --git a/www/web/static/admin/js/collapse.min.js b/www/web/static/admin/js/collapse.min.js
new file mode 100644
index 0000000..6251d91
--- /dev/null
+++ b/www/web/static/admin/js/collapse.min.js
@@ -0,0 +1,2 @@
+(function(a){a(document).ready(function(){a("fieldset.collapse").each(function(b,c){0===a(c).find("div.errors").length&&a(c).addClass("collapsed").find("h2").first().append(' (<a id="fieldsetcollapser'+b+'" class="collapse-toggle" href="#">'+gettext("Show")+"</a>)")});a("fieldset.collapse a.collapse-toggle").click(function(b){a(this).closest("fieldset").hasClass("collapsed")?a(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset",[a(this).attr("id")]):a(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset",
+[a(this).attr("id")]);return!1})})})(django.jQuery);
diff --git a/www/web/static/admin/js/core.js b/www/web/static/admin/js/core.js
new file mode 100644
index 0000000..34f9926
--- /dev/null
+++ b/www/web/static/admin/js/core.js
@@ -0,0 +1,263 @@
+// Core javascript helper functions
+
+// basic browser identification & version
+var isOpera = (navigator.userAgent.indexOf("Opera") >= 0) && parseFloat(navigator.appVersion);
+var isIE = ((document.all) && (!isOpera)) && parseFloat(navigator.appVersion.split("MSIE ")[1].split(";")[0]);
+
+// Cross-browser event handlers.
+function addEvent(obj, evType, fn) {
+    'use strict';
+    if (obj.addEventListener) {
+        obj.addEventListener(evType, fn, false);
+        return true;
+    } else if (obj.attachEvent) {
+        var r = obj.attachEvent("on" + evType, fn);
+        return r;
+    } else {
+        return false;
+    }
+}
+
+function removeEvent(obj, evType, fn) {
+    'use strict';
+    if (obj.removeEventListener) {
+        obj.removeEventListener(evType, fn, false);
+        return true;
+    } else if (obj.detachEvent) {
+        obj.detachEvent("on" + evType, fn);
+        return true;
+    } else {
+        return false;
+    }
+}
+
+function cancelEventPropagation(e) {
+    'use strict';
+    if (!e) {
+        e = window.event;
+    }
+    e.cancelBubble = true;
+    if (e.stopPropagation) {
+        e.stopPropagation();
+    }
+}
+
+// quickElement(tagType, parentReference [, textInChildNode, attribute, attributeValue ...]);
+function quickElement() {
+    'use strict';
+    var obj = document.createElement(arguments[0]);
+    if (arguments[2]) {
+        var textNode = document.createTextNode(arguments[2]);
+        obj.appendChild(textNode);
+    }
+    var len = arguments.length;
+    for (var i = 3; i < len; i += 2) {
+        obj.setAttribute(arguments[i], arguments[i + 1]);
+    }
+    arguments[1].appendChild(obj);
+    return obj;
+}
+
+// "a" is reference to an object
+function removeChildren(a) {
+    'use strict';
+    while (a.hasChildNodes()) {
+        a.removeChild(a.lastChild);
+    }
+}
+
+// ----------------------------------------------------------------------------
+// Cross-browser xmlhttp object
+// from http://jibbering.com/2002/4/httprequest.html
+// ----------------------------------------------------------------------------
+var xmlhttp;
+/*@cc_on @*/
+/*@if (@_jscript_version >= 5)
+    try {
+        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
+    } catch (e) {
+        try {
+            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
+        } catch (E) {
+            xmlhttp = false;
+        }
+    }
+@else
+    xmlhttp = false;
+@end @*/
+if (!xmlhttp && typeof XMLHttpRequest !== 'undefined') {
+    xmlhttp = new XMLHttpRequest();
+}
+
+// ----------------------------------------------------------------------------
+// Find-position functions by PPK
+// See http://www.quirksmode.org/js/findpos.html
+// ----------------------------------------------------------------------------
+function findPosX(obj) {
+    'use strict';
+    var curleft = 0;
+    if (obj.offsetParent) {
+        while (obj.offsetParent) {
+            curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft);
+            obj = obj.offsetParent;
+        }
+        // IE offsetParent does not include the top-level
+        if (isIE && obj.parentElement) {
+            curleft += obj.offsetLeft - obj.scrollLeft;
+        }
+    } else if (obj.x) {
+        curleft += obj.x;
+    }
+    return curleft;
+}
+
+function findPosY(obj) {
+    'use strict';
+    var curtop = 0;
+    if (obj.offsetParent) {
+        while (obj.offsetParent) {
+            curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop);
+            obj = obj.offsetParent;
+        }
+        // IE offsetParent does not include the top-level
+        if (isIE && obj.parentElement) {
+            curtop += obj.offsetTop - obj.scrollTop;
+        }
+    } else if (obj.y) {
+        curtop += obj.y;
+    }
+    return curtop;
+}
+
+//-----------------------------------------------------------------------------
+// Date object extensions
+// ----------------------------------------------------------------------------
+(function() {
+    'use strict';
+    Date.prototype.getTwelveHours = function() {
+        var hours = this.getHours();
+        if (hours === 0) {
+            return 12;
+        }
+        else {
+            return hours <= 12 ? hours : hours - 12;
+        }
+    };
+
+    Date.prototype.getTwoDigitMonth = function() {
+        return (this.getMonth() < 9) ? '0' + (this.getMonth() + 1) : (this.getMonth() + 1);
+    };
+
+    Date.prototype.getTwoDigitDate = function() {
+        return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate();
+    };
+
+    Date.prototype.getTwoDigitTwelveHour = function() {
+        return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours();
+    };
+
+    Date.prototype.getTwoDigitHour = function() {
+        return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours();
+    };
+
+    Date.prototype.getTwoDigitMinute = function() {
+        return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes();
+    };
+
+    Date.prototype.getTwoDigitSecond = function() {
+        return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds();
+    };
+
+    Date.prototype.getHourMinute = function() {
+        return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute();
+    };
+
+    Date.prototype.getHourMinuteSecond = function() {
+        return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute() + ':' + this.getTwoDigitSecond();
+    };
+
+    Date.prototype.strftime = function(format) {
+        var fields = {
+            c: this.toString(),
+            d: this.getTwoDigitDate(),
+            H: this.getTwoDigitHour(),
+            I: this.getTwoDigitTwelveHour(),
+            m: this.getTwoDigitMonth(),
+            M: this.getTwoDigitMinute(),
+            p: (this.getHours() >= 12) ? 'PM' : 'AM',
+            S: this.getTwoDigitSecond(),
+            w: '0' + this.getDay(),
+            x: this.toLocaleDateString(),
+            X: this.toLocaleTimeString(),
+            y: ('' + this.getFullYear()).substr(2, 4),
+            Y: '' + this.getFullYear(),
+            '%': '%'
+        };
+        var result = '', i = 0;
+        while (i < format.length) {
+            if (format.charAt(i) === '%') {
+                result = result + fields[format.charAt(i + 1)];
+                ++i;
+            }
+            else {
+                result = result + format.charAt(i);
+            }
+            ++i;
+        }
+        return result;
+    };
+
+// ----------------------------------------------------------------------------
+// String object extensions
+// ----------------------------------------------------------------------------
+    String.prototype.pad_left = function(pad_length, pad_string) {
+        var new_string = this;
+        for (var i = 0; new_string.length < pad_length; i++) {
+            new_string = pad_string + new_string;
+        }
+        return new_string;
+    };
+
+    String.prototype.strptime = function(format) {
+        var split_format = format.split(/[.\-/]/);
+        var date = this.split(/[.\-/]/);
+        var i = 0;
+        var day, month, year;
+        while (i < split_format.length) {
+            switch (split_format[i]) {
+                case "%d":
+                    day = date[i];
+                    break;
+                case "%m":
+                    month = date[i] - 1;
+                    break;
+                case "%Y":
+                    year = date[i];
+                    break;
+                case "%y":
+                    year = date[i];
+                    break;
+            }
+            ++i;
+        }
+        return new Date(year, month, day);
+    };
+
+})();
+// ----------------------------------------------------------------------------
+// Get the computed style for and element
+// ----------------------------------------------------------------------------
+function getStyle(oElm, strCssRule) {
+    'use strict';
+    var strValue = "";
+    if(document.defaultView && document.defaultView.getComputedStyle) {
+        strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
+    }
+    else if(oElm.currentStyle) {
+        strCssRule = strCssRule.replace(/\-(\w)/g, function(strMatch, p1) {
+            return p1.toUpperCase();
+        });
+        strValue = oElm.currentStyle[strCssRule];
+    }
+    return strValue;
+}
diff --git a/www/web/static/admin/js/inlines.js b/www/web/static/admin/js/inlines.js
new file mode 100644
index 0000000..c725e30
--- /dev/null
+++ b/www/web/static/admin/js/inlines.js
@@ -0,0 +1,275 @@
+/*global DateTimeShortcuts, SelectFilter*/
+/**
+ * Django admin inlines
+ *
+ * Based on jQuery Formset 1.1
+ * @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com)
+ * @requires jQuery 1.2.6 or later
+ *
+ * Copyright (c) 2009, Stanislaus Madueke
+ * All rights reserved.
+ *
+ * Spiced up with Code from Zain Memon's GSoC project 2009
+ * and modified for Django by Jannis Leidel, Travis Swicegood and Julien Phalip.
+ *
+ * Licensed under the New BSD License
+ * See: http://www.opensource.org/licenses/bsd-license.php
+ */
+(function($) {
+    'use strict';
+    $.fn.formset = function(opts) {
+        var options = $.extend({}, $.fn.formset.defaults, opts);
+        var $this = $(this);
+        var $parent = $this.parent();
+        var updateElementIndex = function(el, prefix, ndx) {
+            var id_regex = new RegExp("(" + prefix + "-(\\d+|__prefix__))");
+            var replacement = prefix + "-" + ndx;
+            if ($(el).prop("for")) {
+                $(el).prop("for", $(el).prop("for").replace(id_regex, replacement));
+            }
+            if (el.id) {
+                el.id = el.id.replace(id_regex, replacement);
+            }
+            if (el.name) {
+                el.name = el.name.replace(id_regex, replacement);
+            }
+        };
+        var totalForms = $("#id_" + options.prefix + "-TOTAL_FORMS").prop("autocomplete", "off");
+        var nextIndex = parseInt(totalForms.val(), 10);
+        var maxForms = $("#id_" + options.prefix + "-MAX_NUM_FORMS").prop("autocomplete", "off");
+        // only show the add button if we are allowed to add more items,
+        // note that max_num = None translates to a blank string.
+        var showAddButton = maxForms.val() === '' || (maxForms.val() - totalForms.val()) > 0;
+        $this.each(function(i) {
+            $(this).not("." + options.emptyCssClass).addClass(options.formCssClass);
+        });
+        if ($this.length && showAddButton) {
+            var addButton;
+            if ($this.prop("tagName") === "TR") {
+                // If forms are laid out as table rows, insert the
+                // "add" button in a new table row:
+                var numCols = this.eq(-1).children().length;
+                $parent.append('<tr class="' + options.addCssClass + '"><td colspan="' + numCols + '"><a href="javascript:void(0)">' + options.addText + "</a></tr>");
+                addButton = $parent.find("tr:last a");
+            } else {
+                // Otherwise, insert it immediately after the last form:
+                $this.filter(":last").after('<div class="' + options.addCssClass + '"><a href="javascript:void(0)">' + options.addText + "</a></div>");
+                addButton = $this.filter(":last").next().find("a");
+            }
+            addButton.click(function(e) {
+                e.preventDefault();
+                var template = $("#" + options.prefix + "-empty");
+                var row = template.clone(true);
+                row.removeClass(options.emptyCssClass)
+                .addClass(options.formCssClass)
+                .attr("id", options.prefix + "-" + nextIndex);
+                if (row.is("tr")) {
+                    // If the forms are laid out in table rows, insert
+                    // the remove button into the last table cell:
+                    row.children(":last").append('<div><a class="' + options.deleteCssClass + '" href="javascript:void(0)">' + options.deleteText + "</a></div>");
+                } else if (row.is("ul") || row.is("ol")) {
+                    // If they're laid out as an ordered/unordered list,
+                    // insert an <li> after the last list item:
+                    row.append('<li><a class="' + options.deleteCssClass + '" href="javascript:void(0)">' + options.deleteText + "</a></li>");
+                } else {
+                    // Otherwise, just insert the remove button as the
+                    // last child element of the form's container:
+                    row.children(":first").append('<span><a class="' + options.deleteCssClass + '" href="javascript:void(0)">' + options.deleteText + "</a></span>");
+                }
+                row.find("*").each(function() {
+                    updateElementIndex(this, options.prefix, totalForms.val());
+                });
+                // Insert the new form when it has been fully edited
+                row.insertBefore($(template));
+                // Update number of total forms
+                $(totalForms).val(parseInt(totalForms.val(), 10) + 1);
+                nextIndex += 1;
+                // Hide add button in case we've hit the max, except we want to add infinitely
+                if ((maxForms.val() !== '') && (maxForms.val() - totalForms.val()) <= 0) {
+                    addButton.parent().hide();
+                }
+                // The delete button of each row triggers a bunch of other things
+                row.find("a." + options.deleteCssClass).click(function(e1) {
+                    e1.preventDefault();
+                    // Remove the parent form containing this button:
+                    row.remove();
+                    nextIndex -= 1;
+                    // If a post-delete callback was provided, call it with the deleted form:
+                    if (options.removed) {
+                        options.removed(row);
+                    }
+                    $(document).trigger('formset:removed', [row, options.prefix]);
+                    // Update the TOTAL_FORMS form count.
+                    var forms = $("." + options.formCssClass);
+                    $("#id_" + options.prefix + "-TOTAL_FORMS").val(forms.length);
+                    // Show add button again once we drop below max
+                    if ((maxForms.val() === '') || (maxForms.val() - forms.length) > 0) {
+                        addButton.parent().show();
+                    }
+                    // Also, update names and ids for all remaining form controls
+                    // so they remain in sequence:
+                    var i, formCount;
+                    var updateElementCallback = function() {
+                        updateElementIndex(this, options.prefix, i);
+                    };
+                    for (i = 0, formCount = forms.length; i < formCount; i++) {
+                        updateElementIndex($(forms).get(i), options.prefix, i);
+                        $(forms.get(i)).find("*").each(updateElementCallback);
+                    }
+                });
+                // If a post-add callback was supplied, call it with the added form:
+                if (options.added) {
+                    options.added(row);
+                }
+                $(document).trigger('formset:added', [row, options.prefix]);
+            });
+        }
+        return this;
+    };
+
+    /* Setup plugin defaults */
+    $.fn.formset.defaults = {
+        prefix: "form",          // The form prefix for your django formset
+        addText: "add another",      // Text for the add link
+        deleteText: "remove",      // Text for the delete link
+        addCssClass: "add-row",      // CSS class applied to the add link
+        deleteCssClass: "delete-row",  // CSS class applied to the delete link
+        emptyCssClass: "empty-row",    // CSS class applied to the empty row
+        formCssClass: "dynamic-form",  // CSS class applied to each form in a formset
+        added: null,          // Function called each time a new form is added
+        removed: null          // Function called each time a form is deleted
+    };
+
+
+    // Tabular inlines ---------------------------------------------------------
+    $.fn.tabularFormset = function(options) {
+        var $rows = $(this);
+        var alternatingRows = function(row) {
+            $($rows.selector).not(".add-row").removeClass("row1 row2")
+            .filter(":even").addClass("row1").end()
+            .filter(":odd").addClass("row2");
+        };
+
+        var reinitDateTimeShortCuts = function() {
+            // Reinitialize the calendar and clock widgets by force
+            if (typeof DateTimeShortcuts !== "undefined") {
+                $(".datetimeshortcuts").remove();
+                DateTimeShortcuts.init();
+            }
+        };
+
+        var updateSelectFilter = function() {
+            // If any SelectFilter widgets are a part of the new form,
+            // instantiate a new SelectFilter instance for it.
+            if (typeof SelectFilter !== 'undefined') {
+                $('.selectfilter').each(function(index, value) {
+                    var namearr = value.name.split('-');
+                    SelectFilter.init(value.id, namearr[namearr.length - 1], false);
+                });
+                $('.selectfilterstacked').each(function(index, value) {
+                    var namearr = value.name.split('-');
+                    SelectFilter.init(value.id, namearr[namearr.length - 1], true);
+                });
+            }
+        };
+
+        var initPrepopulatedFields = function(row) {
+            row.find('.prepopulated_field').each(function() {
+                var field = $(this),
+                    input = field.find('input, select, textarea'),
+                    dependency_list = input.data('dependency_list') || [],
+                    dependencies = [];
+                $.each(dependency_list, function(i, field_name) {
+                    dependencies.push('#' + row.find('.field-' + field_name).find('input, select, textarea').attr('id'));
+                });
+                if (dependencies.length) {
+                    input.prepopulate(dependencies, input.attr('maxlength'));
+                }
+            });
+        };
+
+        $rows.formset({
+            prefix: options.prefix,
+            addText: options.addText,
+            formCssClass: "dynamic-" + options.prefix,
+            deleteCssClass: "inline-deletelink",
+            deleteText: options.deleteText,
+            emptyCssClass: "empty-form",
+            removed: alternatingRows,
+            added: function(row) {
+                initPrepopulatedFields(row);
+                reinitDateTimeShortCuts();
+                updateSelectFilter();
+                alternatingRows(row);
+            }
+        });
+
+        return $rows;
+    };
+
+    // Stacked inlines ---------------------------------------------------------
+    $.fn.stackedFormset = function(options) {
+        var $rows = $(this);
+        var updateInlineLabel = function(row) {
+            $($rows.selector).find(".inline_label").each(function(i) {
+                var count = i + 1;
+                $(this).html($(this).html().replace(/(#\d+)/g, "#" + count));
+            });
+        };
+
+        var reinitDateTimeShortCuts = function() {
+            // Reinitialize the calendar and clock widgets by force, yuck.
+            if (typeof DateTimeShortcuts !== "undefined") {
+                $(".datetimeshortcuts").remove();
+                DateTimeShortcuts.init();
+            }
+        };
+
+        var updateSelectFilter = function() {
+            // If any SelectFilter widgets were added, instantiate a new instance.
+            if (typeof SelectFilter !== "undefined") {
+                $(".selectfilter").each(function(index, value) {
+                    var namearr = value.name.split('-');
+                    SelectFilter.init(value.id, namearr[namearr.length - 1], false);
+                });
+                $(".selectfilterstacked").each(function(index, value) {
+                    var namearr = value.name.split('-');
+                    SelectFilter.init(value.id, namearr[namearr.length - 1], true);
+                });
+            }
+        };
+
+        var initPrepopulatedFields = function(row) {
+            row.find('.prepopulated_field').each(function() {
+                var field = $(this),
+                    input = field.find('input, select, textarea'),
+                    dependency_list = input.data('dependency_list') || [],
+                    dependencies = [];
+                $.each(dependency_list, function(i, field_name) {
+                    dependencies.push('#' + row.find('.form-row .field-' + field_name).find('input, select, textarea').attr('id'));
+                });
+                if (dependencies.length) {
+                    input.prepopulate(dependencies, input.attr('maxlength'));
+                }
+            });
+        };
+
+        $rows.formset({
+            prefix: options.prefix,
+            addText: options.addText,
+            formCssClass: "dynamic-" + options.prefix,
+            deleteCssClass: "inline-deletelink",
+            deleteText: options.deleteText,
+            emptyCssClass: "empty-form",
+            removed: updateInlineLabel,
+            added: function(row) {
+                initPrepopulatedFields(row);
+                reinitDateTimeShortCuts();
+                updateSelectFilter();
+                updateInlineLabel(row);
+            }
+        });
+
+        return $rows;
+    };
+})(django.jQuery);
diff --git a/www/web/static/admin/js/inlines.min.js b/www/web/static/admin/js/inlines.min.js
new file mode 100644
index 0000000..f83cbec
--- /dev/null
+++ b/www/web/static/admin/js/inlines.min.js
@@ -0,0 +1,9 @@
+(function(b){b.fn.formset=function(d){var a=b.extend({},b.fn.formset.defaults,d),e=b(this);d=e.parent();var k=function(a,f,l){var c=new RegExp("("+f+"-(\\d+|__prefix__))");f=f+"-"+l;b(a).prop("for")&&b(a).prop("for",b(a).prop("for").replace(c,f));a.id&&(a.id=a.id.replace(c,f));a.name&&(a.name=a.name.replace(c,f))},h=b("#id_"+a.prefix+"-TOTAL_FORMS").prop("autocomplete","off"),l=parseInt(h.val(),10),f=b("#id_"+a.prefix+"-MAX_NUM_FORMS").prop("autocomplete","off"),c=""===f.val()||0<f.val()-h.val();
+e.each(function(f){b(this).not("."+a.emptyCssClass).addClass(a.formCssClass)});if(e.length&&c){var m;"TR"===e.prop("tagName")?(e=this.eq(-1).children().length,d.append('<tr class="'+a.addCssClass+'"><td colspan="'+e+'"><a href="javascript:void(0)">'+a.addText+"</a></tr>"),m=d.find("tr:last a")):(e.filter(":last").after('<div class="'+a.addCssClass+'"><a href="javascript:void(0)">'+a.addText+"</a></div>"),m=e.filter(":last").next().find("a"));m.click(function(c){c.preventDefault();c=b("#"+a.prefix+
+"-empty");var g=c.clone(!0);g.removeClass(a.emptyCssClass).addClass(a.formCssClass).attr("id",a.prefix+"-"+l);g.is("tr")?g.children(":last").append('<div><a class="'+a.deleteCssClass+'" href="javascript:void(0)">'+a.deleteText+"</a></div>"):g.is("ul")||g.is("ol")?g.append('<li><a class="'+a.deleteCssClass+'" href="javascript:void(0)">'+a.deleteText+"</a></li>"):g.children(":first").append('<span><a class="'+a.deleteCssClass+'" href="javascript:void(0)">'+a.deleteText+"</a></span>");g.find("*").each(function(){k(this,
+a.prefix,h.val())});g.insertBefore(b(c));b(h).val(parseInt(h.val(),10)+1);l+=1;""!==f.val()&&0>=f.val()-h.val()&&m.parent().hide();g.find("a."+a.deleteCssClass).click(function(c){c.preventDefault();g.remove();--l;a.removed&&a.removed(g);b(document).trigger("formset:removed",[g,a.prefix]);c=b("."+a.formCssClass);b("#id_"+a.prefix+"-TOTAL_FORMS").val(c.length);(""===f.val()||0<f.val()-c.length)&&m.parent().show();var d,e,h=function(){k(this,a.prefix,d)};d=0;for(e=c.length;d<e;d++)k(b(c).get(d),a.prefix,
+d),b(c.get(d)).find("*").each(h)});a.added&&a.added(g);b(document).trigger("formset:added",[g,a.prefix])})}return this};b.fn.formset.defaults={prefix:"form",addText:"add another",deleteText:"remove",addCssClass:"add-row",deleteCssClass:"delete-row",emptyCssClass:"empty-row",formCssClass:"dynamic-form",added:null,removed:null};b.fn.tabularFormset=function(d){var a=b(this),e=function(l){b(a.selector).not(".add-row").removeClass("row1 row2").filter(":even").addClass("row1").end().filter(":odd").addClass("row2")},
+k=function(){"undefined"!==typeof SelectFilter&&(b(".selectfilter").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],!1)}),b(".selectfilterstacked").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],!0)}))},h=function(a){a.find(".prepopulated_field").each(function(){var f=b(this).find("input, select, textarea"),c=f.data("dependency_list")||[],d=[];b.each(c,function(b,c){d.push("#"+a.find(".field-"+c).find("input, select, textarea").attr("id"))});
+d.length&&f.prepopulate(d,f.attr("maxlength"))})};a.formset({prefix:d.prefix,addText:d.addText,formCssClass:"dynamic-"+d.prefix,deleteCssClass:"inline-deletelink",deleteText:d.deleteText,emptyCssClass:"empty-form",removed:e,added:function(a){h(a);"undefined"!==typeof DateTimeShortcuts&&(b(".datetimeshortcuts").remove(),DateTimeShortcuts.init());k();e(a)}});return a};b.fn.stackedFormset=function(d){var a=b(this),e=function(d){b(a.selector).find(".inline_label").each(function(a){a+=1;b(this).html(b(this).html().replace(/(#\d+)/g,
+"#"+a))})},k=function(){"undefined"!==typeof SelectFilter&&(b(".selectfilter").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],!1)}),b(".selectfilterstacked").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],!0)}))},h=function(a){a.find(".prepopulated_field").each(function(){var d=b(this).find("input, select, textarea"),c=d.data("dependency_list")||[],e=[];b.each(c,function(b,c){e.push("#"+a.find(".form-row .field-"+c).find("input, select, textarea").attr("id"))});
+e.length&&d.prepopulate(e,d.attr("maxlength"))})};a.formset({prefix:d.prefix,addText:d.addText,formCssClass:"dynamic-"+d.prefix,deleteCssClass:"inline-deletelink",deleteText:d.deleteText,emptyCssClass:"empty-form",removed:e,added:function(a){h(a);"undefined"!==typeof DateTimeShortcuts&&(b(".datetimeshortcuts").remove(),DateTimeShortcuts.init());k();e(a)}});return a}})(django.jQuery);
diff --git a/www/web/static/admin/js/jquery.init.js b/www/web/static/admin/js/jquery.init.js
new file mode 100644
index 0000000..f3ac162
--- /dev/null
+++ b/www/web/static/admin/js/jquery.init.js
@@ -0,0 +1,8 @@
+/*global django:true, jQuery:false*/
+/* Puts the included jQuery into our own namespace using noConflict and passing
+ * it 'true'. This ensures that the included jQuery doesn't pollute the global
+ * namespace (i.e. this preserves pre-existing values for both window.$ and
+ * window.jQuery).
+ */
+var django = django || {};
+django.jQuery = jQuery.noConflict(true);
diff --git a/www/web/static/admin/js/prepopulate.js b/www/web/static/admin/js/prepopulate.js
new file mode 100644
index 0000000..5d4b0e8
--- /dev/null
+++ b/www/web/static/admin/js/prepopulate.js
@@ -0,0 +1,42 @@
+/*global URLify*/
+(function($) {
+    'use strict';
+    $.fn.prepopulate = function(dependencies, maxLength, allowUnicode) {
+        /*
+            Depends on urlify.js
+            Populates a selected field with the values of the dependent fields,
+            URLifies and shortens the string.
+            dependencies - array of dependent fields ids
+            maxLength - maximum length of the URLify'd string
+            allowUnicode - Unicode support of the URLify'd string
+        */
+        return this.each(function() {
+            var prepopulatedField = $(this);
+
+            var populate = function() {
+                // Bail if the field's value has been changed by the user
+                if (prepopulatedField.data('_changed')) {
+                    return;
+                }
+
+                var values = [];
+                $.each(dependencies, function(i, field) {
+                    field = $(field);
+                    if (field.val().length > 0) {
+                        values.push(field.val());
+                    }
+                });
+                prepopulatedField.val(URLify(values.join(' '), maxLength, allowUnicode));
+            };
+
+            prepopulatedField.data('_changed', false);
+            prepopulatedField.change(function() {
+                prepopulatedField.data('_changed', true);
+            });
+
+            if (!prepopulatedField.val()) {
+                $(dependencies.join(',')).keyup(populate).change(populate).focus(populate);
+            }
+        });
+    };
+})(django.jQuery);
diff --git a/www/web/static/admin/js/prepopulate.min.js b/www/web/static/admin/js/prepopulate.min.js
new file mode 100644
index 0000000..75f3c17
--- /dev/null
+++ b/www/web/static/admin/js/prepopulate.min.js
@@ -0,0 +1 @@
+(function(c){c.fn.prepopulate=function(e,f,g){return this.each(function(){var a=c(this),b=function(){if(!a.data("_changed")){var b=[];c.each(e,function(a,d){d=c(d);0<d.val().length&&b.push(d.val())});a.val(URLify(b.join(" "),f,g))}};a.data("_changed",!1);a.change(function(){a.data("_changed",!0)});a.val()||c(e.join(",")).keyup(b).change(b).focus(b)})}})(django.jQuery);
diff --git a/www/web/static/admin/js/timeparse.js b/www/web/static/admin/js/timeparse.js
new file mode 100644
index 0000000..3cdc7ec
--- /dev/null
+++ b/www/web/static/admin/js/timeparse.js
@@ -0,0 +1,106 @@
+(function() {
+    'use strict';
+    var timeParsePatterns = [
+        // 9
+        {
+            re: /^\d{1,2}$/i,
+            handler: function(bits) {
+                if (bits[0].length === 1) {
+                    return '0' + bits[0] + ':00';
+                } else {
+                    return bits[0] + ':00';
+                }
+            }
+        },
+        // 13:00
+        {
+            re: /^\d{2}[:.]\d{2}$/i,
+            handler: function(bits) {
+                return bits[0].replace('.', ':');
+            }
+        },
+        // 9:00
+        {
+            re: /^\d[:.]\d{2}$/i,
+            handler: function(bits) {
+                return '0' + bits[0].replace('.', ':');
+            }
+        },
+        // 3 am / 3 a.m. / 3am
+        {
+            re: /^(\d+)\s*([ap])(?:.?m.?)?$/i,
+            handler: function(bits) {
+                var hour = parseInt(bits[1]);
+                if (hour === 12) {
+                    hour = 0;
+                }
+                if (bits[2].toLowerCase() === 'p') {
+                    if (hour === 12) {
+                        hour = 0;
+                    }
+                    return (hour + 12) + ':00';
+                } else {
+                    if (hour < 10) {
+                        return '0' + hour + ':00';
+                    } else {
+                        return hour + ':00';
+                    }
+                }
+            }
+        },
+        // 3.30 am / 3:15 a.m. / 3.00am
+        {
+            re: /^(\d+)[.:](\d{2})\s*([ap]).?m.?$/i,
+            handler: function(bits) {
+                var hour = parseInt(bits[1]);
+                var mins = parseInt(bits[2]);
+                if (mins < 10) {
+                    mins = '0' + mins;
+                }
+                if (hour === 12) {
+                    hour = 0;
+                }
+                if (bits[3].toLowerCase() === 'p') {
+                    if (hour === 12) {
+                        hour = 0;
+                    }
+                    return (hour + 12) + ':' + mins;
+                } else {
+                    if (hour < 10) {
+                        return '0' + hour + ':' + mins;
+                    } else {
+                        return hour + ':' + mins;
+                    }
+                }
+            }
+        },
+        // noon
+        {
+            re: /^no/i,
+            handler: function(bits) {
+                return '12:00';
+            }
+        },
+        // midnight
+        {
+            re: /^mid/i,
+            handler: function(bits) {
+                return '00:00';
+            }
+        }
+    ];
+
+    function parseTimeString(s) {
+        for (var i = 0; i < timeParsePatterns.length; i++) {
+            var re = timeParsePatterns[i].re;
+            var handler = timeParsePatterns[i].handler;
+            var bits = re.exec(s);
+            if (bits) {
+                return handler(bits);
+            }
+        }
+        return s;
+    }
+
+    window.parseTimeString = parseTimeString;
+})();
diff --git a/www/web/static/admin/js/urlify.js b/www/web/static/admin/js/urlify.js
new file mode 100644
index 0000000..b27325e
--- /dev/null
+++ b/www/web/static/admin/js/urlify.js
@@ -0,0 +1,171 @@
+/*global XRegExp*/
+(function() {
+    'use strict';
+
+    var LATIN_MAP = {
+        'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE',
+        'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I',
+        'Î': 'I', 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O',
+        'Õ': 'O', 'Ö': 'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U',
+        'Ü': 'U', 'Ű': 'U', 'Ý': 'Y', 'Þ': 'TH', 'Ÿ': 'Y', 'ß': 'ss', 'à': 'a',
+        'á': 'a', 'â': 'a', 'ã': 'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c',
+        'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i',
+        'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o',
+        'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u',
+        'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y'
+    };
+    var LATIN_SYMBOLS_MAP = {
+        '©': '(c)'
+    };
+    var GREEK_MAP = {
+        'α': 'a', 'β': 'b', 'γ': 'g', 'δ': 'd', 'ε': 'e', 'ζ': 'z', 'η': 'h',
+        'θ': '8', 'ι': 'i', 'κ': 'k', 'λ': 'l', 'μ': 'm', 'ν': 'n', 'ξ': '3',
+        'ο': 'o', 'π': 'p', 'ρ': 'r', 'σ': 's', 'τ': 't', 'υ': 'y', 'φ': 'f',
+        'χ': 'x', 'ψ': 'ps', 'ω': 'w', 'ά': 'a', 'έ': 'e', 'ί': 'i', 'ό': 'o',
+        'ύ': 'y', 'ή': 'h', 'ώ': 'w', 'ς': 's', 'ϊ': 'i', 'ΰ': 'y', 'ϋ': 'y',
+        'ΐ': 'i', 'Α': 'A', 'Β': 'B', 'Γ': 'G', 'Δ': 'D', 'Ε': 'E', 'Ζ': 'Z',
+        'Η': 'H', 'Θ': '8', 'Ι': 'I', 'Κ': 'K', 'Λ': 'L', 'Μ': 'M', 'Ν': 'N',
+        'Ξ': '3', 'Ο': 'O', 'Π': 'P', 'Ρ': 'R', 'Σ': 'S', 'Τ': 'T', 'Υ': 'Y',
+        'Φ': 'F', 'Χ': 'X', 'Ψ': 'PS', 'Ω': 'W', 'Ά': 'A', 'Έ': 'E', 'Ί': 'I',
+        'Ό': 'O', 'Ύ': 'Y', 'Ή': 'H', 'Ώ': 'W', 'Ϊ': 'I', 'Ϋ': 'Y'
+    };
+    var TURKISH_MAP = {
+        'ş': 's', 'Ş': 'S', 'ı': 'i', 'İ': 'I', 'ç': 'c', 'Ç': 'C', 'ü': 'u',
+        'Ü': 'U', 'ö': 'o', 'Ö': 'O', 'ğ': 'g', 'Ğ': 'G'
+    };
+    var ROMANIAN_MAP = {
+        'ă': 'a', 'î': 'i', 'ș': 's', 'ț': 't', 'â': 'a',
+        'Ă': 'A', 'Î': 'I', 'Ș': 'S', 'Ț': 'T', 'Â': 'A'
+    };
+    var RUSSIAN_MAP = {
+        'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'yo',
+        'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'j', 'к': 'k', 'л': 'l', 'м': 'm',
+        'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u',
+        'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch', 'ш': 'sh', 'щ': 'sh', 'ъ': '',
+        'ы': 'y', 'ь': '', 'э': 'e', 'ю': 'yu', 'я': 'ya',
+        'А': 'A', 'Б': 'B', 'В': 'V', 'Г': 'G', 'Д': 'D', 'Е': 'E', 'Ё': 'Yo',
+        'Ж': 'Zh', 'З': 'Z', 'И': 'I', 'Й': 'J', 'К': 'K', 'Л': 'L', 'М': 'M',
+        'Н': 'N', 'О': 'O', 'П': 'P', 'Р': 'R', 'С': 'S', 'Т': 'T', 'У': 'U',
+        'Ф': 'F', 'Х': 'H', 'Ц': 'C', 'Ч': 'Ch', 'Ш': 'Sh', 'Щ': 'Sh', 'Ъ': '',
+        'Ы': 'Y', 'Ь': '', 'Э': 'E', 'Ю': 'Yu', 'Я': 'Ya'
+    };
+    var UKRAINIAN_MAP = {
+        'Є': 'Ye', 'І': 'I', 'Ї': 'Yi', 'Ґ': 'G', 'є': 'ye', 'і': 'i',
+        'Ñ—': 'yi', 'Ò‘': 'g'
+    };
+    var CZECH_MAP = {
+        'č': 'c', 'ď': 'd', 'ě': 'e', 'ň': 'n', 'ř': 'r', 'š': 's', 'ť': 't',
+        'ů': 'u', 'ž': 'z', 'Č': 'C', 'Ď': 'D', 'Ě': 'E', 'Ň': 'N', 'Ř': 'R',
+        'Š': 'S', 'Ť': 'T', 'Ů': 'U', 'Ž': 'Z'
+    };
+    var POLISH_MAP = {
+        'ą': 'a', 'ć': 'c', 'ę': 'e', 'ł': 'l', 'ń': 'n', 'ó': 'o', 'ś': 's',
+        'ź': 'z', 'ż': 'z',
+        'Ą': 'A', 'Ć': 'C', 'Ę': 'E', 'Ł': 'L', 'Ń': 'N', 'Ó': 'O', 'Ś': 'S',
+        'Ź': 'Z', 'Ż': 'Z'
+    };
+    var LATVIAN_MAP = {
+        'ā': 'a', 'č': 'c', 'ē': 'e', 'ģ': 'g', 'ī': 'i', 'ķ': 'k', 'ļ': 'l',
+        'ņ': 'n', 'š': 's', 'ū': 'u', 'ž': 'z',
+        'Ā': 'A', 'Č': 'C', 'Ē': 'E', 'Ģ': 'G', 'Ī': 'I', 'Ķ': 'K', 'Ļ': 'L',
+        'Ņ': 'N', 'Š': 'S', 'Ū': 'U', 'Ž': 'Z'
+    };
+    var ARABIC_MAP = {
+        'أ': 'a', 'ب': 'b', 'ت': 't', 'ث': 'th', 'ج': 'g', 'ح': 'h', 'خ': 'kh', 'د': 'd',
+        'ذ': 'th', 'ر': 'r', 'ز': 'z', 'س': 's', 'ش': 'sh', 'ص': 's', 'ض': 'd', 'ط': 't',
+        'ظ': 'th', 'ع': 'aa', 'غ': 'gh', 'ف': 'f', 'ق': 'k', 'ك': 'k', 'ل': 'l', 'م': 'm',
+        'Ù†': 'n', 'Ù‡': 'h', 'Ùˆ': 'o', 'ÙŠ': 'y'
+    };
+    var LITHUANIAN_MAP = {
+        'ą': 'a', 'č': 'c', 'ę': 'e', 'ė': 'e', 'į': 'i', 'š': 's', 'ų': 'u',
+        'ū': 'u', 'ž': 'z',
+        'Ą': 'A', 'Č': 'C', 'Ę': 'E', 'Ė': 'E', 'Į': 'I', 'Š': 'S', 'Ų': 'U',
+        'Ū': 'U', 'Ž': 'Z'
+    };
+    var SERBIAN_MAP = {
+        'ђ': 'dj', 'ј': 'j', 'љ': 'lj', 'њ': 'nj', 'ћ': 'c', 'џ': 'dz',
+        'đ': 'dj', 'Ђ': 'Dj', 'Ј': 'j', 'Љ': 'Lj', 'Њ': 'Nj', 'Ћ': 'C',
+        'Џ': 'Dz', 'Đ': 'Dj'
+    };
+    var AZERBAIJANI_MAP = {
+        'ç': 'c', 'ə': 'e', 'ğ': 'g', 'ı': 'i', 'ö': 'o', 'ş': 's', 'ü': 'u',
+        'Ç': 'C', 'Ə': 'E', 'Ğ': 'G', 'İ': 'I', 'Ö': 'O', 'Ş': 'S', 'Ü': 'U'
+    };
+
+    var ALL_DOWNCODE_MAPS = [
+        LATIN_MAP,
+        LATIN_SYMBOLS_MAP,
+        GREEK_MAP,
+        TURKISH_MAP,
+        ROMANIAN_MAP,
+        RUSSIAN_MAP,
+        UKRAINIAN_MAP,
+        CZECH_MAP,
+        POLISH_MAP,
+        LATVIAN_MAP,
+        ARABIC_MAP,
+        LITHUANIAN_MAP,
+        SERBIAN_MAP,
+        AZERBAIJANI_MAP
+    ];
+
+    var Downcoder = {
+        'Initialize': function() {
+            if (Downcoder.map) {  // already made
+                return;
+            }
+            Downcoder.map = {};
+            Downcoder.chars = [];
+            for (var i = 0; i < ALL_DOWNCODE_MAPS.length; i++) {
+                var lookup = ALL_DOWNCODE_MAPS[i];
+                for (var c in lookup) {
+                    if (lookup.hasOwnProperty(c)) {
+                        Downcoder.map[c] = lookup[c];
+                    }
+                }
+            }
+            for (var k in Downcoder.map) {
+                if (Downcoder.map.hasOwnProperty(k)) {
+                    Downcoder.chars.push(k);
+                }
+            }
+            Downcoder.regex = new RegExp(Downcoder.chars.join('|'), 'g');
+        }
+    };
+
+    function downcode(slug) {
+        Downcoder.Initialize();
+        return slug.replace(Downcoder.regex, function(m) {
+            return Downcoder.map[m];
+        });
+    }
+
+
+    function URLify(s, num_chars, allowUnicode) {
+        // changes, e.g., "Petty theft" to "petty-theft"
+        // remove all these words from the string before urlifying
+        if (!allowUnicode) {
+            s = downcode(s);
+        }
+        var removelist = [
+            "a", "an", "as", "at", "before", "but", "by", "for", "from", "is",
+            "in", "into", "like", "of", "off", "on", "onto", "per", "since",
+            "than", "the", "this", "that", "to", "up", "via", "with"
+        ];
+        var r = new RegExp('\\b(' + removelist.join('|') + ')\\b', 'gi');
+        s = s.replace(r, '');
+        // if downcode doesn't hit, the char will be stripped here
+        if (allowUnicode) {
+            // Keep Unicode letters including both lowercase and uppercase
+            // characters, whitespace, and dash; remove other characters.
+            s = XRegExp.replace(s, XRegExp('[^-_\\p{L}\\p{N}\\s]', 'g'), '');
+        } else {
+            s = s.replace(/[^-\w\s]/g, '');  // remove unneeded chars
+        }
+        s = s.replace(/^\s+|\s+$/g, '');   // trim leading/trailing spaces
+        s = s.replace(/[-\s]+/g, '-');     // convert spaces to hyphens
+        s = s.toLowerCase();               // convert to lowercase
+        return s.substring(0, num_chars);  // trim to first num_chars chars
+    }
+    window.URLify = URLify;
+})();
diff --git a/www/web/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt b/www/web/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt
new file mode 100644
index 0000000..d930e62
--- /dev/null
+++ b/www/web/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt
@@ -0,0 +1,26 @@
+Copyright jQuery Foundation and other contributors, https://jquery.org/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/jquery
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/www/web/static/admin/js/vendor/jquery/jquery.js b/www/web/static/admin/js/vendor/jquery/jquery.js
new file mode 100644
index 0000000..eed1777
--- /dev/null
+++ b/www/web/static/admin/js/vendor/jquery/jquery.js
@@ -0,0 +1,9210 @@
+/*!
+ * jQuery JavaScript Library v2.1.4
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2015-04-28T16:01Z
+ */
+
+(function( global, factory ) {
+
+	if ( typeof module === "object" && typeof module.exports === "object" ) {
+		// For CommonJS and CommonJS-like environments where a proper `window`
+		// is present, execute the factory and get jQuery.
+		// For environments that do not have a `window` with a `document`
+		// (such as Node.js), expose a factory as module.exports.
+		// This accentuates the need for the creation of a real `window`.
+		// e.g. var jQuery = require("jquery")(window);
+		// See ticket #14549 for more info.
+		module.exports = global.document ?
+			factory( global, true ) :
+			function( w ) {
+				if ( !w.document ) {
+					throw new Error( "jQuery requires a window with a document" );
+				}
+				return factory( w );
+			};
+	} else {
+		factory( global );
+	}
+
+// Pass this if window is not defined yet
+}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Support: Firefox 18+
+// Can't be in strict mode, several libs including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+//
+
+var arr = [];
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var support = {};
+
+
+
+var
+	// Use the correct document accordingly with window argument (sandbox)
+	document = window.document,
+
+	version = "2.1.4",
+
+	// Define a local copy of jQuery
+	jQuery = function( selector, context ) {
+		// The jQuery object is actually just the init constructor 'enhanced'
+		// Need init if jQuery is called (just allow error to be thrown if not included)
+		return new jQuery.fn.init( selector, context );
+	},
+
+	// Support: Android<4.1
+	// Make sure we trim BOM and NBSP
+	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+	// Matches dashed string for camelizing
+	rmsPrefix = /^-ms-/,
+	rdashAlpha = /-([\da-z])/gi,
+
+	// Used by jQuery.camelCase as callback to replace()
+	fcamelCase = function( all, letter ) {
+		return letter.toUpperCase();
+	};
+
+jQuery.fn = jQuery.prototype = {
+	// The current version of jQuery being used
+	jquery: version,
+
+	constructor: jQuery,
+
+	// Start with an empty selector
+	selector: "",
+
+	// The default length of a jQuery object is 0
+	length: 0,
+
+	toArray: function() {
+		return slice.call( this );
+	},
+
+	// Get the Nth element in the matched element set OR
+	// Get the whole matched element set as a clean array
+	get: function( num ) {
+		return num != null ?
+
+			// Return just the one element from the set
+			( num < 0 ? this[ num + this.length ] : this[ num ] ) :
+
+			// Return all the elements in a clean array
+			slice.call( this );
+	},
+
+	// Take an array of elements and push it onto the stack
+	// (returning the new matched element set)
+	pushStack: function( elems ) {
+
+		// Build a new jQuery matched element set
+		var ret = jQuery.merge( this.constructor(), elems );
+
+		// Add the old object onto the stack (as a reference)
+		ret.prevObject = this;
+		ret.context = this.context;
+
+		// Return the newly-formed element set
+		return ret;
+	},
+
+	// Execute a callback for every element in the matched set.
+	// (You can seed the arguments with an array of args, but this is
+	// only used internally.)
+	each: function( callback, args ) {
+		return jQuery.each( this, callback, args );
+	},
+
+	map: function( callback ) {
+		return this.pushStack( jQuery.map(this, function( elem, i ) {
+			return callback.call( elem, i, elem );
+		}));
+	},
+
+	slice: function() {
+		return this.pushStack( slice.apply( this, arguments ) );
+	},
+
+	first: function() {
+		return this.eq( 0 );
+	},
+
+	last: function() {
+		return this.eq( -1 );
+	},
+
+	eq: function( i ) {
+		var len = this.length,
+			j = +i + ( i < 0 ? len : 0 );
+		return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+	},
+
+	end: function() {
+		return this.prevObject || this.constructor(null);
+	},
+
+	// For internal use only.
+	// Behaves like an Array's method, not like a jQuery method.
+	push: push,
+	sort: arr.sort,
+	splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+	var options, name, src, copy, copyIsArray, clone,
+		target = arguments[0] || {},
+		i = 1,
+		length = arguments.length,
+		deep = false;
+
+	// Handle a deep copy situation
+	if ( typeof target === "boolean" ) {
+		deep = target;
+
+		// Skip the boolean and the target
+		target = arguments[ i ] || {};
+		i++;
+	}
+
+	// Handle case when target is a string or something (possible in deep copy)
+	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+		target = {};
+	}
+
+	// Extend jQuery itself if only one argument is passed
+	if ( i === length ) {
+		target = this;
+		i--;
+	}
+
+	for ( ; i < length; i++ ) {
+		// Only deal with non-null/undefined values
+		if ( (options = arguments[ i ]) != null ) {
+			// Extend the base object
+			for ( name in options ) {
+				src = target[ name ];
+				copy = options[ name ];
+
+				// Prevent never-ending loop
+				if ( target === copy ) {
+					continue;
+				}
+
+				// Recurse if we're merging plain objects or arrays
+				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+					if ( copyIsArray ) {
+						copyIsArray = false;
+						clone = src && jQuery.isArray(src) ? src : [];
+
+					} else {
+						clone = src && jQuery.isPlainObject(src) ? src : {};
+					}
+
+					// Never move original objects, clone them
+					target[ name ] = jQuery.extend( deep, clone, copy );
+
+				// Don't bring in undefined values
+				} else if ( copy !== undefined ) {
+					target[ name ] = copy;
+				}
+			}
+		}
+	}
+
+	// Return the modified object
+	return target;
+};
+
+jQuery.extend({
+	// Unique for each copy of jQuery on the page
+	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+	// Assume jQuery is ready without the ready module
+	isReady: true,
+
+	error: function( msg ) {
+		throw new Error( msg );
+	},
+
+	noop: function() {},
+
+	isFunction: function( obj ) {
+		return jQuery.type(obj) === "function";
+	},
+
+	isArray: Array.isArray,
+
+	isWindow: function( obj ) {
+		return obj != null && obj === obj.window;
+	},
+
+	isNumeric: function( obj ) {
+		// parseFloat NaNs numeric-cast false positives (null|true|false|"")
+		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+		// subtraction forces infinities to NaN
+		// adding 1 corrects loss of precision from parseFloat (#15100)
+		return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;
+	},
+
+	isPlainObject: function( obj ) {
+		// Not plain objects:
+		// - Any object or value whose internal [[Class]] property is not "[object Object]"
+		// - DOM nodes
+		// - window
+		if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+			return false;
+		}
+
+		if ( obj.constructor &&
+				!hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
+			return false;
+		}
+
+		// If the function hasn't returned already, we're confident that
+		// |obj| is a plain object, created by {} or constructed with new Object
+		return true;
+	},
+
+	isEmptyObject: function( obj ) {
+		var name;
+		for ( name in obj ) {
+			return false;
+		}
+		return true;
+	},
+
+	type: function( obj ) {
+		if ( obj == null ) {
+			return obj + "";
+		}
+		// Support: Android<4.0, iOS<6 (functionish RegExp)
+		return typeof obj === "object" || typeof obj === "function" ?
+			class2type[ toString.call(obj) ] || "object" :
+			typeof obj;
+	},
+
+	// Evaluates a script in a global context
+	globalEval: function( code ) {
+		var script,
+			indirect = eval;
+
+		code = jQuery.trim( code );
+
+		if ( code ) {
+			// If the code includes a valid, prologue position
+			// strict mode pragma, execute code by injecting a
+			// script tag into the document.
+			if ( code.indexOf("use strict") === 1 ) {
+				script = document.createElement("script");
+				script.text = code;
+				document.head.appendChild( script ).parentNode.removeChild( script );
+			} else {
+			// Otherwise, avoid the DOM node creation, insertion
+			// and removal by using an indirect global eval
+				indirect( code );
+			}
+		}
+	},
+
+	// Convert dashed to camelCase; used by the css and data modules
+	// Support: IE9-11+
+	// Microsoft forgot to hump their vendor prefix (#9572)
+	camelCase: function( string ) {
+		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+	},
+
+	nodeName: function( elem, name ) {
+		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+	},
+
+	// args is for internal usage only
+	each: function( obj, callback, args ) {
+		var value,
+			i = 0,
+			length = obj.length,
+			isArray = isArraylike( obj );
+
+		if ( args ) {
+			if ( isArray ) {
+				for ( ; i < length; i++ ) {
+					value = callback.apply( obj[ i ], args );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			} else {
+				for ( i in obj ) {
+					value = callback.apply( obj[ i ], args );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			}
+
+		// A special, fast, case for the most common use of each
+		} else {
+			if ( isArray ) {
+				for ( ; i < length; i++ ) {
+					value = callback.call( obj[ i ], i, obj[ i ] );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			} else {
+				for ( i in obj ) {
+					value = callback.call( obj[ i ], i, obj[ i ] );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			}
+		}
+
+		return obj;
+	},
+
+	// Support: Android<4.1
+	trim: function( text ) {
+		return text == null ?
+			"" :
+			( text + "" ).replace( rtrim, "" );
+	},
+
+	// results is for internal usage only
+	makeArray: function( arr, results ) {
+		var ret = results || [];
+
+		if ( arr != null ) {
+			if ( isArraylike( Object(arr) ) ) {
+				jQuery.merge( ret,
+					typeof arr === "string" ?
+					[ arr ] : arr
+				);
+			} else {
+				push.call( ret, arr );
+			}
+		}
+
+		return ret;
+	},
+
+	inArray: function( elem, arr, i ) {
+		return arr == null ? -1 : indexOf.call( arr, elem, i );
+	},
+
+	merge: function( first, second ) {
+		var len = +second.length,
+			j = 0,
+			i = first.length;
+
+		for ( ; j < len; j++ ) {
+			first[ i++ ] = second[ j ];
+		}
+
+		first.length = i;
+
+		return first;
+	},
+
+	grep: function( elems, callback, invert ) {
+		var callbackInverse,
+			matches = [],
+			i = 0,
+			length = elems.length,
+			callbackExpect = !invert;
+
+		// Go through the array, only saving the items
+		// that pass the validator function
+		for ( ; i < length; i++ ) {
+			callbackInverse = !callback( elems[ i ], i );
+			if ( callbackInverse !== callbackExpect ) {
+				matches.push( elems[ i ] );
+			}
+		}
+
+		return matches;
+	},
+
+	// arg is for internal usage only
+	map: function( elems, callback, arg ) {
+		var value,
+			i = 0,
+			length = elems.length,
+			isArray = isArraylike( elems ),
+			ret = [];
+
+		// Go through the array, translating each of the items to their new values
+		if ( isArray ) {
+			for ( ; i < length; i++ ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+
+		// Go through every key on the object,
+		} else {
+			for ( i in elems ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+		}
+
+		// Flatten any nested arrays
+		return concat.apply( [], ret );
+	},
+
+	// A global GUID counter for objects
+	guid: 1,
+
+	// Bind a function to a context, optionally partially applying any
+	// arguments.
+	proxy: function( fn, context ) {
+		var tmp, args, proxy;
+
+		if ( typeof context === "string" ) {
+			tmp = fn[ context ];
+			context = fn;
+			fn = tmp;
+		}
+
+		// Quick check to determine if target is callable, in the spec
+		// this throws a TypeError, but we will just return undefined.
+		if ( !jQuery.isFunction( fn ) ) {
+			return undefined;
+		}
+
+		// Simulated bind
+		args = slice.call( arguments, 2 );
+		proxy = function() {
+			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+		};
+
+		// Set the guid of unique handler to the same of original handler, so it can be removed
+		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+		return proxy;
+	},
+
+	now: Date.now,
+
+	// jQuery.support is not used in Core but other projects attach their
+	// properties to it so it needs to exist.
+	support: support
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+	class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+
+	// Support: iOS 8.2 (not reproducible in simulator)
+	// `in` check used to prevent JIT error (gh-2145)
+	// hasOwn isn't used here due to false negatives
+	// regarding Nodelist length in IE
+	var length = "length" in obj && obj.length,
+		type = jQuery.type( obj );
+
+	if ( type === "function" || jQuery.isWindow( obj ) ) {
+		return false;
+	}
+
+	if ( obj.nodeType === 1 && length ) {
+		return true;
+	}
+
+	return type === "array" || length === 0 ||
+		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.2.0-pre
+ * http://sizzlejs.com/
+ *
+ * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2014-12-16
+ */
+(function( window ) {
+
+var i,
+	support,
+	Expr,
+	getText,
+	isXML,
+	tokenize,
+	compile,
+	select,
+	outermostContext,
+	sortInput,
+	hasDuplicate,
+
+	// Local document vars
+	setDocument,
+	document,
+	docElem,
+	documentIsHTML,
+	rbuggyQSA,
+	rbuggyMatches,
+	matches,
+	contains,
+
+	// Instance-specific data
+	expando = "sizzle" + 1 * new Date(),
+	preferredDoc = window.document,
+	dirruns = 0,
+	done = 0,
+	classCache = createCache(),
+	tokenCache = createCache(),
+	compilerCache = createCache(),
+	sortOrder = function( a, b ) {
+		if ( a === b ) {
+			hasDuplicate = true;
+		}
+		return 0;
+	},
+
+	// General-purpose constants
+	MAX_NEGATIVE = 1 << 31,
+
+	// Instance methods
+	hasOwn = ({}).hasOwnProperty,
+	arr = [],
+	pop = arr.pop,
+	push_native = arr.push,
+	push = arr.push,
+	slice = arr.slice,
+	// Use a stripped-down indexOf as it's faster than native
+	// http://jsperf.com/thor-indexof-vs-for/5
+	indexOf = function( list, elem ) {
+		var i = 0,
+			len = list.length;
+		for ( ; i < len; i++ ) {
+			if ( list[i] === elem ) {
+				return i;
+			}
+		}
+		return -1;
+	},
+
+	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+	// Regular expressions
+
+	// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+	whitespace = "[\\x20\\t\\r\\n\\f]",
+	// http://www.w3.org/TR/css3-syntax/#characters
+	characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+	// Loosely modeled on CSS identifier characters
+	// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+	// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+	identifier = characterEncoding.replace( "w", "w#" ),
+
+	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+	attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
+		// Operator (capture 2)
+		"*([*^$|!~]?=)" + whitespace +
+		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+		"*\\]",
+
+	pseudos = ":(" + characterEncoding + ")(?:\\((" +
+		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+		// 1. quoted (capture 3; capture 4 or capture 5)
+		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+		// 2. simple (capture 6)
+		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+		// 3. anything else (capture 2)
+		".*" +
+		")\\)|)",
+
+	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+	rwhitespace = new RegExp( whitespace + "+", "g" ),
+	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+	rpseudo = new RegExp( pseudos ),
+	ridentifier = new RegExp( "^" + identifier + "$" ),
+
+	matchExpr = {
+		"ID": new RegExp( "^#(" + characterEncoding + ")" ),
+		"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+		"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+		"ATTR": new RegExp( "^" + attributes ),
+		"PSEUDO": new RegExp( "^" + pseudos ),
+		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+		// For use in libraries implementing .is()
+		// We use this for POS matching in `select`
+		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+	},
+
+	rinputs = /^(?:input|select|textarea|button)$/i,
+	rheader = /^h\d$/i,
+
+	rnative = /^[^{]+\{\s*\[native \w/,
+
+	// Easily-parseable/retrievable ID or TAG or CLASS selectors
+	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+	rsibling = /[+~]/,
+	rescape = /'|\\/g,
+
+	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+	funescape = function( _, escaped, escapedWhitespace ) {
+		var high = "0x" + escaped - 0x10000;
+		// NaN means non-codepoint
+		// Support: Firefox<24
+		// Workaround erroneous numeric interpretation of +"0x"
+		return high !== high || escapedWhitespace ?
+			escaped :
+			high < 0 ?
+				// BMP codepoint
+				String.fromCharCode( high + 0x10000 ) :
+				// Supplemental Plane codepoint (surrogate pair)
+				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+	},
+
+	// Used for iframes
+	// See setDocument()
+	// Removing the function wrapper causes a "Permission Denied"
+	// error in IE
+	unloadHandler = function() {
+		setDocument();
+	};
+
+// Optimize for push.apply( _, NodeList )
+try {
+	push.apply(
+		(arr = slice.call( preferredDoc.childNodes )),
+		preferredDoc.childNodes
+	);
+	// Support: Android<4.0
+	// Detect silently failing push.apply
+	arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+	push = { apply: arr.length ?
+
+		// Leverage slice if possible
+		function( target, els ) {
+			push_native.apply( target, slice.call(els) );
+		} :
+
+		// Support: IE<9
+		// Otherwise append directly
+		function( target, els ) {
+			var j = target.length,
+				i = 0;
+			// Can't trust NodeList.length
+			while ( (target[j++] = els[i++]) ) {}
+			target.length = j - 1;
+		}
+	};
+}
+
+function Sizzle( selector, context, results, seed ) {
+	var match, elem, m, nodeType,
+		// QSA vars
+		i, groups, old, nid, newContext, newSelector;
+
+	if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+		setDocument( context );
+	}
+
+	context = context || document;
+	results = results || [];
+	nodeType = context.nodeType;
+
+	if ( typeof selector !== "string" || !selector ||
+		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+		return results;
+	}
+
+	if ( !seed && documentIsHTML ) {
+
+		// Try to shortcut find operations when possible (e.g., not under DocumentFragment)
+		if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+			// Speed-up: Sizzle("#ID")
+			if ( (m = match[1]) ) {
+				if ( nodeType === 9 ) {
+					elem = context.getElementById( m );
+					// Check parentNode to catch when Blackberry 4.6 returns
+					// nodes that are no longer in the document (jQuery #6963)
+					if ( elem && elem.parentNode ) {
+						// Handle the case where IE, Opera, and Webkit return items
+						// by name instead of ID
+						if ( elem.id === m ) {
+							results.push( elem );
+							return results;
+						}
+					} else {
+						return results;
+					}
+				} else {
+					// Context is not a document
+					if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+						contains( context, elem ) && elem.id === m ) {
+						results.push( elem );
+						return results;
+					}
+				}
+
+			// Speed-up: Sizzle("TAG")
+			} else if ( match[2] ) {
+				push.apply( results, context.getElementsByTagName( selector ) );
+				return results;
+
+			// Speed-up: Sizzle(".CLASS")
+			} else if ( (m = match[3]) && support.getElementsByClassName ) {
+				push.apply( results, context.getElementsByClassName( m ) );
+				return results;
+			}
+		}
+
+		// QSA path
+		if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+			nid = old = expando;
+			newContext = context;
+			newSelector = nodeType !== 1 && selector;
+
+			// qSA works strangely on Element-rooted queries
+			// We can work around this by specifying an extra ID on the root
+			// and working up from there (Thanks to Andrew Dupont for the technique)
+			// IE 8 doesn't work on object elements
+			if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+				groups = tokenize( selector );
+
+				if ( (old = context.getAttribute("id")) ) {
+					nid = old.replace( rescape, "\\$&" );
+				} else {
+					context.setAttribute( "id", nid );
+				}
+				nid = "[id='" + nid + "'] ";
+
+				i = groups.length;
+				while ( i-- ) {
+					groups[i] = nid + toSelector( groups[i] );
+				}
+				newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
+				newSelector = groups.join(",");
+			}
+
+			if ( newSelector ) {
+				try {
+					push.apply( results,
+						newContext.querySelectorAll( newSelector )
+					);
+					return results;
+				} catch(qsaError) {
+				} finally {
+					if ( !old ) {
+						context.removeAttribute("id");
+					}
+				}
+			}
+		}
+	}
+
+	// All others
+	return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *	deleting the oldest entry
+ */
+function createCache() {
+	var keys = [];
+
+	function cache( key, value ) {
+		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+		if ( keys.push( key + " " ) > Expr.cacheLength ) {
+			// Only keep the most recent entries
+			delete cache[ keys.shift() ];
+		}
+		return (cache[ key + " " ] = value);
+	}
+	return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+	fn[ expando ] = true;
+	return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+	var div = document.createElement("div");
+
+	try {
+		return !!fn( div );
+	} catch (e) {
+		return false;
+	} finally {
+		// Remove from its parent by default
+		if ( div.parentNode ) {
+			div.parentNode.removeChild( div );
+		}
+		// release memory in IE
+		div = null;
+	}
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+	var arr = attrs.split("|"),
+		i = attrs.length;
+
+	while ( i-- ) {
+		Expr.attrHandle[ arr[i] ] = handler;
+	}
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+	var cur = b && a,
+		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+			( ~b.sourceIndex || MAX_NEGATIVE ) -
+			( ~a.sourceIndex || MAX_NEGATIVE );
+
+	// Use IE sourceIndex if available on both nodes
+	if ( diff ) {
+		return diff;
+	}
+
+	// Check if b follows a
+	if ( cur ) {
+		while ( (cur = cur.nextSibling) ) {
+			if ( cur === b ) {
+				return -1;
+			}
+		}
+	}
+
+	return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return name === "input" && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return (name === "input" || name === "button") && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+	return markFunction(function( argument ) {
+		argument = +argument;
+		return markFunction(function( seed, matches ) {
+			var j,
+				matchIndexes = fn( [], seed.length, argument ),
+				i = matchIndexes.length;
+
+			// Match elements found at the specified indexes
+			while ( i-- ) {
+				if ( seed[ (j = matchIndexes[i]) ] ) {
+					seed[j] = !(matches[j] = seed[j]);
+				}
+			}
+		});
+	});
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+	return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+	// documentElement is verified for cases where it doesn't yet exist
+	// (such as loading iframes in IE - #4833)
+	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+	return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+	var hasCompare, parent,
+		doc = node ? node.ownerDocument || node : preferredDoc;
+
+	// If no document and documentElement is available, return
+	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+		return document;
+	}
+
+	// Set our document
+	document = doc;
+	docElem = doc.documentElement;
+	parent = doc.defaultView;
+
+	// Support: IE>8
+	// If iframe document is assigned to "document" variable and if iframe has been reloaded,
+	// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
+	// IE6-8 do not support the defaultView property so parent will be undefined
+	if ( parent && parent !== parent.top ) {
+		// IE11 does not have attachEvent, so all must suffer
+		if ( parent.addEventListener ) {
+			parent.addEventListener( "unload", unloadHandler, false );
+		} else if ( parent.attachEvent ) {
+			parent.attachEvent( "onunload", unloadHandler );
+		}
+	}
+
+	/* Support tests
+	---------------------------------------------------------------------- */
+	documentIsHTML = !isXML( doc );
+
+	/* Attributes
+	---------------------------------------------------------------------- */
+
+	// Support: IE<8
+	// Verify that getAttribute really returns attributes and not properties
+	// (excepting IE8 booleans)
+	support.attributes = assert(function( div ) {
+		div.className = "i";
+		return !div.getAttribute("className");
+	});
+
+	/* getElement(s)By*
+	---------------------------------------------------------------------- */
+
+	// Check if getElementsByTagName("*") returns only elements
+	support.getElementsByTagName = assert(function( div ) {
+		div.appendChild( doc.createComment("") );
+		return !div.getElementsByTagName("*").length;
+	});
+
+	// Support: IE<9
+	support.getElementsByClassName = rnative.test( doc.getElementsByClassName );
+
+	// Support: IE<10
+	// Check if getElementById returns elements by name
+	// The broken getElementById methods don't pick up programatically-set names,
+	// so use a roundabout getElementsByName test
+	support.getById = assert(function( div ) {
+		docElem.appendChild( div ).id = expando;
+		return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
+	});
+
+	// ID find and filter
+	if ( support.getById ) {
+		Expr.find["ID"] = function( id, context ) {
+			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+				var m = context.getElementById( id );
+				// Check parentNode to catch when Blackberry 4.6 returns
+				// nodes that are no longer in the document #6963
+				return m && m.parentNode ? [ m ] : [];
+			}
+		};
+		Expr.filter["ID"] = function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				return elem.getAttribute("id") === attrId;
+			};
+		};
+	} else {
+		// Support: IE6/7
+		// getElementById is not reliable as a find shortcut
+		delete Expr.find["ID"];
+
+		Expr.filter["ID"] =  function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+				return node && node.value === attrId;
+			};
+		};
+	}
+
+	// Tag
+	Expr.find["TAG"] = support.getElementsByTagName ?
+		function( tag, context ) {
+			if ( typeof context.getElementsByTagName !== "undefined" ) {
+				return context.getElementsByTagName( tag );
+
+			// DocumentFragment nodes don't have gEBTN
+			} else if ( support.qsa ) {
+				return context.querySelectorAll( tag );
+			}
+		} :
+
+		function( tag, context ) {
+			var elem,
+				tmp = [],
+				i = 0,
+				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+				results = context.getElementsByTagName( tag );
+
+			// Filter out possible comments
+			if ( tag === "*" ) {
+				while ( (elem = results[i++]) ) {
+					if ( elem.nodeType === 1 ) {
+						tmp.push( elem );
+					}
+				}
+
+				return tmp;
+			}
+			return results;
+		};
+
+	// Class
+	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+		if ( documentIsHTML ) {
+			return context.getElementsByClassName( className );
+		}
+	};
+
+	/* QSA/matchesSelector
+	---------------------------------------------------------------------- */
+
+	// QSA and matchesSelector support
+
+	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+	rbuggyMatches = [];
+
+	// qSa(:focus) reports false when true (Chrome 21)
+	// We allow this because of a bug in IE8/9 that throws an error
+	// whenever `document.activeElement` is accessed on an iframe
+	// So, we allow :focus to pass through QSA all the time to avoid the IE error
+	// See http://bugs.jquery.com/ticket/13378
+	rbuggyQSA = [];
+
+	if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
+		// Build QSA regex
+		// Regex strategy adopted from Diego Perini
+		assert(function( div ) {
+			// Select is set to empty string on purpose
+			// This is to test IE's treatment of not explicitly
+			// setting a boolean content attribute,
+			// since its presence should be enough
+			// http://bugs.jquery.com/ticket/12359
+			docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
+				"<select id='" + expando + "-\f]' msallowcapture=''>" +
+				"<option selected=''></option></select>";
+
+			// Support: IE8, Opera 11-12.16
+			// Nothing should be selected when empty strings follow ^= or $= or *=
+			// The test attribute must be unknown in Opera but "safe" for WinRT
+			// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+			if ( div.querySelectorAll("[msallowcapture^='']").length ) {
+				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+			}
+
+			// Support: IE8
+			// Boolean attributes and "value" are not treated correctly
+			if ( !div.querySelectorAll("[selected]").length ) {
+				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+			}
+
+			// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+
+			if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+				rbuggyQSA.push("~=");
+			}
+
+			// Webkit/Opera - :checked should return selected option elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			// IE8 throws error here and will not see later tests
+			if ( !div.querySelectorAll(":checked").length ) {
+				rbuggyQSA.push(":checked");
+			}
+
+			// Support: Safari 8+, iOS 8+
+			// https://bugs.webkit.org/show_bug.cgi?id=136851
+			// In-page `selector#id sibing-combinator selector` fails
+			if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
+				rbuggyQSA.push(".#.+[+~]");
+			}
+		});
+
+		assert(function( div ) {
+			// Support: Windows 8 Native Apps
+			// The type and name attributes are restricted during .innerHTML assignment
+			var input = doc.createElement("input");
+			input.setAttribute( "type", "hidden" );
+			div.appendChild( input ).setAttribute( "name", "D" );
+
+			// Support: IE8
+			// Enforce case-sensitivity of name attribute
+			if ( div.querySelectorAll("[name=d]").length ) {
+				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+			}
+
+			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+			// IE8 throws error here and will not see later tests
+			if ( !div.querySelectorAll(":enabled").length ) {
+				rbuggyQSA.push( ":enabled", ":disabled" );
+			}
+
+			// Opera 10-11 does not throw on post-comma invalid pseudos
+			div.querySelectorAll("*,:x");
+			rbuggyQSA.push(",.*:");
+		});
+	}
+
+	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+		docElem.webkitMatchesSelector ||
+		docElem.mozMatchesSelector ||
+		docElem.oMatchesSelector ||
+		docElem.msMatchesSelector) )) ) {
+
+		assert(function( div ) {
+			// Check to see if it's possible to do matchesSelector
+			// on a disconnected node (IE 9)
+			support.disconnectedMatch = matches.call( div, "div" );
+
+			// This should fail with an exception
+			// Gecko does not error, returns false instead
+			matches.call( div, "[s!='']:x" );
+			rbuggyMatches.push( "!=", pseudos );
+		});
+	}
+
+	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+	/* Contains
+	---------------------------------------------------------------------- */
+	hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+	// Element contains another
+	// Purposefully does not implement inclusive descendent
+	// As in, an element does not contain itself
+	contains = hasCompare || rnative.test( docElem.contains ) ?
+		function( a, b ) {
+			var adown = a.nodeType === 9 ? a.documentElement : a,
+				bup = b && b.parentNode;
+			return a === bup || !!( bup && bup.nodeType === 1 && (
+				adown.contains ?
+					adown.contains( bup ) :
+					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+			));
+		} :
+		function( a, b ) {
+			if ( b ) {
+				while ( (b = b.parentNode) ) {
+					if ( b === a ) {
+						return true;
+					}
+				}
+			}
+			return false;
+		};
+
+	/* Sorting
+	---------------------------------------------------------------------- */
+
+	// Document order sorting
+	sortOrder = hasCompare ?
+	function( a, b ) {
+
+		// Flag for duplicate removal
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		// Sort on method existence if only one input has compareDocumentPosition
+		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+		if ( compare ) {
+			return compare;
+		}
+
+		// Calculate position if both inputs belong to the same document
+		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+			a.compareDocumentPosition( b ) :
+
+			// Otherwise we know they are disconnected
+			1;
+
+		// Disconnected nodes
+		if ( compare & 1 ||
+			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+			// Choose the first element that is related to our preferred document
+			if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+				return -1;
+			}
+			if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+				return 1;
+			}
+
+			// Maintain original order
+			return sortInput ?
+				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+				0;
+		}
+
+		return compare & 4 ? -1 : 1;
+	} :
+	function( a, b ) {
+		// Exit early if the nodes are identical
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		var cur,
+			i = 0,
+			aup = a.parentNode,
+			bup = b.parentNode,
+			ap = [ a ],
+			bp = [ b ];
+
+		// Parentless nodes are either documents or disconnected
+		if ( !aup || !bup ) {
+			return a === doc ? -1 :
+				b === doc ? 1 :
+				aup ? -1 :
+				bup ? 1 :
+				sortInput ?
+				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+				0;
+
+		// If the nodes are siblings, we can do a quick check
+		} else if ( aup === bup ) {
+			return siblingCheck( a, b );
+		}
+
+		// Otherwise we need full lists of their ancestors for comparison
+		cur = a;
+		while ( (cur = cur.parentNode) ) {
+			ap.unshift( cur );
+		}
+		cur = b;
+		while ( (cur = cur.parentNode) ) {
+			bp.unshift( cur );
+		}
+
+		// Walk down the tree looking for a discrepancy
+		while ( ap[i] === bp[i] ) {
+			i++;
+		}
+
+		return i ?
+			// Do a sibling check if the nodes have a common ancestor
+			siblingCheck( ap[i], bp[i] ) :
+
+			// Otherwise nodes in our document sort first
+			ap[i] === preferredDoc ? -1 :
+			bp[i] === preferredDoc ? 1 :
+			0;
+	};
+
+	return doc;
+};
+
+Sizzle.matches = function( expr, elements ) {
+	return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	// Make sure that attribute selectors are quoted
+	expr = expr.replace( rattributeQuotes, "='$1']" );
+
+	if ( support.matchesSelector && documentIsHTML &&
+		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
+
+		try {
+			var ret = matches.call( elem, expr );
+
+			// IE 9's matchesSelector returns false on disconnected nodes
+			if ( ret || support.disconnectedMatch ||
+					// As well, disconnected nodes are said to be in a document
+					// fragment in IE 9
+					elem.document && elem.document.nodeType !== 11 ) {
+				return ret;
+			}
+		} catch (e) {}
+	}
+
+	return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+	// Set document vars if needed
+	if ( ( context.ownerDocument || context ) !== document ) {
+		setDocument( context );
+	}
+	return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	var fn = Expr.attrHandle[ name.toLowerCase() ],
+		// Don't get fooled by Object.prototype properties (jQuery #13807)
+		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+			fn( elem, name, !documentIsHTML ) :
+			undefined;
+
+	return val !== undefined ?
+		val :
+		support.attributes || !documentIsHTML ?
+			elem.getAttribute( name ) :
+			(val = elem.getAttributeNode(name)) && val.specified ?
+				val.value :
+				null;
+};
+
+Sizzle.error = function( msg ) {
+	throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+	var elem,
+		duplicates = [],
+		j = 0,
+		i = 0;
+
+	// Unless we *know* we can detect duplicates, assume their presence
+	hasDuplicate = !support.detectDuplicates;
+	sortInput = !support.sortStable && results.slice( 0 );
+	results.sort( sortOrder );
+
+	if ( hasDuplicate ) {
+		while ( (elem = results[i++]) ) {
+			if ( elem === results[ i ] ) {
+				j = duplicates.push( i );
+			}
+		}
+		while ( j-- ) {
+			results.splice( duplicates[ j ], 1 );
+		}
+	}
+
+	// Clear input after sorting to release objects
+	// See https://github.com/jquery/sizzle/pull/225
+	sortInput = null;
+
+	return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+	var node,
+		ret = "",
+		i = 0,
+		nodeType = elem.nodeType;
+
+	if ( !nodeType ) {
+		// If no nodeType, this is expected to be an array
+		while ( (node = elem[i++]) ) {
+			// Do not traverse comment nodes
+			ret += getText( node );
+		}
+	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+		// Use textContent for elements
+		// innerText usage removed for consistency of new lines (jQuery #11153)
+		if ( typeof elem.textContent === "string" ) {
+			return elem.textContent;
+		} else {
+			// Traverse its children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				ret += getText( elem );
+			}
+		}
+	} else if ( nodeType === 3 || nodeType === 4 ) {
+		return elem.nodeValue;
+	}
+	// Do not include comment or processing instruction nodes
+
+	return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+	// Can be adjusted by the user
+	cacheLength: 50,
+
+	createPseudo: markFunction,
+
+	match: matchExpr,
+
+	attrHandle: {},
+
+	find: {},
+
+	relative: {
+		">": { dir: "parentNode", first: true },
+		" ": { dir: "parentNode" },
+		"+": { dir: "previousSibling", first: true },
+		"~": { dir: "previousSibling" }
+	},
+
+	preFilter: {
+		"ATTR": function( match ) {
+			match[1] = match[1].replace( runescape, funescape );
+
+			// Move the given value to match[3] whether quoted or unquoted
+			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+			if ( match[2] === "~=" ) {
+				match[3] = " " + match[3] + " ";
+			}
+
+			return match.slice( 0, 4 );
+		},
+
+		"CHILD": function( match ) {
+			/* matches from matchExpr["CHILD"]
+				1 type (only|nth|...)
+				2 what (child|of-type)
+				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+				4 xn-component of xn+y argument ([+-]?\d*n|)
+				5 sign of xn-component
+				6 x of xn-component
+				7 sign of y-component
+				8 y of y-component
+			*/
+			match[1] = match[1].toLowerCase();
+
+			if ( match[1].slice( 0, 3 ) === "nth" ) {
+				// nth-* requires argument
+				if ( !match[3] ) {
+					Sizzle.error( match[0] );
+				}
+
+				// numeric x and y parameters for Expr.filter.CHILD
+				// remember that false/true cast respectively to 0/1
+				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+			// other types prohibit arguments
+			} else if ( match[3] ) {
+				Sizzle.error( match[0] );
+			}
+
+			return match;
+		},
+
+		"PSEUDO": function( match ) {
+			var excess,
+				unquoted = !match[6] && match[2];
+
+			if ( matchExpr["CHILD"].test( match[0] ) ) {
+				return null;
+			}
+
+			// Accept quoted arguments as-is
+			if ( match[3] ) {
+				match[2] = match[4] || match[5] || "";
+
+			// Strip excess characters from unquoted arguments
+			} else if ( unquoted && rpseudo.test( unquoted ) &&
+				// Get excess from tokenize (recursively)
+				(excess = tokenize( unquoted, true )) &&
+				// advance to the next closing parenthesis
+				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+				// excess is a negative index
+				match[0] = match[0].slice( 0, excess );
+				match[2] = unquoted.slice( 0, excess );
+			}
+
+			// Return only captures needed by the pseudo filter method (type and argument)
+			return match.slice( 0, 3 );
+		}
+	},
+
+	filter: {
+
+		"TAG": function( nodeNameSelector ) {
+			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+			return nodeNameSelector === "*" ?
+				function() { return true; } :
+				function( elem ) {
+					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+				};
+		},
+
+		"CLASS": function( className ) {
+			var pattern = classCache[ className + " " ];
+
+			return pattern ||
+				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+				classCache( className, function( elem ) {
+					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+				});
+		},
+
+		"ATTR": function( name, operator, check ) {
+			return function( elem ) {
+				var result = Sizzle.attr( elem, name );
+
+				if ( result == null ) {
+					return operator === "!=";
+				}
+				if ( !operator ) {
+					return true;
+				}
+
+				result += "";
+
+				return operator === "=" ? result === check :
+					operator === "!=" ? result !== check :
+					operator === "^=" ? check && result.indexOf( check ) === 0 :
+					operator === "*=" ? check && result.indexOf( check ) > -1 :
+					operator === "$=" ? check && result.slice( -check.length ) === check :
+					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+					false;
+			};
+		},
+
+		"CHILD": function( type, what, argument, first, last ) {
+			var simple = type.slice( 0, 3 ) !== "nth",
+				forward = type.slice( -4 ) !== "last",
+				ofType = what === "of-type";
+
+			return first === 1 && last === 0 ?
+
+				// Shortcut for :nth-*(n)
+				function( elem ) {
+					return !!elem.parentNode;
+				} :
+
+				function( elem, context, xml ) {
+					var cache, outerCache, node, diff, nodeIndex, start,
+						dir = simple !== forward ? "nextSibling" : "previousSibling",
+						parent = elem.parentNode,
+						name = ofType && elem.nodeName.toLowerCase(),
+						useCache = !xml && !ofType;
+
+					if ( parent ) {
+
+						// :(first|last|only)-(child|of-type)
+						if ( simple ) {
+							while ( dir ) {
+								node = elem;
+								while ( (node = node[ dir ]) ) {
+									if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
+										return false;
+									}
+								}
+								// Reverse direction for :only-* (if we haven't yet done so)
+								start = dir = type === "only" && !start && "nextSibling";
+							}
+							return true;
+						}
+
+						start = [ forward ? parent.firstChild : parent.lastChild ];
+
+						// non-xml :nth-child(...) stores cache data on `parent`
+						if ( forward && useCache ) {
+							// Seek `elem` from a previously-cached index
+							outerCache = parent[ expando ] || (parent[ expando ] = {});
+							cache = outerCache[ type ] || [];
+							nodeIndex = cache[0] === dirruns && cache[1];
+							diff = cache[0] === dirruns && cache[2];
+							node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+							while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+								// Fallback to seeking `elem` from the start
+								(diff = nodeIndex = 0) || start.pop()) ) {
+
+								// When found, cache indexes on `parent` and break
+								if ( node.nodeType === 1 && ++diff && node === elem ) {
+									outerCache[ type ] = [ dirruns, nodeIndex, diff ];
+									break;
+								}
+							}
+
+						// Use previously-cached element index if available
+						} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
+							diff = cache[1];
+
+						// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
+						} else {
+							// Use the same loop as above to seek `elem` from the start
+							while ( (node = ++nodeIndex && node && node[ dir ] ||
+								(diff = nodeIndex = 0) || start.pop()) ) {
+
+								if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
+									// Cache the index of each encountered element
+									if ( useCache ) {
+										(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
+									}
+
+									if ( node === elem ) {
+										break;
+									}
+								}
+							}
+						}
+
+						// Incorporate the offset, then check against cycle size
+						diff -= last;
+						return diff === first || ( diff % first === 0 && diff / first >= 0 );
+					}
+				};
+		},
+
+		"PSEUDO": function( pseudo, argument ) {
+			// pseudo-class names are case-insensitive
+			// http://www.w3.org/TR/selectors/#pseudo-classes
+			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+			// Remember that setFilters inherits from pseudos
+			var args,
+				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+					Sizzle.error( "unsupported pseudo: " + pseudo );
+
+			// The user may use createPseudo to indicate that
+			// arguments are needed to create the filter function
+			// just as Sizzle does
+			if ( fn[ expando ] ) {
+				return fn( argument );
+			}
+
+			// But maintain support for old signatures
+			if ( fn.length > 1 ) {
+				args = [ pseudo, pseudo, "", argument ];
+				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+					markFunction(function( seed, matches ) {
+						var idx,
+							matched = fn( seed, argument ),
+							i = matched.length;
+						while ( i-- ) {
+							idx = indexOf( seed, matched[i] );
+							seed[ idx ] = !( matches[ idx ] = matched[i] );
+						}
+					}) :
+					function( elem ) {
+						return fn( elem, 0, args );
+					};
+			}
+
+			return fn;
+		}
+	},
+
+	pseudos: {
+		// Potentially complex pseudos
+		"not": markFunction(function( selector ) {
+			// Trim the selector passed to compile
+			// to avoid treating leading and trailing
+			// spaces as combinators
+			var input = [],
+				results = [],
+				matcher = compile( selector.replace( rtrim, "$1" ) );
+
+			return matcher[ expando ] ?
+				markFunction(function( seed, matches, context, xml ) {
+					var elem,
+						unmatched = matcher( seed, null, xml, [] ),
+						i = seed.length;
+
+					// Match elements unmatched by `matcher`
+					while ( i-- ) {
+						if ( (elem = unmatched[i]) ) {
+							seed[i] = !(matches[i] = elem);
+						}
+					}
+				}) :
+				function( elem, context, xml ) {
+					input[0] = elem;
+					matcher( input, null, xml, results );
+					// Don't keep the element (issue #299)
+					input[0] = null;
+					return !results.pop();
+				};
+		}),
+
+		"has": markFunction(function( selector ) {
+			return function( elem ) {
+				return Sizzle( selector, elem ).length > 0;
+			};
+		}),
+
+		"contains": markFunction(function( text ) {
+			text = text.replace( runescape, funescape );
+			return function( elem ) {
+				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+			};
+		}),
+
+		// "Whether an element is represented by a :lang() selector
+		// is based solely on the element's language value
+		// being equal to the identifier C,
+		// or beginning with the identifier C immediately followed by "-".
+		// The matching of C against the element's language value is performed case-insensitively.
+		// The identifier C does not have to be a valid language name."
+		// http://www.w3.org/TR/selectors/#lang-pseudo
+		"lang": markFunction( function( lang ) {
+			// lang value must be a valid identifier
+			if ( !ridentifier.test(lang || "") ) {
+				Sizzle.error( "unsupported lang: " + lang );
+			}
+			lang = lang.replace( runescape, funescape ).toLowerCase();
+			return function( elem ) {
+				var elemLang;
+				do {
+					if ( (elemLang = documentIsHTML ?
+						elem.lang :
+						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+						elemLang = elemLang.toLowerCase();
+						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+					}
+				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+				return false;
+			};
+		}),
+
+		// Miscellaneous
+		"target": function( elem ) {
+			var hash = window.location && window.location.hash;
+			return hash && hash.slice( 1 ) === elem.id;
+		},
+
+		"root": function( elem ) {
+			return elem === docElem;
+		},
+
+		"focus": function( elem ) {
+			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+		},
+
+		// Boolean properties
+		"enabled": function( elem ) {
+			return elem.disabled === false;
+		},
+
+		"disabled": function( elem ) {
+			return elem.disabled === true;
+		},
+
+		"checked": function( elem ) {
+			// In CSS3, :checked should return both checked and selected elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			var nodeName = elem.nodeName.toLowerCase();
+			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+		},
+
+		"selected": function( elem ) {
+			// Accessing this property makes selected-by-default
+			// options in Safari work properly
+			if ( elem.parentNode ) {
+				elem.parentNode.selectedIndex;
+			}
+
+			return elem.selected === true;
+		},
+
+		// Contents
+		"empty": function( elem ) {
+			// http://www.w3.org/TR/selectors/#empty-pseudo
+			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+			//   but not by others (comment: 8; processing instruction: 7; etc.)
+			// nodeType < 6 works because attributes (2) do not appear as children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				if ( elem.nodeType < 6 ) {
+					return false;
+				}
+			}
+			return true;
+		},
+
+		"parent": function( elem ) {
+			return !Expr.pseudos["empty"]( elem );
+		},
+
+		// Element/input types
+		"header": function( elem ) {
+			return rheader.test( elem.nodeName );
+		},
+
+		"input": function( elem ) {
+			return rinputs.test( elem.nodeName );
+		},
+
+		"button": function( elem ) {
+			var name = elem.nodeName.toLowerCase();
+			return name === "input" && elem.type === "button" || name === "button";
+		},
+
+		"text": function( elem ) {
+			var attr;
+			return elem.nodeName.toLowerCase() === "input" &&
+				elem.type === "text" &&
+
+				// Support: IE<8
+				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+		},
+
+		// Position-in-collection
+		"first": createPositionalPseudo(function() {
+			return [ 0 ];
+		}),
+
+		"last": createPositionalPseudo(function( matchIndexes, length ) {
+			return [ length - 1 ];
+		}),
+
+		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			return [ argument < 0 ? argument + length : argument ];
+		}),
+
+		"even": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 0;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"odd": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 1;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; --i >= 0; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; ++i < length; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		})
+	}
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+	Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+	Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+	var matched, match, tokens, type,
+		soFar, groups, preFilters,
+		cached = tokenCache[ selector + " " ];
+
+	if ( cached ) {
+		return parseOnly ? 0 : cached.slice( 0 );
+	}
+
+	soFar = selector;
+	groups = [];
+	preFilters = Expr.preFilter;
+
+	while ( soFar ) {
+
+		// Comma and first run
+		if ( !matched || (match = rcomma.exec( soFar )) ) {
+			if ( match ) {
+				// Don't consume trailing commas as valid
+				soFar = soFar.slice( match[0].length ) || soFar;
+			}
+			groups.push( (tokens = []) );
+		}
+
+		matched = false;
+
+		// Combinators
+		if ( (match = rcombinators.exec( soFar )) ) {
+			matched = match.shift();
+			tokens.push({
+				value: matched,
+				// Cast descendant combinators to space
+				type: match[0].replace( rtrim, " " )
+			});
+			soFar = soFar.slice( matched.length );
+		}
+
+		// Filters
+		for ( type in Expr.filter ) {
+			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+				(match = preFilters[ type ]( match ))) ) {
+				matched = match.shift();
+				tokens.push({
+					value: matched,
+					type: type,
+					matches: match
+				});
+				soFar = soFar.slice( matched.length );
+			}
+		}
+
+		if ( !matched ) {
+			break;
+		}
+	}
+
+	// Return the length of the invalid excess
+	// if we're just parsing
+	// Otherwise, throw an error or return tokens
+	return parseOnly ?
+		soFar.length :
+		soFar ?
+			Sizzle.error( selector ) :
+			// Cache the tokens
+			tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+	var i = 0,
+		len = tokens.length,
+		selector = "";
+	for ( ; i < len; i++ ) {
+		selector += tokens[i].value;
+	}
+	return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+	var dir = combinator.dir,
+		checkNonElements = base && dir === "parentNode",
+		doneName = done++;
+
+	return combinator.first ?
+		// Check against closest ancestor/preceding element
+		function( elem, context, xml ) {
+			while ( (elem = elem[ dir ]) ) {
+				if ( elem.nodeType === 1 || checkNonElements ) {
+					return matcher( elem, context, xml );
+				}
+			}
+		} :
+
+		// Check against all ancestor/preceding elements
+		function( elem, context, xml ) {
+			var oldCache, outerCache,
+				newCache = [ dirruns, doneName ];
+
+			// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+			if ( xml ) {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						if ( matcher( elem, context, xml ) ) {
+							return true;
+						}
+					}
+				}
+			} else {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						outerCache = elem[ expando ] || (elem[ expando ] = {});
+						if ( (oldCache = outerCache[ dir ]) &&
+							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+							// Assign to newCache so results back-propagate to previous elements
+							return (newCache[ 2 ] = oldCache[ 2 ]);
+						} else {
+							// Reuse newcache so results back-propagate to previous elements
+							outerCache[ dir ] = newCache;
+
+							// A match means we're done; a fail means we have to keep checking
+							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+								return true;
+							}
+						}
+					}
+				}
+			}
+		};
+}
+
+function elementMatcher( matchers ) {
+	return matchers.length > 1 ?
+		function( elem, context, xml ) {
+			var i = matchers.length;
+			while ( i-- ) {
+				if ( !matchers[i]( elem, context, xml ) ) {
+					return false;
+				}
+			}
+			return true;
+		} :
+		matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+	var i = 0,
+		len = contexts.length;
+	for ( ; i < len; i++ ) {
+		Sizzle( selector, contexts[i], results );
+	}
+	return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+	var elem,
+		newUnmatched = [],
+		i = 0,
+		len = unmatched.length,
+		mapped = map != null;
+
+	for ( ; i < len; i++ ) {
+		if ( (elem = unmatched[i]) ) {
+			if ( !filter || filter( elem, context, xml ) ) {
+				newUnmatched.push( elem );
+				if ( mapped ) {
+					map.push( i );
+				}
+			}
+		}
+	}
+
+	return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+	if ( postFilter && !postFilter[ expando ] ) {
+		postFilter = setMatcher( postFilter );
+	}
+	if ( postFinder && !postFinder[ expando ] ) {
+		postFinder = setMatcher( postFinder, postSelector );
+	}
+	return markFunction(function( seed, results, context, xml ) {
+		var temp, i, elem,
+			preMap = [],
+			postMap = [],
+			preexisting = results.length,
+
+			// Get initial elements from seed or context
+			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+			// Prefilter to get matcher input, preserving a map for seed-results synchronization
+			matcherIn = preFilter && ( seed || !selector ) ?
+				condense( elems, preMap, preFilter, context, xml ) :
+				elems,
+
+			matcherOut = matcher ?
+				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+					// ...intermediate processing is necessary
+					[] :
+
+					// ...otherwise use results directly
+					results :
+				matcherIn;
+
+		// Find primary matches
+		if ( matcher ) {
+			matcher( matcherIn, matcherOut, context, xml );
+		}
+
+		// Apply postFilter
+		if ( postFilter ) {
+			temp = condense( matcherOut, postMap );
+			postFilter( temp, [], context, xml );
+
+			// Un-match failing elements by moving them back to matcherIn
+			i = temp.length;
+			while ( i-- ) {
+				if ( (elem = temp[i]) ) {
+					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+				}
+			}
+		}
+
+		if ( seed ) {
+			if ( postFinder || preFilter ) {
+				if ( postFinder ) {
+					// Get the final matcherOut by condensing this intermediate into postFinder contexts
+					temp = [];
+					i = matcherOut.length;
+					while ( i-- ) {
+						if ( (elem = matcherOut[i]) ) {
+							// Restore matcherIn since elem is not yet a final match
+							temp.push( (matcherIn[i] = elem) );
+						}
+					}
+					postFinder( null, (matcherOut = []), temp, xml );
+				}
+
+				// Move matched elements from seed to results to keep them synchronized
+				i = matcherOut.length;
+				while ( i-- ) {
+					if ( (elem = matcherOut[i]) &&
+						(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+						seed[temp] = !(results[temp] = elem);
+					}
+				}
+			}
+
+		// Add elements to results, through postFinder if defined
+		} else {
+			matcherOut = condense(
+				matcherOut === results ?
+					matcherOut.splice( preexisting, matcherOut.length ) :
+					matcherOut
+			);
+			if ( postFinder ) {
+				postFinder( null, results, matcherOut, xml );
+			} else {
+				push.apply( results, matcherOut );
+			}
+		}
+	});
+}
+
+function matcherFromTokens( tokens ) {
+	var checkContext, matcher, j,
+		len = tokens.length,
+		leadingRelative = Expr.relative[ tokens[0].type ],
+		implicitRelative = leadingRelative || Expr.relative[" "],
+		i = leadingRelative ? 1 : 0,
+
+		// The foundational matcher ensures that elements are reachable from top-level context(s)
+		matchContext = addCombinator( function( elem ) {
+			return elem === checkContext;
+		}, implicitRelative, true ),
+		matchAnyContext = addCombinator( function( elem ) {
+			return indexOf( checkContext, elem ) > -1;
+		}, implicitRelative, true ),
+		matchers = [ function( elem, context, xml ) {
+			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+				(checkContext = context).nodeType ?
+					matchContext( elem, context, xml ) :
+					matchAnyContext( elem, context, xml ) );
+			// Avoid hanging onto element (issue #299)
+			checkContext = null;
+			return ret;
+		} ];
+
+	for ( ; i < len; i++ ) {
+		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+		} else {
+			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+			// Return special upon seeing a positional matcher
+			if ( matcher[ expando ] ) {
+				// Find the next relative operator (if any) for proper handling
+				j = ++i;
+				for ( ; j < len; j++ ) {
+					if ( Expr.relative[ tokens[j].type ] ) {
+						break;
+					}
+				}
+				return setMatcher(
+					i > 1 && elementMatcher( matchers ),
+					i > 1 && toSelector(
+						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
+						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+					).replace( rtrim, "$1" ),
+					matcher,
+					i < j && matcherFromTokens( tokens.slice( i, j ) ),
+					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+					j < len && toSelector( tokens )
+				);
+			}
+			matchers.push( matcher );
+		}
+	}
+
+	return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+	var bySet = setMatchers.length > 0,
+		byElement = elementMatchers.length > 0,
+		superMatcher = function( seed, context, xml, results, outermost ) {
+			var elem, j, matcher,
+				matchedCount = 0,
+				i = "0",
+				unmatched = seed && [],
+				setMatched = [],
+				contextBackup = outermostContext,
+				// We must always have either seed elements or outermost context
+				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+				// Use integer dirruns iff this is the outermost matcher
+				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+				len = elems.length;
+
+			if ( outermost ) {
+				outermostContext = context !== document && context;
+			}
+
+			// Add elements passing elementMatchers directly to results
+			// Keep `i` a string if there are no elements so `matchedCount` will be "00" below
+			// Support: IE<9, Safari
+			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+				if ( byElement && elem ) {
+					j = 0;
+					while ( (matcher = elementMatchers[j++]) ) {
+						if ( matcher( elem, context, xml ) ) {
+							results.push( elem );
+							break;
+						}
+					}
+					if ( outermost ) {
+						dirruns = dirrunsUnique;
+					}
+				}
+
+				// Track unmatched elements for set filters
+				if ( bySet ) {
+					// They will have gone through all possible matchers
+					if ( (elem = !matcher && elem) ) {
+						matchedCount--;
+					}
+
+					// Lengthen the array for every element, matched or not
+					if ( seed ) {
+						unmatched.push( elem );
+					}
+				}
+			}
+
+			// Apply set filters to unmatched elements
+			matchedCount += i;
+			if ( bySet && i !== matchedCount ) {
+				j = 0;
+				while ( (matcher = setMatchers[j++]) ) {
+					matcher( unmatched, setMatched, context, xml );
+				}
+
+				if ( seed ) {
+					// Reintegrate element matches to eliminate the need for sorting
+					if ( matchedCount > 0 ) {
+						while ( i-- ) {
+							if ( !(unmatched[i] || setMatched[i]) ) {
+								setMatched[i] = pop.call( results );
+							}
+						}
+					}
+
+					// Discard index placeholder values to get only actual matches
+					setMatched = condense( setMatched );
+				}
+
+				// Add matches to results
+				push.apply( results, setMatched );
+
+				// Seedless set matches succeeding multiple successful matchers stipulate sorting
+				if ( outermost && !seed && setMatched.length > 0 &&
+					( matchedCount + setMatchers.length ) > 1 ) {
+
+					Sizzle.uniqueSort( results );
+				}
+			}
+
+			// Override manipulation of globals by nested matchers
+			if ( outermost ) {
+				dirruns = dirrunsUnique;
+				outermostContext = contextBackup;
+			}
+
+			return unmatched;
+		};
+
+	return bySet ?
+		markFunction( superMatcher ) :
+		superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+	var i,
+		setMatchers = [],
+		elementMatchers = [],
+		cached = compilerCache[ selector + " " ];
+
+	if ( !cached ) {
+		// Generate a function of recursive functions that can be used to check each element
+		if ( !match ) {
+			match = tokenize( selector );
+		}
+		i = match.length;
+		while ( i-- ) {
+			cached = matcherFromTokens( match[i] );
+			if ( cached[ expando ] ) {
+				setMatchers.push( cached );
+			} else {
+				elementMatchers.push( cached );
+			}
+		}
+
+		// Cache the compiled function
+		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+		// Save selector and tokenization
+		cached.selector = selector;
+	}
+	return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ *  selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ *  selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+	var i, tokens, token, type, find,
+		compiled = typeof selector === "function" && selector,
+		match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+	results = results || [];
+
+	// Try to minimize operations if there is no seed and only one group
+	if ( match.length === 1 ) {
+
+		// Take a shortcut and set the context if the root selector is an ID
+		tokens = match[0] = match[0].slice( 0 );
+		if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+				support.getById && context.nodeType === 9 && documentIsHTML &&
+				Expr.relative[ tokens[1].type ] ) {
+
+			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+			if ( !context ) {
+				return results;
+
+			// Precompiled matchers will still verify ancestry, so step up a level
+			} else if ( compiled ) {
+				context = context.parentNode;
+			}
+
+			selector = selector.slice( tokens.shift().value.length );
+		}
+
+		// Fetch a seed set for right-to-left matching
+		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+		while ( i-- ) {
+			token = tokens[i];
+
+			// Abort if we hit a combinator
+			if ( Expr.relative[ (type = token.type) ] ) {
+				break;
+			}
+			if ( (find = Expr.find[ type ]) ) {
+				// Search, expanding context for leading sibling combinators
+				if ( (seed = find(
+					token.matches[0].replace( runescape, funescape ),
+					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+				)) ) {
+
+					// If seed is empty or no tokens remain, we can return early
+					tokens.splice( i, 1 );
+					selector = seed.length && toSelector( tokens );
+					if ( !selector ) {
+						push.apply( results, seed );
+						return results;
+					}
+
+					break;
+				}
+			}
+		}
+	}
+
+	// Compile and execute a filtering function if one is not provided
+	// Provide `match` to avoid retokenization if we modified the selector above
+	( compiled || compile( selector, match ) )(
+		seed,
+		context,
+		!documentIsHTML,
+		results,
+		rsibling.test( selector ) && testContext( context.parentNode ) || context
+	);
+	return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+	// Should return 1, but returns 4 (following)
+	return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+	div.innerHTML = "<a href='#'></a>";
+	return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+	addHandle( "type|href|height|width", function( elem, name, isXML ) {
+		if ( !isXML ) {
+			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+		}
+	});
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+	div.innerHTML = "<input/>";
+	div.firstChild.setAttribute( "value", "" );
+	return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+	addHandle( "value", function( elem, name, isXML ) {
+		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+			return elem.defaultValue;
+		}
+	});
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+	return div.getAttribute("disabled") == null;
+}) ) {
+	addHandle( booleans, function( elem, name, isXML ) {
+		var val;
+		if ( !isXML ) {
+			return elem[ name ] === true ? name.toLowerCase() :
+					(val = elem.getAttributeNode( name )) && val.specified ?
+					val.value :
+				null;
+		}
+	});
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+	if ( jQuery.isFunction( qualifier ) ) {
+		return jQuery.grep( elements, function( elem, i ) {
+			/* jshint -W018 */
+			return !!qualifier.call( elem, i, elem ) !== not;
+		});
+
+	}
+
+	if ( qualifier.nodeType ) {
+		return jQuery.grep( elements, function( elem ) {
+			return ( elem === qualifier ) !== not;
+		});
+
+	}
+
+	if ( typeof qualifier === "string" ) {
+		if ( risSimple.test( qualifier ) ) {
+			return jQuery.filter( qualifier, elements, not );
+		}
+
+		qualifier = jQuery.filter( qualifier, elements );
+	}
+
+	return jQuery.grep( elements, function( elem ) {
+		return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
+	});
+}
+
+jQuery.filter = function( expr, elems, not ) {
+	var elem = elems[ 0 ];
+
+	if ( not ) {
+		expr = ":not(" + expr + ")";
+	}
+
+	return elems.length === 1 && elem.nodeType === 1 ?
+		jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+		jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+			return elem.nodeType === 1;
+		}));
+};
+
+jQuery.fn.extend({
+	find: function( selector ) {
+		var i,
+			len = this.length,
+			ret = [],
+			self = this;
+
+		if ( typeof selector !== "string" ) {
+			return this.pushStack( jQuery( selector ).filter(function() {
+				for ( i = 0; i < len; i++ ) {
+					if ( jQuery.contains( self[ i ], this ) ) {
+						return true;
+					}
+				}
+			}) );
+		}
+
+		for ( i = 0; i < len; i++ ) {
+			jQuery.find( selector, self[ i ], ret );
+		}
+
+		// Needed because $( selector, context ) becomes $( context ).find( selector )
+		ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+		ret.selector = this.selector ? this.selector + " " + selector : selector;
+		return ret;
+	},
+	filter: function( selector ) {
+		return this.pushStack( winnow(this, selector || [], false) );
+	},
+	not: function( selector ) {
+		return this.pushStack( winnow(this, selector || [], true) );
+	},
+	is: function( selector ) {
+		return !!winnow(
+			this,
+
+			// If this is a positional/relative selector, check membership in the returned set
+			// so $("p:first").is("p:last") won't return true for a doc with two "p".
+			typeof selector === "string" && rneedsContext.test( selector ) ?
+				jQuery( selector ) :
+				selector || [],
+			false
+		).length;
+	}
+});
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+	// A simple way to check for HTML strings
+	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+	// Strict HTML recognition (#11290: must start with <)
+	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+	init = jQuery.fn.init = function( selector, context ) {
+		var match, elem;
+
+		// HANDLE: $(""), $(null), $(undefined), $(false)
+		if ( !selector ) {
+			return this;
+		}
+
+		// Handle HTML strings
+		if ( typeof selector === "string" ) {
+			if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
+				// Assume that strings that start and end with <> are HTML and skip the regex check
+				match = [ null, selector, null ];
+
+			} else {
+				match = rquickExpr.exec( selector );
+			}
+
+			// Match html or make sure no context is specified for #id
+			if ( match && (match[1] || !context) ) {
+
+				// HANDLE: $(html) -> $(array)
+				if ( match[1] ) {
+					context = context instanceof jQuery ? context[0] : context;
+
+					// Option to run scripts is true for back-compat
+					// Intentionally let the error be thrown if parseHTML is not present
+					jQuery.merge( this, jQuery.parseHTML(
+						match[1],
+						context && context.nodeType ? context.ownerDocument || context : document,
+						true
+					) );
+
+					// HANDLE: $(html, props)
+					if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+						for ( match in context ) {
+							// Properties of context are called as methods if possible
+							if ( jQuery.isFunction( this[ match ] ) ) {
+								this[ match ]( context[ match ] );
+
+							// ...and otherwise set as attributes
+							} else {
+								this.attr( match, context[ match ] );
+							}
+						}
+					}
+
+					return this;
+
+				// HANDLE: $(#id)
+				} else {
+					elem = document.getElementById( match[2] );
+
+					// Support: Blackberry 4.6
+					// gEBID returns nodes no longer in the document (#6963)
+					if ( elem && elem.parentNode ) {
+						// Inject the element directly into the jQuery object
+						this.length = 1;
+						this[0] = elem;
+					}
+
+					this.context = document;
+					this.selector = selector;
+					return this;
+				}
+
+			// HANDLE: $(expr, $(...))
+			} else if ( !context || context.jquery ) {
+				return ( context || rootjQuery ).find( selector );
+
+			// HANDLE: $(expr, context)
+			// (which is just equivalent to: $(context).find(expr)
+			} else {
+				return this.constructor( context ).find( selector );
+			}
+
+		// HANDLE: $(DOMElement)
+		} else if ( selector.nodeType ) {
+			this.context = this[0] = selector;
+			this.length = 1;
+			return this;
+
+		// HANDLE: $(function)
+		// Shortcut for document ready
+		} else if ( jQuery.isFunction( selector ) ) {
+			return typeof rootjQuery.ready !== "undefined" ?
+				rootjQuery.ready( selector ) :
+				// Execute immediately if ready is not present
+				selector( jQuery );
+		}
+
+		if ( selector.selector !== undefined ) {
+			this.selector = selector.selector;
+			this.context = selector.context;
+		}
+
+		return jQuery.makeArray( selector, this );
+	};
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+	// Methods guaranteed to produce a unique set when starting from a unique set
+	guaranteedUnique = {
+		children: true,
+		contents: true,
+		next: true,
+		prev: true
+	};
+
+jQuery.extend({
+	dir: function( elem, dir, until ) {
+		var matched = [],
+			truncate = until !== undefined;
+
+		while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
+			if ( elem.nodeType === 1 ) {
+				if ( truncate && jQuery( elem ).is( until ) ) {
+					break;
+				}
+				matched.push( elem );
+			}
+		}
+		return matched;
+	},
+
+	sibling: function( n, elem ) {
+		var matched = [];
+
+		for ( ; n; n = n.nextSibling ) {
+			if ( n.nodeType === 1 && n !== elem ) {
+				matched.push( n );
+			}
+		}
+
+		return matched;
+	}
+});
+
+jQuery.fn.extend({
+	has: function( target ) {
+		var targets = jQuery( target, this ),
+			l = targets.length;
+
+		return this.filter(function() {
+			var i = 0;
+			for ( ; i < l; i++ ) {
+				if ( jQuery.contains( this, targets[i] ) ) {
+					return true;
+				}
+			}
+		});
+	},
+
+	closest: function( selectors, context ) {
+		var cur,
+			i = 0,
+			l = this.length,
+			matched = [],
+			pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+				jQuery( selectors, context || this.context ) :
+				0;
+
+		for ( ; i < l; i++ ) {
+			for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
+				// Always skip document fragments
+				if ( cur.nodeType < 11 && (pos ?
+					pos.index(cur) > -1 :
+
+					// Don't pass non-elements to Sizzle
+					cur.nodeType === 1 &&
+						jQuery.find.matchesSelector(cur, selectors)) ) {
+
+					matched.push( cur );
+					break;
+				}
+			}
+		}
+
+		return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
+	},
+
+	// Determine the position of an element within the set
+	index: function( elem ) {
+
+		// No argument, return index in parent
+		if ( !elem ) {
+			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+		}
+
+		// Index in selector
+		if ( typeof elem === "string" ) {
+			return indexOf.call( jQuery( elem ), this[ 0 ] );
+		}
+
+		// Locate the position of the desired element
+		return indexOf.call( this,
+
+			// If it receives a jQuery object, the first element is used
+			elem.jquery ? elem[ 0 ] : elem
+		);
+	},
+
+	add: function( selector, context ) {
+		return this.pushStack(
+			jQuery.unique(
+				jQuery.merge( this.get(), jQuery( selector, context ) )
+			)
+		);
+	},
+
+	addBack: function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter(selector)
+		);
+	}
+});
+
+function sibling( cur, dir ) {
+	while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
+	return cur;
+}
+
+jQuery.each({
+	parent: function( elem ) {
+		var parent = elem.parentNode;
+		return parent && parent.nodeType !== 11 ? parent : null;
+	},
+	parents: function( elem ) {
+		return jQuery.dir( elem, "parentNode" );
+	},
+	parentsUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "parentNode", until );
+	},
+	next: function( elem ) {
+		return sibling( elem, "nextSibling" );
+	},
+	prev: function( elem ) {
+		return sibling( elem, "previousSibling" );
+	},
+	nextAll: function( elem ) {
+		return jQuery.dir( elem, "nextSibling" );
+	},
+	prevAll: function( elem ) {
+		return jQuery.dir( elem, "previousSibling" );
+	},
+	nextUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "nextSibling", until );
+	},
+	prevUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "previousSibling", until );
+	},
+	siblings: function( elem ) {
+		return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+	},
+	children: function( elem ) {
+		return jQuery.sibling( elem.firstChild );
+	},
+	contents: function( elem ) {
+		return elem.contentDocument || jQuery.merge( [], elem.childNodes );
+	}
+}, function( name, fn ) {
+	jQuery.fn[ name ] = function( until, selector ) {
+		var matched = jQuery.map( this, fn, until );
+
+		if ( name.slice( -5 ) !== "Until" ) {
+			selector = until;
+		}
+
+		if ( selector && typeof selector === "string" ) {
+			matched = jQuery.filter( selector, matched );
+		}
+
+		if ( this.length > 1 ) {
+			// Remove duplicates
+			if ( !guaranteedUnique[ name ] ) {
+				jQuery.unique( matched );
+			}
+
+			// Reverse order for parents* and prev-derivatives
+			if ( rparentsprev.test( name ) ) {
+				matched.reverse();
+			}
+		}
+
+		return this.pushStack( matched );
+	};
+});
+var rnotwhite = (/\S+/g);
+
+
+
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+	var object = optionsCache[ options ] = {};
+	jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
+		object[ flag ] = true;
+	});
+	return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *	options: an optional list of space-separated options that will change how
+ *			the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ *	once:			will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *	memory:			will keep track of previous values and will call any callback added
+ *					after the list has been fired right away with the latest "memorized"
+ *					values (like a Deferred)
+ *
+ *	unique:			will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *	stopOnFalse:	interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+	// Convert options from String-formatted to Object-formatted if needed
+	// (we check in cache first)
+	options = typeof options === "string" ?
+		( optionsCache[ options ] || createOptions( options ) ) :
+		jQuery.extend( {}, options );
+
+	var // Last fire value (for non-forgettable lists)
+		memory,
+		// Flag to know if list was already fired
+		fired,
+		// Flag to know if list is currently firing
+		firing,
+		// First callback to fire (used internally by add and fireWith)
+		firingStart,
+		// End of the loop when firing
+		firingLength,
+		// Index of currently firing callback (modified by remove if needed)
+		firingIndex,
+		// Actual callback list
+		list = [],
+		// Stack of fire calls for repeatable lists
+		stack = !options.once && [],
+		// Fire callbacks
+		fire = function( data ) {
+			memory = options.memory && data;
+			fired = true;
+			firingIndex = firingStart || 0;
+			firingStart = 0;
+			firingLength = list.length;
+			firing = true;
+			for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+				if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+					memory = false; // To prevent further calls using add
+					break;
+				}
+			}
+			firing = false;
+			if ( list ) {
+				if ( stack ) {
+					if ( stack.length ) {
+						fire( stack.shift() );
+					}
+				} else if ( memory ) {
+					list = [];
+				} else {
+					self.disable();
+				}
+			}
+		},
+		// Actual Callbacks object
+		self = {
+			// Add a callback or a collection of callbacks to the list
+			add: function() {
+				if ( list ) {
+					// First, we save the current length
+					var start = list.length;
+					(function add( args ) {
+						jQuery.each( args, function( _, arg ) {
+							var type = jQuery.type( arg );
+							if ( type === "function" ) {
+								if ( !options.unique || !self.has( arg ) ) {
+									list.push( arg );
+								}
+							} else if ( arg && arg.length && type !== "string" ) {
+								// Inspect recursively
+								add( arg );
+							}
+						});
+					})( arguments );
+					// Do we need to add the callbacks to the
+					// current firing batch?
+					if ( firing ) {
+						firingLength = list.length;
+					// With memory, if we're not firing then
+					// we should call right away
+					} else if ( memory ) {
+						firingStart = start;
+						fire( memory );
+					}
+				}
+				return this;
+			},
+			// Remove a callback from the list
+			remove: function() {
+				if ( list ) {
+					jQuery.each( arguments, function( _, arg ) {
+						var index;
+						while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+							list.splice( index, 1 );
+							// Handle firing indexes
+							if ( firing ) {
+								if ( index <= firingLength ) {
+									firingLength--;
+								}
+								if ( index <= firingIndex ) {
+									firingIndex--;
+								}
+							}
+						}
+					});
+				}
+				return this;
+			},
+			// Check if a given callback is in the list.
+			// If no argument is given, return whether or not list has callbacks attached.
+			has: function( fn ) {
+				return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
+			},
+			// Remove all callbacks from the list
+			empty: function() {
+				list = [];
+				firingLength = 0;
+				return this;
+			},
+			// Have the list do nothing anymore
+			disable: function() {
+				list = stack = memory = undefined;
+				return this;
+			},
+			// Is it disabled?
+			disabled: function() {
+				return !list;
+			},
+			// Lock the list in its current state
+			lock: function() {
+				stack = undefined;
+				if ( !memory ) {
+					self.disable();
+				}
+				return this;
+			},
+			// Is it locked?
+			locked: function() {
+				return !stack;
+			},
+			// Call all callbacks with the given context and arguments
+			fireWith: function( context, args ) {
+				if ( list && ( !fired || stack ) ) {
+					args = args || [];
+					args = [ context, args.slice ? args.slice() : args ];
+					if ( firing ) {
+						stack.push( args );
+					} else {
+						fire( args );
+					}
+				}
+				return this;
+			},
+			// Call all the callbacks with the given arguments
+			fire: function() {
+				self.fireWith( this, arguments );
+				return this;
+			},
+			// To know if the callbacks have already been called at least once
+			fired: function() {
+				return !!fired;
+			}
+		};
+
+	return self;
+};
+
+
+jQuery.extend({
+
+	Deferred: function( func ) {
+		var tuples = [
+				// action, add listener, listener list, final state
+				[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
+				[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
+				[ "notify", "progress", jQuery.Callbacks("memory") ]
+			],
+			state = "pending",
+			promise = {
+				state: function() {
+					return state;
+				},
+				always: function() {
+					deferred.done( arguments ).fail( arguments );
+					return this;
+				},
+				then: function( /* fnDone, fnFail, fnProgress */ ) {
+					var fns = arguments;
+					return jQuery.Deferred(function( newDefer ) {
+						jQuery.each( tuples, function( i, tuple ) {
+							var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+							// deferred[ done | fail | progress ] for forwarding actions to newDefer
+							deferred[ tuple[1] ](function() {
+								var returned = fn && fn.apply( this, arguments );
+								if ( returned && jQuery.isFunction( returned.promise ) ) {
+									returned.promise()
+										.done( newDefer.resolve )
+										.fail( newDefer.reject )
+										.progress( newDefer.notify );
+								} else {
+									newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
+								}
+							});
+						});
+						fns = null;
+					}).promise();
+				},
+				// Get a promise for this deferred
+				// If obj is provided, the promise aspect is added to the object
+				promise: function( obj ) {
+					return obj != null ? jQuery.extend( obj, promise ) : promise;
+				}
+			},
+			deferred = {};
+
+		// Keep pipe for back-compat
+		promise.pipe = promise.then;
+
+		// Add list-specific methods
+		jQuery.each( tuples, function( i, tuple ) {
+			var list = tuple[ 2 ],
+				stateString = tuple[ 3 ];
+
+			// promise[ done | fail | progress ] = list.add
+			promise[ tuple[1] ] = list.add;
+
+			// Handle state
+			if ( stateString ) {
+				list.add(function() {
+					// state = [ resolved | rejected ]
+					state = stateString;
+
+				// [ reject_list | resolve_list ].disable; progress_list.lock
+				}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+			}
+
+			// deferred[ resolve | reject | notify ]
+			deferred[ tuple[0] ] = function() {
+				deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
+				return this;
+			};
+			deferred[ tuple[0] + "With" ] = list.fireWith;
+		});
+
+		// Make the deferred a promise
+		promise.promise( deferred );
+
+		// Call given func if any
+		if ( func ) {
+			func.call( deferred, deferred );
+		}
+
+		// All done!
+		return deferred;
+	},
+
+	// Deferred helper
+	when: function( subordinate /* , ..., subordinateN */ ) {
+		var i = 0,
+			resolveValues = slice.call( arguments ),
+			length = resolveValues.length,
+
+			// the count of uncompleted subordinates
+			remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+			// the master Deferred. If resolveValues consist of only a single Deferred, just use that.
+			deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+			// Update function for both resolve and progress values
+			updateFunc = function( i, contexts, values ) {
+				return function( value ) {
+					contexts[ i ] = this;
+					values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+					if ( values === progressValues ) {
+						deferred.notifyWith( contexts, values );
+					} else if ( !( --remaining ) ) {
+						deferred.resolveWith( contexts, values );
+					}
+				};
+			},
+
+			progressValues, progressContexts, resolveContexts;
+
+		// Add listeners to Deferred subordinates; treat others as resolved
+		if ( length > 1 ) {
+			progressValues = new Array( length );
+			progressContexts = new Array( length );
+			resolveContexts = new Array( length );
+			for ( ; i < length; i++ ) {
+				if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+					resolveValues[ i ].promise()
+						.done( updateFunc( i, resolveContexts, resolveValues ) )
+						.fail( deferred.reject )
+						.progress( updateFunc( i, progressContexts, progressValues ) );
+				} else {
+					--remaining;
+				}
+			}
+		}
+
+		// If we're not waiting on anything, resolve the master
+		if ( !remaining ) {
+			deferred.resolveWith( resolveContexts, resolveValues );
+		}
+
+		return deferred.promise();
+	}
+});
+
+
+// The deferred used on DOM ready
+var readyList;
+
+jQuery.fn.ready = function( fn ) {
+	// Add the callback
+	jQuery.ready.promise().done( fn );
+
+	return this;
+};
+
+jQuery.extend({
+	// Is the DOM ready to be used? Set to true once it occurs.
+	isReady: false,
+
+	// A counter to track how many items to wait for before
+	// the ready event fires. See #6781
+	readyWait: 1,
+
+	// Hold (or release) the ready event
+	holdReady: function( hold ) {
+		if ( hold ) {
+			jQuery.readyWait++;
+		} else {
+			jQuery.ready( true );
+		}
+	},
+
+	// Handle when the DOM is ready
+	ready: function( wait ) {
+
+		// Abort if there are pending holds or we're already ready
+		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+			return;
+		}
+
+		// Remember that the DOM is ready
+		jQuery.isReady = true;
+
+		// If a normal DOM Ready event fired, decrement, and wait if need be
+		if ( wait !== true && --jQuery.readyWait > 0 ) {
+			return;
+		}
+
+		// If there are functions bound, to execute
+		readyList.resolveWith( document, [ jQuery ] );
+
+		// Trigger any bound ready events
+		if ( jQuery.fn.triggerHandler ) {
+			jQuery( document ).triggerHandler( "ready" );
+			jQuery( document ).off( "ready" );
+		}
+	}
+});
+
+/**
+ * The ready event handler and self cleanup method
+ */
+function completed() {
+	document.removeEventListener( "DOMContentLoaded", completed, false );
+	window.removeEventListener( "load", completed, false );
+	jQuery.ready();
+}
+
+jQuery.ready.promise = function( obj ) {
+	if ( !readyList ) {
+
+		readyList = jQuery.Deferred();
+
+		// Catch cases where $(document).ready() is called after the browser event has already occurred.
+		// We once tried to use readyState "interactive" here, but it caused issues like the one
+		// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
+		if ( document.readyState === "complete" ) {
+			// Handle it asynchronously to allow scripts the opportunity to delay ready
+			setTimeout( jQuery.ready );
+
+		} else {
+
+			// Use the handy event callback
+			document.addEventListener( "DOMContentLoaded", completed, false );
+
+			// A fallback to window.onload, that will always work
+			window.addEventListener( "load", completed, false );
+		}
+	}
+	return readyList.promise( obj );
+};
+
+// Kick off the DOM ready check even if the user does not
+jQuery.ready.promise();
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+	var i = 0,
+		len = elems.length,
+		bulk = key == null;
+
+	// Sets many values
+	if ( jQuery.type( key ) === "object" ) {
+		chainable = true;
+		for ( i in key ) {
+			jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
+		}
+
+	// Sets one value
+	} else if ( value !== undefined ) {
+		chainable = true;
+
+		if ( !jQuery.isFunction( value ) ) {
+			raw = true;
+		}
+
+		if ( bulk ) {
+			// Bulk operations run against the entire set
+			if ( raw ) {
+				fn.call( elems, value );
+				fn = null;
+
+			// ...except when executing function values
+			} else {
+				bulk = fn;
+				fn = function( elem, key, value ) {
+					return bulk.call( jQuery( elem ), value );
+				};
+			}
+		}
+
+		if ( fn ) {
+			for ( ; i < len; i++ ) {
+				fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
+			}
+		}
+	}
+
+	return chainable ?
+		elems :
+
+		// Gets
+		bulk ?
+			fn.call( elems ) :
+			len ? fn( elems[0], key ) : emptyGet;
+};
+
+
+/**
+ * Determines whether an object can have data
+ */
+jQuery.acceptData = function( owner ) {
+	// Accepts only:
+	//  - Node
+	//    - Node.ELEMENT_NODE
+	//    - Node.DOCUMENT_NODE
+	//  - Object
+	//    - Any
+	/* jshint -W018 */
+	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+function Data() {
+	// Support: Android<4,
+	// Old WebKit does not have Object.preventExtensions/freeze method,
+	// return new empty object instead with no [[set]] accessor
+	Object.defineProperty( this.cache = {}, 0, {
+		get: function() {
+			return {};
+		}
+	});
+
+	this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+Data.accepts = jQuery.acceptData;
+
+Data.prototype = {
+	key: function( owner ) {
+		// We can accept data for non-element nodes in modern browsers,
+		// but we should not, see #8335.
+		// Always return the key for a frozen object.
+		if ( !Data.accepts( owner ) ) {
+			return 0;
+		}
+
+		var descriptor = {},
+			// Check if the owner object already has a cache key
+			unlock = owner[ this.expando ];
+
+		// If not, create one
+		if ( !unlock ) {
+			unlock = Data.uid++;
+
+			// Secure it in a non-enumerable, non-writable property
+			try {
+				descriptor[ this.expando ] = { value: unlock };
+				Object.defineProperties( owner, descriptor );
+
+			// Support: Android<4
+			// Fallback to a less secure definition
+			} catch ( e ) {
+				descriptor[ this.expando ] = unlock;
+				jQuery.extend( owner, descriptor );
+			}
+		}
+
+		// Ensure the cache object
+		if ( !this.cache[ unlock ] ) {
+			this.cache[ unlock ] = {};
+		}
+
+		return unlock;
+	},
+	set: function( owner, data, value ) {
+		var prop,
+			// There may be an unlock assigned to this node,
+			// if there is no entry for this "owner", create one inline
+			// and set the unlock as though an owner entry had always existed
+			unlock = this.key( owner ),
+			cache = this.cache[ unlock ];
+
+		// Handle: [ owner, key, value ] args
+		if ( typeof data === "string" ) {
+			cache[ data ] = value;
+
+		// Handle: [ owner, { properties } ] args
+		} else {
+			// Fresh assignments by object are shallow copied
+			if ( jQuery.isEmptyObject( cache ) ) {
+				jQuery.extend( this.cache[ unlock ], data );
+			// Otherwise, copy the properties one-by-one to the cache object
+			} else {
+				for ( prop in data ) {
+					cache[ prop ] = data[ prop ];
+				}
+			}
+		}
+		return cache;
+	},
+	get: function( owner, key ) {
+		// Either a valid cache is found, or will be created.
+		// New caches will be created and the unlock returned,
+		// allowing direct access to the newly created
+		// empty data object. A valid owner object must be provided.
+		var cache = this.cache[ this.key( owner ) ];
+
+		return key === undefined ?
+			cache : cache[ key ];
+	},
+	access: function( owner, key, value ) {
+		var stored;
+		// In cases where either:
+		//
+		//   1. No key was specified
+		//   2. A string key was specified, but no value provided
+		//
+		// Take the "read" path and allow the get method to determine
+		// which value to return, respectively either:
+		//
+		//   1. The entire cache object
+		//   2. The data stored at the key
+		//
+		if ( key === undefined ||
+				((key && typeof key === "string") && value === undefined) ) {
+
+			stored = this.get( owner, key );
+
+			return stored !== undefined ?
+				stored : this.get( owner, jQuery.camelCase(key) );
+		}
+
+		// [*]When the key is not a string, or both a key and value
+		// are specified, set or extend (existing objects) with either:
+		//
+		//   1. An object of properties
+		//   2. A key and value
+		//
+		this.set( owner, key, value );
+
+		// Since the "set" path can have two possible entry points
+		// return the expected data based on which path was taken[*]
+		return value !== undefined ? value : key;
+	},
+	remove: function( owner, key ) {
+		var i, name, camel,
+			unlock = this.key( owner ),
+			cache = this.cache[ unlock ];
+
+		if ( key === undefined ) {
+			this.cache[ unlock ] = {};
+
+		} else {
+			// Support array or space separated string of keys
+			if ( jQuery.isArray( key ) ) {
+				// If "name" is an array of keys...
+				// When data is initially created, via ("key", "val") signature,
+				// keys will be converted to camelCase.
+				// Since there is no way to tell _how_ a key was added, remove
+				// both plain key and camelCase key. #12786
+				// This will only penalize the array argument path.
+				name = key.concat( key.map( jQuery.camelCase ) );
+			} else {
+				camel = jQuery.camelCase( key );
+				// Try the string as a key before any manipulation
+				if ( key in cache ) {
+					name = [ key, camel ];
+				} else {
+					// If a key with the spaces exists, use it.
+					// Otherwise, create an array by matching non-whitespace
+					name = camel;
+					name = name in cache ?
+						[ name ] : ( name.match( rnotwhite ) || [] );
+				}
+			}
+
+			i = name.length;
+			while ( i-- ) {
+				delete cache[ name[ i ] ];
+			}
+		}
+	},
+	hasData: function( owner ) {
+		return !jQuery.isEmptyObject(
+			this.cache[ owner[ this.expando ] ] || {}
+		);
+	},
+	discard: function( owner ) {
+		if ( owner[ this.expando ] ) {
+			delete this.cache[ owner[ this.expando ] ];
+		}
+	}
+};
+var data_priv = new Data();
+
+var data_user = new Data();
+
+
+
+//	Implementation Summary
+//
+//	1. Enforce API surface and semantic compatibility with 1.9.x branch
+//	2. Improve the module's maintainability by reducing the storage
+//		paths to a single mechanism.
+//	3. Use the same single mechanism to support "private" and "user" data.
+//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+//	5. Avoid exposing implementation details on user objects (eg. expando properties)
+//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+	rmultiDash = /([A-Z])/g;
+
+function dataAttr( elem, key, data ) {
+	var name;
+
+	// If nothing was found internally, try to fetch any
+	// data from the HTML5 data-* attribute
+	if ( data === undefined && elem.nodeType === 1 ) {
+		name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+		data = elem.getAttribute( name );
+
+		if ( typeof data === "string" ) {
+			try {
+				data = data === "true" ? true :
+					data === "false" ? false :
+					data === "null" ? null :
+					// Only convert to a number if it doesn't change the string
+					+data + "" === data ? +data :
+					rbrace.test( data ) ? jQuery.parseJSON( data ) :
+					data;
+			} catch( e ) {}
+
+			// Make sure we set the data so it isn't changed later
+			data_user.set( elem, key, data );
+		} else {
+			data = undefined;
+		}
+	}
+	return data;
+}
+
+jQuery.extend({
+	hasData: function( elem ) {
+		return data_user.hasData( elem ) || data_priv.hasData( elem );
+	},
+
+	data: function( elem, name, data ) {
+		return data_user.access( elem, name, data );
+	},
+
+	removeData: function( elem, name ) {
+		data_user.remove( elem, name );
+	},
+
+	// TODO: Now that all calls to _data and _removeData have been replaced
+	// with direct calls to data_priv methods, these can be deprecated.
+	_data: function( elem, name, data ) {
+		return data_priv.access( elem, name, data );
+	},
+
+	_removeData: function( elem, name ) {
+		data_priv.remove( elem, name );
+	}
+});
+
+jQuery.fn.extend({
+	data: function( key, value ) {
+		var i, name, data,
+			elem = this[ 0 ],
+			attrs = elem && elem.attributes;
+
+		// Gets all values
+		if ( key === undefined ) {
+			if ( this.length ) {
+				data = data_user.get( elem );
+
+				if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
+					i = attrs.length;
+					while ( i-- ) {
+
+						// Support: IE11+
+						// The attrs elements can be null (#14894)
+						if ( attrs[ i ] ) {
+							name = attrs[ i ].name;
+							if ( name.indexOf( "data-" ) === 0 ) {
+								name = jQuery.camelCase( name.slice(5) );
+								dataAttr( elem, name, data[ name ] );
+							}
+						}
+					}
+					data_priv.set( elem, "hasDataAttrs", true );
+				}
+			}
+
+			return data;
+		}
+
+		// Sets multiple values
+		if ( typeof key === "object" ) {
+			return this.each(function() {
+				data_user.set( this, key );
+			});
+		}
+
+		return access( this, function( value ) {
+			var data,
+				camelKey = jQuery.camelCase( key );
+
+			// The calling jQuery object (element matches) is not empty
+			// (and therefore has an element appears at this[ 0 ]) and the
+			// `value` parameter was not undefined. An empty jQuery object
+			// will result in `undefined` for elem = this[ 0 ] which will
+			// throw an exception if an attempt to read a data cache is made.
+			if ( elem && value === undefined ) {
+				// Attempt to get data from the cache
+				// with the key as-is
+				data = data_user.get( elem, key );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// Attempt to get data from the cache
+				// with the key camelized
+				data = data_user.get( elem, camelKey );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// Attempt to "discover" the data in
+				// HTML5 custom data-* attrs
+				data = dataAttr( elem, camelKey, undefined );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// We tried really hard, but the data doesn't exist.
+				return;
+			}
+
+			// Set the data...
+			this.each(function() {
+				// First, attempt to store a copy or reference of any
+				// data that might've been store with a camelCased key.
+				var data = data_user.get( this, camelKey );
+
+				// For HTML5 data-* attribute interop, we have to
+				// store property names with dashes in a camelCase form.
+				// This might not apply to all properties...*
+				data_user.set( this, camelKey, value );
+
+				// *... In the case of properties that might _actually_
+				// have dashes, we need to also store a copy of that
+				// unchanged property.
+				if ( key.indexOf("-") !== -1 && data !== undefined ) {
+					data_user.set( this, key, value );
+				}
+			});
+		}, null, value, arguments.length > 1, null, true );
+	},
+
+	removeData: function( key ) {
+		return this.each(function() {
+			data_user.remove( this, key );
+		});
+	}
+});
+
+
+jQuery.extend({
+	queue: function( elem, type, data ) {
+		var queue;
+
+		if ( elem ) {
+			type = ( type || "fx" ) + "queue";
+			queue = data_priv.get( elem, type );
+
+			// Speed up dequeue by getting out quickly if this is just a lookup
+			if ( data ) {
+				if ( !queue || jQuery.isArray( data ) ) {
+					queue = data_priv.access( elem, type, jQuery.makeArray(data) );
+				} else {
+					queue.push( data );
+				}
+			}
+			return queue || [];
+		}
+	},
+
+	dequeue: function( elem, type ) {
+		type = type || "fx";
+
+		var queue = jQuery.queue( elem, type ),
+			startLength = queue.length,
+			fn = queue.shift(),
+			hooks = jQuery._queueHooks( elem, type ),
+			next = function() {
+				jQuery.dequeue( elem, type );
+			};
+
+		// If the fx queue is dequeued, always remove the progress sentinel
+		if ( fn === "inprogress" ) {
+			fn = queue.shift();
+			startLength--;
+		}
+
+		if ( fn ) {
+
+			// Add a progress sentinel to prevent the fx queue from being
+			// automatically dequeued
+			if ( type === "fx" ) {
+				queue.unshift( "inprogress" );
+			}
+
+			// Clear up the last queue stop function
+			delete hooks.stop;
+			fn.call( elem, next, hooks );
+		}
+
+		if ( !startLength && hooks ) {
+			hooks.empty.fire();
+		}
+	},
+
+	// Not public - generate a queueHooks object, or return the current one
+	_queueHooks: function( elem, type ) {
+		var key = type + "queueHooks";
+		return data_priv.get( elem, key ) || data_priv.access( elem, key, {
+			empty: jQuery.Callbacks("once memory").add(function() {
+				data_priv.remove( elem, [ type + "queue", key ] );
+			})
+		});
+	}
+});
+
+jQuery.fn.extend({
+	queue: function( type, data ) {
+		var setter = 2;
+
+		if ( typeof type !== "string" ) {
+			data = type;
+			type = "fx";
+			setter--;
+		}
+
+		if ( arguments.length < setter ) {
+			return jQuery.queue( this[0], type );
+		}
+
+		return data === undefined ?
+			this :
+			this.each(function() {
+				var queue = jQuery.queue( this, type, data );
+
+				// Ensure a hooks for this queue
+				jQuery._queueHooks( this, type );
+
+				if ( type === "fx" && queue[0] !== "inprogress" ) {
+					jQuery.dequeue( this, type );
+				}
+			});
+	},
+	dequeue: function( type ) {
+		return this.each(function() {
+			jQuery.dequeue( this, type );
+		});
+	},
+	clearQueue: function( type ) {
+		return this.queue( type || "fx", [] );
+	},
+	// Get a promise resolved when queues of a certain type
+	// are emptied (fx is the type by default)
+	promise: function( type, obj ) {
+		var tmp,
+			count = 1,
+			defer = jQuery.Deferred(),
+			elements = this,
+			i = this.length,
+			resolve = function() {
+				if ( !( --count ) ) {
+					defer.resolveWith( elements, [ elements ] );
+				}
+			};
+
+		if ( typeof type !== "string" ) {
+			obj = type;
+			type = undefined;
+		}
+		type = type || "fx";
+
+		while ( i-- ) {
+			tmp = data_priv.get( elements[ i ], type + "queueHooks" );
+			if ( tmp && tmp.empty ) {
+				count++;
+				tmp.empty.add( resolve );
+			}
+		}
+		resolve();
+		return defer.promise( obj );
+	}
+});
+var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHidden = function( elem, el ) {
+		// isHidden might be called from jQuery#filter function;
+		// in that case, element will be second argument
+		elem = el || elem;
+		return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
+	};
+
+var rcheckableType = (/^(?:checkbox|radio)$/i);
+
+
+
+(function() {
+	var fragment = document.createDocumentFragment(),
+		div = fragment.appendChild( document.createElement( "div" ) ),
+		input = document.createElement( "input" );
+
+	// Support: Safari<=5.1
+	// Check state lost if the name is set (#11217)
+	// Support: Windows Web Apps (WWA)
+	// `name` and `type` must use .setAttribute for WWA (#14901)
+	input.setAttribute( "type", "radio" );
+	input.setAttribute( "checked", "checked" );
+	input.setAttribute( "name", "t" );
+
+	div.appendChild( input );
+
+	// Support: Safari<=5.1, Android<4.2
+	// Older WebKit doesn't clone checked state correctly in fragments
+	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+	// Support: IE<=11+
+	// Make sure textarea (and checkbox) defaultValue is properly cloned
+	div.innerHTML = "<textarea>x</textarea>";
+	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+})();
+var strundefined = typeof undefined;
+
+
+
+support.focusinBubbles = "onfocusin" in window;
+
+
+var
+	rkeyEvent = /^key/,
+	rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
+	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+	rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
+
+function returnTrue() {
+	return true;
+}
+
+function returnFalse() {
+	return false;
+}
+
+function safeActiveElement() {
+	try {
+		return document.activeElement;
+	} catch ( err ) { }
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+	global: {},
+
+	add: function( elem, types, handler, data, selector ) {
+
+		var handleObjIn, eventHandle, tmp,
+			events, t, handleObj,
+			special, handlers, type, namespaces, origType,
+			elemData = data_priv.get( elem );
+
+		// Don't attach events to noData or text/comment nodes (but allow plain objects)
+		if ( !elemData ) {
+			return;
+		}
+
+		// Caller can pass in an object of custom data in lieu of the handler
+		if ( handler.handler ) {
+			handleObjIn = handler;
+			handler = handleObjIn.handler;
+			selector = handleObjIn.selector;
+		}
+
+		// Make sure that the handler has a unique ID, used to find/remove it later
+		if ( !handler.guid ) {
+			handler.guid = jQuery.guid++;
+		}
+
+		// Init the element's event structure and main handler, if this is the first
+		if ( !(events = elemData.events) ) {
+			events = elemData.events = {};
+		}
+		if ( !(eventHandle = elemData.handle) ) {
+			eventHandle = elemData.handle = function( e ) {
+				// Discard the second event of a jQuery.event.trigger() and
+				// when an event is called after a page has unloaded
+				return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
+					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+			};
+		}
+
+		// Handle multiple events separated by a space
+		types = ( types || "" ).match( rnotwhite ) || [ "" ];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[t] ) || [];
+			type = origType = tmp[1];
+			namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+			// There *must* be a type, no attaching namespace-only handlers
+			if ( !type ) {
+				continue;
+			}
+
+			// If event changes its type, use the special event handlers for the changed type
+			special = jQuery.event.special[ type ] || {};
+
+			// If selector defined, determine special event api type, otherwise given type
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+
+			// Update special based on newly reset type
+			special = jQuery.event.special[ type ] || {};
+
+			// handleObj is passed to all event handlers
+			handleObj = jQuery.extend({
+				type: type,
+				origType: origType,
+				data: data,
+				handler: handler,
+				guid: handler.guid,
+				selector: selector,
+				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+				namespace: namespaces.join(".")
+			}, handleObjIn );
+
+			// Init the event handler queue if we're the first
+			if ( !(handlers = events[ type ]) ) {
+				handlers = events[ type ] = [];
+				handlers.delegateCount = 0;
+
+				// Only use addEventListener if the special events handler returns false
+				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+					if ( elem.addEventListener ) {
+						elem.addEventListener( type, eventHandle, false );
+					}
+				}
+			}
+
+			if ( special.add ) {
+				special.add.call( elem, handleObj );
+
+				if ( !handleObj.handler.guid ) {
+					handleObj.handler.guid = handler.guid;
+				}
+			}
+
+			// Add to the element's handler list, delegates in front
+			if ( selector ) {
+				handlers.splice( handlers.delegateCount++, 0, handleObj );
+			} else {
+				handlers.push( handleObj );
+			}
+
+			// Keep track of which events have ever been used, for event optimization
+			jQuery.event.global[ type ] = true;
+		}
+
+	},
+
+	// Detach an event or set of events from an element
+	remove: function( elem, types, handler, selector, mappedTypes ) {
+
+		var j, origCount, tmp,
+			events, t, handleObj,
+			special, handlers, type, namespaces, origType,
+			elemData = data_priv.hasData( elem ) && data_priv.get( elem );
+
+		if ( !elemData || !(events = elemData.events) ) {
+			return;
+		}
+
+		// Once for each type.namespace in types; type may be omitted
+		types = ( types || "" ).match( rnotwhite ) || [ "" ];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[t] ) || [];
+			type = origType = tmp[1];
+			namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+			// Unbind all events (on this namespace, if provided) for the element
+			if ( !type ) {
+				for ( type in events ) {
+					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+				}
+				continue;
+			}
+
+			special = jQuery.event.special[ type ] || {};
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+			handlers = events[ type ] || [];
+			tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
+
+			// Remove matching events
+			origCount = j = handlers.length;
+			while ( j-- ) {
+				handleObj = handlers[ j ];
+
+				if ( ( mappedTypes || origType === handleObj.origType ) &&
+					( !handler || handler.guid === handleObj.guid ) &&
+					( !tmp || tmp.test( handleObj.namespace ) ) &&
+					( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+					handlers.splice( j, 1 );
+
+					if ( handleObj.selector ) {
+						handlers.delegateCount--;
+					}
+					if ( special.remove ) {
+						special.remove.call( elem, handleObj );
+					}
+				}
+			}
+
+			// Remove generic event handler if we removed something and no more handlers exist
+			// (avoids potential for endless recursion during removal of special event handlers)
+			if ( origCount && !handlers.length ) {
+				if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+					jQuery.removeEvent( elem, type, elemData.handle );
+				}
+
+				delete events[ type ];
+			}
+		}
+
+		// Remove the expando if it's no longer used
+		if ( jQuery.isEmptyObject( events ) ) {
+			delete elemData.handle;
+			data_priv.remove( elem, "events" );
+		}
+	},
+
+	trigger: function( event, data, elem, onlyHandlers ) {
+
+		var i, cur, tmp, bubbleType, ontype, handle, special,
+			eventPath = [ elem || document ],
+			type = hasOwn.call( event, "type" ) ? event.type : event,
+			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
+
+		cur = tmp = elem = elem || document;
+
+		// Don't do events on text and comment nodes
+		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+			return;
+		}
+
+		// focus/blur morphs to focusin/out; ensure we're not firing them right now
+		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+			return;
+		}
+
+		if ( type.indexOf(".") >= 0 ) {
+			// Namespaced trigger; create a regexp to match event type in handle()
+			namespaces = type.split(".");
+			type = namespaces.shift();
+			namespaces.sort();
+		}
+		ontype = type.indexOf(":") < 0 && "on" + type;
+
+		// Caller can pass in a jQuery.Event object, Object, or just an event type string
+		event = event[ jQuery.expando ] ?
+			event :
+			new jQuery.Event( type, typeof event === "object" && event );
+
+		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+		event.isTrigger = onlyHandlers ? 2 : 3;
+		event.namespace = namespaces.join(".");
+		event.namespace_re = event.namespace ?
+			new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
+			null;
+
+		// Clean up the event in case it is being reused
+		event.result = undefined;
+		if ( !event.target ) {
+			event.target = elem;
+		}
+
+		// Clone any incoming data and prepend the event, creating the handler arg list
+		data = data == null ?
+			[ event ] :
+			jQuery.makeArray( data, [ event ] );
+
+		// Allow special events to draw outside the lines
+		special = jQuery.event.special[ type ] || {};
+		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+			return;
+		}
+
+		// Determine event propagation path in advance, per W3C events spec (#9951)
+		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+			bubbleType = special.delegateType || type;
+			if ( !rfocusMorph.test( bubbleType + type ) ) {
+				cur = cur.parentNode;
+			}
+			for ( ; cur; cur = cur.parentNode ) {
+				eventPath.push( cur );
+				tmp = cur;
+			}
+
+			// Only add window if we got to document (e.g., not plain obj or detached DOM)
+			if ( tmp === (elem.ownerDocument || document) ) {
+				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+			}
+		}
+
+		// Fire handlers on the event path
+		i = 0;
+		while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
+
+			event.type = i > 1 ?
+				bubbleType :
+				special.bindType || type;
+
+			// jQuery handler
+			handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
+			if ( handle ) {
+				handle.apply( cur, data );
+			}
+
+			// Native handler
+			handle = ontype && cur[ ontype ];
+			if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
+				event.result = handle.apply( cur, data );
+				if ( event.result === false ) {
+					event.preventDefault();
+				}
+			}
+		}
+		event.type = type;
+
+		// If nobody prevented the default action, do it now
+		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+			if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
+				jQuery.acceptData( elem ) ) {
+
+				// Call a native DOM method on the target with the same name name as the event.
+				// Don't do default actions on window, that's where global variables be (#6170)
+				if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+					// Don't re-trigger an onFOO event when we call its FOO() method
+					tmp = elem[ ontype ];
+
+					if ( tmp ) {
+						elem[ ontype ] = null;
+					}
+
+					// Prevent re-triggering of the same event, since we already bubbled it above
+					jQuery.event.triggered = type;
+					elem[ type ]();
+					jQuery.event.triggered = undefined;
+
+					if ( tmp ) {
+						elem[ ontype ] = tmp;
+					}
+				}
+			}
+		}
+
+		return event.result;
+	},
+
+	dispatch: function( event ) {
+
+		// Make a writable jQuery.Event from the native event object
+		event = jQuery.event.fix( event );
+
+		var i, j, ret, matched, handleObj,
+			handlerQueue = [],
+			args = slice.call( arguments ),
+			handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
+			special = jQuery.event.special[ event.type ] || {};
+
+		// Use the fix-ed jQuery.Event rather than the (read-only) native event
+		args[0] = event;
+		event.delegateTarget = this;
+
+		// Call the preDispatch hook for the mapped type, and let it bail if desired
+		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+			return;
+		}
+
+		// Determine handlers
+		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+		// Run delegates first; they may want to stop propagation beneath us
+		i = 0;
+		while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
+			event.currentTarget = matched.elem;
+
+			j = 0;
+			while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
+
+				// Triggered event must either 1) have no namespace, or 2) have namespace(s)
+				// a subset or equal to those in the bound event (both can have no namespace).
+				if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
+
+					event.handleObj = handleObj;
+					event.data = handleObj.data;
+
+					ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+							.apply( matched.elem, args );
+
+					if ( ret !== undefined ) {
+						if ( (event.result = ret) === false ) {
+							event.preventDefault();
+							event.stopPropagation();
+						}
+					}
+				}
+			}
+		}
+
+		// Call the postDispatch hook for the mapped type
+		if ( special.postDispatch ) {
+			special.postDispatch.call( this, event );
+		}
+
+		return event.result;
+	},
+
+	handlers: function( event, handlers ) {
+		var i, matches, sel, handleObj,
+			handlerQueue = [],
+			delegateCount = handlers.delegateCount,
+			cur = event.target;
+
+		// Find delegate handlers
+		// Black-hole SVG <use> instance trees (#13180)
+		// Avoid non-left-click bubbling in Firefox (#3861)
+		if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
+
+			for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+				if ( cur.disabled !== true || event.type !== "click" ) {
+					matches = [];
+					for ( i = 0; i < delegateCount; i++ ) {
+						handleObj = handlers[ i ];
+
+						// Don't conflict with Object.prototype properties (#13203)
+						sel = handleObj.selector + " ";
+
+						if ( matches[ sel ] === undefined ) {
+							matches[ sel ] = handleObj.needsContext ?
+								jQuery( sel, this ).index( cur ) >= 0 :
+								jQuery.find( sel, this, null, [ cur ] ).length;
+						}
+						if ( matches[ sel ] ) {
+							matches.push( handleObj );
+						}
+					}
+					if ( matches.length ) {
+						handlerQueue.push({ elem: cur, handlers: matches });
+					}
+				}
+			}
+		}
+
+		// Add the remaining (directly-bound) handlers
+		if ( delegateCount < handlers.length ) {
+			handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
+		}
+
+		return handlerQueue;
+	},
+
+	// Includes some event props shared by KeyEvent and MouseEvent
+	props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+	fixHooks: {},
+
+	keyHooks: {
+		props: "char charCode key keyCode".split(" "),
+		filter: function( event, original ) {
+
+			// Add which for key events
+			if ( event.which == null ) {
+				event.which = original.charCode != null ? original.charCode : original.keyCode;
+			}
+
+			return event;
+		}
+	},
+
+	mouseHooks: {
+		props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+		filter: function( event, original ) {
+			var eventDoc, doc, body,
+				button = original.button;
+
+			// Calculate pageX/Y if missing and clientX/Y available
+			if ( event.pageX == null && original.clientX != null ) {
+				eventDoc = event.target.ownerDocument || document;
+				doc = eventDoc.documentElement;
+				body = eventDoc.body;
+
+				event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+				event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
+			}
+
+			// Add which for click: 1 === left; 2 === middle; 3 === right
+			// Note: button is not normalized, so don't use it
+			if ( !event.which && button !== undefined ) {
+				event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+			}
+
+			return event;
+		}
+	},
+
+	fix: function( event ) {
+		if ( event[ jQuery.expando ] ) {
+			return event;
+		}
+
+		// Create a writable copy of the event object and normalize some properties
+		var i, prop, copy,
+			type = event.type,
+			originalEvent = event,
+			fixHook = this.fixHooks[ type ];
+
+		if ( !fixHook ) {
+			this.fixHooks[ type ] = fixHook =
+				rmouseEvent.test( type ) ? this.mouseHooks :
+				rkeyEvent.test( type ) ? this.keyHooks :
+				{};
+		}
+		copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+		event = new jQuery.Event( originalEvent );
+
+		i = copy.length;
+		while ( i-- ) {
+			prop = copy[ i ];
+			event[ prop ] = originalEvent[ prop ];
+		}
+
+		// Support: Cordova 2.5 (WebKit) (#13255)
+		// All events should have a target; Cordova deviceready doesn't
+		if ( !event.target ) {
+			event.target = document;
+		}
+
+		// Support: Safari 6.0+, Chrome<28
+		// Target should not be a text node (#504, #13143)
+		if ( event.target.nodeType === 3 ) {
+			event.target = event.target.parentNode;
+		}
+
+		return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
+	},
+
+	special: {
+		load: {
+			// Prevent triggered image.load events from bubbling to window.load
+			noBubble: true
+		},
+		focus: {
+			// Fire native event if possible so blur/focus sequence is correct
+			trigger: function() {
+				if ( this !== safeActiveElement() && this.focus ) {
+					this.focus();
+					return false;
+				}
+			},
+			delegateType: "focusin"
+		},
+		blur: {
+			trigger: function() {
+				if ( this === safeActiveElement() && this.blur ) {
+					this.blur();
+					return false;
+				}
+			},
+			delegateType: "focusout"
+		},
+		click: {
+			// For checkbox, fire native event so checked state will be right
+			trigger: function() {
+				if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
+					this.click();
+					return false;
+				}
+			},
+
+			// For cross-browser consistency, don't fire native .click() on links
+			_default: function( event ) {
+				return jQuery.nodeName( event.target, "a" );
+			}
+		},
+
+		beforeunload: {
+			postDispatch: function( event ) {
+
+				// Support: Firefox 20+
+				// Firefox doesn't alert if the returnValue field is not set.
+				if ( event.result !== undefined && event.originalEvent ) {
+					event.originalEvent.returnValue = event.result;
+				}
+			}
+		}
+	},
+
+	simulate: function( type, elem, event, bubble ) {
+		// Piggyback on a donor event to simulate a different one.
+		// Fake originalEvent to avoid donor's stopPropagation, but if the
+		// simulated event prevents default then we do the same on the donor.
+		var e = jQuery.extend(
+			new jQuery.Event(),
+			event,
+			{
+				type: type,
+				isSimulated: true,
+				originalEvent: {}
+			}
+		);
+		if ( bubble ) {
+			jQuery.event.trigger( e, null, elem );
+		} else {
+			jQuery.event.dispatch.call( elem, e );
+		}
+		if ( e.isDefaultPrevented() ) {
+			event.preventDefault();
+		}
+	}
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+	if ( elem.removeEventListener ) {
+		elem.removeEventListener( type, handle, false );
+	}
+};
+
+jQuery.Event = function( src, props ) {
+	// Allow instantiation without the 'new' keyword
+	if ( !(this instanceof jQuery.Event) ) {
+		return new jQuery.Event( src, props );
+	}
+
+	// Event object
+	if ( src && src.type ) {
+		this.originalEvent = src;
+		this.type = src.type;
+
+		// Events bubbling up the document may have been marked as prevented
+		// by a handler lower down the tree; reflect the correct value.
+		this.isDefaultPrevented = src.defaultPrevented ||
+				src.defaultPrevented === undefined &&
+				// Support: Android<4.0
+				src.returnValue === false ?
+			returnTrue :
+			returnFalse;
+
+	// Event type
+	} else {
+		this.type = src;
+	}
+
+	// Put explicitly provided properties onto the event object
+	if ( props ) {
+		jQuery.extend( this, props );
+	}
+
+	// Create a timestamp if incoming event doesn't have one
+	this.timeStamp = src && src.timeStamp || jQuery.now();
+
+	// Mark it as fixed
+	this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+	isDefaultPrevented: returnFalse,
+	isPropagationStopped: returnFalse,
+	isImmediatePropagationStopped: returnFalse,
+
+	preventDefault: function() {
+		var e = this.originalEvent;
+
+		this.isDefaultPrevented = returnTrue;
+
+		if ( e && e.preventDefault ) {
+			e.preventDefault();
+		}
+	},
+	stopPropagation: function() {
+		var e = this.originalEvent;
+
+		this.isPropagationStopped = returnTrue;
+
+		if ( e && e.stopPropagation ) {
+			e.stopPropagation();
+		}
+	},
+	stopImmediatePropagation: function() {
+		var e = this.originalEvent;
+
+		this.isImmediatePropagationStopped = returnTrue;
+
+		if ( e && e.stopImmediatePropagation ) {
+			e.stopImmediatePropagation();
+		}
+
+		this.stopPropagation();
+	}
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// Support: Chrome 15+
+jQuery.each({
+	mouseenter: "mouseover",
+	mouseleave: "mouseout",
+	pointerenter: "pointerover",
+	pointerleave: "pointerout"
+}, function( orig, fix ) {
+	jQuery.event.special[ orig ] = {
+		delegateType: fix,
+		bindType: fix,
+
+		handle: function( event ) {
+			var ret,
+				target = this,
+				related = event.relatedTarget,
+				handleObj = event.handleObj;
+
+			// For mousenter/leave call the handler if related is outside the target.
+			// NB: No relatedTarget if the mouse left/entered the browser window
+			if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+				event.type = handleObj.origType;
+				ret = handleObj.handler.apply( this, arguments );
+				event.type = fix;
+			}
+			return ret;
+		}
+	};
+});
+
+// Support: Firefox, Chrome, Safari
+// Create "bubbling" focus and blur events
+if ( !support.focusinBubbles ) {
+	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+		// Attach a single capturing handler on the document while someone wants focusin/focusout
+		var handler = function( event ) {
+				jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+			};
+
+		jQuery.event.special[ fix ] = {
+			setup: function() {
+				var doc = this.ownerDocument || this,
+					attaches = data_priv.access( doc, fix );
+
+				if ( !attaches ) {
+					doc.addEventListener( orig, handler, true );
+				}
+				data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
+			},
+			teardown: function() {
+				var doc = this.ownerDocument || this,
+					attaches = data_priv.access( doc, fix ) - 1;
+
+				if ( !attaches ) {
+					doc.removeEventListener( orig, handler, true );
+					data_priv.remove( doc, fix );
+
+				} else {
+					data_priv.access( doc, fix, attaches );
+				}
+			}
+		};
+	});
+}
+
+jQuery.fn.extend({
+
+	on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+		var origFn, type;
+
+		// Types can be a map of types/handlers
+		if ( typeof types === "object" ) {
+			// ( types-Object, selector, data )
+			if ( typeof selector !== "string" ) {
+				// ( types-Object, data )
+				data = data || selector;
+				selector = undefined;
+			}
+			for ( type in types ) {
+				this.on( type, selector, data, types[ type ], one );
+			}
+			return this;
+		}
+
+		if ( data == null && fn == null ) {
+			// ( types, fn )
+			fn = selector;
+			data = selector = undefined;
+		} else if ( fn == null ) {
+			if ( typeof selector === "string" ) {
+				// ( types, selector, fn )
+				fn = data;
+				data = undefined;
+			} else {
+				// ( types, data, fn )
+				fn = data;
+				data = selector;
+				selector = undefined;
+			}
+		}
+		if ( fn === false ) {
+			fn = returnFalse;
+		} else if ( !fn ) {
+			return this;
+		}
+
+		if ( one === 1 ) {
+			origFn = fn;
+			fn = function( event ) {
+				// Can use an empty set, since event contains the info
+				jQuery().off( event );
+				return origFn.apply( this, arguments );
+			};
+			// Use same guid so caller can remove using origFn
+			fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+		}
+		return this.each( function() {
+			jQuery.event.add( this, types, fn, data, selector );
+		});
+	},
+	one: function( types, selector, data, fn ) {
+		return this.on( types, selector, data, fn, 1 );
+	},
+	off: function( types, selector, fn ) {
+		var handleObj, type;
+		if ( types && types.preventDefault && types.handleObj ) {
+			// ( event )  dispatched jQuery.Event
+			handleObj = types.handleObj;
+			jQuery( types.delegateTarget ).off(
+				handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+				handleObj.selector,
+				handleObj.handler
+			);
+			return this;
+		}
+		if ( typeof types === "object" ) {
+			// ( types-object [, selector] )
+			for ( type in types ) {
+				this.off( type, selector, types[ type ] );
+			}
+			return this;
+		}
+		if ( selector === false || typeof selector === "function" ) {
+			// ( types [, fn] )
+			fn = selector;
+			selector = undefined;
+		}
+		if ( fn === false ) {
+			fn = returnFalse;
+		}
+		return this.each(function() {
+			jQuery.event.remove( this, types, fn, selector );
+		});
+	},
+
+	trigger: function( type, data ) {
+		return this.each(function() {
+			jQuery.event.trigger( type, data, this );
+		});
+	},
+	triggerHandler: function( type, data ) {
+		var elem = this[0];
+		if ( elem ) {
+			return jQuery.event.trigger( type, data, elem, true );
+		}
+	}
+});
+
+
+var
+	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+	rtagName = /<([\w:]+)/,
+	rhtml = /<|&#?\w+;/,
+	rnoInnerhtml = /<(?:script|style|link)/i,
+	// checked="checked" or checked
+	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+	rscriptType = /^$|\/(?:java|ecma)script/i,
+	rscriptTypeMasked = /^true\/(.*)/,
+	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
+
+	// We have to close these tags to support XHTML (#13200)
+	wrapMap = {
+
+		// Support: IE9
+		option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+		thead: [ 1, "<table>", "</table>" ],
+		col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+		tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+		td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+		_default: [ 0, "", "" ]
+	};
+
+// Support: IE9
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// Support: 1.x compatibility
+// Manipulating tables requires a tbody
+function manipulationTarget( elem, content ) {
+	return jQuery.nodeName( elem, "table" ) &&
+		jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
+
+		elem.getElementsByTagName("tbody")[0] ||
+			elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
+		elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+	elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
+	return elem;
+}
+function restoreScript( elem ) {
+	var match = rscriptTypeMasked.exec( elem.type );
+
+	if ( match ) {
+		elem.type = match[ 1 ];
+	} else {
+		elem.removeAttribute("type");
+	}
+
+	return elem;
+}
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+	var i = 0,
+		l = elems.length;
+
+	for ( ; i < l; i++ ) {
+		data_priv.set(
+			elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
+		);
+	}
+}
+
+function cloneCopyEvent( src, dest ) {
+	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+	if ( dest.nodeType !== 1 ) {
+		return;
+	}
+
+	// 1. Copy private data: events, handlers, etc.
+	if ( data_priv.hasData( src ) ) {
+		pdataOld = data_priv.access( src );
+		pdataCur = data_priv.set( dest, pdataOld );
+		events = pdataOld.events;
+
+		if ( events ) {
+			delete pdataCur.handle;
+			pdataCur.events = {};
+
+			for ( type in events ) {
+				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+					jQuery.event.add( dest, type, events[ type ][ i ] );
+				}
+			}
+		}
+	}
+
+	// 2. Copy user data
+	if ( data_user.hasData( src ) ) {
+		udataOld = data_user.access( src );
+		udataCur = jQuery.extend( {}, udataOld );
+
+		data_user.set( dest, udataCur );
+	}
+}
+
+function getAll( context, tag ) {
+	var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
+			context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
+			[];
+
+	return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+		jQuery.merge( [ context ], ret ) :
+		ret;
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+	var nodeName = dest.nodeName.toLowerCase();
+
+	// Fails to persist the checked state of a cloned checkbox or radio button.
+	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+		dest.checked = src.checked;
+
+	// Fails to return the selected option to the default selected state when cloning options
+	} else if ( nodeName === "input" || nodeName === "textarea" ) {
+		dest.defaultValue = src.defaultValue;
+	}
+}
+
+jQuery.extend({
+	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+		var i, l, srcElements, destElements,
+			clone = elem.cloneNode( true ),
+			inPage = jQuery.contains( elem.ownerDocument, elem );
+
+		// Fix IE cloning issues
+		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+				!jQuery.isXMLDoc( elem ) ) {
+
+			// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
+			destElements = getAll( clone );
+			srcElements = getAll( elem );
+
+			for ( i = 0, l = srcElements.length; i < l; i++ ) {
+				fixInput( srcElements[ i ], destElements[ i ] );
+			}
+		}
+
+		// Copy the events from the original to the clone
+		if ( dataAndEvents ) {
+			if ( deepDataAndEvents ) {
+				srcElements = srcElements || getAll( elem );
+				destElements = destElements || getAll( clone );
+
+				for ( i = 0, l = srcElements.length; i < l; i++ ) {
+					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+				}
+			} else {
+				cloneCopyEvent( elem, clone );
+			}
+		}
+
+		// Preserve script evaluation history
+		destElements = getAll( clone, "script" );
+		if ( destElements.length > 0 ) {
+			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+		}
+
+		// Return the cloned set
+		return clone;
+	},
+
+	buildFragment: function( elems, context, scripts, selection ) {
+		var elem, tmp, tag, wrap, contains, j,
+			fragment = context.createDocumentFragment(),
+			nodes = [],
+			i = 0,
+			l = elems.length;
+
+		for ( ; i < l; i++ ) {
+			elem = elems[ i ];
+
+			if ( elem || elem === 0 ) {
+
+				// Add nodes directly
+				if ( jQuery.type( elem ) === "object" ) {
+					// Support: QtWebKit, PhantomJS
+					// push.apply(_, arraylike) throws on ancient WebKit
+					jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+				// Convert non-html into a text node
+				} else if ( !rhtml.test( elem ) ) {
+					nodes.push( context.createTextNode( elem ) );
+
+				// Convert html into DOM nodes
+				} else {
+					tmp = tmp || fragment.appendChild( context.createElement("div") );
+
+					// Deserialize a standard representation
+					tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+					wrap = wrapMap[ tag ] || wrapMap._default;
+					tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];
+
+					// Descend through wrappers to the right content
+					j = wrap[ 0 ];
+					while ( j-- ) {
+						tmp = tmp.lastChild;
+					}
+
+					// Support: QtWebKit, PhantomJS
+					// push.apply(_, arraylike) throws on ancient WebKit
+					jQuery.merge( nodes, tmp.childNodes );
+
+					// Remember the top-level container
+					tmp = fragment.firstChild;
+
+					// Ensure the created nodes are orphaned (#12392)
+					tmp.textContent = "";
+				}
+			}
+		}
+
+		// Remove wrapper from fragment
+		fragment.textContent = "";
+
+		i = 0;
+		while ( (elem = nodes[ i++ ]) ) {
+
+			// #4087 - If origin and destination elements are the same, and this is
+			// that element, do not do anything
+			if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
+				continue;
+			}
+
+			contains = jQuery.contains( elem.ownerDocument, elem );
+
+			// Append to fragment
+			tmp = getAll( fragment.appendChild( elem ), "script" );
+
+			// Preserve script evaluation history
+			if ( contains ) {
+				setGlobalEval( tmp );
+			}
+
+			// Capture executables
+			if ( scripts ) {
+				j = 0;
+				while ( (elem = tmp[ j++ ]) ) {
+					if ( rscriptType.test( elem.type || "" ) ) {
+						scripts.push( elem );
+					}
+				}
+			}
+		}
+
+		return fragment;
+	},
+
+	cleanData: function( elems ) {
+		var data, elem, type, key,
+			special = jQuery.event.special,
+			i = 0;
+
+		for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
+			if ( jQuery.acceptData( elem ) ) {
+				key = elem[ data_priv.expando ];
+
+				if ( key && (data = data_priv.cache[ key ]) ) {
+					if ( data.events ) {
+						for ( type in data.events ) {
+							if ( special[ type ] ) {
+								jQuery.event.remove( elem, type );
+
+							// This is a shortcut to avoid jQuery.event.remove's overhead
+							} else {
+								jQuery.removeEvent( elem, type, data.handle );
+							}
+						}
+					}
+					if ( data_priv.cache[ key ] ) {
+						// Discard any remaining `private` data
+						delete data_priv.cache[ key ];
+					}
+				}
+			}
+			// Discard any remaining `user` data
+			delete data_user.cache[ elem[ data_user.expando ] ];
+		}
+	}
+});
+
+jQuery.fn.extend({
+	text: function( value ) {
+		return access( this, function( value ) {
+			return value === undefined ?
+				jQuery.text( this ) :
+				this.empty().each(function() {
+					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+						this.textContent = value;
+					}
+				});
+		}, null, value, arguments.length );
+	},
+
+	append: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.appendChild( elem );
+			}
+		});
+	},
+
+	prepend: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.insertBefore( elem, target.firstChild );
+			}
+		});
+	},
+
+	before: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this );
+			}
+		});
+	},
+
+	after: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this.nextSibling );
+			}
+		});
+	},
+
+	remove: function( selector, keepData /* Internal Use Only */ ) {
+		var elem,
+			elems = selector ? jQuery.filter( selector, this ) : this,
+			i = 0;
+
+		for ( ; (elem = elems[i]) != null; i++ ) {
+			if ( !keepData && elem.nodeType === 1 ) {
+				jQuery.cleanData( getAll( elem ) );
+			}
+
+			if ( elem.parentNode ) {
+				if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
+					setGlobalEval( getAll( elem, "script" ) );
+				}
+				elem.parentNode.removeChild( elem );
+			}
+		}
+
+		return this;
+	},
+
+	empty: function() {
+		var elem,
+			i = 0;
+
+		for ( ; (elem = this[i]) != null; i++ ) {
+			if ( elem.nodeType === 1 ) {
+
+				// Prevent memory leaks
+				jQuery.cleanData( getAll( elem, false ) );
+
+				// Remove any remaining nodes
+				elem.textContent = "";
+			}
+		}
+
+		return this;
+	},
+
+	clone: function( dataAndEvents, deepDataAndEvents ) {
+		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+		return this.map(function() {
+			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+		});
+	},
+
+	html: function( value ) {
+		return access( this, function( value ) {
+			var elem = this[ 0 ] || {},
+				i = 0,
+				l = this.length;
+
+			if ( value === undefined && elem.nodeType === 1 ) {
+				return elem.innerHTML;
+			}
+
+			// See if we can take a shortcut and just use innerHTML
+			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+				value = value.replace( rxhtmlTag, "<$1></$2>" );
+
+				try {
+					for ( ; i < l; i++ ) {
+						elem = this[ i ] || {};
+
+						// Remove element nodes and prevent memory leaks
+						if ( elem.nodeType === 1 ) {
+							jQuery.cleanData( getAll( elem, false ) );
+							elem.innerHTML = value;
+						}
+					}
+
+					elem = 0;
+
+				// If using innerHTML throws an exception, use the fallback method
+				} catch( e ) {}
+			}
+
+			if ( elem ) {
+				this.empty().append( value );
+			}
+		}, null, value, arguments.length );
+	},
+
+	replaceWith: function() {
+		var arg = arguments[ 0 ];
+
+		// Make the changes, replacing each context element with the new content
+		this.domManip( arguments, function( elem ) {
+			arg = this.parentNode;
+
+			jQuery.cleanData( getAll( this ) );
+
+			if ( arg ) {
+				arg.replaceChild( elem, this );
+			}
+		});
+
+		// Force removal if there was no new content (e.g., from empty arguments)
+		return arg && (arg.length || arg.nodeType) ? this : this.remove();
+	},
+
+	detach: function( selector ) {
+		return this.remove( selector, true );
+	},
+
+	domManip: function( args, callback ) {
+
+		// Flatten any nested arrays
+		args = concat.apply( [], args );
+
+		var fragment, first, scripts, hasScripts, node, doc,
+			i = 0,
+			l = this.length,
+			set = this,
+			iNoClone = l - 1,
+			value = args[ 0 ],
+			isFunction = jQuery.isFunction( value );
+
+		// We can't cloneNode fragments that contain checked, in WebKit
+		if ( isFunction ||
+				( l > 1 && typeof value === "string" &&
+					!support.checkClone && rchecked.test( value ) ) ) {
+			return this.each(function( index ) {
+				var self = set.eq( index );
+				if ( isFunction ) {
+					args[ 0 ] = value.call( this, index, self.html() );
+				}
+				self.domManip( args, callback );
+			});
+		}
+
+		if ( l ) {
+			fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
+			first = fragment.firstChild;
+
+			if ( fragment.childNodes.length === 1 ) {
+				fragment = first;
+			}
+
+			if ( first ) {
+				scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+				hasScripts = scripts.length;
+
+				// Use the original fragment for the last item instead of the first because it can end up
+				// being emptied incorrectly in certain situations (#8070).
+				for ( ; i < l; i++ ) {
+					node = fragment;
+
+					if ( i !== iNoClone ) {
+						node = jQuery.clone( node, true, true );
+
+						// Keep references to cloned scripts for later restoration
+						if ( hasScripts ) {
+							// Support: QtWebKit
+							// jQuery.merge because push.apply(_, arraylike) throws
+							jQuery.merge( scripts, getAll( node, "script" ) );
+						}
+					}
+
+					callback.call( this[ i ], node, i );
+				}
+
+				if ( hasScripts ) {
+					doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+					// Reenable scripts
+					jQuery.map( scripts, restoreScript );
+
+					// Evaluate executable scripts on first document insertion
+					for ( i = 0; i < hasScripts; i++ ) {
+						node = scripts[ i ];
+						if ( rscriptType.test( node.type || "" ) &&
+							!data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
+
+							if ( node.src ) {
+								// Optional AJAX dependency, but won't run scripts if not present
+								if ( jQuery._evalUrl ) {
+									jQuery._evalUrl( node.src );
+								}
+							} else {
+								jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
+							}
+						}
+					}
+				}
+			}
+		}
+
+		return this;
+	}
+});
+
+jQuery.each({
+	appendTo: "append",
+	prependTo: "prepend",
+	insertBefore: "before",
+	insertAfter: "after",
+	replaceAll: "replaceWith"
+}, function( name, original ) {
+	jQuery.fn[ name ] = function( selector ) {
+		var elems,
+			ret = [],
+			insert = jQuery( selector ),
+			last = insert.length - 1,
+			i = 0;
+
+		for ( ; i <= last; i++ ) {
+			elems = i === last ? this : this.clone( true );
+			jQuery( insert[ i ] )[ original ]( elems );
+
+			// Support: QtWebKit
+			// .get() because push.apply(_, arraylike) throws
+			push.apply( ret, elems.get() );
+		}
+
+		return this.pushStack( ret );
+	};
+});
+
+
+var iframe,
+	elemdisplay = {};
+
+/**
+ * Retrieve the actual display of a element
+ * @param {String} name nodeName of the element
+ * @param {Object} doc Document object
+ */
+// Called only from within defaultDisplay
+function actualDisplay( name, doc ) {
+	var style,
+		elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
+
+		// getDefaultComputedStyle might be reliably used only on attached element
+		display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
+
+			// Use of this method is a temporary fix (more like optimization) until something better comes along,
+			// since it was removed from specification and supported only in FF
+			style.display : jQuery.css( elem[ 0 ], "display" );
+
+	// We don't have any data stored on the element,
+	// so use "detach" method as fast way to get rid of the element
+	elem.detach();
+
+	return display;
+}
+
+/**
+ * Try to determine the default display value of an element
+ * @param {String} nodeName
+ */
+function defaultDisplay( nodeName ) {
+	var doc = document,
+		display = elemdisplay[ nodeName ];
+
+	if ( !display ) {
+		display = actualDisplay( nodeName, doc );
+
+		// If the simple way fails, read from inside an iframe
+		if ( display === "none" || !display ) {
+
+			// Use the already-created iframe if possible
+			iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
+
+			// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
+			doc = iframe[ 0 ].contentDocument;
+
+			// Support: IE
+			doc.write();
+			doc.close();
+
+			display = actualDisplay( nodeName, doc );
+			iframe.detach();
+		}
+
+		// Store the correct default display
+		elemdisplay[ nodeName ] = display;
+	}
+
+	return display;
+}
+var rmargin = (/^margin/);
+
+var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+
+var getStyles = function( elem ) {
+		// Support: IE<=11+, Firefox<=30+ (#15098, #14150)
+		// IE throws on elements created in popups
+		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+		if ( elem.ownerDocument.defaultView.opener ) {
+			return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
+		}
+
+		return window.getComputedStyle( elem, null );
+	};
+
+
+
+function curCSS( elem, name, computed ) {
+	var width, minWidth, maxWidth, ret,
+		style = elem.style;
+
+	computed = computed || getStyles( elem );
+
+	// Support: IE9
+	// getPropertyValue is only needed for .css('filter') (#12537)
+	if ( computed ) {
+		ret = computed.getPropertyValue( name ) || computed[ name ];
+	}
+
+	if ( computed ) {
+
+		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+			ret = jQuery.style( elem, name );
+		}
+
+		// Support: iOS < 6
+		// A tribute to the "awesome hack by Dean Edwards"
+		// iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
+		// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+		if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+			// Remember the original values
+			width = style.width;
+			minWidth = style.minWidth;
+			maxWidth = style.maxWidth;
+
+			// Put in the new values to get a computed value out
+			style.minWidth = style.maxWidth = style.width = ret;
+			ret = computed.width;
+
+			// Revert the changed values
+			style.width = width;
+			style.minWidth = minWidth;
+			style.maxWidth = maxWidth;
+		}
+	}
+
+	return ret !== undefined ?
+		// Support: IE
+		// IE returns zIndex value as an integer.
+		ret + "" :
+		ret;
+}
+
+
+function addGetHookIf( conditionFn, hookFn ) {
+	// Define the hook, we'll check on the first run if it's really needed.
+	return {
+		get: function() {
+			if ( conditionFn() ) {
+				// Hook not needed (or it's not possible to use it due
+				// to missing dependency), remove it.
+				delete this.get;
+				return;
+			}
+
+			// Hook needed; redefine it so that the support test is not executed again.
+			return (this.get = hookFn).apply( this, arguments );
+		}
+	};
+}
+
+
+(function() {
+	var pixelPositionVal, boxSizingReliableVal,
+		docElem = document.documentElement,
+		container = document.createElement( "div" ),
+		div = document.createElement( "div" );
+
+	if ( !div.style ) {
+		return;
+	}
+
+	// Support: IE9-11+
+	// Style of cloned element affects source element cloned (#8908)
+	div.style.backgroundClip = "content-box";
+	div.cloneNode( true ).style.backgroundClip = "";
+	support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+	container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" +
+		"position:absolute";
+	container.appendChild( div );
+
+	// Executing both pixelPosition & boxSizingReliable tests require only one layout
+	// so they're executed at the same time to save the second computation.
+	function computePixelPositionAndBoxSizingReliable() {
+		div.style.cssText =
+			// Support: Firefox<29, Android 2.3
+			// Vendor-prefix box-sizing
+			"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
+			"box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
+			"border:1px;padding:1px;width:4px;position:absolute";
+		div.innerHTML = "";
+		docElem.appendChild( container );
+
+		var divStyle = window.getComputedStyle( div, null );
+		pixelPositionVal = divStyle.top !== "1%";
+		boxSizingReliableVal = divStyle.width === "4px";
+
+		docElem.removeChild( container );
+	}
+
+	// Support: node.js jsdom
+	// Don't assume that getComputedStyle is a property of the global object
+	if ( window.getComputedStyle ) {
+		jQuery.extend( support, {
+			pixelPosition: function() {
+
+				// This test is executed only once but we still do memoizing
+				// since we can use the boxSizingReliable pre-computing.
+				// No need to check if the test was already performed, though.
+				computePixelPositionAndBoxSizingReliable();
+				return pixelPositionVal;
+			},
+			boxSizingReliable: function() {
+				if ( boxSizingReliableVal == null ) {
+					computePixelPositionAndBoxSizingReliable();
+				}
+				return boxSizingReliableVal;
+			},
+			reliableMarginRight: function() {
+
+				// Support: Android 2.3
+				// Check if div with explicit width and no margin-right incorrectly
+				// gets computed margin-right based on width of container. (#3333)
+				// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+				// This support function is only executed once so no memoizing is needed.
+				var ret,
+					marginDiv = div.appendChild( document.createElement( "div" ) );
+
+				// Reset CSS: box-sizing; display; margin; border; padding
+				marginDiv.style.cssText = div.style.cssText =
+					// Support: Firefox<29, Android 2.3
+					// Vendor-prefix box-sizing
+					"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
+					"box-sizing:content-box;display:block;margin:0;border:0;padding:0";
+				marginDiv.style.marginRight = marginDiv.style.width = "0";
+				div.style.width = "1px";
+				docElem.appendChild( container );
+
+				ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
+
+				docElem.removeChild( container );
+				div.removeChild( marginDiv );
+
+				return ret;
+			}
+		});
+	}
+})();
+
+
+// A method for quickly swapping in/out CSS properties to get correct calculations.
+jQuery.swap = function( elem, options, callback, args ) {
+	var ret, name,
+		old = {};
+
+	// Remember the old values, and insert the new ones
+	for ( name in options ) {
+		old[ name ] = elem.style[ name ];
+		elem.style[ name ] = options[ name ];
+	}
+
+	ret = callback.apply( elem, args || [] );
+
+	// Revert the old values
+	for ( name in options ) {
+		elem.style[ name ] = old[ name ];
+	}
+
+	return ret;
+};
+
+
+var
+	// Swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
+	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+	rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
+	rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
+
+	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+	cssNormalTransform = {
+		letterSpacing: "0",
+		fontWeight: "400"
+	},
+
+	cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( style, name ) {
+
+	// Shortcut for names that are not vendor prefixed
+	if ( name in style ) {
+		return name;
+	}
+
+	// Check for vendor prefixed names
+	var capName = name[0].toUpperCase() + name.slice(1),
+		origName = name,
+		i = cssPrefixes.length;
+
+	while ( i-- ) {
+		name = cssPrefixes[ i ] + capName;
+		if ( name in style ) {
+			return name;
+		}
+	}
+
+	return origName;
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+	var matches = rnumsplit.exec( value );
+	return matches ?
+		// Guard against undefined "subtract", e.g., when used as in cssHooks
+		Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
+		value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+	var i = extra === ( isBorderBox ? "border" : "content" ) ?
+		// If we already have the right measurement, avoid augmentation
+		4 :
+		// Otherwise initialize for horizontal or vertical properties
+		name === "width" ? 1 : 0,
+
+		val = 0;
+
+	for ( ; i < 4; i += 2 ) {
+		// Both box models exclude margin, so add it if we want it
+		if ( extra === "margin" ) {
+			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+		}
+
+		if ( isBorderBox ) {
+			// border-box includes padding, so remove it if we want content
+			if ( extra === "content" ) {
+				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+			}
+
+			// At this point, extra isn't border nor margin, so remove border
+			if ( extra !== "margin" ) {
+				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		} else {
+			// At this point, extra isn't content, so add padding
+			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+			// At this point, extra isn't content nor padding, so add border
+			if ( extra !== "padding" ) {
+				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		}
+	}
+
+	return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+	// Start with offset property, which is equivalent to the border-box value
+	var valueIsBorderBox = true,
+		val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+		styles = getStyles( elem ),
+		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+	// Some non-html elements return undefined for offsetWidth, so check for null/undefined
+	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+	if ( val <= 0 || val == null ) {
+		// Fall back to computed then uncomputed css if necessary
+		val = curCSS( elem, name, styles );
+		if ( val < 0 || val == null ) {
+			val = elem.style[ name ];
+		}
+
+		// Computed unit is not pixels. Stop here and return.
+		if ( rnumnonpx.test(val) ) {
+			return val;
+		}
+
+		// Check for style in case a browser which returns unreliable values
+		// for getComputedStyle silently falls back to the reliable elem.style
+		valueIsBorderBox = isBorderBox &&
+			( support.boxSizingReliable() || val === elem.style[ name ] );
+
+		// Normalize "", auto, and prepare for extra
+		val = parseFloat( val ) || 0;
+	}
+
+	// Use the active box-sizing model to add/subtract irrelevant styles
+	return ( val +
+		augmentWidthOrHeight(
+			elem,
+			name,
+			extra || ( isBorderBox ? "border" : "content" ),
+			valueIsBorderBox,
+			styles
+		)
+	) + "px";
+}
+
+function showHide( elements, show ) {
+	var display, elem, hidden,
+		values = [],
+		index = 0,
+		length = elements.length;
+
+	for ( ; index < length; index++ ) {
+		elem = elements[ index ];
+		if ( !elem.style ) {
+			continue;
+		}
+
+		values[ index ] = data_priv.get( elem, "olddisplay" );
+		display = elem.style.display;
+		if ( show ) {
+			// Reset the inline display of this element to learn if it is
+			// being hidden by cascaded rules or not
+			if ( !values[ index ] && display === "none" ) {
+				elem.style.display = "";
+			}
+
+			// Set elements which have been overridden with display: none
+			// in a stylesheet to whatever the default browser style is
+			// for such an element
+			if ( elem.style.display === "" && isHidden( elem ) ) {
+				values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
+			}
+		} else {
+			hidden = isHidden( elem );
+
+			if ( display !== "none" || !hidden ) {
+				data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
+			}
+		}
+	}
+
+	// Set the display of most of the elements in a second loop
+	// to avoid the constant reflow
+	for ( index = 0; index < length; index++ ) {
+		elem = elements[ index ];
+		if ( !elem.style ) {
+			continue;
+		}
+		if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
+			elem.style.display = show ? values[ index ] || "" : "none";
+		}
+	}
+
+	return elements;
+}
+
+jQuery.extend({
+
+	// Add in style property hooks for overriding the default
+	// behavior of getting and setting a style property
+	cssHooks: {
+		opacity: {
+			get: function( elem, computed ) {
+				if ( computed ) {
+
+					// We should always get a number back from opacity
+					var ret = curCSS( elem, "opacity" );
+					return ret === "" ? "1" : ret;
+				}
+			}
+		}
+	},
+
+	// Don't automatically add "px" to these possibly-unitless properties
+	cssNumber: {
+		"columnCount": true,
+		"fillOpacity": true,
+		"flexGrow": true,
+		"flexShrink": true,
+		"fontWeight": true,
+		"lineHeight": true,
+		"opacity": true,
+		"order": true,
+		"orphans": true,
+		"widows": true,
+		"zIndex": true,
+		"zoom": true
+	},
+
+	// Add in properties whose names you wish to fix before
+	// setting or getting the value
+	cssProps: {
+		"float": "cssFloat"
+	},
+
+	// Get and set the style property on a DOM Node
+	style: function( elem, name, value, extra ) {
+
+		// Don't set styles on text and comment nodes
+		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+			return;
+		}
+
+		// Make sure that we're working with the right name
+		var ret, type, hooks,
+			origName = jQuery.camelCase( name ),
+			style = elem.style;
+
+		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
+
+		// Gets hook for the prefixed version, then unprefixed version
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// Check if we're setting a value
+		if ( value !== undefined ) {
+			type = typeof value;
+
+			// Convert "+=" or "-=" to relative numbers (#7345)
+			if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+				value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
+				// Fixes bug #9237
+				type = "number";
+			}
+
+			// Make sure that null and NaN values aren't set (#7116)
+			if ( value == null || value !== value ) {
+				return;
+			}
+
+			// If a number, add 'px' to the (except for certain CSS properties)
+			if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+				value += "px";
+			}
+
+			// Support: IE9-11+
+			// background-* props affect original clone's values
+			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+				style[ name ] = "inherit";
+			}
+
+			// If a hook was provided, use that value, otherwise just set the specified value
+			if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
+				style[ name ] = value;
+			}
+
+		} else {
+			// If a hook was provided get the non-computed value from there
+			if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+				return ret;
+			}
+
+			// Otherwise just get the value from the style object
+			return style[ name ];
+		}
+	},
+
+	css: function( elem, name, extra, styles ) {
+		var val, num, hooks,
+			origName = jQuery.camelCase( name );
+
+		// Make sure that we're working with the right name
+		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
+
+		// Try prefixed name followed by the unprefixed name
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// If a hook was provided get the computed value from there
+		if ( hooks && "get" in hooks ) {
+			val = hooks.get( elem, true, extra );
+		}
+
+		// Otherwise, if a way to get the computed value exists, use that
+		if ( val === undefined ) {
+			val = curCSS( elem, name, styles );
+		}
+
+		// Convert "normal" to computed value
+		if ( val === "normal" && name in cssNormalTransform ) {
+			val = cssNormalTransform[ name ];
+		}
+
+		// Make numeric if forced or a qualifier was provided and val looks numeric
+		if ( extra === "" || extra ) {
+			num = parseFloat( val );
+			return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
+		}
+		return val;
+	}
+});
+
+jQuery.each([ "height", "width" ], function( i, name ) {
+	jQuery.cssHooks[ name ] = {
+		get: function( elem, computed, extra ) {
+			if ( computed ) {
+
+				// Certain elements can have dimension info if we invisibly show them
+				// but it must have a current display style that would benefit
+				return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?
+					jQuery.swap( elem, cssShow, function() {
+						return getWidthOrHeight( elem, name, extra );
+					}) :
+					getWidthOrHeight( elem, name, extra );
+			}
+		},
+
+		set: function( elem, value, extra ) {
+			var styles = extra && getStyles( elem );
+			return setPositiveNumber( elem, value, extra ?
+				augmentWidthOrHeight(
+					elem,
+					name,
+					extra,
+					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+					styles
+				) : 0
+			);
+		}
+	};
+});
+
+// Support: Android 2.3
+jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
+	function( elem, computed ) {
+		if ( computed ) {
+			return jQuery.swap( elem, { "display": "inline-block" },
+				curCSS, [ elem, "marginRight" ] );
+		}
+	}
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each({
+	margin: "",
+	padding: "",
+	border: "Width"
+}, function( prefix, suffix ) {
+	jQuery.cssHooks[ prefix + suffix ] = {
+		expand: function( value ) {
+			var i = 0,
+				expanded = {},
+
+				// Assumes a single number if not a string
+				parts = typeof value === "string" ? value.split(" ") : [ value ];
+
+			for ( ; i < 4; i++ ) {
+				expanded[ prefix + cssExpand[ i ] + suffix ] =
+					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+			}
+
+			return expanded;
+		}
+	};
+
+	if ( !rmargin.test( prefix ) ) {
+		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+	}
+});
+
+jQuery.fn.extend({
+	css: function( name, value ) {
+		return access( this, function( elem, name, value ) {
+			var styles, len,
+				map = {},
+				i = 0;
+
+			if ( jQuery.isArray( name ) ) {
+				styles = getStyles( elem );
+				len = name.length;
+
+				for ( ; i < len; i++ ) {
+					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+				}
+
+				return map;
+			}
+
+			return value !== undefined ?
+				jQuery.style( elem, name, value ) :
+				jQuery.css( elem, name );
+		}, name, value, arguments.length > 1 );
+	},
+	show: function() {
+		return showHide( this, true );
+	},
+	hide: function() {
+		return showHide( this );
+	},
+	toggle: function( state ) {
+		if ( typeof state === "boolean" ) {
+			return state ? this.show() : this.hide();
+		}
+
+		return this.each(function() {
+			if ( isHidden( this ) ) {
+				jQuery( this ).show();
+			} else {
+				jQuery( this ).hide();
+			}
+		});
+	}
+});
+
+
+function Tween( elem, options, prop, end, easing ) {
+	return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+	constructor: Tween,
+	init: function( elem, options, prop, end, easing, unit ) {
+		this.elem = elem;
+		this.prop = prop;
+		this.easing = easing || "swing";
+		this.options = options;
+		this.start = this.now = this.cur();
+		this.end = end;
+		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+	},
+	cur: function() {
+		var hooks = Tween.propHooks[ this.prop ];
+
+		return hooks && hooks.get ?
+			hooks.get( this ) :
+			Tween.propHooks._default.get( this );
+	},
+	run: function( percent ) {
+		var eased,
+			hooks = Tween.propHooks[ this.prop ];
+
+		if ( this.options.duration ) {
+			this.pos = eased = jQuery.easing[ this.easing ](
+				percent, this.options.duration * percent, 0, 1, this.options.duration
+			);
+		} else {
+			this.pos = eased = percent;
+		}
+		this.now = ( this.end - this.start ) * eased + this.start;
+
+		if ( this.options.step ) {
+			this.options.step.call( this.elem, this.now, this );
+		}
+
+		if ( hooks && hooks.set ) {
+			hooks.set( this );
+		} else {
+			Tween.propHooks._default.set( this );
+		}
+		return this;
+	}
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+	_default: {
+		get: function( tween ) {
+			var result;
+
+			if ( tween.elem[ tween.prop ] != null &&
+				(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
+				return tween.elem[ tween.prop ];
+			}
+
+			// Passing an empty string as a 3rd parameter to .css will automatically
+			// attempt a parseFloat and fallback to a string if the parse fails.
+			// Simple values such as "10px" are parsed to Float;
+			// complex values such as "rotate(1rad)" are returned as-is.
+			result = jQuery.css( tween.elem, tween.prop, "" );
+			// Empty strings, null, undefined and "auto" are converted to 0.
+			return !result || result === "auto" ? 0 : result;
+		},
+		set: function( tween ) {
+			// Use step hook for back compat.
+			// Use cssHook if its there.
+			// Use .style if available and use plain properties where available.
+			if ( jQuery.fx.step[ tween.prop ] ) {
+				jQuery.fx.step[ tween.prop ]( tween );
+			} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
+				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+			} else {
+				tween.elem[ tween.prop ] = tween.now;
+			}
+		}
+	}
+};
+
+// Support: IE9
+// Panic based approach to setting things on disconnected nodes
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+	set: function( tween ) {
+		if ( tween.elem.nodeType && tween.elem.parentNode ) {
+			tween.elem[ tween.prop ] = tween.now;
+		}
+	}
+};
+
+jQuery.easing = {
+	linear: function( p ) {
+		return p;
+	},
+	swing: function( p ) {
+		return 0.5 - Math.cos( p * Math.PI ) / 2;
+	}
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+
+
+
+var
+	fxNow, timerId,
+	rfxtypes = /^(?:toggle|show|hide)$/,
+	rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
+	rrun = /queueHooks$/,
+	animationPrefilters = [ defaultPrefilter ],
+	tweeners = {
+		"*": [ function( prop, value ) {
+			var tween = this.createTween( prop, value ),
+				target = tween.cur(),
+				parts = rfxnum.exec( value ),
+				unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+				// Starting value computation is required for potential unit mismatches
+				start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
+					rfxnum.exec( jQuery.css( tween.elem, prop ) ),
+				scale = 1,
+				maxIterations = 20;
+
+			if ( start && start[ 3 ] !== unit ) {
+				// Trust units reported by jQuery.css
+				unit = unit || start[ 3 ];
+
+				// Make sure we update the tween properties later on
+				parts = parts || [];
+
+				// Iteratively approximate from a nonzero starting point
+				start = +target || 1;
+
+				do {
+					// If previous iteration zeroed out, double until we get *something*.
+					// Use string for doubling so we don't accidentally see scale as unchanged below
+					scale = scale || ".5";
+
+					// Adjust and apply
+					start = start / scale;
+					jQuery.style( tween.elem, prop, start + unit );
+
+				// Update scale, tolerating zero or NaN from tween.cur(),
+				// break the loop if scale is unchanged or perfect, or if we've just had enough
+				} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
+			}
+
+			// Update tween properties
+			if ( parts ) {
+				start = tween.start = +start || +target || 0;
+				tween.unit = unit;
+				// If a +=/-= token was provided, we're doing a relative animation
+				tween.end = parts[ 1 ] ?
+					start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
+					+parts[ 2 ];
+			}
+
+			return tween;
+		} ]
+	};
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+	setTimeout(function() {
+		fxNow = undefined;
+	});
+	return ( fxNow = jQuery.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+	var which,
+		i = 0,
+		attrs = { height: type };
+
+	// If we include width, step value is 1 to do all cssExpand values,
+	// otherwise step value is 2 to skip over Left and Right
+	includeWidth = includeWidth ? 1 : 0;
+	for ( ; i < 4 ; i += 2 - includeWidth ) {
+		which = cssExpand[ i ];
+		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+	}
+
+	if ( includeWidth ) {
+		attrs.opacity = attrs.width = type;
+	}
+
+	return attrs;
+}
+
+function createTween( value, prop, animation ) {
+	var tween,
+		collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+		index = 0,
+		length = collection.length;
+	for ( ; index < length; index++ ) {
+		if ( (tween = collection[ index ].call( animation, prop, value )) ) {
+
+			// We're done with this property
+			return tween;
+		}
+	}
+}
+
+function defaultPrefilter( elem, props, opts ) {
+	/* jshint validthis: true */
+	var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
+		anim = this,
+		orig = {},
+		style = elem.style,
+		hidden = elem.nodeType && isHidden( elem ),
+		dataShow = data_priv.get( elem, "fxshow" );
+
+	// Handle queue: false promises
+	if ( !opts.queue ) {
+		hooks = jQuery._queueHooks( elem, "fx" );
+		if ( hooks.unqueued == null ) {
+			hooks.unqueued = 0;
+			oldfire = hooks.empty.fire;
+			hooks.empty.fire = function() {
+				if ( !hooks.unqueued ) {
+					oldfire();
+				}
+			};
+		}
+		hooks.unqueued++;
+
+		anim.always(function() {
+			// Ensure the complete handler is called before this completes
+			anim.always(function() {
+				hooks.unqueued--;
+				if ( !jQuery.queue( elem, "fx" ).length ) {
+					hooks.empty.fire();
+				}
+			});
+		});
+	}
+
+	// Height/width overflow pass
+	if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+		// Make sure that nothing sneaks out
+		// Record all 3 overflow attributes because IE9-10 do not
+		// change the overflow attribute when overflowX and
+		// overflowY are set to the same value
+		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+		// Set display property to inline-block for height/width
+		// animations on inline elements that are having width/height animated
+		display = jQuery.css( elem, "display" );
+
+		// Test default display if display is currently "none"
+		checkDisplay = display === "none" ?
+			data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
+
+		if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
+			style.display = "inline-block";
+		}
+	}
+
+	if ( opts.overflow ) {
+		style.overflow = "hidden";
+		anim.always(function() {
+			style.overflow = opts.overflow[ 0 ];
+			style.overflowX = opts.overflow[ 1 ];
+			style.overflowY = opts.overflow[ 2 ];
+		});
+	}
+
+	// show/hide pass
+	for ( prop in props ) {
+		value = props[ prop ];
+		if ( rfxtypes.exec( value ) ) {
+			delete props[ prop ];
+			toggle = toggle || value === "toggle";
+			if ( value === ( hidden ? "hide" : "show" ) ) {
+
+				// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
+				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+					hidden = true;
+				} else {
+					continue;
+				}
+			}
+			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+
+		// Any non-fx value stops us from restoring the original display value
+		} else {
+			display = undefined;
+		}
+	}
+
+	if ( !jQuery.isEmptyObject( orig ) ) {
+		if ( dataShow ) {
+			if ( "hidden" in dataShow ) {
+				hidden = dataShow.hidden;
+			}
+		} else {
+			dataShow = data_priv.access( elem, "fxshow", {} );
+		}
+
+		// Store state if its toggle - enables .stop().toggle() to "reverse"
+		if ( toggle ) {
+			dataShow.hidden = !hidden;
+		}
+		if ( hidden ) {
+			jQuery( elem ).show();
+		} else {
+			anim.done(function() {
+				jQuery( elem ).hide();
+			});
+		}
+		anim.done(function() {
+			var prop;
+
+			data_priv.remove( elem, "fxshow" );
+			for ( prop in orig ) {
+				jQuery.style( elem, prop, orig[ prop ] );
+			}
+		});
+		for ( prop in orig ) {
+			tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+
+			if ( !( prop in dataShow ) ) {
+				dataShow[ prop ] = tween.start;
+				if ( hidden ) {
+					tween.end = tween.start;
+					tween.start = prop === "width" || prop === "height" ? 1 : 0;
+				}
+			}
+		}
+
+	// If this is a noop like .hide().hide(), restore an overwritten display value
+	} else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
+		style.display = display;
+	}
+}
+
+function propFilter( props, specialEasing ) {
+	var index, name, easing, value, hooks;
+
+	// camelCase, specialEasing and expand cssHook pass
+	for ( index in props ) {
+		name = jQuery.camelCase( index );
+		easing = specialEasing[ name ];
+		value = props[ index ];
+		if ( jQuery.isArray( value ) ) {
+			easing = value[ 1 ];
+			value = props[ index ] = value[ 0 ];
+		}
+
+		if ( index !== name ) {
+			props[ name ] = value;
+			delete props[ index ];
+		}
+
+		hooks = jQuery.cssHooks[ name ];
+		if ( hooks && "expand" in hooks ) {
+			value = hooks.expand( value );
+			delete props[ name ];
+
+			// Not quite $.extend, this won't overwrite existing keys.
+			// Reusing 'index' because we have the correct "name"
+			for ( index in value ) {
+				if ( !( index in props ) ) {
+					props[ index ] = value[ index ];
+					specialEasing[ index ] = easing;
+				}
+			}
+		} else {
+			specialEasing[ name ] = easing;
+		}
+	}
+}
+
+function Animation( elem, properties, options ) {
+	var result,
+		stopped,
+		index = 0,
+		length = animationPrefilters.length,
+		deferred = jQuery.Deferred().always( function() {
+			// Don't match elem in the :animated selector
+			delete tick.elem;
+		}),
+		tick = function() {
+			if ( stopped ) {
+				return false;
+			}
+			var currentTime = fxNow || createFxNow(),
+				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+				// Support: Android 2.3
+				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+				temp = remaining / animation.duration || 0,
+				percent = 1 - temp,
+				index = 0,
+				length = animation.tweens.length;
+
+			for ( ; index < length ; index++ ) {
+				animation.tweens[ index ].run( percent );
+			}
+
+			deferred.notifyWith( elem, [ animation, percent, remaining ]);
+
+			if ( percent < 1 && length ) {
+				return remaining;
+			} else {
+				deferred.resolveWith( elem, [ animation ] );
+				return false;
+			}
+		},
+		animation = deferred.promise({
+			elem: elem,
+			props: jQuery.extend( {}, properties ),
+			opts: jQuery.extend( true, { specialEasing: {} }, options ),
+			originalProperties: properties,
+			originalOptions: options,
+			startTime: fxNow || createFxNow(),
+			duration: options.duration,
+			tweens: [],
+			createTween: function( prop, end ) {
+				var tween = jQuery.Tween( elem, animation.opts, prop, end,
+						animation.opts.specialEasing[ prop ] || animation.opts.easing );
+				animation.tweens.push( tween );
+				return tween;
+			},
+			stop: function( gotoEnd ) {
+				var index = 0,
+					// If we are going to the end, we want to run all the tweens
+					// otherwise we skip this part
+					length = gotoEnd ? animation.tweens.length : 0;
+				if ( stopped ) {
+					return this;
+				}
+				stopped = true;
+				for ( ; index < length ; index++ ) {
+					animation.tweens[ index ].run( 1 );
+				}
+
+				// Resolve when we played the last frame; otherwise, reject
+				if ( gotoEnd ) {
+					deferred.resolveWith( elem, [ animation, gotoEnd ] );
+				} else {
+					deferred.rejectWith( elem, [ animation, gotoEnd ] );
+				}
+				return this;
+			}
+		}),
+		props = animation.props;
+
+	propFilter( props, animation.opts.specialEasing );
+
+	for ( ; index < length ; index++ ) {
+		result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
+		if ( result ) {
+			return result;
+		}
+	}
+
+	jQuery.map( props, createTween, animation );
+
+	if ( jQuery.isFunction( animation.opts.start ) ) {
+		animation.opts.start.call( elem, animation );
+	}
+
+	jQuery.fx.timer(
+		jQuery.extend( tick, {
+			elem: elem,
+			anim: animation,
+			queue: animation.opts.queue
+		})
+	);
+
+	// attach callbacks from options
+	return animation.progress( animation.opts.progress )
+		.done( animation.opts.done, animation.opts.complete )
+		.fail( animation.opts.fail )
+		.always( animation.opts.always );
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+	tweener: function( props, callback ) {
+		if ( jQuery.isFunction( props ) ) {
+			callback = props;
+			props = [ "*" ];
+		} else {
+			props = props.split(" ");
+		}
+
+		var prop,
+			index = 0,
+			length = props.length;
+
+		for ( ; index < length ; index++ ) {
+			prop = props[ index ];
+			tweeners[ prop ] = tweeners[ prop ] || [];
+			tweeners[ prop ].unshift( callback );
+		}
+	},
+
+	prefilter: function( callback, prepend ) {
+		if ( prepend ) {
+			animationPrefilters.unshift( callback );
+		} else {
+			animationPrefilters.push( callback );
+		}
+	}
+});
+
+jQuery.speed = function( speed, easing, fn ) {
+	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+		complete: fn || !fn && easing ||
+			jQuery.isFunction( speed ) && speed,
+		duration: speed,
+		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+	};
+
+	opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+		opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+	// Normalize opt.queue - true/undefined/null -> "fx"
+	if ( opt.queue == null || opt.queue === true ) {
+		opt.queue = "fx";
+	}
+
+	// Queueing
+	opt.old = opt.complete;
+
+	opt.complete = function() {
+		if ( jQuery.isFunction( opt.old ) ) {
+			opt.old.call( this );
+		}
+
+		if ( opt.queue ) {
+			jQuery.dequeue( this, opt.queue );
+		}
+	};
+
+	return opt;
+};
+
+jQuery.fn.extend({
+	fadeTo: function( speed, to, easing, callback ) {
+
+		// Show any hidden elements after setting opacity to 0
+		return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+			// Animate to the value specified
+			.end().animate({ opacity: to }, speed, easing, callback );
+	},
+	animate: function( prop, speed, easing, callback ) {
+		var empty = jQuery.isEmptyObject( prop ),
+			optall = jQuery.speed( speed, easing, callback ),
+			doAnimation = function() {
+				// Operate on a copy of prop so per-property easing won't be lost
+				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+				// Empty animations, or finishing resolves immediately
+				if ( empty || data_priv.get( this, "finish" ) ) {
+					anim.stop( true );
+				}
+			};
+			doAnimation.finish = doAnimation;
+
+		return empty || optall.queue === false ?
+			this.each( doAnimation ) :
+			this.queue( optall.queue, doAnimation );
+	},
+	stop: function( type, clearQueue, gotoEnd ) {
+		var stopQueue = function( hooks ) {
+			var stop = hooks.stop;
+			delete hooks.stop;
+			stop( gotoEnd );
+		};
+
+		if ( typeof type !== "string" ) {
+			gotoEnd = clearQueue;
+			clearQueue = type;
+			type = undefined;
+		}
+		if ( clearQueue && type !== false ) {
+			this.queue( type || "fx", [] );
+		}
+
+		return this.each(function() {
+			var dequeue = true,
+				index = type != null && type + "queueHooks",
+				timers = jQuery.timers,
+				data = data_priv.get( this );
+
+			if ( index ) {
+				if ( data[ index ] && data[ index ].stop ) {
+					stopQueue( data[ index ] );
+				}
+			} else {
+				for ( index in data ) {
+					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+						stopQueue( data[ index ] );
+					}
+				}
+			}
+
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+					timers[ index ].anim.stop( gotoEnd );
+					dequeue = false;
+					timers.splice( index, 1 );
+				}
+			}
+
+			// Start the next in the queue if the last step wasn't forced.
+			// Timers currently will call their complete callbacks, which
+			// will dequeue but only if they were gotoEnd.
+			if ( dequeue || !gotoEnd ) {
+				jQuery.dequeue( this, type );
+			}
+		});
+	},
+	finish: function( type ) {
+		if ( type !== false ) {
+			type = type || "fx";
+		}
+		return this.each(function() {
+			var index,
+				data = data_priv.get( this ),
+				queue = data[ type + "queue" ],
+				hooks = data[ type + "queueHooks" ],
+				timers = jQuery.timers,
+				length = queue ? queue.length : 0;
+
+			// Enable finishing flag on private data
+			data.finish = true;
+
+			// Empty the queue first
+			jQuery.queue( this, type, [] );
+
+			if ( hooks && hooks.stop ) {
+				hooks.stop.call( this, true );
+			}
+
+			// Look for any active animations, and finish them
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+					timers[ index ].anim.stop( true );
+					timers.splice( index, 1 );
+				}
+			}
+
+			// Look for any animations in the old queue and finish them
+			for ( index = 0; index < length; index++ ) {
+				if ( queue[ index ] && queue[ index ].finish ) {
+					queue[ index ].finish.call( this );
+				}
+			}
+
+			// Turn off finishing flag
+			delete data.finish;
+		});
+	}
+});
+
+jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
+	var cssFn = jQuery.fn[ name ];
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return speed == null || typeof speed === "boolean" ?
+			cssFn.apply( this, arguments ) :
+			this.animate( genFx( name, true ), speed, easing, callback );
+	};
+});
+
+// Generate shortcuts for custom animations
+jQuery.each({
+	slideDown: genFx("show"),
+	slideUp: genFx("hide"),
+	slideToggle: genFx("toggle"),
+	fadeIn: { opacity: "show" },
+	fadeOut: { opacity: "hide" },
+	fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return this.animate( props, speed, easing, callback );
+	};
+});
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+	var timer,
+		i = 0,
+		timers = jQuery.timers;
+
+	fxNow = jQuery.now();
+
+	for ( ; i < timers.length; i++ ) {
+		timer = timers[ i ];
+		// Checks the timer has not already been removed
+		if ( !timer() && timers[ i ] === timer ) {
+			timers.splice( i--, 1 );
+		}
+	}
+
+	if ( !timers.length ) {
+		jQuery.fx.stop();
+	}
+	fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+	jQuery.timers.push( timer );
+	if ( timer() ) {
+		jQuery.fx.start();
+	} else {
+		jQuery.timers.pop();
+	}
+};
+
+jQuery.fx.interval = 13;
+
+jQuery.fx.start = function() {
+	if ( !timerId ) {
+		timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
+	}
+};
+
+jQuery.fx.stop = function() {
+	clearInterval( timerId );
+	timerId = null;
+};
+
+jQuery.fx.speeds = {
+	slow: 600,
+	fast: 200,
+	// Default speed
+	_default: 400
+};
+
+
+// Based off of the plugin by Clint Helfers, with permission.
+// http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+	type = type || "fx";
+
+	return this.queue( type, function( next, hooks ) {
+		var timeout = setTimeout( next, time );
+		hooks.stop = function() {
+			clearTimeout( timeout );
+		};
+	});
+};
+
+
+(function() {
+	var input = document.createElement( "input" ),
+		select = document.createElement( "select" ),
+		opt = select.appendChild( document.createElement( "option" ) );
+
+	input.type = "checkbox";
+
+	// Support: iOS<=5.1, Android<=4.2+
+	// Default value for a checkbox should be "on"
+	support.checkOn = input.value !== "";
+
+	// Support: IE<=11+
+	// Must access selectedIndex to make default options select
+	support.optSelected = opt.selected;
+
+	// Support: Android<=2.3
+	// Options inside disabled selects are incorrectly marked as disabled
+	select.disabled = true;
+	support.optDisabled = !opt.disabled;
+
+	// Support: IE<=11+
+	// An input loses its value after becoming a radio
+	input = document.createElement( "input" );
+	input.value = "t";
+	input.type = "radio";
+	support.radioValue = input.value === "t";
+})();
+
+
+var nodeHook, boolHook,
+	attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend({
+	attr: function( name, value ) {
+		return access( this, jQuery.attr, name, value, arguments.length > 1 );
+	},
+
+	removeAttr: function( name ) {
+		return this.each(function() {
+			jQuery.removeAttr( this, name );
+		});
+	}
+});
+
+jQuery.extend({
+	attr: function( elem, name, value ) {
+		var hooks, ret,
+			nType = elem.nodeType;
+
+		// don't get/set attributes on text, comment and attribute nodes
+		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		// Fallback to prop when attributes are not supported
+		if ( typeof elem.getAttribute === strundefined ) {
+			return jQuery.prop( elem, name, value );
+		}
+
+		// All attributes are lowercase
+		// Grab necessary hook if one is defined
+		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+			name = name.toLowerCase();
+			hooks = jQuery.attrHooks[ name ] ||
+				( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
+		}
+
+		if ( value !== undefined ) {
+
+			if ( value === null ) {
+				jQuery.removeAttr( elem, name );
+
+			} else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+				return ret;
+
+			} else {
+				elem.setAttribute( name, value + "" );
+				return value;
+			}
+
+		} else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+			return ret;
+
+		} else {
+			ret = jQuery.find.attr( elem, name );
+
+			// Non-existent attributes return null, we normalize to undefined
+			return ret == null ?
+				undefined :
+				ret;
+		}
+	},
+
+	removeAttr: function( elem, value ) {
+		var name, propName,
+			i = 0,
+			attrNames = value && value.match( rnotwhite );
+
+		if ( attrNames && elem.nodeType === 1 ) {
+			while ( (name = attrNames[i++]) ) {
+				propName = jQuery.propFix[ name ] || name;
+
+				// Boolean attributes get special treatment (#10870)
+				if ( jQuery.expr.match.bool.test( name ) ) {
+					// Set corresponding property to false
+					elem[ propName ] = false;
+				}
+
+				elem.removeAttribute( name );
+			}
+		}
+	},
+
+	attrHooks: {
+		type: {
+			set: function( elem, value ) {
+				if ( !support.radioValue && value === "radio" &&
+					jQuery.nodeName( elem, "input" ) ) {
+					var val = elem.value;
+					elem.setAttribute( "type", value );
+					if ( val ) {
+						elem.value = val;
+					}
+					return value;
+				}
+			}
+		}
+	}
+});
+
+// Hooks for boolean attributes
+boolHook = {
+	set: function( elem, value, name ) {
+		if ( value === false ) {
+			// Remove boolean attributes when set to false
+			jQuery.removeAttr( elem, name );
+		} else {
+			elem.setAttribute( name, name );
+		}
+		return name;
+	}
+};
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+	var getter = attrHandle[ name ] || jQuery.find.attr;
+
+	attrHandle[ name ] = function( elem, name, isXML ) {
+		var ret, handle;
+		if ( !isXML ) {
+			// Avoid an infinite loop by temporarily removing this function from the getter
+			handle = attrHandle[ name ];
+			attrHandle[ name ] = ret;
+			ret = getter( elem, name, isXML ) != null ?
+				name.toLowerCase() :
+				null;
+			attrHandle[ name ] = handle;
+		}
+		return ret;
+	};
+});
+
+
+
+
+var rfocusable = /^(?:input|select|textarea|button)$/i;
+
+jQuery.fn.extend({
+	prop: function( name, value ) {
+		return access( this, jQuery.prop, name, value, arguments.length > 1 );
+	},
+
+	removeProp: function( name ) {
+		return this.each(function() {
+			delete this[ jQuery.propFix[ name ] || name ];
+		});
+	}
+});
+
+jQuery.extend({
+	propFix: {
+		"for": "htmlFor",
+		"class": "className"
+	},
+
+	prop: function( elem, name, value ) {
+		var ret, hooks, notxml,
+			nType = elem.nodeType;
+
+		// Don't get/set properties on text, comment and attribute nodes
+		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+		if ( notxml ) {
+			// Fix name and attach hooks
+			name = jQuery.propFix[ name ] || name;
+			hooks = jQuery.propHooks[ name ];
+		}
+
+		if ( value !== undefined ) {
+			return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
+				ret :
+				( elem[ name ] = value );
+
+		} else {
+			return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
+				ret :
+				elem[ name ];
+		}
+	},
+
+	propHooks: {
+		tabIndex: {
+			get: function( elem ) {
+				return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
+					elem.tabIndex :
+					-1;
+			}
+		}
+	}
+});
+
+if ( !support.optSelected ) {
+	jQuery.propHooks.selected = {
+		get: function( elem ) {
+			var parent = elem.parentNode;
+			if ( parent && parent.parentNode ) {
+				parent.parentNode.selectedIndex;
+			}
+			return null;
+		}
+	};
+}
+
+jQuery.each([
+	"tabIndex",
+	"readOnly",
+	"maxLength",
+	"cellSpacing",
+	"cellPadding",
+	"rowSpan",
+	"colSpan",
+	"useMap",
+	"frameBorder",
+	"contentEditable"
+], function() {
+	jQuery.propFix[ this.toLowerCase() ] = this;
+});
+
+
+
+
+var rclass = /[\t\r\n\f]/g;
+
+jQuery.fn.extend({
+	addClass: function( value ) {
+		var classes, elem, cur, clazz, j, finalValue,
+			proceed = typeof value === "string" && value,
+			i = 0,
+			len = this.length;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( j ) {
+				jQuery( this ).addClass( value.call( this, j, this.className ) );
+			});
+		}
+
+		if ( proceed ) {
+			// The disjunction here is for better compressibility (see removeClass)
+			classes = ( value || "" ).match( rnotwhite ) || [];
+
+			for ( ; i < len; i++ ) {
+				elem = this[ i ];
+				cur = elem.nodeType === 1 && ( elem.className ?
+					( " " + elem.className + " " ).replace( rclass, " " ) :
+					" "
+				);
+
+				if ( cur ) {
+					j = 0;
+					while ( (clazz = classes[j++]) ) {
+						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+							cur += clazz + " ";
+						}
+					}
+
+					// only assign if different to avoid unneeded rendering.
+					finalValue = jQuery.trim( cur );
+					if ( elem.className !== finalValue ) {
+						elem.className = finalValue;
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	removeClass: function( value ) {
+		var classes, elem, cur, clazz, j, finalValue,
+			proceed = arguments.length === 0 || typeof value === "string" && value,
+			i = 0,
+			len = this.length;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( j ) {
+				jQuery( this ).removeClass( value.call( this, j, this.className ) );
+			});
+		}
+		if ( proceed ) {
+			classes = ( value || "" ).match( rnotwhite ) || [];
+
+			for ( ; i < len; i++ ) {
+				elem = this[ i ];
+				// This expression is here for better compressibility (see addClass)
+				cur = elem.nodeType === 1 && ( elem.className ?
+					( " " + elem.className + " " ).replace( rclass, " " ) :
+					""
+				);
+
+				if ( cur ) {
+					j = 0;
+					while ( (clazz = classes[j++]) ) {
+						// Remove *all* instances
+						while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
+							cur = cur.replace( " " + clazz + " ", " " );
+						}
+					}
+
+					// Only assign if different to avoid unneeded rendering.
+					finalValue = value ? jQuery.trim( cur ) : "";
+					if ( elem.className !== finalValue ) {
+						elem.className = finalValue;
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	toggleClass: function( value, stateVal ) {
+		var type = typeof value;
+
+		if ( typeof stateVal === "boolean" && type === "string" ) {
+			return stateVal ? this.addClass( value ) : this.removeClass( value );
+		}
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( i ) {
+				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+			});
+		}
+
+		return this.each(function() {
+			if ( type === "string" ) {
+				// Toggle individual class names
+				var className,
+					i = 0,
+					self = jQuery( this ),
+					classNames = value.match( rnotwhite ) || [];
+
+				while ( (className = classNames[ i++ ]) ) {
+					// Check each className given, space separated list
+					if ( self.hasClass( className ) ) {
+						self.removeClass( className );
+					} else {
+						self.addClass( className );
+					}
+				}
+
+			// Toggle whole class name
+			} else if ( type === strundefined || type === "boolean" ) {
+				if ( this.className ) {
+					// store className if set
+					data_priv.set( this, "__className__", this.className );
+				}
+
+				// If the element has a class name or if we're passed `false`,
+				// then remove the whole classname (if there was one, the above saved it).
+				// Otherwise bring back whatever was previously saved (if anything),
+				// falling back to the empty string if nothing was stored.
+				this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || "";
+			}
+		});
+	},
+
+	hasClass: function( selector ) {
+		var className = " " + selector + " ",
+			i = 0,
+			l = this.length;
+		for ( ; i < l; i++ ) {
+			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
+				return true;
+			}
+		}
+
+		return false;
+	}
+});
+
+
+
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend({
+	val: function( value ) {
+		var hooks, ret, isFunction,
+			elem = this[0];
+
+		if ( !arguments.length ) {
+			if ( elem ) {
+				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+					return ret;
+				}
+
+				ret = elem.value;
+
+				return typeof ret === "string" ?
+					// Handle most common string cases
+					ret.replace(rreturn, "") :
+					// Handle cases where value is null/undef or number
+					ret == null ? "" : ret;
+			}
+
+			return;
+		}
+
+		isFunction = jQuery.isFunction( value );
+
+		return this.each(function( i ) {
+			var val;
+
+			if ( this.nodeType !== 1 ) {
+				return;
+			}
+
+			if ( isFunction ) {
+				val = value.call( this, i, jQuery( this ).val() );
+			} else {
+				val = value;
+			}
+
+			// Treat null/undefined as ""; convert numbers to string
+			if ( val == null ) {
+				val = "";
+
+			} else if ( typeof val === "number" ) {
+				val += "";
+
+			} else if ( jQuery.isArray( val ) ) {
+				val = jQuery.map( val, function( value ) {
+					return value == null ? "" : value + "";
+				});
+			}
+
+			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+			// If set returns undefined, fall back to normal setting
+			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+				this.value = val;
+			}
+		});
+	}
+});
+
+jQuery.extend({
+	valHooks: {
+		option: {
+			get: function( elem ) {
+				var val = jQuery.find.attr( elem, "value" );
+				return val != null ?
+					val :
+					// Support: IE10-11+
+					// option.text throws exceptions (#14686, #14858)
+					jQuery.trim( jQuery.text( elem ) );
+			}
+		},
+		select: {
+			get: function( elem ) {
+				var value, option,
+					options = elem.options,
+					index = elem.selectedIndex,
+					one = elem.type === "select-one" || index < 0,
+					values = one ? null : [],
+					max = one ? index + 1 : options.length,
+					i = index < 0 ?
+						max :
+						one ? index : 0;
+
+				// Loop through all the selected options
+				for ( ; i < max; i++ ) {
+					option = options[ i ];
+
+					// IE6-9 doesn't update selected after form reset (#2551)
+					if ( ( option.selected || i === index ) &&
+							// Don't return options that are disabled or in a disabled optgroup
+							( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
+							( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+						// Get the specific value for the option
+						value = jQuery( option ).val();
+
+						// We don't need an array for one selects
+						if ( one ) {
+							return value;
+						}
+
+						// Multi-Selects return an array
+						values.push( value );
+					}
+				}
+
+				return values;
+			},
+
+			set: function( elem, value ) {
+				var optionSet, option,
+					options = elem.options,
+					values = jQuery.makeArray( value ),
+					i = options.length;
+
+				while ( i-- ) {
+					option = options[ i ];
+					if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {
+						optionSet = true;
+					}
+				}
+
+				// Force browsers to behave consistently when non-matching value is set
+				if ( !optionSet ) {
+					elem.selectedIndex = -1;
+				}
+				return values;
+			}
+		}
+	}
+});
+
+// Radios and checkboxes getter/setter
+jQuery.each([ "radio", "checkbox" ], function() {
+	jQuery.valHooks[ this ] = {
+		set: function( elem, value ) {
+			if ( jQuery.isArray( value ) ) {
+				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+			}
+		}
+	};
+	if ( !support.checkOn ) {
+		jQuery.valHooks[ this ].get = function( elem ) {
+			return elem.getAttribute("value") === null ? "on" : elem.value;
+		};
+	}
+});
+
+
+
+
+// Return jQuery for attributes-only inclusion
+
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+	"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+	// Handle event binding
+	jQuery.fn[ name ] = function( data, fn ) {
+		return arguments.length > 0 ?
+			this.on( name, null, data, fn ) :
+			this.trigger( name );
+	};
+});
+
+jQuery.fn.extend({
+	hover: function( fnOver, fnOut ) {
+		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+	},
+
+	bind: function( types, data, fn ) {
+		return this.on( types, null, data, fn );
+	},
+	unbind: function( types, fn ) {
+		return this.off( types, null, fn );
+	},
+
+	delegate: function( selector, types, data, fn ) {
+		return this.on( types, selector, data, fn );
+	},
+	undelegate: function( selector, types, fn ) {
+		// ( namespace ) or ( selector, types [, fn] )
+		return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
+	}
+});
+
+
+var nonce = jQuery.now();
+
+var rquery = (/\?/);
+
+
+
+// Support: Android 2.3
+// Workaround failure to string-cast null input
+jQuery.parseJSON = function( data ) {
+	return JSON.parse( data + "" );
+};
+
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+	var xml, tmp;
+	if ( !data || typeof data !== "string" ) {
+		return null;
+	}
+
+	// Support: IE9
+	try {
+		tmp = new DOMParser();
+		xml = tmp.parseFromString( data, "text/xml" );
+	} catch ( e ) {
+		xml = undefined;
+	}
+
+	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+		jQuery.error( "Invalid XML: " + data );
+	}
+	return xml;
+};
+
+
+var
+	rhash = /#.*$/,
+	rts = /([?&])_=[^&]*/,
+	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+	// #7653, #8125, #8152: local protocol detection
+	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+	rnoContent = /^(?:GET|HEAD)$/,
+	rprotocol = /^\/\//,
+	rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
+
+	/* Prefilters
+	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+	 * 2) These are called:
+	 *    - BEFORE asking for a transport
+	 *    - AFTER param serialization (s.data is a string if s.processData is true)
+	 * 3) key is the dataType
+	 * 4) the catchall symbol "*" can be used
+	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+	 */
+	prefilters = {},
+
+	/* Transports bindings
+	 * 1) key is the dataType
+	 * 2) the catchall symbol "*" can be used
+	 * 3) selection will start with transport dataType and THEN go to "*" if needed
+	 */
+	transports = {},
+
+	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+	allTypes = "*/".concat( "*" ),
+
+	// Document location
+	ajaxLocation = window.location.href,
+
+	// Segment location into parts
+	ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+	// dataTypeExpression is optional and defaults to "*"
+	return function( dataTypeExpression, func ) {
+
+		if ( typeof dataTypeExpression !== "string" ) {
+			func = dataTypeExpression;
+			dataTypeExpression = "*";
+		}
+
+		var dataType,
+			i = 0,
+			dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
+
+		if ( jQuery.isFunction( func ) ) {
+			// For each dataType in the dataTypeExpression
+			while ( (dataType = dataTypes[i++]) ) {
+				// Prepend if requested
+				if ( dataType[0] === "+" ) {
+					dataType = dataType.slice( 1 ) || "*";
+					(structure[ dataType ] = structure[ dataType ] || []).unshift( func );
+
+				// Otherwise append
+				} else {
+					(structure[ dataType ] = structure[ dataType ] || []).push( func );
+				}
+			}
+		}
+	};
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+	var inspected = {},
+		seekingTransport = ( structure === transports );
+
+	function inspect( dataType ) {
+		var selected;
+		inspected[ dataType ] = true;
+		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+			if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+				options.dataTypes.unshift( dataTypeOrTransport );
+				inspect( dataTypeOrTransport );
+				return false;
+			} else if ( seekingTransport ) {
+				return !( selected = dataTypeOrTransport );
+			}
+		});
+		return selected;
+	}
+
+	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+	var key, deep,
+		flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+	for ( key in src ) {
+		if ( src[ key ] !== undefined ) {
+			( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
+		}
+	}
+	if ( deep ) {
+		jQuery.extend( true, target, deep );
+	}
+
+	return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+	var ct, type, finalDataType, firstDataType,
+		contents = s.contents,
+		dataTypes = s.dataTypes;
+
+	// Remove auto dataType and get content-type in the process
+	while ( dataTypes[ 0 ] === "*" ) {
+		dataTypes.shift();
+		if ( ct === undefined ) {
+			ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
+		}
+	}
+
+	// Check if we're dealing with a known content-type
+	if ( ct ) {
+		for ( type in contents ) {
+			if ( contents[ type ] && contents[ type ].test( ct ) ) {
+				dataTypes.unshift( type );
+				break;
+			}
+		}
+	}
+
+	// Check to see if we have a response for the expected dataType
+	if ( dataTypes[ 0 ] in responses ) {
+		finalDataType = dataTypes[ 0 ];
+	} else {
+		// Try convertible dataTypes
+		for ( type in responses ) {
+			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+				finalDataType = type;
+				break;
+			}
+			if ( !firstDataType ) {
+				firstDataType = type;
+			}
+		}
+		// Or just use first one
+		finalDataType = finalDataType || firstDataType;
+	}
+
+	// If we found a dataType
+	// We add the dataType to the list if needed
+	// and return the corresponding response
+	if ( finalDataType ) {
+		if ( finalDataType !== dataTypes[ 0 ] ) {
+			dataTypes.unshift( finalDataType );
+		}
+		return responses[ finalDataType ];
+	}
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+	var conv2, current, conv, tmp, prev,
+		converters = {},
+		// Work with a copy of dataTypes in case we need to modify it for conversion
+		dataTypes = s.dataTypes.slice();
+
+	// Create converters map with lowercased keys
+	if ( dataTypes[ 1 ] ) {
+		for ( conv in s.converters ) {
+			converters[ conv.toLowerCase() ] = s.converters[ conv ];
+		}
+	}
+
+	current = dataTypes.shift();
+
+	// Convert to each sequential dataType
+	while ( current ) {
+
+		if ( s.responseFields[ current ] ) {
+			jqXHR[ s.responseFields[ current ] ] = response;
+		}
+
+		// Apply the dataFilter if provided
+		if ( !prev && isSuccess && s.dataFilter ) {
+			response = s.dataFilter( response, s.dataType );
+		}
+
+		prev = current;
+		current = dataTypes.shift();
+
+		if ( current ) {
+
+		// There's only work to do if current dataType is non-auto
+			if ( current === "*" ) {
+
+				current = prev;
+
+			// Convert response if prev dataType is non-auto and differs from current
+			} else if ( prev !== "*" && prev !== current ) {
+
+				// Seek a direct converter
+				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+				// If none found, seek a pair
+				if ( !conv ) {
+					for ( conv2 in converters ) {
+
+						// If conv2 outputs current
+						tmp = conv2.split( " " );
+						if ( tmp[ 1 ] === current ) {
+
+							// If prev can be converted to accepted input
+							conv = converters[ prev + " " + tmp[ 0 ] ] ||
+								converters[ "* " + tmp[ 0 ] ];
+							if ( conv ) {
+								// Condense equivalence converters
+								if ( conv === true ) {
+									conv = converters[ conv2 ];
+
+								// Otherwise, insert the intermediate dataType
+								} else if ( converters[ conv2 ] !== true ) {
+									current = tmp[ 0 ];
+									dataTypes.unshift( tmp[ 1 ] );
+								}
+								break;
+							}
+						}
+					}
+				}
+
+				// Apply converter (if not an equivalence)
+				if ( conv !== true ) {
+
+					// Unless errors are allowed to bubble, catch and return them
+					if ( conv && s[ "throws" ] ) {
+						response = conv( response );
+					} else {
+						try {
+							response = conv( response );
+						} catch ( e ) {
+							return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
+						}
+					}
+				}
+			}
+		}
+	}
+
+	return { state: "success", data: response };
+}
+
+jQuery.extend({
+
+	// Counter for holding the number of active queries
+	active: 0,
+
+	// Last-Modified header cache for next request
+	lastModified: {},
+	etag: {},
+
+	ajaxSettings: {
+		url: ajaxLocation,
+		type: "GET",
+		isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+		global: true,
+		processData: true,
+		async: true,
+		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+		/*
+		timeout: 0,
+		data: null,
+		dataType: null,
+		username: null,
+		password: null,
+		cache: null,
+		throws: false,
+		traditional: false,
+		headers: {},
+		*/
+
+		accepts: {
+			"*": allTypes,
+			text: "text/plain",
+			html: "text/html",
+			xml: "application/xml, text/xml",
+			json: "application/json, text/javascript"
+		},
+
+		contents: {
+			xml: /xml/,
+			html: /html/,
+			json: /json/
+		},
+
+		responseFields: {
+			xml: "responseXML",
+			text: "responseText",
+			json: "responseJSON"
+		},
+
+		// Data converters
+		// Keys separate source (or catchall "*") and destination types with a single space
+		converters: {
+
+			// Convert anything to text
+			"* text": String,
+
+			// Text to html (true = no transformation)
+			"text html": true,
+
+			// Evaluate text as a json expression
+			"text json": jQuery.parseJSON,
+
+			// Parse text as xml
+			"text xml": jQuery.parseXML
+		},
+
+		// For options that shouldn't be deep extended:
+		// you can add your own custom options here if
+		// and when you create one that shouldn't be
+		// deep extended (see ajaxExtend)
+		flatOptions: {
+			url: true,
+			context: true
+		}
+	},
+
+	// Creates a full fledged settings object into target
+	// with both ajaxSettings and settings fields.
+	// If target is omitted, writes into ajaxSettings.
+	ajaxSetup: function( target, settings ) {
+		return settings ?
+
+			// Building a settings object
+			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+			// Extending ajaxSettings
+			ajaxExtend( jQuery.ajaxSettings, target );
+	},
+
+	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+	ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+	// Main method
+	ajax: function( url, options ) {
+
+		// If url is an object, simulate pre-1.5 signature
+		if ( typeof url === "object" ) {
+			options = url;
+			url = undefined;
+		}
+
+		// Force options to be an object
+		options = options || {};
+
+		var transport,
+			// URL without anti-cache param
+			cacheURL,
+			// Response headers
+			responseHeadersString,
+			responseHeaders,
+			// timeout handle
+			timeoutTimer,
+			// Cross-domain detection vars
+			parts,
+			// To know if global events are to be dispatched
+			fireGlobals,
+			// Loop variable
+			i,
+			// Create the final options object
+			s = jQuery.ajaxSetup( {}, options ),
+			// Callbacks context
+			callbackContext = s.context || s,
+			// Context for global events is callbackContext if it is a DOM node or jQuery collection
+			globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
+				jQuery( callbackContext ) :
+				jQuery.event,
+			// Deferreds
+			deferred = jQuery.Deferred(),
+			completeDeferred = jQuery.Callbacks("once memory"),
+			// Status-dependent callbacks
+			statusCode = s.statusCode || {},
+			// Headers (they are sent all at once)
+			requestHeaders = {},
+			requestHeadersNames = {},
+			// The jqXHR state
+			state = 0,
+			// Default abort message
+			strAbort = "canceled",
+			// Fake xhr
+			jqXHR = {
+				readyState: 0,
+
+				// Builds headers hashtable if needed
+				getResponseHeader: function( key ) {
+					var match;
+					if ( state === 2 ) {
+						if ( !responseHeaders ) {
+							responseHeaders = {};
+							while ( (match = rheaders.exec( responseHeadersString )) ) {
+								responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+							}
+						}
+						match = responseHeaders[ key.toLowerCase() ];
+					}
+					return match == null ? null : match;
+				},
+
+				// Raw string
+				getAllResponseHeaders: function() {
+					return state === 2 ? responseHeadersString : null;
+				},
+
+				// Caches the header
+				setRequestHeader: function( name, value ) {
+					var lname = name.toLowerCase();
+					if ( !state ) {
+						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+						requestHeaders[ name ] = value;
+					}
+					return this;
+				},
+
+				// Overrides response content-type header
+				overrideMimeType: function( type ) {
+					if ( !state ) {
+						s.mimeType = type;
+					}
+					return this;
+				},
+
+				// Status-dependent callbacks
+				statusCode: function( map ) {
+					var code;
+					if ( map ) {
+						if ( state < 2 ) {
+							for ( code in map ) {
+								// Lazy-add the new callback in a way that preserves old ones
+								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+							}
+						} else {
+							// Execute the appropriate callbacks
+							jqXHR.always( map[ jqXHR.status ] );
+						}
+					}
+					return this;
+				},
+
+				// Cancel the request
+				abort: function( statusText ) {
+					var finalText = statusText || strAbort;
+					if ( transport ) {
+						transport.abort( finalText );
+					}
+					done( 0, finalText );
+					return this;
+				}
+			};
+
+		// Attach deferreds
+		deferred.promise( jqXHR ).complete = completeDeferred.add;
+		jqXHR.success = jqXHR.done;
+		jqXHR.error = jqXHR.fail;
+
+		// Remove hash character (#7531: and string promotion)
+		// Add protocol if not provided (prefilters might expect it)
+		// Handle falsy url in the settings object (#10093: consistency with old signature)
+		// We also use the url parameter if available
+		s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
+			.replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+		// Alias method option to type as per ticket #12004
+		s.type = options.method || options.type || s.method || s.type;
+
+		// Extract dataTypes list
+		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
+
+		// A cross-domain request is in order when we have a protocol:host:port mismatch
+		if ( s.crossDomain == null ) {
+			parts = rurl.exec( s.url.toLowerCase() );
+			s.crossDomain = !!( parts &&
+				( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
+					( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
+						( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
+			);
+		}
+
+		// Convert data if not already a string
+		if ( s.data && s.processData && typeof s.data !== "string" ) {
+			s.data = jQuery.param( s.data, s.traditional );
+		}
+
+		// Apply prefilters
+		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+		// If request was aborted inside a prefilter, stop there
+		if ( state === 2 ) {
+			return jqXHR;
+		}
+
+		// We can fire global events as of now if asked to
+		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+		fireGlobals = jQuery.event && s.global;
+
+		// Watch for a new set of requests
+		if ( fireGlobals && jQuery.active++ === 0 ) {
+			jQuery.event.trigger("ajaxStart");
+		}
+
+		// Uppercase the type
+		s.type = s.type.toUpperCase();
+
+		// Determine if request has content
+		s.hasContent = !rnoContent.test( s.type );
+
+		// Save the URL in case we're toying with the If-Modified-Since
+		// and/or If-None-Match header later on
+		cacheURL = s.url;
+
+		// More options handling for requests with no content
+		if ( !s.hasContent ) {
+
+			// If data is available, append data to url
+			if ( s.data ) {
+				cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
+				// #9682: remove data so that it's not used in an eventual retry
+				delete s.data;
+			}
+
+			// Add anti-cache in url if needed
+			if ( s.cache === false ) {
+				s.url = rts.test( cacheURL ) ?
+
+					// If there is already a '_' parameter, set its value
+					cacheURL.replace( rts, "$1_=" + nonce++ ) :
+
+					// Otherwise add one to the end
+					cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
+			}
+		}
+
+		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+		if ( s.ifModified ) {
+			if ( jQuery.lastModified[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+			}
+			if ( jQuery.etag[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+			}
+		}
+
+		// Set the correct header, if data is being sent
+		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+			jqXHR.setRequestHeader( "Content-Type", s.contentType );
+		}
+
+		// Set the Accepts header for the server, depending on the dataType
+		jqXHR.setRequestHeader(
+			"Accept",
+			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+				s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+				s.accepts[ "*" ]
+		);
+
+		// Check for headers option
+		for ( i in s.headers ) {
+			jqXHR.setRequestHeader( i, s.headers[ i ] );
+		}
+
+		// Allow custom headers/mimetypes and early abort
+		if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+			// Abort if not done already and return
+			return jqXHR.abort();
+		}
+
+		// Aborting is no longer a cancellation
+		strAbort = "abort";
+
+		// Install callbacks on deferreds
+		for ( i in { success: 1, error: 1, complete: 1 } ) {
+			jqXHR[ i ]( s[ i ] );
+		}
+
+		// Get transport
+		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+		// If no transport, we auto-abort
+		if ( !transport ) {
+			done( -1, "No Transport" );
+		} else {
+			jqXHR.readyState = 1;
+
+			// Send global event
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+			}
+			// Timeout
+			if ( s.async && s.timeout > 0 ) {
+				timeoutTimer = setTimeout(function() {
+					jqXHR.abort("timeout");
+				}, s.timeout );
+			}
+
+			try {
+				state = 1;
+				transport.send( requestHeaders, done );
+			} catch ( e ) {
+				// Propagate exception as error if not done
+				if ( state < 2 ) {
+					done( -1, e );
+				// Simply rethrow otherwise
+				} else {
+					throw e;
+				}
+			}
+		}
+
+		// Callback for when everything is done
+		function done( status, nativeStatusText, responses, headers ) {
+			var isSuccess, success, error, response, modified,
+				statusText = nativeStatusText;
+
+			// Called once
+			if ( state === 2 ) {
+				return;
+			}
+
+			// State is "done" now
+			state = 2;
+
+			// Clear timeout if it exists
+			if ( timeoutTimer ) {
+				clearTimeout( timeoutTimer );
+			}
+
+			// Dereference transport for early garbage collection
+			// (no matter how long the jqXHR object will be used)
+			transport = undefined;
+
+			// Cache response headers
+			responseHeadersString = headers || "";
+
+			// Set readyState
+			jqXHR.readyState = status > 0 ? 4 : 0;
+
+			// Determine if successful
+			isSuccess = status >= 200 && status < 300 || status === 304;
+
+			// Get response data
+			if ( responses ) {
+				response = ajaxHandleResponses( s, jqXHR, responses );
+			}
+
+			// Convert no matter what (that way responseXXX fields are always set)
+			response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+			// If successful, handle type chaining
+			if ( isSuccess ) {
+
+				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+				if ( s.ifModified ) {
+					modified = jqXHR.getResponseHeader("Last-Modified");
+					if ( modified ) {
+						jQuery.lastModified[ cacheURL ] = modified;
+					}
+					modified = jqXHR.getResponseHeader("etag");
+					if ( modified ) {
+						jQuery.etag[ cacheURL ] = modified;
+					}
+				}
+
+				// if no content
+				if ( status === 204 || s.type === "HEAD" ) {
+					statusText = "nocontent";
+
+				// if not modified
+				} else if ( status === 304 ) {
+					statusText = "notmodified";
+
+				// If we have data, let's convert it
+				} else {
+					statusText = response.state;
+					success = response.data;
+					error = response.error;
+					isSuccess = !error;
+				}
+			} else {
+				// Extract error from statusText and normalize for non-aborts
+				error = statusText;
+				if ( status || !statusText ) {
+					statusText = "error";
+					if ( status < 0 ) {
+						status = 0;
+					}
+				}
+			}
+
+			// Set data for the fake xhr object
+			jqXHR.status = status;
+			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+			// Success/Error
+			if ( isSuccess ) {
+				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+			} else {
+				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+			}
+
+			// Status-dependent callbacks
+			jqXHR.statusCode( statusCode );
+			statusCode = undefined;
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+					[ jqXHR, s, isSuccess ? success : error ] );
+			}
+
+			// Complete
+			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+				// Handle the global AJAX counter
+				if ( !( --jQuery.active ) ) {
+					jQuery.event.trigger("ajaxStop");
+				}
+			}
+		}
+
+		return jqXHR;
+	},
+
+	getJSON: function( url, data, callback ) {
+		return jQuery.get( url, data, callback, "json" );
+	},
+
+	getScript: function( url, callback ) {
+		return jQuery.get( url, undefined, callback, "script" );
+	}
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+	jQuery[ method ] = function( url, data, callback, type ) {
+		// Shift arguments if data argument was omitted
+		if ( jQuery.isFunction( data ) ) {
+			type = type || callback;
+			callback = data;
+			data = undefined;
+		}
+
+		return jQuery.ajax({
+			url: url,
+			type: method,
+			dataType: type,
+			data: data,
+			success: callback
+		});
+	};
+});
+
+
+jQuery._evalUrl = function( url ) {
+	return jQuery.ajax({
+		url: url,
+		type: "GET",
+		dataType: "script",
+		async: false,
+		global: false,
+		"throws": true
+	});
+};
+
+
+jQuery.fn.extend({
+	wrapAll: function( html ) {
+		var wrap;
+
+		if ( jQuery.isFunction( html ) ) {
+			return this.each(function( i ) {
+				jQuery( this ).wrapAll( html.call(this, i) );
+			});
+		}
+
+		if ( this[ 0 ] ) {
+
+			// The elements to wrap the target around
+			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+			if ( this[ 0 ].parentNode ) {
+				wrap.insertBefore( this[ 0 ] );
+			}
+
+			wrap.map(function() {
+				var elem = this;
+
+				while ( elem.firstElementChild ) {
+					elem = elem.firstElementChild;
+				}
+
+				return elem;
+			}).append( this );
+		}
+
+		return this;
+	},
+
+	wrapInner: function( html ) {
+		if ( jQuery.isFunction( html ) ) {
+			return this.each(function( i ) {
+				jQuery( this ).wrapInner( html.call(this, i) );
+			});
+		}
+
+		return this.each(function() {
+			var self = jQuery( this ),
+				contents = self.contents();
+
+			if ( contents.length ) {
+				contents.wrapAll( html );
+
+			} else {
+				self.append( html );
+			}
+		});
+	},
+
+	wrap: function( html ) {
+		var isFunction = jQuery.isFunction( html );
+
+		return this.each(function( i ) {
+			jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+		});
+	},
+
+	unwrap: function() {
+		return this.parent().each(function() {
+			if ( !jQuery.nodeName( this, "body" ) ) {
+				jQuery( this ).replaceWith( this.childNodes );
+			}
+		}).end();
+	}
+});
+
+
+jQuery.expr.filters.hidden = function( elem ) {
+	// Support: Opera <= 12.12
+	// Opera reports offsetWidths and offsetHeights less than zero on some elements
+	return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
+};
+jQuery.expr.filters.visible = function( elem ) {
+	return !jQuery.expr.filters.hidden( elem );
+};
+
+
+
+
+var r20 = /%20/g,
+	rbracket = /\[\]$/,
+	rCRLF = /\r?\n/g,
+	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+	rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+	var name;
+
+	if ( jQuery.isArray( obj ) ) {
+		// Serialize array item.
+		jQuery.each( obj, function( i, v ) {
+			if ( traditional || rbracket.test( prefix ) ) {
+				// Treat each array item as a scalar.
+				add( prefix, v );
+
+			} else {
+				// Item is non-scalar (array or object), encode its numeric index.
+				buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
+			}
+		});
+
+	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
+		// Serialize object item.
+		for ( name in obj ) {
+			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+		}
+
+	} else {
+		// Serialize scalar item.
+		add( prefix, obj );
+	}
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+	var prefix,
+		s = [],
+		add = function( key, value ) {
+			// If value is a function, invoke it and return its value
+			value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
+			s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+		};
+
+	// Set traditional to true for jQuery <= 1.3.2 behavior.
+	if ( traditional === undefined ) {
+		traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
+	}
+
+	// If an array was passed in, assume that it is an array of form elements.
+	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+		// Serialize the form elements
+		jQuery.each( a, function() {
+			add( this.name, this.value );
+		});
+
+	} else {
+		// If traditional, encode the "old" way (the way 1.3.2 or older
+		// did it), otherwise encode params recursively.
+		for ( prefix in a ) {
+			buildParams( prefix, a[ prefix ], traditional, add );
+		}
+	}
+
+	// Return the resulting serialization
+	return s.join( "&" ).replace( r20, "+" );
+};
+
+jQuery.fn.extend({
+	serialize: function() {
+		return jQuery.param( this.serializeArray() );
+	},
+	serializeArray: function() {
+		return this.map(function() {
+			// Can add propHook for "elements" to filter or add form elements
+			var elements = jQuery.prop( this, "elements" );
+			return elements ? jQuery.makeArray( elements ) : this;
+		})
+		.filter(function() {
+			var type = this.type;
+
+			// Use .is( ":disabled" ) so that fieldset[disabled] works
+			return this.name && !jQuery( this ).is( ":disabled" ) &&
+				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+				( this.checked || !rcheckableType.test( type ) );
+		})
+		.map(function( i, elem ) {
+			var val = jQuery( this ).val();
+
+			return val == null ?
+				null :
+				jQuery.isArray( val ) ?
+					jQuery.map( val, function( val ) {
+						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+					}) :
+					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+		}).get();
+	}
+});
+
+
+jQuery.ajaxSettings.xhr = function() {
+	try {
+		return new XMLHttpRequest();
+	} catch( e ) {}
+};
+
+var xhrId = 0,
+	xhrCallbacks = {},
+	xhrSuccessStatus = {
+		// file protocol always yields status code 0, assume 200
+		0: 200,
+		// Support: IE9
+		// #1450: sometimes IE returns 1223 when it should be 204
+		1223: 204
+	},
+	xhrSupported = jQuery.ajaxSettings.xhr();
+
+// Support: IE9
+// Open requests must be manually aborted on unload (#5280)
+// See https://support.microsoft.com/kb/2856746 for more info
+if ( window.attachEvent ) {
+	window.attachEvent( "onunload", function() {
+		for ( var key in xhrCallbacks ) {
+			xhrCallbacks[ key ]();
+		}
+	});
+}
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport(function( options ) {
+	var callback;
+
+	// Cross domain only allowed if supported through XMLHttpRequest
+	if ( support.cors || xhrSupported && !options.crossDomain ) {
+		return {
+			send: function( headers, complete ) {
+				var i,
+					xhr = options.xhr(),
+					id = ++xhrId;
+
+				xhr.open( options.type, options.url, options.async, options.username, options.password );
+
+				// Apply custom fields if provided
+				if ( options.xhrFields ) {
+					for ( i in options.xhrFields ) {
+						xhr[ i ] = options.xhrFields[ i ];
+					}
+				}
+
+				// Override mime type if needed
+				if ( options.mimeType && xhr.overrideMimeType ) {
+					xhr.overrideMimeType( options.mimeType );
+				}
+
+				// X-Requested-With header
+				// For cross-domain requests, seeing as conditions for a preflight are
+				// akin to a jigsaw puzzle, we simply never set it to be sure.
+				// (it can always be set on a per-request basis or even using ajaxSetup)
+				// For same-domain requests, won't change header if already provided.
+				if ( !options.crossDomain && !headers["X-Requested-With"] ) {
+					headers["X-Requested-With"] = "XMLHttpRequest";
+				}
+
+				// Set headers
+				for ( i in headers ) {
+					xhr.setRequestHeader( i, headers[ i ] );
+				}
+
+				// Callback
+				callback = function( type ) {
+					return function() {
+						if ( callback ) {
+							delete xhrCallbacks[ id ];
+							callback = xhr.onload = xhr.onerror = null;
+
+							if ( type === "abort" ) {
+								xhr.abort();
+							} else if ( type === "error" ) {
+								complete(
+									// file: protocol always yields status 0; see #8605, #14207
+									xhr.status,
+									xhr.statusText
+								);
+							} else {
+								complete(
+									xhrSuccessStatus[ xhr.status ] || xhr.status,
+									xhr.statusText,
+									// Support: IE9
+									// Accessing binary-data responseText throws an exception
+									// (#11426)
+									typeof xhr.responseText === "string" ? {
+										text: xhr.responseText
+									} : undefined,
+									xhr.getAllResponseHeaders()
+								);
+							}
+						}
+					};
+				};
+
+				// Listen to events
+				xhr.onload = callback();
+				xhr.onerror = callback("error");
+
+				// Create the abort callback
+				callback = xhrCallbacks[ id ] = callback("abort");
+
+				try {
+					// Do send the request (this may raise an exception)
+					xhr.send( options.hasContent && options.data || null );
+				} catch ( e ) {
+					// #14683: Only rethrow if this hasn't been notified as an error yet
+					if ( callback ) {
+						throw e;
+					}
+				}
+			},
+
+			abort: function() {
+				if ( callback ) {
+					callback();
+				}
+			}
+		};
+	}
+});
+
+
+
+
+// Install script dataType
+jQuery.ajaxSetup({
+	accepts: {
+		script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+	},
+	contents: {
+		script: /(?:java|ecma)script/
+	},
+	converters: {
+		"text script": function( text ) {
+			jQuery.globalEval( text );
+			return text;
+		}
+	}
+});
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+	if ( s.cache === undefined ) {
+		s.cache = false;
+	}
+	if ( s.crossDomain ) {
+		s.type = "GET";
+	}
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+	// This transport only deals with cross domain requests
+	if ( s.crossDomain ) {
+		var script, callback;
+		return {
+			send: function( _, complete ) {
+				script = jQuery("<script>").prop({
+					async: true,
+					charset: s.scriptCharset,
+					src: s.url
+				}).on(
+					"load error",
+					callback = function( evt ) {
+						script.remove();
+						callback = null;
+						if ( evt ) {
+							complete( evt.type === "error" ? 404 : 200, evt.type );
+						}
+					}
+				);
+				document.head.appendChild( script[ 0 ] );
+			},
+			abort: function() {
+				if ( callback ) {
+					callback();
+				}
+			}
+		};
+	}
+});
+
+
+
+
+var oldCallbacks = [],
+	rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+	jsonp: "callback",
+	jsonpCallback: function() {
+		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+		this[ callback ] = true;
+		return callback;
+	}
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+	var callbackName, overwritten, responseContainer,
+		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+			"url" :
+			typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
+		);
+
+	// Handle iff the expected data type is "jsonp" or we have a parameter to set
+	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+		// Get callback name, remembering preexisting value associated with it
+		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+			s.jsonpCallback() :
+			s.jsonpCallback;
+
+		// Insert callback into url or form data
+		if ( jsonProp ) {
+			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+		} else if ( s.jsonp !== false ) {
+			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+		}
+
+		// Use data converter to retrieve json after script execution
+		s.converters["script json"] = function() {
+			if ( !responseContainer ) {
+				jQuery.error( callbackName + " was not called" );
+			}
+			return responseContainer[ 0 ];
+		};
+
+		// force json dataType
+		s.dataTypes[ 0 ] = "json";
+
+		// Install callback
+		overwritten = window[ callbackName ];
+		window[ callbackName ] = function() {
+			responseContainer = arguments;
+		};
+
+		// Clean-up function (fires after converters)
+		jqXHR.always(function() {
+			// Restore preexisting value
+			window[ callbackName ] = overwritten;
+
+			// Save back as free
+			if ( s[ callbackName ] ) {
+				// make sure that re-using the options doesn't screw things around
+				s.jsonpCallback = originalSettings.jsonpCallback;
+
+				// save the callback name for future use
+				oldCallbacks.push( callbackName );
+			}
+
+			// Call if it was a function and we have a response
+			if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+				overwritten( responseContainer[ 0 ] );
+			}
+
+			responseContainer = overwritten = undefined;
+		});
+
+		// Delegate to script
+		return "script";
+	}
+});
+
+
+
+
+// data: string of html
+// context (optional): If specified, the fragment will be created in this context, defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+	if ( !data || typeof data !== "string" ) {
+		return null;
+	}
+	if ( typeof context === "boolean" ) {
+		keepScripts = context;
+		context = false;
+	}
+	context = context || document;
+
+	var parsed = rsingleTag.exec( data ),
+		scripts = !keepScripts && [];
+
+	// Single tag
+	if ( parsed ) {
+		return [ context.createElement( parsed[1] ) ];
+	}
+
+	parsed = jQuery.buildFragment( [ data ], context, scripts );
+
+	if ( scripts && scripts.length ) {
+		jQuery( scripts ).remove();
+	}
+
+	return jQuery.merge( [], parsed.childNodes );
+};
+
+
+// Keep a copy of the old load method
+var _load = jQuery.fn.load;
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+	if ( typeof url !== "string" && _load ) {
+		return _load.apply( this, arguments );
+	}
+
+	var selector, type, response,
+		self = this,
+		off = url.indexOf(" ");
+
+	if ( off >= 0 ) {
+		selector = jQuery.trim( url.slice( off ) );
+		url = url.slice( 0, off );
+	}
+
+	// If it's a function
+	if ( jQuery.isFunction( params ) ) {
+
+		// We assume that it's the callback
+		callback = params;
+		params = undefined;
+
+	// Otherwise, build a param string
+	} else if ( params && typeof params === "object" ) {
+		type = "POST";
+	}
+
+	// If we have elements to modify, make the request
+	if ( self.length > 0 ) {
+		jQuery.ajax({
+			url: url,
+
+			// if "type" variable is undefined, then "GET" method will be used
+			type: type,
+			dataType: "html",
+			data: params
+		}).done(function( responseText ) {
+
+			// Save response for use in complete callback
+			response = arguments;
+
+			self.html( selector ?
+
+				// If a selector was specified, locate the right elements in a dummy div
+				// Exclude scripts to avoid IE 'Permission Denied' errors
+				jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+				// Otherwise use the full result
+				responseText );
+
+		}).complete( callback && function( jqXHR, status ) {
+			self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
+		});
+	}
+
+	return this;
+};
+
+
+
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
+	jQuery.fn[ type ] = function( fn ) {
+		return this.on( type, fn );
+	};
+});
+
+
+
+
+jQuery.expr.filters.animated = function( elem ) {
+	return jQuery.grep(jQuery.timers, function( fn ) {
+		return elem === fn.elem;
+	}).length;
+};
+
+
+
+
+var docElem = window.document.documentElement;
+
+/**
+ * Gets a window from an element
+ */
+function getWindow( elem ) {
+	return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
+}
+
+jQuery.offset = {
+	setOffset: function( elem, options, i ) {
+		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+			position = jQuery.css( elem, "position" ),
+			curElem = jQuery( elem ),
+			props = {};
+
+		// Set position first, in-case top/left are set even on static elem
+		if ( position === "static" ) {
+			elem.style.position = "relative";
+		}
+
+		curOffset = curElem.offset();
+		curCSSTop = jQuery.css( elem, "top" );
+		curCSSLeft = jQuery.css( elem, "left" );
+		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+			( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
+
+		// Need to be able to calculate position if either
+		// top or left is auto and position is either absolute or fixed
+		if ( calculatePosition ) {
+			curPosition = curElem.position();
+			curTop = curPosition.top;
+			curLeft = curPosition.left;
+
+		} else {
+			curTop = parseFloat( curCSSTop ) || 0;
+			curLeft = parseFloat( curCSSLeft ) || 0;
+		}
+
+		if ( jQuery.isFunction( options ) ) {
+			options = options.call( elem, i, curOffset );
+		}
+
+		if ( options.top != null ) {
+			props.top = ( options.top - curOffset.top ) + curTop;
+		}
+		if ( options.left != null ) {
+			props.left = ( options.left - curOffset.left ) + curLeft;
+		}
+
+		if ( "using" in options ) {
+			options.using.call( elem, props );
+
+		} else {
+			curElem.css( props );
+		}
+	}
+};
+
+jQuery.fn.extend({
+	offset: function( options ) {
+		if ( arguments.length ) {
+			return options === undefined ?
+				this :
+				this.each(function( i ) {
+					jQuery.offset.setOffset( this, options, i );
+				});
+		}
+
+		var docElem, win,
+			elem = this[ 0 ],
+			box = { top: 0, left: 0 },
+			doc = elem && elem.ownerDocument;
+
+		if ( !doc ) {
+			return;
+		}
+
+		docElem = doc.documentElement;
+
+		// Make sure it's not a disconnected DOM node
+		if ( !jQuery.contains( docElem, elem ) ) {
+			return box;
+		}
+
+		// Support: BlackBerry 5, iOS 3 (original iPhone)
+		// If we don't have gBCR, just use 0,0 rather than error
+		if ( typeof elem.getBoundingClientRect !== strundefined ) {
+			box = elem.getBoundingClientRect();
+		}
+		win = getWindow( doc );
+		return {
+			top: box.top + win.pageYOffset - docElem.clientTop,
+			left: box.left + win.pageXOffset - docElem.clientLeft
+		};
+	},
+
+	position: function() {
+		if ( !this[ 0 ] ) {
+			return;
+		}
+
+		var offsetParent, offset,
+			elem = this[ 0 ],
+			parentOffset = { top: 0, left: 0 };
+
+		// Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
+		if ( jQuery.css( elem, "position" ) === "fixed" ) {
+			// Assume getBoundingClientRect is there when computed position is fixed
+			offset = elem.getBoundingClientRect();
+
+		} else {
+			// Get *real* offsetParent
+			offsetParent = this.offsetParent();
+
+			// Get correct offsets
+			offset = this.offset();
+			if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+				parentOffset = offsetParent.offset();
+			}
+
+			// Add offsetParent borders
+			parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
+			parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
+		}
+
+		// Subtract parent offsets and element margins
+		return {
+			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+		};
+	},
+
+	offsetParent: function() {
+		return this.map(function() {
+			var offsetParent = this.offsetParent || docElem;
+
+			while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
+				offsetParent = offsetParent.offsetParent;
+			}
+
+			return offsetParent || docElem;
+		});
+	}
+});
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+	var top = "pageYOffset" === prop;
+
+	jQuery.fn[ method ] = function( val ) {
+		return access( this, function( elem, method, val ) {
+			var win = getWindow( elem );
+
+			if ( val === undefined ) {
+				return win ? win[ prop ] : elem[ method ];
+			}
+
+			if ( win ) {
+				win.scrollTo(
+					!top ? val : window.pageXOffset,
+					top ? val : window.pageYOffset
+				);
+
+			} else {
+				elem[ method ] = val;
+			}
+		}, method, val, arguments.length, null );
+	};
+});
+
+// Support: Safari<7+, Chrome<37+
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+		function( elem, computed ) {
+			if ( computed ) {
+				computed = curCSS( elem, prop );
+				// If curCSS returns percentage, fallback to offset
+				return rnumnonpx.test( computed ) ?
+					jQuery( elem ).position()[ prop ] + "px" :
+					computed;
+			}
+		}
+	);
+});
+
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
+		// Margin is only for outerHeight, outerWidth
+		jQuery.fn[ funcName ] = function( margin, value ) {
+			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+			return access( this, function( elem, type, value ) {
+				var doc;
+
+				if ( jQuery.isWindow( elem ) ) {
+					// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+					// isn't a whole lot we can do. See pull request at this URL for discussion:
+					// https://github.com/jquery/jquery/pull/764
+					return elem.document.documentElement[ "client" + name ];
+				}
+
+				// Get document width or height
+				if ( elem.nodeType === 9 ) {
+					doc = elem.documentElement;
+
+					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+					// whichever is greatest
+					return Math.max(
+						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+						elem.body[ "offset" + name ], doc[ "offset" + name ],
+						doc[ "client" + name ]
+					);
+				}
+
+				return value === undefined ?
+					// Get width or height on the element, requesting but not forcing parseFloat
+					jQuery.css( elem, type, extra ) :
+
+					// Set width or height on the element
+					jQuery.style( elem, type, value, extra );
+			}, type, chainable ? margin : undefined, chainable, null );
+		};
+	});
+});
+
+
+// The number of elements contained in the matched element set
+jQuery.fn.size = function() {
+	return this.length;
+};
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+
+
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+	define( "jquery", [], function() {
+		return jQuery;
+	});
+}
+
+
+
+
+var
+	// Map over jQuery in case of overwrite
+	_jQuery = window.jQuery,
+
+	// Map over the $ in case of overwrite
+	_$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+	if ( window.$ === jQuery ) {
+		window.$ = _$;
+	}
+
+	if ( deep && window.jQuery === jQuery ) {
+		window.jQuery = _jQuery;
+	}
+
+	return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( typeof noGlobal === strundefined ) {
+	window.jQuery = window.$ = jQuery;
+}
+
+
+
+
+return jQuery;
+
+}));
diff --git a/web/templates/media/js/jquery.js b/www/web/static/admin/js/vendor/jquery/jquery.min.js
similarity index 100%
rename from web/templates/media/js/jquery.js
rename to www/web/static/admin/js/vendor/jquery/jquery.min.js
diff --git a/www/web/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt b/www/web/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt
new file mode 100644
index 0000000..341652a
--- /dev/null
+++ b/www/web/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2007-2012 Steven Levithan <http://xregexp.com/>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/www/web/static/admin/js/vendor/xregexp/xregexp.min.js b/www/web/static/admin/js/vendor/xregexp/xregexp.min.js
new file mode 100644
index 0000000..a190558
--- /dev/null
+++ b/www/web/static/admin/js/vendor/xregexp/xregexp.min.js
@@ -0,0 +1,18 @@
+//XRegExp 2.0.0 <xregexp.com> MIT License
+var XRegExp;XRegExp=XRegExp||function(n){"use strict";function v(n,i,r){var u;for(u in t.prototype)t.prototype.hasOwnProperty(u)&&(n[u]=t.prototype[u]);return n.xregexp={captureNames:i,isNative:!!r},n}function g(n){return(n.global?"g":"")+(n.ignoreCase?"i":"")+(n.multiline?"m":"")+(n.extended?"x":"")+(n.sticky?"y":"")}function o(n,r,u){if(!t.isRegExp(n))throw new TypeError("type RegExp expected");var f=i.replace.call(g(n)+(r||""),h,"");return u&&(f=i.replace.call(f,new RegExp("["+u+"]+","g"),"")),n=n.xregexp&&!n.xregexp.isNative?v(t(n.source,f),n.xregexp.captureNames?n.xregexp.captureNames.slice(0):null):v(new RegExp(n.source,f),null,!0)}function a(n,t){var i=n.length;if(Array.prototype.lastIndexOf)return n.lastIndexOf(t);while(i--)if(n[i]===t)return i;return-1}function s(n,t){return Object.prototype.toString.call(n).toLowerCase()==="[object "+t+"]"}function d(n){return n=n||{},n==="all"||n.all?n={natives:!0,extensibility:!0}:s(n,"string")&&(n=t.forEach(n,/[^\s,]+/,function(n){this[n]=!0},{})),n}function ut(n,t,i,u){var o=p.length,s=null,e,f;y=!0;try{while(o--)if(f=p[o],(f.scope==="all"||f.scope===i)&&(!f.trigger||f.trigger.call(u))&&(f.pattern.lastIndex=t,e=r.exec.call(f.pattern,n),e&&e.index===t)){s={output:f.handler.call(u,e,i),match:e};break}}catch(h){throw h;}finally{y=!1}return s}function b(n){t.addToken=c[n?"on":"off"],f.extensibility=n}function tt(n){RegExp.prototype.exec=(n?r:i).exec,RegExp.prototype.test=(n?r:i).test,String.prototype.match=(n?r:i).match,String.prototype.replace=(n?r:i).replace,String.prototype.split=(n?r:i).split,f.natives=n}var t,c,u,f={natives:!1,extensibility:!1},i={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},r={},k={},p=[],e="default",rt="class",it={"default":/^(?:\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S])|\(\?[:=!]|[?*+]\?|{\d+(?:,\d*)?}\??)/,"class":/^(?:\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S]))/},et=/\$(?:{([\w$]+)}|(\d\d?|[\s\S]))/g,h=/([\s\S])(?=[\s\S]*\1)/g,nt=/^(?:[?*+]|{\d+(?:,\d*)?})\??/,ft=i.exec.call(/()??/,"")[1]===n,l=RegExp.prototype.sticky!==n,y=!1,w="gim"+(l?"y":"");return t=function(r,u){if(t.isRegExp(r)){if(u!==n)throw new TypeError("can't supply flags when constructing one RegExp from another");return o(r)}if(y)throw new Error("can't call the XRegExp constructor within token definition functions");var l=[],a=e,b={hasNamedCapture:!1,captureNames:[],hasFlag:function(n){return u.indexOf(n)>-1}},f=0,c,s,p;if(r=r===n?"":String(r),u=u===n?"":String(u),i.match.call(u,h))throw new SyntaxError("invalid duplicate regular expression flag");for(r=i.replace.call(r,/^\(\?([\w$]+)\)/,function(n,t){if(i.test.call(/[gy]/,t))throw new SyntaxError("can't use flag g or y in mode modifier");return u=i.replace.call(u+t,h,""),""}),t.forEach(u,/[\s\S]/,function(n){if(w.indexOf(n[0])<0)throw new SyntaxError("invalid regular expression flag "+n[0]);});f<r.length;)c=ut(r,f,a,b),c?(l.push(c.output),f+=c.match[0].length||1):(s=i.exec.call(it[a],r.slice(f)),s?(l.push(s[0]),f+=s[0].length):(p=r.charAt(f),p==="["?a=rt:p==="]"&&(a=e),l.push(p),++f));return v(new RegExp(l.join(""),i.replace.call(u,/[^gimy]+/g,"")),b.hasNamedCapture?b.captureNames:null)},c={on:function(n,t,r){r=r||{},n&&p.push({pattern:o(n,"g"+(l?"y":"")),handler:t,scope:r.scope||e,trigger:r.trigger||null}),r.customFlags&&(w=i.replace.call(w+r.customFlags,h,""))},off:function(){throw new Error("extensibility must be installed before using addToken");}},t.addToken=c.off,t.cache=function(n,i){var r=n+"/"+(i||"");return k[r]||(k[r]=t(n,i))},t.escape=function(n){return i.replace.call(n,/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},t.exec=function(n,t,i,u){var e=o(t,"g"+(u&&l?"y":""),u===!1?"y":""),f;return e.lastIndex=i=i||0,f=r.exec.call(e,n),u&&f&&f.index!==i&&(f=null),t.global&&(t.lastIndex=f?e.lastIndex:0),f},t.forEach=function(n,i,r,u){for(var e=0,o=-1,f;f=t.exec(n,i,e);)r.call(u,f,++o,n,i),e=f.index+(f[0].length||1);return u},t.globalize=function(n){return o(n,"g")},t.install=function(n){n=d(n),!f.natives&&n.natives&&tt(!0),!f.extensibility&&n.extensibility&&b(!0)},t.isInstalled=function(n){return!!f[n]},t.isRegExp=function(n){return s(n,"regexp")},t.matchChain=function(n,i){return function r(n,u){for(var o=i[u].regex?i[u]:{regex:i[u]},f=[],s=function(n){f.push(o.backref?n[o.backref]||"":n[0])},e=0;e<n.length;++e)t.forEach(n[e],o.regex,s);return u===i.length-1||!f.length?f:r(f,u+1)}([n],0)},t.replace=function(i,u,f,e){var c=t.isRegExp(u),s=u,h;return c?(e===n&&u.global&&(e="all"),s=o(u,e==="all"?"g":"",e==="all"?"":"g")):e==="all"&&(s=new RegExp(t.escape(String(u)),"g")),h=r.replace.call(String(i),s,f),c&&u.global&&(u.lastIndex=0),h},t.split=function(n,t,i){return r.split.call(n,t,i)},t.test=function(n,i,r,u){return!!t.exec(n,i,r,u)},t.uninstall=function(n){n=d(n),f.natives&&n.natives&&tt(!1),f.extensibility&&n.extensibility&&b(!1)},t.union=function(n,i){var l=/(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*]/g,o=0,f,h,c=function(n,t,i){var r=h[o-f];if(t){if(++o,r)return"(?<"+r+">"}else if(i)return"\\"+(+i+f);return n},e=[],r,u;if(!(s(n,"array")&&n.length))throw new TypeError("patterns must be a nonempty array");for(u=0;u<n.length;++u)r=n[u],t.isRegExp(r)?(f=o,h=r.xregexp&&r.xregexp.captureNames||[],e.push(t(r.source).source.replace(l,c))):e.push(t.escape(r));return t(e.join("|"),i)},t.version="2.0.0",r.exec=function(t){var r,f,e,o,u;if(this.global||(o=this.lastIndex),r=i.exec.apply(this,arguments),r){if(!ft&&r.length>1&&a(r,"")>-1&&(e=new RegExp(this.source,i.replace.call(g(this),"g","")),i.replace.call(String(t).slice(r.index),e,function(){for(var t=1;t<arguments.length-2;++t)arguments[t]===n&&(r[t]=n)})),this.xregexp&&this.xregexp.captureNames)for(u=1;u<r.length;++u)f=this.xregexp.captureNames[u-1],f&&(r[f]=r[u]);this.global&&!r[0].length&&this.lastIndex>r.index&&(this.lastIndex=r.index)}return this.global||(this.lastIndex=o),r},r.test=function(n){return!!r.exec.call(this,n)},r.match=function(n){if(t.isRegExp(n)){if(n.global){var u=i.match.apply(this,arguments);return n.lastIndex=0,u}}else n=new RegExp(n);return r.exec.call(n,this)},r.replace=function(n,r){var e=t.isRegExp(n),u,f,h,o;return e?(n.xregexp&&(u=n.xregexp.captureNames),n.global||(o=n.lastIndex)):n+="",s(r,"function")?f=i.replace.call(String(this),n,function(){var t=arguments,i;if(u)for(t[0]=new String(t[0]),i=0;i<u.length;++i)u[i]&&(t[0][u[i]]=t[i+1]);return e&&n.global&&(n.lastIndex=t[t.length-2]+t[0].length),r.apply(null,t)}):(h=String(this),f=i.replace.call(h,n,function(){var n=arguments;return i.replace.call(String(r),et,function(t,i,r){var f;if(i){if(f=+i,f<=n.length-3)return n[f]||"";if(f=u?a(u,i):-1,f<0)throw new SyntaxError("backreference to undefined group "+t);return n[f+1]||""}if(r==="$")return"$";if(r==="&"||+r==0)return n[0];if(r==="`")return n[n.length-1].slice(0,n[n.length-2]);if(r==="'")return n[n.length-1].slice(n[n.length-2]+n[0].length);if(r=+r,!isNaN(r)){if(r>n.length-3)throw new SyntaxError("backreference to undefined group "+t);return n[r]||""}throw new SyntaxError("invalid token "+t);})})),e&&(n.lastIndex=n.global?0:o),f},r.split=function(r,u){if(!t.isRegExp(r))return i.split.apply(this,arguments);var e=String(this),h=r.lastIndex,f=[],o=0,s;return u=(u===n?-1:u)>>>0,t.forEach(e,r,function(n){n.index+n[0].length>o&&(f.push(e.slice(o,n.index)),n.length>1&&n.index<e.length&&Array.prototype.push.apply(f,n.slice(1)),s=n[0].length,o=n.index+s)}),o===e.length?(!i.test.call(r,"")||s)&&f.push(""):f.push(e.slice(o)),r.lastIndex=h,f.length>u?f.slice(0,u):f},u=c.on,u(/\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\dA-Fa-f]{4})|x(?![\dA-Fa-f]{2}))/,function(n,t){if(n[1]==="B"&&t===e)return n[0];throw new SyntaxError("invalid escape "+n[0]);},{scope:"all"}),u(/\[(\^?)]/,function(n){return n[1]?"[\\s\\S]":"\\b\\B"}),u(/(?:\(\?#[^)]*\))+/,function(n){return i.test.call(nt,n.input.slice(n.index+n[0].length))?"":"(?:)"}),u(/\\k<([\w$]+)>/,function(n){var t=isNaN(n[1])?a(this.captureNames,n[1])+1:+n[1],i=n.index+n[0].length;if(!t||t>this.captureNames.length)throw new SyntaxError("backreference to undefined group "+n[0]);return"\\"+t+(i===n.input.length||isNaN(n.input.charAt(i))?"":"(?:)")}),u(/(?:\s+|#.*)+/,function(n){return i.test.call(nt,n.input.slice(n.index+n[0].length))?"":"(?:)"},{trigger:function(){return this.hasFlag("x")},customFlags:"x"}),u(/\./,function(){return"[\\s\\S]"},{trigger:function(){return this.hasFlag("s")},customFlags:"s"}),u(/\(\?P?<([\w$]+)>/,function(n){if(!isNaN(n[1]))throw new SyntaxError("can't use integer as capture name "+n[0]);return this.captureNames.push(n[1]),this.hasNamedCapture=!0,"("}),u(/\\(\d+)/,function(n,t){if(!(t===e&&/^[1-9]/.test(n[1])&&+n[1]<=this.captureNames.length)&&n[1]!=="0")throw new SyntaxError("can't use octal escape or backreference to undefined group "+n[0]);return n[0]},{scope:"all"}),u(/\((?!\?)/,function(){return this.hasFlag("n")?"(?:":(this.captureNames.push(null),"(")},{customFlags:"n"}),typeof exports!="undefined"&&(exports.XRegExp=t),t}();
+//XRegExp Unicode Base 1.0.0
+(function(n){"use strict";function i(n){return n.replace(/[- _]+/g,"").toLowerCase()}function s(n){return n.replace(/\w{4}/g,"\\u$&")}function u(n){while(n.length<4)n="0"+n;return n}function f(n){return parseInt(n,16)}function r(n){return parseInt(n,10).toString(16)}function o(t){var e=[],i=-1,o;return n.forEach(t,/\\u(\w{4})(?:-\\u(\w{4}))?/,function(n){o=f(n[1]),o>i+1&&(e.push("\\u"+u(r(i+1))),o>i+2&&e.push("-\\u"+u(r(o-1)))),i=f(n[2]||n[1])}),i<65535&&(e.push("\\u"+u(r(i+1))),i<65534&&e.push("-\\uFFFF")),e.join("")}function e(n){return t["^"+n]||(t["^"+n]=o(t[n]))}var t={};n.install("extensibility"),n.addUnicodePackage=function(r,u){var f;if(!n.isInstalled("extensibility"))throw new Error("extensibility must be installed before adding Unicode packages");if(r)for(f in r)r.hasOwnProperty(f)&&(t[i(f)]=s(r[f]));if(u)for(f in u)u.hasOwnProperty(f)&&(t[i(u[f])]=t[i(f)])},n.addUnicodePackage({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05270531-055605590561-058705D0-05EA05F0-05F20620-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280840-085808A008A2-08AC0904-0939093D09500958-09610971-09770979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10CF10CF20D05-0D0C0D0E-0D100D12-0D3A0D3D0D4E0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC-0EDF0F000F40-0F470F49-0F6C0F88-0F8C1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510C710CD10D0-10FA10FC-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1BBA-1BE51C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11CF51CF61D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209C21022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2CF22CF32D00-2D252D272D2D2D30-2D672D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31BA31F0-31FF3400-4DB54E00-9FCCA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78B-A78EA790-A793A7A0-A7AAA7F8-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDAAE0-AAEAAAF2-AAF4AB01-AB06AB09-AB0EAB11-AB16AB20-AB26AB28-AB2EABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC"},{L:"Letter"}),n.addToken(/\\([pP]){(\^?)([^}]*)}/,function(n,r){var f=n[1]==="P"||n[2]?"^":"",u=i(n[3]);if(n[1]==="P"&&n[2])throw new SyntaxError("invalid double negation \\P{^");if(!t.hasOwnProperty(u))throw new SyntaxError("invalid or unknown Unicode property "+n[0]);return r==="class"?f?e(u):t[u]:"["+f+t[u]+"]"},{scope:"all"})})(XRegExp);
+//XRegExp Unicode Categories 1.2.0
+(function(n){"use strict";if(!n.addUnicodePackage)throw new ReferenceError("Unicode Base must be loaded before Unicode Categories");n.install("extensibility"),n.addUnicodePackage({Ll:"0061-007A00B500DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F05210523052505270561-05871D00-1D2B1D6B-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7B2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2CF32D00-2D252D272D2DA641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA661A663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CA78EA791A793A7A1A7A3A7A5A7A7A7A9A7FAFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E05200522052405260531-055610A0-10C510C710CD1E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CED2CF2A640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA660A662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BA78DA790A792A7A0A7A2A7A4A7A6A7A8A7AAFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D6A1D781D9B-1DBF2071207F2090-209C2C7C2C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A7F8A7F9A9CFAA70AADDAAF3AAF4FF70FF9EFF9F",Lo:"00AA00BA01BB01C0-01C3029405D0-05EA05F0-05F20620-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150840-085808A008A2-08AC0904-0939093D09500958-09610972-09770979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10CF10CF20D05-0D0C0D0E-0D100D12-0D3A0D3D0D4E0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC-0EDF0F000F40-0F470F49-0F6C0F88-0F8C1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA10FD-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1BBA-1BE51C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF11CF51CF62135-21382D30-2D672D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31BA31F0-31FF3400-4DB54E00-9FCCA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCAAE0-AAEAAAF2AB01-AB06AB09-AB0EAB11-AB16AB20-AB26AB28-AB2EABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065F067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0859-085B08E4-08FE0900-0903093A-093C093E-094F0951-0957096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F8D-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135D-135F1712-17141732-1734175217531772177317B4-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAD1BE6-1BF31C24-1C371CD0-1CD21CD4-1CE81CED1CF2-1CF41DC0-1DE61DFC-1DFF20D0-20F02CEF-2CF12D7F2DE0-2DFF302A-302F3099309AA66F-A672A674-A67DA69FA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1AAEB-AAEFAAF5AAF6ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065F067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0859-085B08E4-08FE0900-0902093A093C0941-0948094D0951-095709620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F8D-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135D-135F1712-17141732-1734175217531772177317B417B517B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91BAB1BE61BE81BE91BED1BEF-1BF11C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1CF41DC0-1DE61DFC-1DFF20D0-20DC20E120E5-20F02CEF-2CF12D7F2DE0-2DFF302A-302D3099309AA66FA674-A67DA69FA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1AAECAAEDAAF6ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093B093E-09400949-094C094E094F0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1BAC1BAD1BE71BEA-1BEC1BEE1BF21BF31C24-1C2B1C341C351CE11CF21CF3302E302FA823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BAAEBAAEEAAEFAAF5ABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048920DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0B72-0B770BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293248-324F3251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19D91A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90B72-0B770BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F919DA20702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293248-324F3251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100A700AB00B600B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E085E0964096509700AF00DF40E4F0E5A0E5B0F04-0F120F140F3A-0F3D0F850FD0-0FD40FD90FDA104A-104F10FB1360-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A194419451A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601BFC-1BFF1C3B-1C3F1C7E1C7F1CC0-1CC71CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2D702E00-2E2E2E30-2E3B3001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFAAF0AAF1ABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A2E3A2E3B301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100A700B600B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E085E0964096509700AF00DF40E4F0E5A0E5B0F04-0F120F140F850FD0-0FD40FD90FDA104A-104F10FB1360-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A194419451A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601BFC-1BFF1C3B-1C3F1C7E1C7F1CC0-1CC71CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2D702E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E30-2E393001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFAAF0AAF1ABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A600A800A900AC00AE-00B100B400B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F60482058F0606-0608060B060E060F06DE06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0D790E3F0F01-0F030F130F15-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F1390-139917DB194019DE-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B9210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23F32400-24262440-244A249C-24E92500-26FF2701-27672794-27C427C7-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-324732503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FBB2-FBC1FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C21182140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5058F060B09F209F309FB0AF10BF90E3F17DB20A0-20B9A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFBB2-FBC1FF3EFF40FFE3",So:"00A600A900AE00B00482060E060F06DE06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0D790F01-0F030F130F15-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F1390-1399194019DE-19FF1B61-1B6A1B74-1B7C210021012103-210621082109211421162117211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23F32400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26FF2701-27672794-27BF2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-324732503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20528-05300557055805600588058B-058E059005C8-05CF05EB-05EF05F5-0605061C061D06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F085C085D085F-089F08A108AD-08E308FF097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B78-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D3B0D3C0D450D490D4F-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EE0-0EFF0F480F6D-0F700F980FBD0FCD0FDB-0FFF10C610C8-10CC10CE10CF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B135C137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BF4-1BFB1C38-1C3A1C4A-1C4C1C80-1CBF1CC8-1CCF1CF7-1CFF1DE7-1DFB1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F209D-209F20BA-20CF20F1-20FF218A-218F23F4-23FF2427-243F244B-245F27002B4D-2B4F2B5A-2BFF2C2F2C5F2CF4-2CF82D262D28-2D2C2D2E2D2F2D68-2D6E2D71-2D7E2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E3C-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31BB-31BF31E4-31EF321F32FF4DB6-4DBF9FCD-9FFFA48D-A48FA4C7-A4CFA62C-A63FA698-A69EA6F8-A6FFA78FA794-A79FA7AB-A7F7A82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAF7-AB00AB07AB08AB0FAB10AB17-AB1FAB27AB2F-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBC2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060406DD070F200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20528-05300557055805600588058B-058E059005C8-05CF05EB-05EF05F5-05FF0605061C061D070E074B074C07B2-07BF07FB-07FF082E082F083F085C085D085F-089F08A108AD-08E308FF097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B78-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D3B0D3C0D450D490D4F-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EE0-0EFF0F480F6D-0F700F980FBD0FCD0FDB-0FFF10C610C8-10CC10CE10CF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B135C137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BF4-1BFB1C38-1C3A1C4A-1C4C1C80-1CBF1CC8-1CCF1CF7-1CFF1DE7-1DFB1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F209D-209F20BA-20CF20F1-20FF218A-218F23F4-23FF2427-243F244B-245F27002B4D-2B4F2B5A-2BFF2C2F2C5F2CF4-2CF82D262D28-2D2C2D2E2D2F2D68-2D6E2D71-2D7E2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E3C-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31BB-31BF31E4-31EF321F32FF4DB6-4DBF9FCD-9FFFA48D-A48FA4C7-A4CFA62C-A63FA698-A69EA6F8-A6FFA78FA794-A79FA7AB-A7F7A82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAF7-AB00AB07AB08AB0FAB10AB17-AB1FAB27AB2F-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBC2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"},{Ll:"Lowercase_Letter",Lu:"Uppercase_Letter",Lt:"Titlecase_Letter",Lm:"Modifier_Letter",Lo:"Other_Letter",M:"Mark",Mn:"Nonspacing_Mark",Mc:"Spacing_Mark",Me:"Enclosing_Mark",N:"Number",Nd:"Decimal_Number",Nl:"Letter_Number",No:"Other_Number",P:"Punctuation",Pd:"Dash_Punctuation",Ps:"Open_Punctuation",Pe:"Close_Punctuation",Pi:"Initial_Punctuation",Pf:"Final_Punctuation",Pc:"Connector_Punctuation",Po:"Other_Punctuation",S:"Symbol",Sm:"Math_Symbol",Sc:"Currency_Symbol",Sk:"Modifier_Symbol",So:"Other_Symbol",Z:"Separator",Zs:"Space_Separator",Zl:"Line_Separator",Zp:"Paragraph_Separator",C:"Other",Cc:"Control",Cf:"Format",Co:"Private_Use",Cs:"Surrogate",Cn:"Unassigned"})})(XRegExp);
+//XRegExp Unicode Scripts 1.2.0
+(function(n){"use strict";if(!n.addUnicodePackage)throw new ReferenceError("Unicode Base must be loaded before Unicode Scripts");n.install("extensibility"),n.addUnicodePackage({Arabic:"0600-06040606-060B060D-061A061E0620-063F0641-064A0656-065E066A-066F0671-06DC06DE-06FF0750-077F08A008A2-08AC08E4-08FEFB50-FBC1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFCFE70-FE74FE76-FEFC",Armenian:"0531-05560559-055F0561-0587058A058FFB13-FB17",Balinese:"1B00-1B4B1B50-1B7C",Bamum:"A6A0-A6F7",Batak:"1BC0-1BF31BFC-1BFF",Bengali:"0981-09830985-098C098F09900993-09A809AA-09B009B209B6-09B909BC-09C409C709C809CB-09CE09D709DC09DD09DF-09E309E6-09FB",Bopomofo:"02EA02EB3105-312D31A0-31BA",Braille:"2800-28FF",Buginese:"1A00-1A1B1A1E1A1F",Buhid:"1740-1753",Canadian_Aboriginal:"1400-167F18B0-18F5",Cham:"AA00-AA36AA40-AA4DAA50-AA59AA5C-AA5F",Cherokee:"13A0-13F4",Common:"0000-0040005B-0060007B-00A900AB-00B900BB-00BF00D700F702B9-02DF02E5-02E902EC-02FF0374037E038503870589060C061B061F06400660-066906DD096409650E3F0FD5-0FD810FB16EB-16ED173517361802180318051CD31CE11CE9-1CEC1CEE-1CF31CF51CF62000-200B200E-2064206A-20702074-207E2080-208E20A0-20B92100-21252127-2129212C-21312133-214D214F-215F21892190-23F32400-24262440-244A2460-26FF2701-27FF2900-2B4C2B50-2B592E00-2E3B2FF0-2FFB3000-300430063008-30203030-3037303C-303F309B309C30A030FB30FC3190-319F31C0-31E33220-325F327F-32CF3358-33FF4DC0-4DFFA700-A721A788-A78AA830-A839FD3EFD3FFDFDFE10-FE19FE30-FE52FE54-FE66FE68-FE6BFEFFFF01-FF20FF3B-FF40FF5B-FF65FF70FF9EFF9FFFE0-FFE6FFE8-FFEEFFF9-FFFD",Coptic:"03E2-03EF2C80-2CF32CF9-2CFF",Cyrillic:"0400-04840487-05271D2B1D782DE0-2DFFA640-A697A69F",Devanagari:"0900-09500953-09630966-09770979-097FA8E0-A8FB",Ethiopic:"1200-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A135D-137C1380-13992D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDEAB01-AB06AB09-AB0EAB11-AB16AB20-AB26AB28-AB2E",Georgian:"10A0-10C510C710CD10D0-10FA10FC-10FF2D00-2D252D272D2D",Glagolitic:"2C00-2C2E2C30-2C5E",Greek:"0370-03730375-0377037A-037D038403860388-038A038C038E-03A103A3-03E103F0-03FF1D26-1D2A1D5D-1D611D66-1D6A1DBF1F00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FC41FC6-1FD31FD6-1FDB1FDD-1FEF1FF2-1FF41FF6-1FFE2126",Gujarati:"0A81-0A830A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABC-0AC50AC7-0AC90ACB-0ACD0AD00AE0-0AE30AE6-0AF1",Gurmukhi:"0A01-0A030A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A3C0A3E-0A420A470A480A4B-0A4D0A510A59-0A5C0A5E0A66-0A75",Han:"2E80-2E992E9B-2EF32F00-2FD5300530073021-30293038-303B3400-4DB54E00-9FCCF900-FA6DFA70-FAD9",Hangul:"1100-11FF302E302F3131-318E3200-321E3260-327EA960-A97CAC00-D7A3D7B0-D7C6D7CB-D7FBFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Hanunoo:"1720-1734",Hebrew:"0591-05C705D0-05EA05F0-05F4FB1D-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FB4F",Hiragana:"3041-3096309D-309F",Inherited:"0300-036F04850486064B-0655065F0670095109521CD0-1CD21CD4-1CE01CE2-1CE81CED1CF41DC0-1DE61DFC-1DFF200C200D20D0-20F0302A-302D3099309AFE00-FE0FFE20-FE26",Javanese:"A980-A9CDA9CF-A9D9A9DEA9DF",Kannada:"0C820C830C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBC-0CC40CC6-0CC80CCA-0CCD0CD50CD60CDE0CE0-0CE30CE6-0CEF0CF10CF2",Katakana:"30A1-30FA30FD-30FF31F0-31FF32D0-32FE3300-3357FF66-FF6FFF71-FF9D",Kayah_Li:"A900-A92F",Khmer:"1780-17DD17E0-17E917F0-17F919E0-19FF",Lao:"0E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB90EBB-0EBD0EC0-0EC40EC60EC8-0ECD0ED0-0ED90EDC-0EDF",Latin:"0041-005A0061-007A00AA00BA00C0-00D600D8-00F600F8-02B802E0-02E41D00-1D251D2C-1D5C1D62-1D651D6B-1D771D79-1DBE1E00-1EFF2071207F2090-209C212A212B2132214E2160-21882C60-2C7FA722-A787A78B-A78EA790-A793A7A0-A7AAA7F8-A7FFFB00-FB06FF21-FF3AFF41-FF5A",Lepcha:"1C00-1C371C3B-1C491C4D-1C4F",Limbu:"1900-191C1920-192B1930-193B19401944-194F",Lisu:"A4D0-A4FF",Malayalam:"0D020D030D05-0D0C0D0E-0D100D12-0D3A0D3D-0D440D46-0D480D4A-0D4E0D570D60-0D630D66-0D750D79-0D7F",Mandaic:"0840-085B085E",Meetei_Mayek:"AAE0-AAF6ABC0-ABEDABF0-ABF9",Mongolian:"1800180118041806-180E1810-18191820-18771880-18AA",Myanmar:"1000-109FAA60-AA7B",New_Tai_Lue:"1980-19AB19B0-19C919D0-19DA19DE19DF",Nko:"07C0-07FA",Ogham:"1680-169C",Ol_Chiki:"1C50-1C7F",Oriya:"0B01-0B030B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3C-0B440B470B480B4B-0B4D0B560B570B5C0B5D0B5F-0B630B66-0B77",Phags_Pa:"A840-A877",Rejang:"A930-A953A95F",Runic:"16A0-16EA16EE-16F0",Samaritan:"0800-082D0830-083E",Saurashtra:"A880-A8C4A8CE-A8D9",Sinhala:"0D820D830D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60DCA0DCF-0DD40DD60DD8-0DDF0DF2-0DF4",Sundanese:"1B80-1BBF1CC0-1CC7",Syloti_Nagri:"A800-A82B",Syriac:"0700-070D070F-074A074D-074F",Tagalog:"1700-170C170E-1714",Tagbanwa:"1760-176C176E-177017721773",Tai_Le:"1950-196D1970-1974",Tai_Tham:"1A20-1A5E1A60-1A7C1A7F-1A891A90-1A991AA0-1AAD",Tai_Viet:"AA80-AAC2AADB-AADF",Tamil:"0B820B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BBE-0BC20BC6-0BC80BCA-0BCD0BD00BD70BE6-0BFA",Telugu:"0C01-0C030C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D-0C440C46-0C480C4A-0C4D0C550C560C580C590C60-0C630C66-0C6F0C78-0C7F",Thaana:"0780-07B1",Thai:"0E01-0E3A0E40-0E5B",Tibetan:"0F00-0F470F49-0F6C0F71-0F970F99-0FBC0FBE-0FCC0FCE-0FD40FD90FDA",Tifinagh:"2D30-2D672D6F2D702D7F",Vai:"A500-A62B",Yi:"A000-A48CA490-A4C6"})})(XRegExp);
+//XRegExp Unicode Blocks 1.2.0
+(function(n){"use strict";if(!n.addUnicodePackage)throw new ReferenceError("Unicode Base must be loaded before Unicode Blocks");n.install("extensibility"),n.addUnicodePackage({InBasic_Latin:"0000-007F",InLatin_1_Supplement:"0080-00FF",InLatin_Extended_A:"0100-017F",InLatin_Extended_B:"0180-024F",InIPA_Extensions:"0250-02AF",InSpacing_Modifier_Letters:"02B0-02FF",InCombining_Diacritical_Marks:"0300-036F",InGreek_and_Coptic:"0370-03FF",InCyrillic:"0400-04FF",InCyrillic_Supplement:"0500-052F",InArmenian:"0530-058F",InHebrew:"0590-05FF",InArabic:"0600-06FF",InSyriac:"0700-074F",InArabic_Supplement:"0750-077F",InThaana:"0780-07BF",InNKo:"07C0-07FF",InSamaritan:"0800-083F",InMandaic:"0840-085F",InArabic_Extended_A:"08A0-08FF",InDevanagari:"0900-097F",InBengali:"0980-09FF",InGurmukhi:"0A00-0A7F",InGujarati:"0A80-0AFF",InOriya:"0B00-0B7F",InTamil:"0B80-0BFF",InTelugu:"0C00-0C7F",InKannada:"0C80-0CFF",InMalayalam:"0D00-0D7F",InSinhala:"0D80-0DFF",InThai:"0E00-0E7F",InLao:"0E80-0EFF",InTibetan:"0F00-0FFF",InMyanmar:"1000-109F",InGeorgian:"10A0-10FF",InHangul_Jamo:"1100-11FF",InEthiopic:"1200-137F",InEthiopic_Supplement:"1380-139F",InCherokee:"13A0-13FF",InUnified_Canadian_Aboriginal_Syllabics:"1400-167F",InOgham:"1680-169F",InRunic:"16A0-16FF",InTagalog:"1700-171F",InHanunoo:"1720-173F",InBuhid:"1740-175F",InTagbanwa:"1760-177F",InKhmer:"1780-17FF",InMongolian:"1800-18AF",InUnified_Canadian_Aboriginal_Syllabics_Extended:"18B0-18FF",InLimbu:"1900-194F",InTai_Le:"1950-197F",InNew_Tai_Lue:"1980-19DF",InKhmer_Symbols:"19E0-19FF",InBuginese:"1A00-1A1F",InTai_Tham:"1A20-1AAF",InBalinese:"1B00-1B7F",InSundanese:"1B80-1BBF",InBatak:"1BC0-1BFF",InLepcha:"1C00-1C4F",InOl_Chiki:"1C50-1C7F",InSundanese_Supplement:"1CC0-1CCF",InVedic_Extensions:"1CD0-1CFF",InPhonetic_Extensions:"1D00-1D7F",InPhonetic_Extensions_Supplement:"1D80-1DBF",InCombining_Diacritical_Marks_Supplement:"1DC0-1DFF",InLatin_Extended_Additional:"1E00-1EFF",InGreek_Extended:"1F00-1FFF",InGeneral_Punctuation:"2000-206F",InSuperscripts_and_Subscripts:"2070-209F",InCurrency_Symbols:"20A0-20CF",InCombining_Diacritical_Marks_for_Symbols:"20D0-20FF",InLetterlike_Symbols:"2100-214F",InNumber_Forms:"2150-218F",InArrows:"2190-21FF",InMathematical_Operators:"2200-22FF",InMiscellaneous_Technical:"2300-23FF",InControl_Pictures:"2400-243F",InOptical_Character_Recognition:"2440-245F",InEnclosed_Alphanumerics:"2460-24FF",InBox_Drawing:"2500-257F",InBlock_Elements:"2580-259F",InGeometric_Shapes:"25A0-25FF",InMiscellaneous_Symbols:"2600-26FF",InDingbats:"2700-27BF",InMiscellaneous_Mathematical_Symbols_A:"27C0-27EF",InSupplemental_Arrows_A:"27F0-27FF",InBraille_Patterns:"2800-28FF",InSupplemental_Arrows_B:"2900-297F",InMiscellaneous_Mathematical_Symbols_B:"2980-29FF",InSupplemental_Mathematical_Operators:"2A00-2AFF",InMiscellaneous_Symbols_and_Arrows:"2B00-2BFF",InGlagolitic:"2C00-2C5F",InLatin_Extended_C:"2C60-2C7F",InCoptic:"2C80-2CFF",InGeorgian_Supplement:"2D00-2D2F",InTifinagh:"2D30-2D7F",InEthiopic_Extended:"2D80-2DDF",InCyrillic_Extended_A:"2DE0-2DFF",InSupplemental_Punctuation:"2E00-2E7F",InCJK_Radicals_Supplement:"2E80-2EFF",InKangxi_Radicals:"2F00-2FDF",InIdeographic_Description_Characters:"2FF0-2FFF",InCJK_Symbols_and_Punctuation:"3000-303F",InHiragana:"3040-309F",InKatakana:"30A0-30FF",InBopomofo:"3100-312F",InHangul_Compatibility_Jamo:"3130-318F",InKanbun:"3190-319F",InBopomofo_Extended:"31A0-31BF",InCJK_Strokes:"31C0-31EF",InKatakana_Phonetic_Extensions:"31F0-31FF",InEnclosed_CJK_Letters_and_Months:"3200-32FF",InCJK_Compatibility:"3300-33FF",InCJK_Unified_Ideographs_Extension_A:"3400-4DBF",InYijing_Hexagram_Symbols:"4DC0-4DFF",InCJK_Unified_Ideographs:"4E00-9FFF",InYi_Syllables:"A000-A48F",InYi_Radicals:"A490-A4CF",InLisu:"A4D0-A4FF",InVai:"A500-A63F",InCyrillic_Extended_B:"A640-A69F",InBamum:"A6A0-A6FF",InModifier_Tone_Letters:"A700-A71F",InLatin_Extended_D:"A720-A7FF",InSyloti_Nagri:"A800-A82F",InCommon_Indic_Number_Forms:"A830-A83F",InPhags_pa:"A840-A87F",InSaurashtra:"A880-A8DF",InDevanagari_Extended:"A8E0-A8FF",InKayah_Li:"A900-A92F",InRejang:"A930-A95F",InHangul_Jamo_Extended_A:"A960-A97F",InJavanese:"A980-A9DF",InCham:"AA00-AA5F",InMyanmar_Extended_A:"AA60-AA7F",InTai_Viet:"AA80-AADF",InMeetei_Mayek_Extensions:"AAE0-AAFF",InEthiopic_Extended_A:"AB00-AB2F",InMeetei_Mayek:"ABC0-ABFF",InHangul_Syllables:"AC00-D7AF",InHangul_Jamo_Extended_B:"D7B0-D7FF",InHigh_Surrogates:"D800-DB7F",InHigh_Private_Use_Surrogates:"DB80-DBFF",InLow_Surrogates:"DC00-DFFF",InPrivate_Use_Area:"E000-F8FF",InCJK_Compatibility_Ideographs:"F900-FAFF",InAlphabetic_Presentation_Forms:"FB00-FB4F",InArabic_Presentation_Forms_A:"FB50-FDFF",InVariation_Selectors:"FE00-FE0F",InVertical_Forms:"FE10-FE1F",InCombining_Half_Marks:"FE20-FE2F",InCJK_Compatibility_Forms:"FE30-FE4F",InSmall_Form_Variants:"FE50-FE6F",InArabic_Presentation_Forms_B:"FE70-FEFF",InHalfwidth_and_Fullwidth_Forms:"FF00-FFEF",InSpecials:"FFF0-FFFF"})})(XRegExp);
+//XRegExp Unicode Properties 1.0.0
+(function(n){"use strict";if(!n.addUnicodePackage)throw new ReferenceError("Unicode Base must be loaded before Unicode Properties");n.install("extensibility"),n.addUnicodePackage({Alphabetic:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE03450370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05270531-055605590561-058705B0-05BD05BF05C105C205C405C505C705D0-05EA05F0-05F20610-061A0620-06570659-065F066E-06D306D5-06DC06E1-06E806ED-06EF06FA-06FC06FF0710-073F074D-07B107CA-07EA07F407F507FA0800-0817081A-082C0840-085808A008A2-08AC08E4-08E908F0-08FE0900-093B093D-094C094E-09500955-09630971-09770979-097F0981-09830985-098C098F09900993-09A809AA-09B009B209B6-09B909BD-09C409C709C809CB09CC09CE09D709DC09DD09DF-09E309F009F10A01-0A030A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A3E-0A420A470A480A4B0A4C0A510A59-0A5C0A5E0A70-0A750A81-0A830A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD-0AC50AC7-0AC90ACB0ACC0AD00AE0-0AE30B01-0B030B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D-0B440B470B480B4B0B4C0B560B570B5C0B5D0B5F-0B630B710B820B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BBE-0BC20BC6-0BC80BCA-0BCC0BD00BD70C01-0C030C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D-0C440C46-0C480C4A-0C4C0C550C560C580C590C60-0C630C820C830C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD-0CC40CC6-0CC80CCA-0CCC0CD50CD60CDE0CE0-0CE30CF10CF20D020D030D05-0D0C0D0E-0D100D12-0D3A0D3D-0D440D46-0D480D4A-0D4C0D4E0D570D60-0D630D7A-0D7F0D820D830D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60DCF-0DD40DD60DD8-0DDF0DF20DF30E01-0E3A0E40-0E460E4D0E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB90EBB-0EBD0EC0-0EC40EC60ECD0EDC-0EDF0F000F40-0F470F49-0F6C0F71-0F810F88-0F970F99-0FBC1000-10361038103B-103F1050-10621065-1068106E-1086108E109C109D10A0-10C510C710CD10D0-10FA10FC-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A135F1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA16EE-16F01700-170C170E-17131720-17331740-17531760-176C176E-1770177217731780-17B317B6-17C817D717DC1820-18771880-18AA18B0-18F51900-191C1920-192B1930-19381950-196D1970-19741980-19AB19B0-19C91A00-1A1B1A20-1A5E1A61-1A741AA71B00-1B331B35-1B431B45-1B4B1B80-1BA91BAC-1BAF1BBA-1BE51BE7-1BF11C00-1C351C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF31CF51CF61D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209C21022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E2160-218824B6-24E92C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2CF22CF32D00-2D252D272D2D2D30-2D672D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2DE0-2DFF2E2F3005-30073021-30293031-30353038-303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31BA31F0-31FF3400-4DB54E00-9FCCA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A66EA674-A67BA67F-A697A69F-A6EFA717-A71FA722-A788A78B-A78EA790-A793A7A0-A7AAA7F8-A801A803-A805A807-A80AA80C-A827A840-A873A880-A8C3A8F2-A8F7A8FBA90A-A92AA930-A952A960-A97CA980-A9B2A9B4-A9BFA9CFAA00-AA36AA40-AA4DAA60-AA76AA7AAA80-AABEAAC0AAC2AADB-AADDAAE0-AAEFAAF2-AAF5AB01-AB06AB09-AB0EAB11-AB16AB20-AB26AB28-AB2EABC0-ABEAAC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1D-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Uppercase:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E05200522052405260531-055610A0-10C510C710CD1E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F21452160-216F218324B6-24CF2C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CED2CF2A640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA660A662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BA78DA790A792A7A0A7A2A7A4A7A6A7A8A7AAFF21-FF3A",Lowercase:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02B802C002C102E0-02E40345037103730377037A-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F05210523052505270561-05871D00-1DBF1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF72071207F2090-209C210A210E210F2113212F21342139213C213D2146-2149214E2170-217F218424D0-24E92C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7D2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2CF32D00-2D252D272D2DA641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA661A663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76F-A778A77AA77CA77FA781A783A785A787A78CA78EA791A793A7A1A7A3A7A5A7A7A7A9A7F8-A7FAFB00-FB06FB13-FB17FF41-FF5A",White_Space:"0009-000D0020008500A01680180E2000-200A20282029202F205F3000",Noncharacter_Code_Point:"FDD0-FDEFFFFEFFFF",Default_Ignorable_Code_Point:"00AD034F115F116017B417B5180B-180D200B-200F202A-202E2060-206F3164FE00-FE0FFEFFFFA0FFF0-FFF8",Any:"0000-FFFF",Ascii:"0000-007F",Assigned:"0000-0377037A-037E0384-038A038C038E-03A103A3-05270531-05560559-055F0561-05870589058A058F0591-05C705D0-05EA05F0-05F40600-06040606-061B061E-070D070F-074A074D-07B107C0-07FA0800-082D0830-083E0840-085B085E08A008A2-08AC08E4-08FE0900-09770979-097F0981-09830985-098C098F09900993-09A809AA-09B009B209B6-09B909BC-09C409C709C809CB-09CE09D709DC09DD09DF-09E309E6-09FB0A01-0A030A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A3C0A3E-0A420A470A480A4B-0A4D0A510A59-0A5C0A5E0A66-0A750A81-0A830A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABC-0AC50AC7-0AC90ACB-0ACD0AD00AE0-0AE30AE6-0AF10B01-0B030B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3C-0B440B470B480B4B-0B4D0B560B570B5C0B5D0B5F-0B630B66-0B770B820B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BBE-0BC20BC6-0BC80BCA-0BCD0BD00BD70BE6-0BFA0C01-0C030C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D-0C440C46-0C480C4A-0C4D0C550C560C580C590C60-0C630C66-0C6F0C78-0C7F0C820C830C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBC-0CC40CC6-0CC80CCA-0CCD0CD50CD60CDE0CE0-0CE30CE6-0CEF0CF10CF20D020D030D05-0D0C0D0E-0D100D12-0D3A0D3D-0D440D46-0D480D4A-0D4E0D570D60-0D630D66-0D750D79-0D7F0D820D830D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60DCA0DCF-0DD40DD60DD8-0DDF0DF2-0DF40E01-0E3A0E3F-0E5B0E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB90EBB-0EBD0EC0-0EC40EC60EC8-0ECD0ED0-0ED90EDC-0EDF0F00-0F470F49-0F6C0F71-0F970F99-0FBC0FBE-0FCC0FCE-0FDA1000-10C510C710CD10D0-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A135D-137C1380-139913A0-13F41400-169C16A0-16F01700-170C170E-17141720-17361740-17531760-176C176E-1770177217731780-17DD17E0-17E917F0-17F91800-180E1810-18191820-18771880-18AA18B0-18F51900-191C1920-192B1930-193B19401944-196D1970-19741980-19AB19B0-19C919D0-19DA19DE-1A1B1A1E-1A5E1A60-1A7C1A7F-1A891A90-1A991AA0-1AAD1B00-1B4B1B50-1B7C1B80-1BF31BFC-1C371C3B-1C491C4D-1C7F1CC0-1CC71CD0-1CF61D00-1DE61DFC-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FC41FC6-1FD31FD6-1FDB1FDD-1FEF1FF2-1FF41FF6-1FFE2000-2064206A-20712074-208E2090-209C20A0-20B920D0-20F02100-21892190-23F32400-24262440-244A2460-26FF2701-2B4C2B50-2B592C00-2C2E2C30-2C5E2C60-2CF32CF9-2D252D272D2D2D30-2D672D6F2D702D7F-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2DE0-2E3B2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB3000-303F3041-30963099-30FF3105-312D3131-318E3190-31BA31C0-31E331F0-321E3220-32FE3300-4DB54DC0-9FCCA000-A48CA490-A4C6A4D0-A62BA640-A697A69F-A6F7A700-A78EA790-A793A7A0-A7AAA7F8-A82BA830-A839A840-A877A880-A8C4A8CE-A8D9A8E0-A8FBA900-A953A95F-A97CA980-A9CDA9CF-A9D9A9DEA9DFAA00-AA36AA40-AA4DAA50-AA59AA5C-AA7BAA80-AAC2AADB-AAF6AB01-AB06AB09-AB0EAB11-AB16AB20-AB26AB28-AB2EABC0-ABEDABF0-ABF9AC00-D7A3D7B0-D7C6D7CB-D7FBD800-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1D-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBC1FBD3-FD3FFD50-FD8FFD92-FDC7FDF0-FDFDFE00-FE19FE20-FE26FE30-FE52FE54-FE66FE68-FE6BFE70-FE74FE76-FEFCFEFFFF01-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDCFFE0-FFE6FFE8-FFEEFFF9-FFFD"})})(XRegExp);
+//XRegExp.matchRecursive 0.2.0
+(function(n){"use strict";function t(n,t,i,r){return{value:n,name:t,start:i,end:r}}n.matchRecursive=function(i,r,u,f,e){f=f||"",e=e||{};var g=f.indexOf("g")>-1,nt=f.indexOf("y")>-1,d=f.replace(/y/g,""),y=e.escapeChar,o=e.valueNames,v=[],b=0,h=0,s=0,c=0,p,w,l,a,k;if(r=n(r,d),u=n(u,d),y){if(y.length>1)throw new SyntaxError("can't use more than one escape character");y=n.escape(y),k=new RegExp("(?:"+y+"[\\S\\s]|(?:(?!"+n.union([r,u]).source+")[^"+y+"])+)+",f.replace(/[^im]+/g,""))}for(;;){if(y&&(s+=(n.exec(i,k,s,"sticky")||[""])[0].length),l=n.exec(i,r,s),a=n.exec(i,u,s),l&&a&&(l.index<=a.index?a=null:l=null),l||a)h=(l||a).index,s=h+(l||a)[0].length;else if(!b)break;if(nt&&!b&&h>c)break;if(l)b||(p=h,w=s),++b;else if(a&&b){if(!--b&&(o?(o[0]&&p>c&&v.push(t(o[0],i.slice(c,p),c,p)),o[1]&&v.push(t(o[1],i.slice(p,w),p,w)),o[2]&&v.push(t(o[2],i.slice(w,h),w,h)),o[3]&&v.push(t(o[3],i.slice(h,s),h,s))):v.push(i.slice(w,h)),c=s,!g))break}else throw new Error("string contains unbalanced delimiters");h===s&&++s}return g&&!nt&&o&&o[0]&&i.length>c&&v.push(t(o[0],i.slice(c),c,i.length)),v}})(XRegExp);
+//XRegExp.build 0.1.0
+(function(n){"use strict";function u(n){var i=/^(?:\(\?:\))?\^/,t=/\$(?:\(\?:\))?$/;return t.test(n.replace(/\\[\s\S]/g,""))?n.replace(i,"").replace(t,""):n}function t(t){return n.isRegExp(t)?t.xregexp&&!t.xregexp.isNative?t:n(t.source):n(t)}var i=/(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*]/g,r=n.union([/\({{([\w$]+)}}\)|{{([\w$]+)}}/,i],"g");n.build=function(f,e,o){var w=/^\(\?([\w$]+)\)/.exec(f),l={},s=0,v,h=0,p=[0],y,a,c;w&&(o=o||"",w[1].replace(/./g,function(n){o+=o.indexOf(n)>-1?"":n}));for(c in e)e.hasOwnProperty(c)&&(a=t(e[c]),l[c]={pattern:u(a.source),names:a.xregexp.captureNames||[]});return f=t(f),y=f.xregexp.captureNames||[],f=f.source.replace(r,function(n,t,r,u,f){var o=t||r,e,c;if(o){if(!l.hasOwnProperty(o))throw new ReferenceError("undefined property "+n);return t?(e=y[h],p[++h]=++s,c="(?<"+(e||o)+">"):c="(?:",v=s,c+l[o].pattern.replace(i,function(n,t,i){if(t){if(e=l[o].names[s-v],++s,e)return"(?<"+e+">"}else if(i)return"\\"+(+i+v);return n})+")"}if(u){if(e=y[h],p[++h]=++s,e)return"(?<"+e+">"}else if(f)return"\\"+p[+f];return n}),n(f,o)}})(XRegExp);
+//XRegExp Prototype Methods 1.0.0
+(function(n){"use strict";function t(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])}t(n.prototype,{apply:function(n,t){return this.test(t[0])},call:function(n,t){return this.test(t)},forEach:function(t,i,r){return n.forEach(t,this,i,r)},globalize:function(){return n.globalize(this)},xexec:function(t,i,r){return n.exec(t,this,i,r)},xtest:function(t,i,r){return n.test(t,this,i,r)}})})(XRegExp)
diff --git a/www/web/static/rest_framework/css/bootstrap-tweaks.css b/www/web/static/rest_framework/css/bootstrap-tweaks.css
new file mode 100644
index 0000000..17085b4
--- /dev/null
+++ b/www/web/static/rest_framework/css/bootstrap-tweaks.css
@@ -0,0 +1,234 @@
+/*
+
+This CSS file contains some tweaks specific to the included Bootstrap theme.
+It's separate from `style.css` so that it can be easily overridden by replacing
+a single block in the template.
+
+*/
+
+.form-actions {
+  background: transparent;
+  border-top-color: transparent;
+  padding-top: 0;
+  text-align: right;
+}
+
+#generic-content-form textarea {
+  font-family:Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;
+  font-size: 80%;
+}
+
+.navbar-inverse .brand a {
+  color: #999999;
+}
+.navbar-inverse .brand:hover a {
+  color: white;
+  text-decoration: none;
+}
+
+/* custom navigation styles */
+.navbar {
+  width: 100%;
+  position: fixed;
+  left: 0;
+  top: 0;
+  z-index: 3;
+}
+
+.navbar {
+  background: #2C2C2C;
+  color: white;
+  border: none;
+  border-top: 5px solid #A30000;
+  border-radius: 0px;
+}
+
+.navbar .nav li, .navbar .nav li a, .navbar .brand:hover {
+  color: white;
+}
+
+.nav-list > .active > a, .nav-list > .active > a:hover {
+  background: #2C2C2C;
+}
+
+.navbar .dropdown-menu li a, .navbar .dropdown-menu li {
+  color: #A30000;
+}
+
+.navbar .dropdown-menu li a:hover {
+  background: #EEEEEE;
+  color: #C20000;
+}
+
+ul.breadcrumb {
+  margin: 70px 0 0 0;
+}
+
+.breadcrumb li.active a {
+  color: #777;
+}
+
+.pagination>.disabled>a,
+.pagination>.disabled>a:hover,
+.pagination>.disabled>a:focus {
+  cursor: not-allowed;
+  pointer-events: none;
+}
+
+.pager>.disabled>a,
+.pager>.disabled>a:hover,
+.pager>.disabled>a:focus {
+  pointer-events: none;
+}
+
+.pager .next {
+  margin-left: 10px;
+}
+
+/*=== dabapps bootstrap styles ====*/
+
+html {
+  width:100%;
+  background: none;
+}
+
+/*body, .navbar .container-fluid {
+  max-width: 1150px;
+  margin: 0 auto;
+}*/
+
+body {
+  background: url("../img/grid.png") repeat-x;
+  background-attachment: fixed;
+}
+
+#content {
+  margin: 0;
+  padding-bottom: 60px;
+}
+
+/* sticky footer and footer */
+html, body {
+  height: 100%;
+}
+
+.wrapper {
+  position: relative;
+  top: 0;
+  left: 0;
+  padding-top: 60px;
+  margin: -60px 0;
+  min-height: 100%;
+}
+
+.form-switcher {
+  margin-bottom: 0;
+}
+
+.well {
+  -webkit-box-shadow: none;
+     -moz-box-shadow: none;
+          box-shadow: none;
+}
+
+.well .form-actions {
+  padding-bottom: 0;
+  margin-bottom: 0;
+}
+
+.well form {
+  margin-bottom: 0;
+}
+
+.nav-tabs {
+  border: 0;
+}
+
+.nav-tabs > li {
+  float: right;
+}
+
+.nav-tabs li a {
+  margin-right: 0;
+}
+
+.nav-tabs > .active > a {
+  background: #F5F5F5;
+}
+
+.nav-tabs > .active > a:hover {
+  background: #F5F5F5;
+}
+
+.tabbable.first-tab-active .tab-content {
+  border-top-right-radius: 0;
+}
+
+footer {
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  clear: both;
+  z-index: 10;
+  height: 60px;
+  width: 95%;
+  margin: 0 2.5%;
+}
+
+footer p {
+  text-align: center;
+  color: gray;
+  border-top: 1px solid #DDDDDD;
+  padding-top: 10px;
+}
+
+footer a {
+  color: gray !important;
+  font-weight: bold;
+}
+
+footer a:hover {
+  color: gray;
+}
+
+.page-header {
+  border-bottom: none;
+  padding-bottom: 0px;
+  margin: 0;
+}
+
+/* custom general page styles */
+.hero-unit h1, .hero-unit h2 {
+  color: #A30000;
+}
+
+body a {
+  color: #A30000;
+}
+
+body a:hover {
+  color: #c20000;
+}
+
+.request-info {
+  clear:both;
+}
+
+.horizontal-checkbox label {
+  padding-top: 0;
+}
+
+.horizontal-checkbox label {
+  padding-top: 0 !important;
+}
+
+.horizontal-checkbox input {
+  float: left;
+  width: 20px;
+  margin-top: 3px;
+}
+
+.modal-footer form {
+  margin-left: 5px;
+  margin-right: 5px;
+}
diff --git a/www/web/static/rest_framework/css/bootstrap.min.css b/www/web/static/rest_framework/css/bootstrap.min.css
new file mode 100644
index 0000000..ed3905e
--- /dev/null
+++ b/www/web/static/rest_framework/css/bootstrap.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
+/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/www/web/static/rest_framework/css/default.css b/www/web/static/rest_framework/css/default.css
new file mode 100644
index 0000000..f4e645c
--- /dev/null
+++ b/www/web/static/rest_framework/css/default.css
@@ -0,0 +1,83 @@
+
+/* The navbar is fixed at >= 980px wide, so add padding to the body to prevent
+content running up underneath it. */
+
+h1 {
+  font-weight: 300;
+}
+
+h2, h3 {
+  font-weight: 300;
+}
+
+.resource-description, .response-info {
+  margin-bottom: 2em;
+}
+
+.version:before {
+  content: "v";
+  opacity: 0.6;
+  padding-right: 0.25em;
+}
+
+.version {
+  font-size: 70%;
+}
+
+.format-option {
+  font-family: Menlo, Consolas, "Andale Mono", "Lucida Console", monospace;
+}
+
+.button-form {
+  float: right;
+  margin-right: 1em;
+}
+
+td.nested {
+  padding: 0 !important;
+}
+
+td.nested > table {
+  margin: 0;
+}
+
+form select, form input, form textarea {
+  width: 90%;
+}
+
+form select[multiple] {
+  height: 150px;
+}
+
+/* To allow tooltips to work on disabled elements */
+.disabled-tooltip-shield {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+}
+
+.errorlist {
+  margin-top: 0.5em;
+}
+
+pre {
+  overflow: auto;
+  word-wrap: normal;
+  white-space: pre;
+  font-size: 12px;
+}
+
+.page-header {
+  border-bottom: none;
+  padding-bottom: 0px;
+}
+
+#filtersModal form input[type=submit] {
+    width: auto;
+}
+
+#filtersModal .modal-body h2 {
+    margin-top: 0
+}
diff --git a/www/web/static/rest_framework/css/prettify.css b/www/web/static/rest_framework/css/prettify.css
new file mode 100644
index 0000000..d437aff
--- /dev/null
+++ b/www/web/static/rest_framework/css/prettify.css
@@ -0,0 +1,30 @@
+.com { color: #93a1a1; }
+.lit { color: #195f91; }
+.pun, .opn, .clo { color: #93a1a1; }
+.fun { color: #dc322f; }
+.str, .atv { color: #D14; }
+.kwd, .prettyprint .tag { color: #1e347b; }
+.typ, .atn, .dec, .var { color: teal; }
+.pln { color: #48484c; }
+
+.prettyprint {
+  padding: 8px;
+  background-color: #f7f7f9;
+  border: 1px solid #e1e1e8;
+}
+.prettyprint.linenums {
+  -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
+     -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
+          box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
+}
+
+/* Specify class=linenums on a pre to get line numbering */
+ol.linenums {
+  margin: 0 0 0 33px; /* IE indents via margin-left */
+}
+ol.linenums li {
+  padding-left: 12px;
+  color: #bebec5;
+  line-height: 20px;
+  text-shadow: 0 1px 0 #fff;
+}
\ No newline at end of file
diff --git a/web/templates/media/fonts/glyphicons-halflings-regular.eot b/www/web/static/rest_framework/fonts/glyphicons-halflings-regular.eot
similarity index 100%
rename from web/templates/media/fonts/glyphicons-halflings-regular.eot
rename to www/web/static/rest_framework/fonts/glyphicons-halflings-regular.eot
diff --git a/web/templates/media/fonts/glyphicons-halflings-regular.svg b/www/web/static/rest_framework/fonts/glyphicons-halflings-regular.svg
similarity index 100%
rename from web/templates/media/fonts/glyphicons-halflings-regular.svg
rename to www/web/static/rest_framework/fonts/glyphicons-halflings-regular.svg
diff --git a/web/templates/media/fonts/glyphicons-halflings-regular.ttf b/www/web/static/rest_framework/fonts/glyphicons-halflings-regular.ttf
similarity index 100%
rename from web/templates/media/fonts/glyphicons-halflings-regular.ttf
rename to www/web/static/rest_framework/fonts/glyphicons-halflings-regular.ttf
diff --git a/web/templates/media/fonts/glyphicons-halflings-regular.woff b/www/web/static/rest_framework/fonts/glyphicons-halflings-regular.woff
similarity index 100%
rename from web/templates/media/fonts/glyphicons-halflings-regular.woff
rename to www/web/static/rest_framework/fonts/glyphicons-halflings-regular.woff
diff --git a/web/templates/media/fonts/glyphicons-halflings-regular.woff2 b/www/web/static/rest_framework/fonts/glyphicons-halflings-regular.woff2
similarity index 100%
rename from web/templates/media/fonts/glyphicons-halflings-regular.woff2
rename to www/web/static/rest_framework/fonts/glyphicons-halflings-regular.woff2
diff --git a/www/web/static/rest_framework/img/glyphicons-halflings-white.png b/www/web/static/rest_framework/img/glyphicons-halflings-white.png
new file mode 100644
index 0000000000000000000000000000000000000000..3bf6484a29d8da269f9bc874b25493a45fae3bae
GIT binary patch
literal 8777
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
B7G?kd

literal 0
HcmV?d00001

diff --git a/www/web/static/rest_framework/img/glyphicons-halflings.png b/www/web/static/rest_framework/img/glyphicons-halflings.png
new file mode 100644
index 0000000000000000000000000000000000000000..36c3b1ed9e71dce20dca9e35c36c97fd8afd718c
GIT binary patch
literal 12762
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
JeEj_Fe*q52p!xs+

literal 0
HcmV?d00001

diff --git a/www/web/static/rest_framework/img/grid.png b/www/web/static/rest_framework/img/grid.png
new file mode 100644
index 0000000000000000000000000000000000000000..878c3ed5c196539c4e2da35b7787ab08e98b9cca
GIT binary patch
literal 1458
zcmeAS@N?(olHy`uVBq!ia0vp^Q49=>MjUKFR#nCEMj*vm;1OBOz`!jG!i)^F=12fl
z<Yk6LltlRYSS9D@>LsS+C#C9D<Q4!`GcedxSOJ;2sU?XD6}dTi#a0!zN?;XMKsHEN
zUr7P1q$Jx`DZ)2E!8yMuRl!8hM9)CUj!Qv7!KNrB%__*n4XPc;vsKC{DJihh*Do(G
z*DE*H%P&gTH?*|0)Hg8FH!{)%s?aU2%qvN((9J7Wh8O}f$0fBmxhS)sBr`ux0c37s
zQhsTPt&$SRA~=A!GbI^rPeEx>4%n8IWc}2f)ZEm(l45;BJwtuC;Xu7MDalsFrAb+-
z$t7TS!;J%bz$r0ZA4%9oA5*oBKFCE#E`)d=EDH3$9hZ$hJS^?Fp4#&|GB7Z|@^o<w
zshIQj?!hAIPyvUFa?Fj39{jf#F>^SSJTd6tq0S!DeK!2h*Tl*`P5Yzc8-3Bx*#7*P
z_lIZyDoaaS`}OwX=Dx>2?#<D!t}0>BS1xgR(Q!d=p|X>EOCN`<pp_D;faS3^)x^U>
zXA4VQu*xH8*v`wH|7Kg_&!-n1cjuav&3^o%1B-!38l2qsw5vX{)ww9+?vCFTf>ud~
zg*GO3KC`e=!r@T3xzf`*c)d-IUlfFk;PBjy4K6tmi!A&4@cAEP$Px9s?lqTci7~T+
z-}^{4afY_30{uixxSHt*N>9t^Tda&0H5mQ_1`yCs#p`NH*8Km)_~-KFoNo=!_8c#s
zWAa>N-HQ`bo%5fbxey)esBZQ2{nIXNu`Os-bmok|{*PU&?;Wq;K7ViC-rR_~+KOL=
zH4)jidxUns0>)Izao*FaI~PF{%uT~Dk@j=8|5Dta{K8wv>d|%Hcb{Lgz3+r2sU6kg
zmTAw9&-`i8w14I8wx>P5N6NF;+MlVs*O$JfT6WJou)_P>@A@uXTleG5F;Ur%rwkr}
z9Cy=jOL!Yh{`u60)j+55f37_IN$UUe9sghL7uuB@5hwlYz5Q2<eUaI<M$aqHK~nO&
zd#*7TCu+Cfdu3gE{6aLV)#<*4`koNEdG7b0o4u@l1WB4e6WeE2zU<9?{$YA;>Eoi?
z8|G~6tcc3~n|batFcfpX-rfHA^NYK3=QY>WxaPaUGs?d6cXxkJIsW|O^e4z^d}6ZQ
z{XhH5lWzwfnEw0KbC6*c*P{6UH^(HL+Z_Lz)%(e&^e>X(pJ#64-W$DObB_40RoL^?
hufEOi_HxMn<eq$PhVnkSKkA@T)zj6_Wt~$(69B@oPZ9tC

literal 0
HcmV?d00001

diff --git a/www/web/static/rest_framework/js/ajax-form.js b/www/web/static/rest_framework/js/ajax-form.js
new file mode 100644
index 0000000..ce17729
--- /dev/null
+++ b/www/web/static/rest_framework/js/ajax-form.js
@@ -0,0 +1,112 @@
+function replaceDocument(docString) {
+  var doc = document.open("text/html");
+
+  doc.write(docString);
+  doc.close();
+}
+
+function doAjaxSubmit(e) {
+  var form = $(this);
+  var btn = $(this.clk);
+  var method = (
+    btn.data('method') ||
+    form.data('method') ||
+    form.attr('method') || 'GET'
+  ).toUpperCase();
+
+  if (method === 'GET') {
+    // GET requests can always use standard form submits.
+    return;
+  }
+
+  var contentType =
+    form.find('input[data-override="content-type"]').val() ||
+    form.find('select[data-override="content-type"] option:selected').text();
+
+  if (method === 'POST' && !contentType) {
+    // POST requests can use standard form submits, unless we have
+    // overridden the content type.
+    return;
+  }
+
+  // At this point we need to make an AJAX form submission.
+  e.preventDefault();
+
+  var url = form.attr('action');
+  var data;
+
+  if (contentType) {
+    data = form.find('[data-override="content"]').val() || ''
+  } else {
+    contentType = form.attr('enctype') || form.attr('encoding')
+
+    if (contentType === 'multipart/form-data') {
+      if (!window.FormData) {
+        alert('Your browser does not support AJAX multipart form submissions');
+        return;
+      }
+
+      // Use the FormData API and allow the content type to be set automatically,
+      // so it includes the boundary string.
+      // See https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects
+      contentType = false;
+      data = new FormData(form[0]);
+    } else {
+      contentType = 'application/x-www-form-urlencoded; charset=UTF-8'
+      data = form.serialize();
+    }
+  }
+
+  var ret = $.ajax({
+    url: url,
+    method: method,
+    data: data,
+    contentType: contentType,
+    processData: false,
+    headers: {
+      'Accept': 'text/html; q=1.0, */*'
+    },
+  });
+
+  ret.always(function(data, textStatus, jqXHR) {
+    if (textStatus != 'success') {
+      jqXHR = data;
+    }
+
+    var responseContentType = jqXHR.getResponseHeader("content-type") || "";
+
+    if (responseContentType.toLowerCase().indexOf('text/html') === 0) {
+      replaceDocument(jqXHR.responseText);
+
+      try {
+        // Modify the location and scroll to top, as if after page load.
+        history.replaceState({}, '', url);
+        scroll(0, 0);
+      } catch (err) {
+        // History API not supported, so redirect.
+        window.location = url;
+      }
+    } else {
+      // Not HTML content. We can't open this directly, so redirect.
+      window.location = url;
+    }
+  });
+
+  return ret;
+}
+
+function captureSubmittingElement(e) {
+  var target = e.target;
+  var form = this;
+
+  form.clk = target;
+}
+
+$.fn.ajaxForm = function() {
+  var options = {}
+
+  return this
+    .unbind('submit.form-plugin  click.form-plugin')
+    .bind('submit.form-plugin', options, doAjaxSubmit)
+    .bind('click.form-plugin', options, captureSubmittingElement);
+};
diff --git a/www/web/static/rest_framework/js/bootstrap.min.js b/www/web/static/rest_framework/js/bootstrap.min.js
new file mode 100644
index 0000000..9bcd2fc
--- /dev/null
+++ b/www/web/static/rest_framework/js/bootstrap.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){document===a.target||this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element&&e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);if(this.$element.trigger(g),!g.isDefaultPrevented())return f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=window.SVGElement&&c instanceof window.SVGElement,g=d?{top:0,left:0}:f?null:b.offset(),h={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},i=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,h,i,g)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){
+this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e<c&&"top";if("bottom"==this.affixed)return null!=c?!(e+this.unpin<=f.top)&&"bottom":!(e+g<=a-d)&&"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&e<=c?"top":null!=d&&i+j>=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
\ No newline at end of file
diff --git a/www/web/static/rest_framework/js/csrf.js b/www/web/static/rest_framework/js/csrf.js
new file mode 100644
index 0000000..f8ab442
--- /dev/null
+++ b/www/web/static/rest_framework/js/csrf.js
@@ -0,0 +1,52 @@
+function getCookie(name) {
+  var cookieValue = null;
+
+  if (document.cookie && document.cookie != '') {
+    var cookies = document.cookie.split(';');
+
+    for (var i = 0; i < cookies.length; i++) {
+      var cookie = jQuery.trim(cookies[i]);
+
+      // Does this cookie string begin with the name we want?
+      if (cookie.substring(0, name.length + 1) == (name + '=')) {
+        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
+        break;
+      }
+    }
+  }
+
+  return cookieValue;
+}
+
+function csrfSafeMethod(method) {
+  // these HTTP methods do not require CSRF protection
+  return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
+}
+
+function sameOrigin(url) {
+  // test that a given url is a same-origin URL
+  // url could be relative or scheme relative or absolute
+  var host = document.location.host; // host + port
+  var protocol = document.location.protocol;
+  var sr_origin = '//' + host;
+  var origin = protocol + sr_origin;
+
+  // Allow absolute or scheme relative URLs to same origin
+  return (url == origin || url.slice(0, origin.length + 1) == origin + '/') ||
+    (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + '/') ||
+    // or any other URL that isn't scheme relative or absolute i.e relative.
+    !(/^(\/\/|http:|https:).*/.test(url));
+}
+
+var csrftoken = getCookie(window.drf.csrfCookieName);
+
+$.ajaxSetup({
+  beforeSend: function(xhr, settings) {
+    if (!csrfSafeMethod(settings.type) && sameOrigin(settings.url)) {
+      // Send the token to same-origin, relative URLs only.
+      // Send the token only if the method warrants CSRF protection
+      // Using the CSRFToken value acquired earlier
+      xhr.setRequestHeader("X-CSRFToken", csrftoken);
+    }
+  }
+});
diff --git a/www/web/static/rest_framework/js/default.js b/www/web/static/rest_framework/js/default.js
new file mode 100644
index 0000000..d8394b0
--- /dev/null
+++ b/www/web/static/rest_framework/js/default.js
@@ -0,0 +1,47 @@
+$(document).ready(function() {
+  // JSON highlighting.
+  prettyPrint();
+
+  // Bootstrap tooltips.
+  $('.js-tooltip').tooltip({
+    delay: 1000,
+    container: 'body'
+  });
+
+  // Deal with rounded tab styling after tab clicks.
+  $('a[data-toggle="tab"]:first').on('shown', function(e) {
+    $(e.target).parents('.tabbable').addClass('first-tab-active');
+  });
+
+  $('a[data-toggle="tab"]:not(:first)').on('shown', function(e) {
+    $(e.target).parents('.tabbable').removeClass('first-tab-active');
+  });
+
+  $('a[data-toggle="tab"]').click(function() {
+    document.cookie = "tabstyle=" + this.name + "; path=/";
+  });
+
+  // Store tab preference in cookies & display appropriate tab on load.
+  var selectedTab = null;
+  var selectedTabName = getCookie('tabstyle');
+
+  if (selectedTabName) {
+    selectedTabName = selectedTabName.replace(/[^a-z-]/g, '');
+  }
+
+  if (selectedTabName) {
+    selectedTab = $('.form-switcher a[name=' + selectedTabName + ']');
+  }
+
+  if (selectedTab && selectedTab.length > 0) {
+    // Display whichever tab is selected.
+    selectedTab.tab('show');
+  } else {
+    // If no tab selected, display rightmost tab.
+    $('.form-switcher a:first').tab('show');
+  }
+
+  $(window).load(function() {
+    $('#errorModal').modal('show');
+  });
+});
diff --git a/www/web/static/rest_framework/js/jquery-1.12.4.min.js b/www/web/static/rest_framework/js/jquery-1.12.4.min.js
new file mode 100644
index 0000000..e836475
--- /dev/null
+++ b/www/web/static/rest_framework/js/jquery-1.12.4.min.js
@@ -0,0 +1,5 @@
+/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0;
+}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}}),function(){var a;l.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,e;return c=d.getElementsByTagName("body")[0],c&&c.style?(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(d.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(e),a):void 0}}();var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),V=["Top","Right","Bottom","Left"],W=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function X(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&U.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var Y=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)Y(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/<tbody/i;function ia(a){Z.test(a.type)&&(a.defaultChecked=a.checked)}function ja(a,b,c,d,e){for(var f,g,h,i,j,k,m,o=a.length,p=ca(b),q=[],r=0;o>r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?"<table>"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ma.test(f)?this.mouseHooks:la.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=g.srcElement||d),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,h.filter?h.filter(a,g):a},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button,h=b.fromElement;return null==a.pageX&&null!=b.clientX&&(e=a.target.ownerDocument||d,f=e.documentElement,c=e.body,a.pageX=b.clientX+(f&&f.scrollLeft||c&&c.scrollLeft||0)-(f&&f.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(f&&f.scrollTop||c&&c.scrollTop||0)-(f&&f.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?b.toElement:h),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ra()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ra()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=d.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)}:function(a,b,c){var d="on"+b;a.detachEvent&&("undefined"==typeof a[d]&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?pa:qa):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:qa,isPropagationStopped:qa,isImmediatePropagationStopped:qa,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=pa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=pa,a&&!this.isSimulated&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=pa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submit||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?n.prop(b,"form"):void 0;c&&!n._data(c,"submit")&&(n.event.add(c,"submit._submit",function(a){a._submitBubble=!0}),n._data(c,"submit",!0))})},postDispatch:function(a){a._submitBubble&&(delete a._submitBubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.change||(n.event.special.change={setup:function(){return ka.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._justChanged=!0)}),n.event.add(this,"click._change",function(a){this._justChanged&&!a.isTrigger&&(this._justChanged=!1),n.event.simulate("change",this,a)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;ka.test(b.nodeName)&&!n._data(b,"change")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a)}),n._data(b,"change",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!ka.test(this.nodeName)}}),l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d){return sa(this,a,b,c,d)},one:function(a,b,c,d){return sa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=qa),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ta=/ jQuery\d+="(?:null|\d+)"/g,ua=new RegExp("<(?:"+ba+")[\\s/>]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/<script|<style|<link/i,xa=/checked\s*(?:[^=]|=\s*.checked.)/i,ya=/^true\/(.*)/,za=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ja[0].contentWindow||Ja[0].contentDocument).document,b.write(),b.close(),c=La(a,b),Ja.detach()),Ka[a]=c),c}var Na=/^margin/,Oa=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Pa=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Qa=d.documentElement;!function(){var b,c,e,f,g,h,i=d.createElement("div"),j=d.createElement("div");if(j.style){j.style.cssText="float:left;opacity:.5",l.opacity="0.5"===j.style.opacity,l.cssFloat=!!j.style.cssFloat,j.style.backgroundClip="content-box",j.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===j.style.backgroundClip,i=d.createElement("div"),i.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",j.innerHTML="",i.appendChild(j),l.boxSizing=""===j.style.boxSizing||""===j.style.MozBoxSizing||""===j.style.WebkitBoxSizing,n.extend(l,{reliableHiddenOffsets:function(){return null==b&&k(),f},boxSizingReliable:function(){return null==b&&k(),e},pixelMarginRight:function(){return null==b&&k(),c},pixelPosition:function(){return null==b&&k(),b},reliableMarginRight:function(){return null==b&&k(),g},reliableMarginLeft:function(){return null==b&&k(),h}});function k(){var k,l,m=d.documentElement;m.appendChild(i),j.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",b=e=h=!1,c=g=!0,a.getComputedStyle&&(l=a.getComputedStyle(j),b="1%"!==(l||{}).top,h="2px"===(l||{}).marginLeft,e="4px"===(l||{width:"4px"}).width,j.style.marginRight="50%",c="4px"===(l||{marginRight:"4px"}).marginRight,k=j.appendChild(d.createElement("div")),k.style.cssText=j.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",k.style.marginRight=k.style.width="0",j.style.width="1px",g=!parseFloat((a.getComputedStyle(k)||{}).marginRight),j.removeChild(k)),j.style.display="none",f=0===j.getClientRects().length,f&&(j.style.display="",j.innerHTML="<table><tr><td></td><td>t</td></tr></table>",j.childNodes[0].style.borderCollapse="separate",k=j.getElementsByTagName("td"),k[0].style.cssText="margin:0;border:0;padding:0;display:none",f=0===k[0].offsetHeight,f&&(k[0].style.display="",k[1].style.display="none",f=0===k[0].offsetHeight)),m.removeChild(i)}}}();var Ra,Sa,Ta=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ra=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Oa.test(g)&&Na.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0===g?g:g+""}):Qa.currentStyle&&(Ra=function(a){return a.currentStyle},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Oa.test(g)&&!Ta.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Ua(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Va=/alpha\([^)]*\)/i,Wa=/opacity\s*=\s*([^)]*)/i,Xa=/^(none|table(?!-c[ea]).+)/,Ya=new RegExp("^("+T+")(.*)$","i"),Za={position:"absolute",visibility:"hidden",display:"block"},$a={letterSpacing:"0",fontWeight:"400"},_a=["Webkit","O","Moz","ms"],ab=d.createElement("div").style;function bb(a){if(a in ab)return a;var b=a.charAt(0).toUpperCase()+a.slice(1),c=_a.length;while(c--)if(a=_a[c]+b,a in ab)return a}function cb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&W(d)&&(f[g]=n._data(d,"olddisplay",Ma(d.nodeName)))):(e=W(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function db(a,b,c){var d=Ya.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function eb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+V[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+V[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+V[f]+"Width",!0,e))):(g+=n.css(a,"padding"+V[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+V[f]+"Width",!0,e)));return g}function fb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ra(a),g=l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Sa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Oa.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+eb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Sa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=U.exec(c))&&e[1]&&(c=X(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Sa(a,b,d)),"normal"===f&&b in $a&&(f=$a[b]),""===c||c?(e=parseFloat(f),c===!0||isFinite(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Xa.test(n.css(a,"display"))&&0===a.offsetWidth?Pa(a,Za,function(){return fb(a,b,d)}):fb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return db(a,c,d?eb(a,b,d,l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Wa.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Va,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Va.test(f)?f.replace(Va,e):f+" "+e)}}),n.cssHooks.marginRight=Ua(l.reliableMarginRight,function(a,b){return b?Pa(a,{display:"inline-block"},Sa,[a,"marginRight"]):void 0}),n.cssHooks.marginLeft=Ua(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Sa(a,"marginLeft"))||(n.contains(a.ownerDocument,a)?a.getBoundingClientRect().left-Pa(a,{
+marginLeft:0},function(){return a.getBoundingClientRect().left}):0))+"px":void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+V[d]+b]=f[d]||f[d-2]||f[0];return e}},Na.test(a)||(n.cssHooks[a+b].set=db)}),n.fn.extend({css:function(a,b){return Y(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ra(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return cb(this,!0)},hide:function(){return cb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){W(this)?n(this).show():n(this).hide()})}});function gb(a,b,c,d,e){return new gb.prototype.init(a,b,c,d,e)}n.Tween=gb,gb.prototype={constructor:gb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=gb.propHooks[this.prop];return a&&a.get?a.get(this):gb.propHooks._default.get(this)},run:function(a){var b,c=gb.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):gb.propHooks._default.set(this),this}},gb.prototype.init.prototype=gb.prototype,gb.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},gb.propHooks.scrollTop=gb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=gb.prototype.init,n.fx.step={};var hb,ib,jb=/^(?:toggle|show|hide)$/,kb=/queueHooks$/;function lb(){return a.setTimeout(function(){hb=void 0}),hb=n.now()}function mb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=V[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function nb(a,b,c){for(var d,e=(qb.tweeners[b]||[]).concat(qb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ob(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&W(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k="none"===j?n._data(a,"olddisplay")||Ma(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==Ma(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],jb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(o))"inline"===("none"===j?Ma(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=nb(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function pb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function qb(a,b,c){var d,e,f=0,g=qb.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=hb||lb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:hb||lb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(pb(k,j.opts.specialEasing);g>f;f++)if(d=qb.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,nb,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(qb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return X(c.elem,a,U.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],qb.tweeners[c]=qb.tweeners[c]||[],qb.tweeners[c].unshift(b)},prefilters:[ob],prefilter:function(a,b){b?qb.prefilters.unshift(a):qb.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(W).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=qb(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&kb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(mb(b,!0),a,d,e)}}),n.each({slideDown:mb("show"),slideUp:mb("hide"),slideToggle:mb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(hb=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),hb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ib||(ib=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(ib),ib=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a,b=d.createElement("input"),c=d.createElement("div"),e=d.createElement("select"),f=e.appendChild(d.createElement("option"));c=d.createElement("div"),c.setAttribute("className","t"),c.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],b.setAttribute("type","checkbox"),c.appendChild(b),a=c.getElementsByTagName("a")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==c.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=f.selected,l.enctype=!!d.createElement("form").enctype,e.disabled=!0,l.optDisabled=!f.disabled,b=d.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value}();var rb=/\r/g,sb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(sb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>-1)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var tb,ub,vb=n.expr.attrHandle,wb=/^(?:checked|selected)$/i,xb=l.getSetAttribute,yb=l.input;n.fn.extend({attr:function(a,b){return Y(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ub:tb)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?yb&&xb||!wb.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(xb?c:d)}}),ub={set:function(a,b,c){return b===!1?n.removeAttr(a,c):yb&&xb||!wb.test(c)?a.setAttribute(!xb&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=vb[b]||n.find.attr;yb&&xb||!wb.test(b)?vb[b]=function(a,b,d){var e,f;return d||(f=vb[b],vb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,vb[b]=f),e}:vb[b]=function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),yb&&xb||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):tb&&tb.set(a,b,c)}}),xb||(tb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},vb.id=vb.name=vb.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:tb.set},n.attrHooks.contenteditable={set:function(a,b,c){tb.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var zb=/^(?:input|select|textarea|button|object)$/i,Ab=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return Y(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):zb.test(a.nodeName)||Ab.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var Bb=/[\t\r\n\f]/g;function Cb(a){return n.attr(a,"class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,Cb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,Cb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,Cb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=Cb(this),b&&n._data(this,"__className__",b),n.attr(this,"class",b||a===!1?"":n._data(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+Cb(c)+" ").replace(Bb," ").indexOf(b)>-1)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Db=a.location,Eb=n.now(),Fb=/\?/,Gb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(Gb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new a.DOMParser,c=d.parseFromString(b,"text/xml")):(c=new a.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var Hb=/#.*$/,Ib=/([?&])_=[^&]*/,Jb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Kb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Lb=/^(?:GET|HEAD)$/,Mb=/^\/\//,Nb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ob={},Pb={},Qb="*/".concat("*"),Rb=Db.href,Sb=Nb.exec(Rb.toLowerCase())||[];function Tb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Ub(a,b,c,d){var e={},f=a===Pb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Vb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Wb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Xb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Rb,type:"GET",isLocal:Kb.test(Sb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Qb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Vb(Vb(a,n.ajaxSettings),b):Vb(n.ajaxSettings,a)},ajaxPrefilter:Tb(Ob),ajaxTransport:Tb(Pb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var d,e,f,g,h,i,j,k,l=n.ajaxSetup({},c),m=l.context||l,o=l.context&&(m.nodeType||m.jquery)?n(m):n.event,p=n.Deferred(),q=n.Callbacks("once memory"),r=l.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!k){k={};while(b=Jb.exec(g))k[b[1].toLowerCase()]=b[2]}b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return j&&j.abort(b),y(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,l.url=((b||l.url||Rb)+"").replace(Hb,"").replace(Mb,Sb[1]+"//"),l.type=c.method||c.type||l.method||l.type,l.dataTypes=n.trim(l.dataType||"*").toLowerCase().match(G)||[""],null==l.crossDomain&&(d=Nb.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Sb[1]&&d[2]===Sb[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Sb[3]||("http:"===Sb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=n.param(l.data,l.traditional)),Ub(Ob,l,c,w),2===u)return w;i=n.event&&l.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Lb.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Fb.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Ib.test(f)?f.replace(Ib,"$1_="+Eb++):f+(Fb.test(f)?"&":"?")+"_="+Eb++)),l.ifModified&&(n.lastModified[f]&&w.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&w.setRequestHeader("If-None-Match",n.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",l.contentType),w.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Qb+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)w.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,w,l)===!1||2===u))return w.abort();v="abort";for(e in{success:1,error:1,complete:1})w[e](l[e]);if(j=Ub(Pb,l,c,w)){if(w.readyState=1,i&&o.trigger("ajaxSend",[w,l]),2===u)return w;l.async&&l.timeout>0&&(h=a.setTimeout(function(){w.abort("timeout")},l.timeout));try{u=1,j.send(s,y)}catch(x){if(!(2>u))throw x;y(-1,x)}}else y(-1,"No Transport");function y(b,c,d,e){var k,s,t,v,x,y=c;2!==u&&(u=2,h&&a.clearTimeout(h),j=void 0,g=e||"",w.readyState=b>0?4:0,k=b>=200&&300>b||304===b,d&&(v=Wb(l,w,d)),v=Xb(l,v,w,k),k?(l.ifModified&&(x=w.getResponseHeader("Last-Modified"),x&&(n.lastModified[f]=x),x=w.getResponseHeader("etag"),x&&(n.etag[f]=x)),204===b||"HEAD"===l.type?y="nocontent":304===b?y="notmodified":(y=v.state,s=v.data,t=v.error,k=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),w.status=b,w.statusText=(c||y)+"",k?p.resolveWith(m,[s,y,w]):p.rejectWith(m,[w,y,t]),w.statusCode(r),r=void 0,i&&o.trigger(k?"ajaxSuccess":"ajaxError",[w,l,k?s:t]),q.fireWith(m,[w,y]),i&&(o.trigger("ajaxComplete",[w,l]),--n.active||n.event.trigger("ajaxStop")))}return w},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}});function Yb(a){return a.style&&a.style.display||n.css(a,"display")}function Zb(a){if(!n.contains(a.ownerDocument||d,a))return!0;while(a&&1===a.nodeType){if("none"===Yb(a)||"hidden"===a.type)return!0;a=a.parentNode}return!1}n.expr.filters.hidden=function(a){return l.reliableHiddenOffsets()?a.offsetWidth<=0&&a.offsetHeight<=0&&!a.getClientRects().length:Zb(a)},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var $b=/%20/g,_b=/\[\]$/,ac=/\r?\n/g,bc=/^(?:submit|button|image|reset|file)$/i,cc=/^(?:input|select|textarea|keygen)/i;function dc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||_b.test(a)?d(a,e):dc(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)dc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)dc(c,a[c],b,e);return d.join("&").replace($b,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&cc.test(this.nodeName)&&!bc.test(a)&&(this.checked||!Z.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(ac,"\r\n")}}):{name:b.name,value:c.replace(ac,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return this.isLocal?ic():d.documentMode>8?hc():/^(get|post|head|put|delete|options)$/i.test(this.type)&&hc()||ic()}:hc;var ec=0,fc={},gc=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in fc)fc[a](void 0,!0)}),l.cors=!!gc&&"withCredentials"in gc,gc=l.ajax=!!gc,gc&&n.ajaxTransport(function(b){if(!b.crossDomain||l.cors){var c;return{send:function(d,e){var f,g=b.xhr(),h=++ec;if(g.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(f in b.xhrFields)g[f]=b.xhrFields[f];b.mimeType&&g.overrideMimeType&&g.overrideMimeType(b.mimeType),b.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");for(f in d)void 0!==d[f]&&g.setRequestHeader(f,d[f]+"");g.send(b.hasContent&&b.data||null),c=function(a,d){var f,i,j;if(c&&(d||4===g.readyState))if(delete fc[h],c=void 0,g.onreadystatechange=n.noop,d)4!==g.readyState&&g.abort();else{j={},f=g.status,"string"==typeof g.responseText&&(j.text=g.responseText);try{i=g.statusText}catch(k){i=""}f||!b.isLocal||b.crossDomain?1223===f&&(f=204):f=j.text?200:404}j&&e(f,i,j,g.getAllResponseHeaders())},b.async?4===g.readyState?a.setTimeout(c):g.onreadystatechange=fc[h]=c:c()},abort:function(){c&&c(void 0,!0)}}}});function hc(){try{return new a.XMLHttpRequest}catch(b){}}function ic(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=d.head||n("head")[0]||d.documentElement;return{send:function(e,f){b=d.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||f(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var jc=[],kc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=jc.pop()||n.expando+"_"+Eb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(kc.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&kc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(kc,"$1"+e):b.jsonp!==!1&&(b.url+=(Fb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,jc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ja([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var lc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&lc)return lc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h,a.length)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function mc(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?("undefined"!=typeof e.getBoundingClientRect&&(d=e.getBoundingClientRect()),c=mc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Qa})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return Y(this,function(a,d,e){var f=mc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ua(l.pixelPosition,function(a,c){return c?(c=Sa(a,b),Oa.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({
+padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Y(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=oc),b&&a.jQuery===n&&(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n});
diff --git a/www/web/static/rest_framework/js/prettify-min.js b/www/web/static/rest_framework/js/prettify-min.js
new file mode 100644
index 0000000..eef5ad7
--- /dev/null
+++ b/www/web/static/rest_framework/js/prettify-min.js
@@ -0,0 +1,28 @@
+var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
+(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a=
+[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a);for(c=0;c<
+f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\\"===j.charAt(0)&&
+(j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l=!1;break}}for(var r=
+{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+=g.length,
+t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b===
+"string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),
+l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
+q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/,
+q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,
+"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a),
+a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}
+for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute("value",
+m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}function E(a){var m=
+a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.nodeValue=
+j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
+"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
+H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
+J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
+I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),
+["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",
+/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),
+["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
+hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g),f,b;if(b=
+!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m,
+250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",
+PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();
diff --git a/web/templates/base.html b/www/web/templates/base.html
similarity index 100%
rename from web/templates/base.html
rename to www/web/templates/base.html
diff --git a/web/templates/licenses/bootstrap.txt b/www/web/templates/licenses/bootstrap.txt
similarity index 100%
rename from web/templates/licenses/bootstrap.txt
rename to www/web/templates/licenses/bootstrap.txt
diff --git a/web/templates/licenses/chart_js.txt b/www/web/templates/licenses/chart_js.txt
similarity index 100%
rename from web/templates/licenses/chart_js.txt
rename to www/web/templates/licenses/chart_js.txt
diff --git a/web/templates/licenses/django.txt b/www/web/templates/licenses/django.txt
similarity index 100%
rename from web/templates/licenses/django.txt
rename to www/web/templates/licenses/django.txt
diff --git a/web/templates/licenses/gplv2.txt b/www/web/templates/licenses/gplv2.txt
similarity index 100%
rename from web/templates/licenses/gplv2.txt
rename to www/web/templates/licenses/gplv2.txt
diff --git a/web/templates/media/chart_js/.gitignore b/www/web/templates/media/chart_js/.gitignore
similarity index 100%
rename from web/templates/media/chart_js/.gitignore
rename to www/web/templates/media/chart_js/.gitignore
diff --git a/web/templates/media/chart_js/.travis.yml b/www/web/templates/media/chart_js/.travis.yml
similarity index 100%
rename from web/templates/media/chart_js/.travis.yml
rename to www/web/templates/media/chart_js/.travis.yml
diff --git a/web/templates/media/chart_js/LICENSE b/www/web/templates/media/chart_js/LICENSE
similarity index 100%
rename from web/templates/media/chart_js/LICENSE
rename to www/web/templates/media/chart_js/LICENSE
diff --git a/web/templates/media/chart_js/README.md b/www/web/templates/media/chart_js/README.md
similarity index 100%
rename from web/templates/media/chart_js/README.md
rename to www/web/templates/media/chart_js/README.md
diff --git a/web/templates/media/chart_js/css/demo.css b/www/web/templates/media/chart_js/css/demo.css
similarity index 100%
rename from web/templates/media/chart_js/css/demo.css
rename to www/web/templates/media/chart_js/css/demo.css
diff --git a/web/templates/media/chart_js/index.html b/www/web/templates/media/chart_js/index.html
similarity index 100%
rename from web/templates/media/chart_js/index.html
rename to www/web/templates/media/chart_js/index.html
diff --git a/web/templates/media/chart_js/src/demo.js b/www/web/templates/media/chart_js/src/demo.js
similarity index 100%
rename from web/templates/media/chart_js/src/demo.js
rename to www/web/templates/media/chart_js/src/demo.js
diff --git a/web/templates/media/chart_js/src/legend.js b/www/web/templates/media/chart_js/src/legend.js
similarity index 100%
rename from web/templates/media/chart_js/src/legend.js
rename to www/web/templates/media/chart_js/src/legend.js
diff --git a/web/templates/media/chart_js/src/legend.legacy.js b/www/web/templates/media/chart_js/src/legend.legacy.js
similarity index 100%
rename from web/templates/media/chart_js/src/legend.legacy.js
rename to www/web/templates/media/chart_js/src/legend.legacy.js
diff --git a/web/templates/media/chart_js/vendor/Chart.js b/www/web/templates/media/chart_js/vendor/Chart.js
similarity index 100%
rename from web/templates/media/chart_js/vendor/Chart.js
rename to www/web/templates/media/chart_js/vendor/Chart.js
diff --git a/web/templates/media/css/bootstrap-theme.css b/www/web/templates/media/css/bootstrap-theme.css
similarity index 100%
rename from web/templates/media/css/bootstrap-theme.css
rename to www/web/templates/media/css/bootstrap-theme.css
diff --git a/web/templates/media/css/bootstrap-theme.css.map b/www/web/templates/media/css/bootstrap-theme.css.map
similarity index 100%
rename from web/templates/media/css/bootstrap-theme.css.map
rename to www/web/templates/media/css/bootstrap-theme.css.map
diff --git a/web/templates/media/css/bootstrap-theme.min.css b/www/web/templates/media/css/bootstrap-theme.min.css
similarity index 100%
rename from web/templates/media/css/bootstrap-theme.min.css
rename to www/web/templates/media/css/bootstrap-theme.min.css
diff --git a/web/templates/media/css/bootstrap.css b/www/web/templates/media/css/bootstrap.css
similarity index 100%
rename from web/templates/media/css/bootstrap.css
rename to www/web/templates/media/css/bootstrap.css
diff --git a/web/templates/media/css/bootstrap.css.map b/www/web/templates/media/css/bootstrap.css.map
similarity index 100%
rename from web/templates/media/css/bootstrap.css.map
rename to www/web/templates/media/css/bootstrap.css.map
diff --git a/web/templates/media/css/bootstrap.min.css b/www/web/templates/media/css/bootstrap.min.css
similarity index 100%
rename from web/templates/media/css/bootstrap.min.css
rename to www/web/templates/media/css/bootstrap.min.css
diff --git a/web/templates/media/django_logo.gif b/www/web/templates/media/django_logo.gif
similarity index 100%
rename from web/templates/media/django_logo.gif
rename to www/web/templates/media/django_logo.gif
diff --git a/www/web/templates/media/fonts/glyphicons-halflings-regular.eot b/www/web/templates/media/fonts/glyphicons-halflings-regular.eot
new file mode 100644
index 0000000000000000000000000000000000000000..b93a4953fff68df523aa7656497ee339d6026d64
GIT binary patch
literal 20127
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

literal 0
HcmV?d00001

diff --git a/www/web/templates/media/fonts/glyphicons-halflings-regular.svg b/www/web/templates/media/fonts/glyphicons-halflings-regular.svg
new file mode 100644
index 0000000..94fb549
--- /dev/null
+++ b/www/web/templates/media/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,288 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="400" />
+<glyph unicode=" " />
+<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
+<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
+<glyph unicode="&#x2000;" horiz-adv-x="650" />
+<glyph unicode="&#x2001;" horiz-adv-x="1300" />
+<glyph unicode="&#x2002;" horiz-adv-x="650" />
+<glyph unicode="&#x2003;" horiz-adv-x="1300" />
+<glyph unicode="&#x2004;" horiz-adv-x="433" />
+<glyph unicode="&#x2005;" horiz-adv-x="325" />
+<glyph unicode="&#x2006;" horiz-adv-x="216" />
+<glyph unicode="&#x2007;" horiz-adv-x="216" />
+<glyph unicode="&#x2008;" horiz-adv-x="162" />
+<glyph unicode="&#x2009;" horiz-adv-x="260" />
+<glyph unicode="&#x200a;" horiz-adv-x="72" />
+<glyph unicode="&#x202f;" horiz-adv-x="260" />
+<glyph unicode="&#x205f;" horiz-adv-x="325" />
+<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
+<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
+<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
+<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
+<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
+<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
+<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
+<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
+<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
+<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
+<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
+<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
+<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
+<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
+<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
+<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
+<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
+<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
+<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
+<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
+<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
+<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
+<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
+<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
+<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
+<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
+<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
+<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
+<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
+<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
+<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
+<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
+<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
+<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
+<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
+<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
+<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
+<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
+<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
+<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
+<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
+<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
+<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
+<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
+<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
+<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
+<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
+<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
+<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
+<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
+<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
+<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
+<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
+<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
+<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
+<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
+<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
+<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
+<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
+<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
+<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
+<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
+<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
+<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
+<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
+<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
+<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
+<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
+<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
+<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
+<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
+<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
+<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
+<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
+<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
+<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
+<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
+<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
+<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
+<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
+<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
+<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
+<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
+<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
+<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
+<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
+<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
+<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
+<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
+<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
+<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
+<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
+<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
+<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
+<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
+<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
+<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
+<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
+<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
+<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
+<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
+<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
+<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
+<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
+<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
+<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
+<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
+<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
+<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
+<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
+<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
+<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
+<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
+<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
+<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
+<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
+<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
+<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
+<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
+<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
+<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
+<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
+<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
+<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
+<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
+<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
+<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
+<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
+<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
+<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
+<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
+<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
+<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
+<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
+<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
+<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
+<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
+<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
+<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
+<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
+<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
+<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
+<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
+<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
+<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
+<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
+<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
+<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
+<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
+<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
+<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
+<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
+<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
+<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
+<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
+<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
+<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
+<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
+<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
+<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
+<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
+<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
+<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
+<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
+<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
+<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
+<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
+<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
+<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
+<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
+<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
+<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
+<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git a/www/web/templates/media/fonts/glyphicons-halflings-regular.ttf b/www/web/templates/media/fonts/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b
GIT binary patch
literal 45404
zcmd?Sd0-pWwLh*qi$?oCk~i6sWlOeWJC3|4juU5JNSu9hSVACzERcmjLV&P^utNzg
zIE4Kr1=5g!SxTX#Ern9_%4<u(w1q<J@CsjEOL>&01rlrW`<y$HCCf?Z+y45=o|!u{
zcjlhEoqP5%FoVJ1G+bj44I8ITTQqxJ-LCg=WdK{*^eI!Pu_*@0U|>Z!56xXTGQR4C
z3vR~wXq>NDx$c~e?;ia3YjJ*$!C>69a?2$lLyhpI!C<oCzO?F`i#HxWjyD@jE}WZI
zU3l5~SDy9q1|;#myS}~pymONB?2*4U816rW`)#Xn!7@d1<NOHDt5&bOWb2!+g;p30
z4<NsI$%PwMp0nZD-M=sx9=^?B5SrGVvvng|Yryk+==sq4bJm^rO#Q?6;T&}k_iWs7
z@g?8i`(dlW@aQ!LgXLG3o_Fr~uM{nsXD~dq2>FfJsP=|`8@K0|bbMpWwVU<h#k=?&
z2hLD3ege)J^J9<Jz!_dI-O6?vWP>Eygg0=0x_)HeHpGSJagJNLA3c!$EuOV>j$wi!
zbo{vZ(s8tl>@!?}dmNHXo)ABy7ohD7_1G-P@SdJWT8*oeyB<gVy2N^Mz8Y_p4K;?4
zVT9pf!y_R}Xk_T@(1FkoDm{_X>VYVW9*vn}&VI4q++W;Z+uz=QTK}^C75!`aFYCX#
zf7fC2;o`%!huaTNJAB&VWrx=szU=VLhwnbT`vc<#<`4WI6n_x@AofA~2d90o?1L3w
z9!I|#P*NQ)$#9aASijuw>JRld^-t)Zhmy|i-`Iam|IWkgu<LN>aMR%lhi4p~cX-9&
zjfbx}yz}s`4-6>D^+6FzihR)Y!GsUy=_MWi_v7y#KmYi-{iZ+s@ekkq!<s)V`@Q^L
z`rY8W#qWgQ@xJ2-1w&;af5?RzOBGthmla=B{I%lG6(3e?tJqSpv0`mSvSMY$Srtnw
z=2y(Bm|8KV{P*SWmH)c@?ebrg|GfOw@*kDIQ2vZb)ms;}`oI6t>@Wxz!~BQwiI&ti
z>hC&iBe2m(dpNVvSbZe3DVgl(dxHt-k@{xv;&`^c8GJY%&^LpM;}7)B;5Qg5J^E${
z7z~k8eWOucjX6)7q1a%EVtmnND8cclz8R1=X4W@D8IDeUGXxEWe&p>Z*voO0u_2!!
zj3dT(Ki+4E;uykKi*yr?w6!BW2FD55PD6SMj`OfBLwXL5EA-9KjpMo4*5Eqs^>4&>
z8PezAcn!9jk-h-Oo!E9EjX8W6@EkTHeI<@AY{f|5fMW<-Ez-z)xCvW3()Z#x0oydB
zzm4MzY^NdpIF9qMp-jU;99LjlgY@@s+=z`}_%V*xV7nRV*Kwrx-i`FzI0BZ#yOI8#
z!SDeNA5b6u9!Imj89v0(g$;dT_y|Yz!3V`i{{_dez8U@##|X9<u78GO6Sj7w|BmAX
zYy>A};s^7vEd!3AcdyVlhVk$v?$O442KIM1-wX^R{U7`JW&lPr3N(%kXfXT_`7w^?
z=#ntx`tTF|N$UT?pELvw7T*2;=Q-x@KmDUIbLyXZ>f5=y7z1DT<7>Bp0k;eItHF?1
zErzhlD2B$Tm|^7DrxnTYm-tgg`Mt4Eivp5{r$o9e)8(fXBO4g|G^6Xy?y$SM*&V52
z6SR*%`%DZC^w(gOWQL?6DRoI*hBNT)xW9sxvmi@!vI^!mI$3kvAMmR_q#SGn3zRb_
zGe$=;Tv3dXN~9XuIHow*NEU4y&u}FcZEZoSlXb9IBOA}!@J3uov<cnLsMTt5KB)Lj
zYZXCxu;1bqjH18<x269<Tv%)JD-Sv?wUz&5KB?<}@bC!>p}yerhPMaiI8|SDhvWVr
z^BE&yx6e3&RYqIg;mYVZ*3#A-cDJ;#ms4txEmwm<RofF(aiZ;^6Sh1kbq&8p87Q}2
z)<!HT6VUck^|BOZR8X4U*lI4NmphK3T)k;q2UF1)TE2tD(Oq%0w%C5uBAc|kj54!X
zjK;0TBFmM`n@u^bcUhg<U$UozsV%ZmyUQe7juv~qZStAE?UA}H^b(uR^svd6<ohSA
zPN(&WybCrXyU=981ISP9mNdxHZPF8l4xGdT{y?OqQH)eNL?x_*jVgBKQggghY;ER4
z2ZJLPNi?@5u<K+P9v^?cajfyXk(LSV0q=;>@g^s`BB}KmSr7K+ruIoKs=s|gOXP|2
zb1!)87h9?(+1^QRWb(Vo8+@G=o24gyuzF3ytfsKjTHZJ}o{YznGcTDm!s)DRnmOX}
z3pPL4wExoN$kyc2>#J`k+<67sy-VsfbQ-1u+HkyFR?9G`9r6g4*8!(!c65Be-5hUg
zZHY$M0k(Yd+DT1*8)G(q)1<YNpB7js)5y12Eq7a-+TSy$n{z4WbFWWmXqX`NmQ;<8
z&#kMnTCG)e^Wqb#OY{bR(&}(pp3G}-_B)F+rS(l(vS<RecZ%(lx`adE6b#<MA*v6|
zqhg4L;6Ok2!XZ8=`3{3lFr+}jevG<T8z$m4n8_pfbf#&K;T~jROxF%RXK8L@N{?d!
z)#u0D$E0^47cxZAeVEjp$RK_kRO2h>&tDl=g9H7!bZTOvEEFnBOk_K=DXF(d4JOaH
zI}*A3jGmy{gR>s}EQzyJa_q_?TYPNXR<v?#Pfy-SGCMD6($H@d06+dYtCwDuCKCO`
zfTh}KuF@>U1O;fcV_&TQZhd{@*8Tgpraf~nT0BYktu*n{a~ub^UUqQPyr~yBY{k2O
zgV)honv{B_CqY|*S~3up%Wn%7i*_>Lu|%5~j)}rQLT1ZN?5%QN`LTJ}vA!EE=1`So
z!$$Mv?6T)xk)H8JTrZ~m)oNXxS}pwPd#);<*>zWsYoL6iK!gRSBB{JCgB28C#E{T?
z5VOCMW^;h~eMke(w6vLlKvm!!TyIf;k*RtK)|Q>_@nY#J%=h%aVb)?Ni_By)X<wQw
z7V$PDEtth$n$E;Ll`Y4%BO_9n-ugy!JpHdGlaMf3-bFSa<&`Z$)FNx2;bGa5ewQ9G
znS9p(JK$Y-8V}<ibr6q#cKkEx`_lIfW`o_}!WDwa=VY;jm&MFX_KN*c$8NiQ<*(1K
zOz-}+aK2WdJ+of=zJ0eN>NxY)E3`|}_u}fn+Kp^3p4RbhFUBRtGsDyx9Eolg77iWN
z2iH-}CiM!pfYDIn7;i#Ui1KG01{3D<{e}uWTdlX4Vr*nsb^>l0%{O?0L9tP|KGw8w
z+T5F}md>3qDZQ_IVkQ|BzuN08uN?SsVt$~wcHO4pB9~ykFTJO3g<4X({-Tm1w{Ufo
zI03<6KK`ZjqVyQ(>{_aMxu7Zm^ck&~)Q84MOsQ-XS~{6j>0lTl@lMtfWjj;PT{nlZ
zIn0YL?kK7CYJa)(8?unZ)j8L(O}%$5S#lTcq{rr5_gqqtZ@*0Yw4}OdjL*kBv+>+@
z&*24U=y{Nl<J@lPNofl42dq;77(U?JMya(0Crr4x>58qJyW1vTwqsvs=VRAzojm&V
zEn6=WzdL1y+^}%Vg!ap>x%%nFi=V#wn#<ZJY+2YKgUZIdddsj}x<a~(_z&i7iw6j~
zD6-dYj8)6VXu?|^ZEI$`u2WRyTK0%)bZh&!D^9oe9c{ncschFCaT|SNh@Ip0Y7e<>
zUuheBR@*<muvvX<=P{exAmqKj@)RY=k${p2#1fI%*ObNn_Svg5fBeeKm;N;8<i#ex
z@xiUPeR$hjC=hitVD9x2{{y_iS9U^gG9f@6f6&^Vs3zp5qf?=KTW@F7W@hJ`ZBCj<
zPCXs%#Cv+T9c^4a%MvhtBnK>KS)5Mn0`f=3fMwR|#-rPMQJg(fW*5e`7xO&^UUH<N
z8S{R+VU}U8VWDBEjsa+<a|A}qi`v{;%PNhy=5G#TrE#}Jn{iFX7S1~=;h}j7?-Paq
zPz1GeaZ=ceNsUv?a;Nj+<UmnU3}yC*^X?4%XYRVxg{MEFholmVGnq^}E!rMBWy|R_
zg)925;70bcj_+u_rTSN(=HrLgwiaEHUwf>{L(U8D$JtI!ac!g(Ze89<`UiO@L+)^D
zjPk2_Ie0p~4|LiI?-+pHXuRaZKG$%zVT0jn!yTvvM^jlcp`|VSHRt-G@_&~<4&qW@
z?b#zIN)G(}L|60jer*P7#KCu*Af;{mpWWvYK$@Squ|n-Vtfgr@<WJYami@2Z&u=;5
z5Vc}@3ijIdgOz2E{1ewt+&m|4loMa2;l_ZQ>ZOmR5Xpl;0q~VILmjk$$mgp+`<2jP
z@+nW5Oap%fF4nFwnVwR7rpFaOdmnfB$-rkO6T3#w^|*rft~acgCP|ZkgA6PHD#Of|
zY%E!3tXtsWS`udLsE7cSE8g@p$ceu*tI71V31uA7jwmXUCT7+Cu3uv|W>ZwD<C#<5
zr)TgUn*z=?aQx5GtI}?)S=9!TmC))*YbR(2eeE2+a>{&O4Nfjjvl43N#A$|FWxId!
z%=X!HSiQ-#4nS&smww~iXRn<-`&zc)nR~js?|Ei-cei$^$KsqtxNDZvl1oavXK#Pz
zT&%Wln^Y5M95w=vJxj0a-ko_iQt(LTX_5x#*QfQLtPil;kkR|kz}`*xHiLWr35ajx
zHRL-QQv$|PK-$ges|NHw8k6v?&d;{A$*q15hz9{}-`e6ys1EQ1oNNKDFGQ0xA!x^(
zkG*-ueZT(GukSnK&Bs=4+w|(kuWs5V_2#3`!;f}q?>xU5IgoMl^DNf+Xd<=sl2<ov
zdi9d6DbT*4=K1<NxE2(`@^$C>XvkqviJ>d?+G@Z5nxxd5Sqd$*ENUB_mb8Z+7CyyU
zA6mDQ&e+S~w49csl*UePzY;^K)Fbs^%?7;+hFc(xz#mWoek4_&QvmT7Fe)*{h-9R4
zqyXuN5{)HdQ6yVi#tRUO#M%;pL>rQxN~6yoZ)*{{!?jU)RD*oOxDoTjVh6iNmhWNC
zB5_{R=o{qvxEvi(k<Br-9y#p7E~9amU@sQujU02m+%O6`wmyB;RZm|f_25ZIu`sWx
z9Z!xjMn{xa)<lh?>hbRS`FOXmOO|&Dj$&~><!ER!M(aXh<Y=PO>*oo)bZz%lPhEA@
zQ;;w5eu5^%i;)w?T&*=UaK?*|U3~{0tC`rvfEsRPgR~16;~{_S2&=E{fE2=c>{+y}
zx1*NTv-*zO^px5TA|B```#NetKg`19O!BK*-#~wDM@KEllk^nfQ2quy25G%)l72<>
zzL$^{DDM#jKt?<>m;!?E2p0l12`j+QJjr{Lx*47Nq(v6i3M&*P{jkZB{xR?NOSPN%
zU>I+~d_ny=pX??qjF*E78>}Mgts@_yn`)C`wN-He_!OyE+gRI?-a>Om>Vh~3OX5+&
z6MX*d1`SkdXwvb7KH&=31RCC|&H!aA1g_=ZY0hP)-Wm6?A7SG0*|$mC7N^SSBh@MG
z9?V0tv_sE>X==yV{)^LsygK2=$Mo_0N!JCOU?r}rmWdHD%$h~~G3;bt`lH&<YttXG
zCx4~x@x7rvSlVC8c4`|@!#-B8ZKS<EH?nhD1$CFfEvQA7q3vKKC(B@*EPV@^RffeA
zqF7{q<g?nf7wl2mS$#hW3X3?XI^l_=xWmcuOlQEQZFITVPFH}vOiW=uH41qNTB4w>
zAuOOZ=G1Mih**0>lB5x+r)X^8mz!0K{SScj4|a=s^VhUEp#2M=^#WRqe?T&H9GnWa
zYOq{+gBn9Q0e0*Zu>C(BAX=I-Af9wIFhCW6_>TsIH$d>|{fIrs&BX?2G>GvFc=<8`
zVJ`#^knMU~65dWGgXcht`Kb>{V2oo%<{NK|iH+<q(5YAazG9MX#mAntl?z6uydZjo
zUFklHM_4M@0HYVoyB8BtKlWH`xbBg99hUSZMa9}uddMW%i`jRIi-g-Oj+Dcyby^(`
z%RQFN&dOf4Ittp8bTTLHYY;pny(Y2BDO&N?wA-C_6&0Pd?aun4t;+U8o0V7xD{xVE
zT_xFkLYF;IV~uA~NIx^oe`|Ag_zBH%@tGSHD~4^4RZ^~BcP(EUF`avIGk5b#Qq_%$
zWYy4>R^|Gx%q+env#Js*(EBT3V0=w4F@W+oLFsA)l7Qy8mx_;6Vrk;F2RjKFvmeq}
zro&>@b^(?f))OoQ#^#s)tRL>b0gzhRYRG}EU%wr9GjQ#~Rpo|RSkeik^p9x2<p!Ww
zwwmq`!~oDTY^~4nP7mqhE1&11QI*f_7OwLIc0Sdl0He@3A$?sO|G#_xO5%4jys!Au
zz!P*LF2Fu*;<$-+ZxX4HAsc@9KfXGYIspZeD-?_4;Ohrd$nih9sE;A+xh%Yxa|I;O
zMn43xybbA$h%OeU78ZAGUa0jg*n))`>+=rUr}vfnQoeFAlv=oX%YqbLpvyvcZ3l$B
z5bo;hDd(fjT;9o7g9xUg3|#?wU2#BJ0G&W1#wn?mfNR{O7bq74<ru+<wkuK7q*HuJ
zl3ikW@`O=kCFAR2we{1>7tc~mM%m%t+7YN}^tMa24O4@w<|$lk@pGx!;%pKiq&mZB
z?3h<&w>un8r?Xua6(@Txu~Za9tI@|C4#!dmHMzDF_-_~Jolztm=e)@vG11b<LZFLt
z=a@d3MJ-E4hYQZxA3y&6-j%$UZvUfp^pCgm<jTEuP^)mszD-y$n3Q&{-23}Wv_2Y8
ztp4g>ZQAs!tFvd9{C;oxC7VfWq377Y(LR^X_TyX9bn$)I765l=rJ%9uXcjggX*r?u
zk|0!db_*1$&i8>d&G3C}A`{Fun_1J;Vx0gk7P_}8KBZDowr*8$@X?W<UwWy2E;b%8
zDnv;u#sg4V5Tml=Bw6)GO(a6bm@pXL5;t*}iEhY9Zim8L-OM$RpsE=-)J6=6)|MD4
z8{19*DSK107+0Kbw2EdWh!twa9HVGLVmN$BX1?}c?!DT~m@%MuO{=cju@-!?UnaO{
z9Q;H&SNsH&+9*iqK+))0P{pW#u+IR2<&dC||BFzIuVKjDIAwxj0gQDf!MLF#VHC`D
zN_zXShCf+#K4Io(-dXedBI4SOK2y)rryrPZ_8G(S4~O-`iR!5u^?GLIlD&{}so=+h
zoX&5625-D!az-|Zx~ma2tVY~n7Eznkush<8w1#D9lj%>6v^LYmNWI)lN92yQ;tDpN
zOUdS-W4JZUjwF-X#w0r;97;i(l}ZZT$DRd4u#?pf^e2<Tp(F_Ylx9mIONs=GDOR7J
z!s@{!h&%A8Er}aMdD0mk#s%bH^(p8HL6l-6iKJ%JY$!?VLmDqZL7D4xf%;gN>yaFo
zbm>I@5}#8FjsmigM8w_f#m4fEP<w>~r~_?OWB%SGWcn$ThnJ@Y`ZI-O&Qs#Y14To(
zWAl>9Gw7#}eT(!c%D0m>5D8**a@h;sLW=6_AsT5v1Sd_T-C4pgu_kvc?7+X&n_fct
znkHy(_LExh=N%o3I-q#f$F4<wlfSnZ{aNtlaHgD*%*;+!if9}xbu`<To}#^Vl2QkO
z7|r$zhjK8GE;uJ+566KrGlUndEl83;o70s<D1jcM$y_hC&+<$#S-_D`DMkXCs6&Ja
zX$kb)3d(TSz&8E5_#CeAoC7l{hxp54WI)}a6Fq*MuVt{GA?j6in~9$1>QJpy>jZBW
zRF7?EhqTGk)w&Koi}QQY3sVh?@e-Z3C9)P!(hMhxmX<?O%M-wa0Dx5a@<^0#9_>LC
zF_+ZSTQU`Gqx@o<HpS{<a}-BAGy@<S0>(~<vXHshk{*j+nj`s1+omT#^krl>B$dbr
zHlEUKoK&`2gl>zKXlEi8w6}`X3kh3as1~sX5@^`X_nYl}hlbpeeVlj#2sv)CIMe%b
zBs7f|37f8qq}gA~Is9gj&=te^wN8ma?;vF)7gce;&sZ64!7LqpR!fy)?4cEZposQ8
zf;rZF7Q>YM<qvPX@rO5R|G8xB*d=47F5FbX>F1~eQ|Z*!5j0DuA=`~VG$Gg6B?Om1
z6fM@`Ck-K*k(eJ)Kvysb8sccsFf@7~3vfnC=<$q+VNv)FyVh6ZsWw}*vs>%k3$)9|
zR9ek-@pA23qswe1io)(Vz!vS1o*XEN*LhVYOq#T`;rDkgt86T@O`23xW~;W_#ZS|x
zvwx-XMb7_!hIte-#JNpFxskMMpo2OYhHRr0Yn8d^(jh3-+!CNs0K2B!1dL$9UuAD=
zQ%7Ae(Y@}%Cd~!`h|wAdm$2WoZ(iA1(a_-1?znZ%8h72o&Mm*4x8Ta<4++;Yr6|}u
zW<lfR&2thZ%arCCv7^XWW_6jB>8$p&izhdqF=m8$)HyS2J6cKyo;Yvb>DTfx4`4R{
zPSODe9E|uflE<`xTO=r>u~u=NuyB&H!(2a8vwh!jP!yfE3N>IiO1<sg)|!DAM%5V4
zImfj?oZv3;y3AIvb^=HU^uh7(X5<6aoUeyP2Mi=23DNrjwj6G-I5MpbGBBkQgLzRx
z_Qg%sVsEslI2A80hOod<S>jI>7e&3rR#RO3_}G23W?gwDHgSg<QXM9d4Lsp5W&)6?
zY*roO0w$UqxC4|r(Er$DV(2l9h4At3N_U`+Ukis<fpRRCK>ekzQ^PU&G5z&}V5GO?
zfg#*72*$DP1T8i`S7=P;bQ8lYF9_@8^C(|;9v8ZaK2GnWz4$Th2a0$)XTiaxNWfdq
z;yNi9veH<s@9We549w!!z+8C$Xr3bE8Io{iV0-^0*Z((QCVLd1<H5EqJokRheRd?M
z=9-#Ba=FG%;bgG2sZn!v5}(U9c2N6|uSx2-^nZJN<Y38%>!j)ba$9pke8`y2^63BP
zIyYKj^7;2don3se!P&%I2jzFf|LA&tQ=NDs{r9fIi-F{-yiG-}@2`VR^-LIFN8BC4
z&?*<A2U+2yvz#~5iMlAv#&#x?J%g>IvLiGHH5>NY(Z^CL_A;yISNdq58}=u~9!Ia7
zm7MkDiK~lsfLpvmPMo!0$keA$`%Tm`>Fx9JpG^EfEb(;}%5}B4Dw!O3BCkf$$W-dF
z$BupUPgLpHvr<<+QcNX*w@+Rz&VQz)Uh!j4|DYeKm5IC05T$KqVV3Y|MSXom+Jn8c
zgUEaFW1McGi^44xoG*b0JWE4T`vka7qTo#dcS4RauUpE{O!ZQ?r=-MlY#;VBzhHGU
zS@kCaZ*H73XX6~HtHd*4qr2h}Pf0Re@!WOyvres_9l2!AhPiV$@O2sX>$21)-3i+_
z*sHO4Ika^!&2utZ@5%VbpH(m2wE3qOPn-I5Tbnt&yn9{k*eMr3^u6zG-~PSr(w$p>
zw)x^a*8Ru$PE+{&)%VQUvAKKiWiwvc{`|GqK2K|ZMy^Tv3g|zENL86z7i<<vQD<>c
zW`W>zV1u}X%P;Ajn+>A)2iXZbJ5YB_r>K-h5g^N=LkN^h0Y6dPFfSBh(L`G$D%7c`
z&0RXDv$}c7#w*7!x^LUes_|V*=bd&aP+KFi((tG<uj&`TKbvJwt*s;^z;4Ys<BrXj
zUcC9nsnf4nJ}oNAV^;23Huc6W7jNCNGp&VZZ68xTF&1%{6q~EkQlv<(iM7j~voh3C
z@5k4r3!z`C;}lPV?5N1<S*Q-j1No*l<5(hps4yh~OUMfaqfZSw{1(}GVOnN8<B1ow
zokS3`Befl=7x!u#A9>*gakSR+FA26%{QJdB5G1F=UuU&koU*^zQA=cEN9}Vd?OEh|
zgzbFf1?@LlPkcXH$;YZe`WEJ3si6&R2MRb}LYK&zK9WRD=kY-JMPUurX-t4(Wy{%`
zZ@0WM2+IqPa9D(^*+MXw2NWwSX-_WdF0nMWpEhAyotIgqu5Y$wA=<qv3s0%`78x7-
z!YG+vXM)||6z({8VoMOb>zfuXJ0Y2lL3#ji26-P3Z?-&0^KBc*`T$+8+cqp`%g0WB
zTH9L)FZ&t073H4?t=(U6{8B+uRW_J_n*vW|p`DugT^3xe8Tomh^d}0k^G7$3wLgP&
zn)vTWiMA&=bR8lX9H=uh4G04R6>C&Zjnx_f@MMY!6HK5v$T%vaFm;E8q=`w2Y}ucJ
zkz~dKGqv9$E80NTtnx|Rf_)|3wxpnY6nh3U9<)fv2-vhQ6v=WhKO@~@X57N-`7Ppc
zF;I7)eL?RN23FmGh0s<krvL@Zi`9X>;Z#+p)}-TgTJE%&>{W+}C`^-sy{gTm<$>rR
z-X7F%MB9Sf%6o7A%ZHReD4R;imU6<9h81{%avv}hqugeaf=~^3A=x(Om6Lku-Pn9i
zC;LP%Q7Xw*0`Kg1)X~nAsUfdV%HWrpr8dZRpd-#%)c#Fu^mqo|^b{9Mam`^Zw_@j@
zR&ZdBr3?@<@%4Z-%LT&RLgDUFs4a(CTah_5x4X`xDRugi#vI-cw*^{ncwMtA4N<n#
zKe-3R=W^+cuK>KjByYBza)Y$hozZCpuxL{IP&=tw6ZO52WY3|iwGf&IJCn+u(>icK
zZB1~bWXCmwAUz|^<&ysd#*!DSp8}DLNbl5lRFat4NkvItxy;9tpp9~<f);nGGD>|@
z;JctShv^Iq4(z+y7^j&I?GCdKMVg&jCwtCkc4*@O7HY*veGDBtAIn*JgD$QftP}8=
zxFAdF=(S>Ra6(4slk#h%b?EOU-96TIX$Jbfl*<nInof4ph4hK=1pB+w>_7IY-|R%H
zF8u|~hYS-YwWt5+^!uGcnKL~jM;)ObZ#q68ZkA?}CzV-%6_vPIdzh_wHT_$mM%<x2
zq&@Ugp@y3#qmCWN2c()zUb2i%NHytqe#*|FOc9=9=lm37FJ~XnjPaYV#gu{Rxk3h%
z6(mfsR@KE$kTrlhgn%DPo5HpDO0=1-df|X)k_Bt?_o11|zfG(qa-#Sl@L(<sfroJg
zk#3es02GuhOy#7gPL>vws9lxUj;E@#1UX?WO2R^41(X!nk$+2oJGr!sgcbn1f^yl1
z#pbPB&Bf;1&2+?};Jg5qgD1{4_|%X#s48rOLE!vx3@ktstyBsDQWwDz4GYlcgu$UJ
zp|z_32yN72T*oT$SF8<}>e;FN^X&vWNCz>b2W0rwK#<1#kbV)Cf`vN-F$&knLo5T&
z8!sO-*^x4=kJ$L&*h%rQ@49l?7_9IG99~xJDDil00<${~D&;kiqRQqeW5*22A`8I2
z(^@`qZoF7_`CO_e;8#qF!&g>UY;wD5MxWU>az<ULIsNY$DJI@Av_2K^yD6wo0kqHs
zV#M>oo=E{kW(GU#pbOi%XAn%?W{b>-bTt&2?G=E&BnK9m0zs{qr$*&g8afR_x`B~o
zd#dxPpaap;I=>1j8=9Oj)i}s@V}oXhP*{R|@DAQXzQJekJnmuQ;vL90_)H_nD1g6e
zS1H#dzg)U&6$fz0g%|jxDdz|FQN{KJ&Yx0vfuzAFewJjv`pdMRpY-wU`-Y6WQnJ(@
zGVb!-8DRJZvHnRFiR3PG3Tu^nCn(CcZHh7hQvyd7i6Q3&ot86XI{jo%WZqCPcTR0<
zMRg$ZE=PQx66ovJDvI_JChN~k@L^Pyxv#?X^<)-TS5gk`M~d<~j%!UOWG;ZMi1af<
z+86U0=sm!qAVJAIqqU`Qs1uJhQJA&n@9F1PUrYuW!-~IT>l$I!#5dB<cfvg5VibV&
zDqvU$KKCo4v0yI;auEcF&ZcvUE7}qhEUthMrKK<ZZorlPhfA2o9*2RG_C6<ZwD)23
zgbU<ugZCNmzTNu!GMX!>aiAK}RUufjg{$#GdQBkxF1=KU2E@N=i^;xgG2Y4|{H>s`
z$<vvU|F(3Nv^%2-!)gt%bV2|xrF9!>t`k8c-8`fS7Yfb1FM#)vPKVE4Uf(Pk&%HLe
z%^4L>@Z^9Z{ZOX<^e)~adVRkKJDanJ6VBC_m@6qUq_WF<AGx+lu0P|(*RBdki}PPC
zR884Dd(Bf1Tr>@Epw>AYqf%r6qDzQ~AEJ<N!$QjqcKBS<-KzqABShp7@2HODUtuI-
zM1Hm0Vba1HggryAaeKKwP<qS1QZN90CS+8P%>!jtUvLp^CcqZ^G-;Kz3T;O4WG45Z
zFhrluCxlY`M+OKr2SeI697btH7Kj`O>A!+2DTEQ=48cR>Gg2^5uqp(+y5Sl09MRl*
zp|28!v*wvMd_~e2DdKDMMQ|({HMn3D%%ATEecGG8V9>`JeL)T0KG}=}6K8NiSN5W<
z79-ZdYWRUb`T}(b{RjN8>?M~opnSRl$$^gT`B27kMym5LNHu-k;A;VF8R(HtDYJHS
zU7;L{a@`>jd0svOYKbwzq+pWSC(C~SPgG~nWR3pBA8@OICK$Cy#U`kS$I;?|^-SBC
zBFkoO8Z^%8Fc-@X!KebF2Ob3%`8zlVHj6H;^(m7J35(_bS;cZPd}TY~qixY{MhykQ
zV&7u7s%E=?i`}Ax-7dB0ih47w*7!@GBt<*7ImM|_mYS|9_K7CH+i}?*#o~a&tF-?C
zlynEu1DmiAbGurEX2Flfy$wEVk7AU;`k#=IQE*6DMWafTL|9-vT0qs{A3mmZGzOyN
zcM9#Rgo7WgB_ujU+?Q@Ql?V-!E<ESfbH6cV^f<TVZZ6$j;;%C;F7k#%v)~#tDz@O9
zGjF`&rD{{KBD!Z>=jbypS+*ch<nT0vi*LE;jA`dwa7L|Pk{%Vkrl+;{Q+Icda+|DH
zxbX_5rMru~l@p?-nW}qiMdIwMuOHt$v$Z->I&zA+C_3_@aJal}!Q54?qsL0In({Ly
zjH;e+_SK8yi0NQB%TO+Dl77jp#2pMGtwsgaC>K!)NimXG3;m7y`W+&<(ZaV>N*K$j
zLL~I+6ouPk6_(iO>61cIsinx`5}DcKSaHjYkkMuDoVl>mKO<4$F<R}h5tU~DoQW2-
zb@mx6M$TIWS(5Azchs1S!C1Vg!dX-qRh*Tlox4o><>YJ5J9A2Vl}#BP7+u~L8C6~D
zsk`pZ$9Bz3teQS1Wb|8&c2SZ;qo<#F&gS;j`!~!ADr(jJXMtcDJ9cVi>&p3~{bqaP
zgo%s8i+8V{UrYTc9)HiUR_c?cfx{Yan2#%PqJ{%?Wux4J;T$#cumM0{Es3@$>}DJg
zqe*c8##t;X(<vs5F6*OK5RBh`;EMHg+sn$v%w2!Q1AFLXOj%hwP6VgZXe#dgvNr%C
zbK2>4$?A`ve)e@YU3d2Balcivot{1(ahlE5qg@S-h(mPNH&`pBX$_~HdG48~)$x5p
z{>ghzqqn_t8~pY<5?-To>cy^6o~mifr;KWvx_oMtXOw$$d6jddXG)V@a#lL4o%N@A
zNJlQAz6R8{7jax-kQsH6JU_u*En%k^NHlvBB!$JAK!cYmS)HkLAkm0*9G3!vwMIWv
zo#)+EamIJHEUV|$d|<)2iJ`lqBQLx;HgD}c3mRu{iK23C>G{0Mp1K)bt6OU?xC4!_
zZLqpFzeu&+>O1F>%g-%U^~yRg(-wSp@vmD-PT#bCWy!%&H;qT7rfuRCEgw67V!Qob
z&tvPU@*4*$YF#2_>M0(75QxqrJr3Tvh~iDeFhxl=MzV@(psx%G8|I{~9;tv#BBE`l
z3)_98eZqFNwEF1h)uqhBmT~mSmT8k$7vSHdR97K~kM)P9PuZdS;|Op4A?O<*%!?h`
zn`}r_j%xvffs46x2hCWuo0BfIQWCw9aKkH==#B(TJ%p}p-RuIVzsRlaPL_Co{&R0h
zQrqn=g1PGjQg3&sc2IlKG0Io#v%@p>tFwF)RG0ahYs@Zng6}M*d}Xua)+h&?$`%rb
z;>M=iMh5eIHuJ5c$aC`y@CYjbFsJnSPH&}LQz4}za9YjDuao>Z^EdL@%s<cic@|#d
zk`VYkAA1)5&zzBlUXwX>aRm&LGQWXs*;FzwN#p<?>H&j~SLhDZ+QzhplV_ij(NyMl
z;v|}a<m1KirP40Q9;?ZUGeiBO`6EQCP%m`AbDrv}WVxc|a9*xhB0zVg4PQB(Updr=
z()&PI0+wG1-G5cn-?{zrU(p$hh$VW4zkc`j%O6su+dqN;>mvxRddO81LJFa~2QFUs
z+<rMf(`FCeM}FJ^oJ6DQ^2{Nc9R`a9PEsYsk4d<kKA^opcC1pDZk0kh9^Gygk8>Lk
zZck)}9uK^buJNMo4G(rSdX{57(7&n=Q6$QZ@lIO9#<3pA2ceD<ex)Co(^yo~b^iS?
z-G6>pO_340B*pHlh_y{>i&c1?vdpN1j>3UN-;;Yq?P+V5oY`4Z(|P8SwWq<)<fz%B
zj)+x<OZ_gB*%c@YSI6p9w+Ydpc!Zcf$QEBFDuqEL6=PD@Pe~N@st{xMy+-n;*Mt~v
zmrteH;(NO63jTi5?DV@CF_fsL-w|T3X%De;sQHBB^9@P)Y{)Bp<max_sHiv=Y2ujB
z*Y0pN2vXRDgae#VLF1APpWP+=i6luTbXun4wCl7o-h=Gg-_V%L+$3>n`W@AwcQ?E9
zd5j8>FT^m=MHEWfN9jS}UHHsU`&SScib$qd0i=ky0>4dz5ADy70AeIuSzw#gHhQ_c
zOp1!v6qU<Kxjvk}u}KI}1IL4P)HQX%3Qy1||7)ACyj<$_yY^HUY1Qh86mASo5oGq6
zE#i-HjkgKyfR`wC1AzxilV;sCL6u<;DfJ$k2lHogcuG&96Y=9Dx08l3i%#>)@8MY+
zMNIID?(CysRc2uZQ$l*QZVY)$X?@4$VT^>djbugLQJdm^P>?51#lXBkdXglYm|4{L
zL%Sr?2f`J+xrcN@=0tiJt(<-=+v>tHy{XaGj7^cA6felUn_KPa?V4ebfq7~4i~GKE
zpm)e@1=E;PP%?`vK6KVPKXjUXyLS1^NbnQ&?z>epHCd+J$ktT1G&L~T)nQeExe;0Z
zlei}<<dHMjP`dMgT;)rz@KwnNqz2u#jL%!`ao{S@tM3IGYSeTv3Fk3tBkVZxLRlho
z@Yxs}5wdFIYX}Vx7;lNy5jfXGDv1)02|!y=K!RAWW@=@lh*MCQ(we#;x;&XaD>_ni
ztFo}j7nBl$)s_<W4is^tCJZEK$$)&HpdlqLPzQFWv`<{7GL_AD92F#&(|%OzJIbuy
z+Ol{_jn76nNgzuA>3odmdafVieFxc)m!wM+U`2u%yhJ90giFcU1`dR6BBTKc2cQ*d
zm-{?M&%(={<F~lIWhEX{d2;PTbK5UDb8+WLo7GcN=5=ow@4S4W$LOt!x3rG3C8mvr
z0>xYHy?VCx!ogr|4g5;V{2q(L?QzJGsirn~kWHU`l`rHiIrc-Nan!hR7zaLsPr4uR
zG{En&gaRK&B@lyWV@yfFpD_^&z>84~_0Rd!v(Nr%PJhFF_ci3D#ixf|(r@$igZiWw
za*qbXIJ_Hm4)TaQ=zW^g)FC6uvyO~Hg-#Z5Vsr<Zy{+LyD`h4YS(ghy#BfWzW^5Uo
zQ8PC9sjEJ4RGC&$F|HxuyK{woR4L3OZu<36tuvn9l2snS_;Y@J&z1A*lMO*_Ur`v=
zX;m?{v#RtbKP{_C_Pwp$oMe|?dH6}PAjk=@Y1ry|VVd(HV4<-(-0+OjB`EyB0T=kn
z(gB<B0#L(B#0`VW)>ybz6uOTF>Rq1($JS`imyNB7myWWpxYL(t7`H8*voI3Qz6mvm
z$JxtArLJ(1wlCO_te?L{>8YPzQ})xJlvc5wv8p7Z=HviPYB#^#_vGO#*`<0r%MR#u
zN_mV4vaBb2RwtoOYCw)X^>r{2a0kK|WyEYoBjGxcObFl&P*??)WEWKU*V~zG5o=s@
z;rc~uuQQf9wf)MYWsWgPR!wKGt6q;^8!cD_vxrG8GMoFGOVV=(J3w6Xk;}i)9(7*U
zwR4VkP_5Zx7wqn8%M8uDj4f1aP+vh1Wue&ry@h|wuN(D2W<Jk_Ub)RM4SgV&OId4;
zn2zn6!@5a6q<V@&t`j1NlR++Q;e@+-SbcuS)(a+|%YH!7_B%_B*R5T=?m|>;v6b1^
z`)7XBZ385zg;}&Pt@?dunQ=RduGRJn^9HLU&HaeUE_cA1{+oSIjmj3z+1YiOGiu-H
zf8u-oVnG%KfhB8H?cg%@#V5n+L$MO2F4>XoBjBeX>css^h}Omu#)ExTfUE^07KOQS
znMfQY2wz?!7!{*C^)aZ^UhMZf=TJNDv8VrrW;JJ9`=|L0`w9DE8MS>+o{f#{7}B4P
z{I34>342vLsP}o=ny1eZkEabr@niT5J2AhByUz&i3Ck0H*H`LRHz;>3C_ru!X+EhJ
z6(+(lI#4c`2{`q0o9aZhI|jRjBZOV~IA_km7ItNtUa(Wsr*Hmb;b4=;<J1?+^3A&j
zK3cnIJ@xJ)8})7lyFf5`owi5yu4lj04lY55Grhwxe6`Vjk5_%2h6Srm0%!Z7OTJgS
z7xk*fSj^YWvFa#^cCzaibaRR7wifomC%U_?eh_XL=5Hz83qQMDCary#^CqnoCok6y
z#aKY5h8k>R(gF@GmsRI`pF+0tmq0<eALkrdNz?_uQPl5L<ziG;l8G^BKV7-hN+!<*
z<qETgy|$oSZ328w$u~CVg?j38Ne8Nec!$^z3O9)SK=%x<?=HO#`R=(x+xbP_2n9~L
zA~@Y5=^p7G^ly*h(SjbX22XE{f_H~{EwlIe71&(CF%AC-KZ!PkfDiovb({chpQJjK
zFbjvUr>zy~wnoJD(<MLjh**JGO%zg$#8^?N-Q#VEMllAeBN{8Gkcp5385M+IP?10`
zKNJCQBzyb5Gta#5ZT-NK&Jkr}EY5LG-*{2<GI5k_E;Cjl{9Li(svK!m$F~O+U$JQS
zMZAi<dUJWWO0+lGoKxMN#+rIpvr}TmT8W9)5>LSEwHjT<no^?z{l8Hbtg<ND1Cr6K
z6#0!VQ^*}KTk66St&+e*u_9r$$-(;3c2C&lF^#Wti6x@NV{uFO48lerx@~U7EQm%~
zi8-wSrE-(Ma!Z+cdXdE^nH(<3+*mF-qjhezv`kVwaQ)pBtm+Jzn4-9>Ot4xb0XB-+
z&4RO{Snw4G%gS9w#uSUK$Zbb#=jxEl;}6&!b-rSY$0M4pftat-$Q)*y!bpx)R%P>8
zrB&`YEX2%+s#lFCIV;cUFUTIR$Gn2%F(3yLeiG8eG8&)+cpBlzx4)sK?>uIlH+$?2
z9q9wk5zY-xr_fzFSGxYp^KSY0s%1BhsI>ai2VAc8&JiwQ>3RRk?ITx!t~r45qsMnj
zkX4bl06ojFCMq<9l*4NHMAtIxDJOX)H=K*$NkkNG<^nl46<z}8DjmoX!f<;!=?S0X
zNm_qEi&;s|L9ptUk0h&55Ob{uhVekW1KY3{I#Svm7#;P3BE~;lg8EY6Q79rf(MCE=
zN8VGwjyg@p(Rvv6Qeo&vGBF~WTM7Tu+BS~CYXlw<;F93zrP+w<0f)nm=oOTD0XeL>
zHWH1GXb?Og1f0S+8-((5yaeegCT62&4N*pNQY;%asz9r9Lfr;@Bl${1@a4QA<GQZo
zHC=)78Wbo&u{ERGcuiNo;G#(z2^9z>vMLbV6JDp>8SO^q1)#(o%k!QiRSd0eTmzC<
zNIFWY5?)+JTl1Roi=nS4%@5iF+%XztpR^BSuM~DX9q`;Mv=+$M+GgE$_>o+~$#?*y
zAcD4nd~L~EsAjXV-+li6Lua4;(EFdi|M2qV53`^4|7gR8AJI;0Xb6QGLaYl1zr&eu
zH_vFUt+<?-wHx^jA;=HXzQKp_j)#`&591BSP(wIOS;Ce(17%gs%~hdM@>Ouf4SXA~
z&Hh8K@ms^`(hJfdicecj>J^Aqd00^ccqN!-f-!=N7C1?`4J+`_f^nV!B3Q^|fuU)7
z1NDNT04hd4QqE+qBP+>ZE7{v;n3OGN`->|lHjNL5w40pe<qclDY+ja_*(_95xs;%%
zq{v>PJ?^Y6bFk@^k%^5CXZ<+4qbOplxpe)l7c6m%o-l1oWmCx%c6@rx85hi(F=v(2
zJ$jN>?yPgU#DnbDXPkHLeQwED5)W5sH#<v%tu={Y=OlW2%;gK%O0*}OtgP0-W>-eS
z%#^4dxiVs{+q(Yd^ShMN3GH)!h!@W&N`$L!SbElXCuvnqh{U7lcCvHI#{ZjwnKvu~
zAeo7Pqot+Ohm{8|RJsTr3J4GjCy5UTo_u_~p)MS&Z5UrUc|+;Mc(YS+ju|m3Y_Dvt
zonVtpBWlM718YwaN3a3wUNqX;7TqvAFnVUoD5v5WTh~}r)KoLUDw%8Rrqso~bJqd>
z_T!&Rmr6ebpV^4|knJZ%qmzL;OvG3~A*loGY7?YS%hS{2R0%NQ@fRoEK52Aiu%gj(
z_7~a}eQUh8PnyI^J!>pxB(x7FeINHHC4zLDT`&C*XUpp@s0_B^!k5Uu)^j_uuu^T>
z8WW!QK0SgwFHTA%M!L`bl3h<zOXT*J6fe~c%_xb0$mxr#<2VD=$rO0L8nX7*#{Ksu
z$LONOvFCTfJN5XIapRVZlX}Y=<Lbb4!eHVHYIDPW9?-^*TjQ2+nH<TKdTCuE{W6Ky
z7>HjPp)|wL5Var_*A1-H8LV?uY5&ou{hRjj>#X@rxV>5<xG4RL_K~wL=!|H8*ZSVn
ze*QWuVl90vQ035NRw9cT+>%-9hbP+v?$4}3EfoRH;l_wSiz{&1<+`Y5%o%q~4<MOn
zEoNk8R4!uRxI3kmMnO0fow{Ibz3`A^4>rdpRF0jOsCoLnWY5x?V)0ga>CDo`NpqS)
z@x`mh1QGkx;f)p-n^*g5M^zRTHz%b2IkLBY{F+HsjrFC9_H(=9Z5W&Eymh~A_FUJ}
znhTc9KG((OnjFO=+q>JQZJbeOoUM77M{)$)qQMcxK9f;=L;IOv_J>*~w^YOW744QZ
zoG;!b9VD3ww}OX<8sZ0F##8hvfDP{hpa3HjaLsKbLJ8<m2C(MCx~x+Mo`}Jf7gdL>
z0WpY2E!w?&cWi7&N%bOMZD~o7QT*$xCRJ@{t31~qx~+0yYrLXubXh2{_L699Nl_pn
z6)9eu+uUTUdjHXYs#pX^L)AIb!FjjNsTp7C399w&B{Q4q%yKfmy}T2uQdU|1EpNcY
zDk~(h#AdxybjfzB+mg6rdU9mDZ^V>|U13Dl$Gj+pAL}lR2a1u!SJXU_YqP9N{ose4
zk+$v}BIHX60WSGVWv;S%zvHOWdDP(-ceo(<8`y@Goy%4wDu>57QZNJc)f>Ls+}9h7
z^N=#3q3|l?aG8K#HwiW2^PJu{v|x5;awYfahC?>_af3$LmMc4%N~JwVlRZa4c+eW2
zE!zosAjOv&UeCeu;Bn5OQUC=jtZjF;NDk9$fGbxf3d29SUBekX1<Pr@Tu%2mF`vob
zdsw;fW5J;CqD*)A#3k~8m#E~>!a$Vmq_VK*MHQ4)eB!dQrHH)LVYNF%-t8!d`@!cb
z2CsKs3|!}T^7fSZm?0dJ^JE`ZGxA&a!jC<>6_y67On0M)hd$m*RAzo_qM?aeqkm`*
zXpDYcc_>TFZYaC3JV>{>mp(5H^efu!Waa7hGTAts29jjuVd1vI*fEeB?A&uG<8dLZ
z(j6<v3j>;-%vJ7R0U9}XkH)1g>&uptXPHBEA*7PSO2TZ+dbhVxspNW~ZQT3fApz}2
z_@0-lZODcd>dLrYp!mHn4k>>7kibI!Em+Vh*;z}l?0qro=aJt68joCr5Jo(Vk<@i)
z5BCKb4p6Gdr9=JSf(2Mgr=_6}%4?SwhV+JZj3Ox^_^OrQk$B^v?e<VR4r!cUQcNa*
zLw&@@0{2I&$oQBHjs;Rdk`@6y1!<-(7NgjbFuEcwrG9}&Hy03(S??>Nz}d^xRaz&~
zKVnlLnK<O~>#8^y=If2f1zmb~^5lPLe?%l}>?~wN4IN((2~U{e9fKhLMtYFj)I$(y
zgnKv?R+ZpxA$f)Q2l=aqE6EPTK=i0sY&MDFJp!vQayyvzh4wee<}kybNthRlX>SHh
z7S}9he^EBOqzBCww^duHu!u+dnf9veG{HjW!}aT7aJqzze9K6-Z~8pZAgdm1n~aDs
z8_s7?WXMPJ3EPJHi}NL&d;lZP8hDhAXf5Hd!x|^kEHu`6QukXrVdLnq5zbI~oPo?7
z2Cbu8U?$K!Z4_yNM1a(bL!GRe!@{Qom+DxjrJ!B99qu5b*Ma%^&-=6UEbC+S2zX&=
zQ!%bgJTvmv^2}hhvNQg!l=kbapAgM^hruE3k@jTxsG(B6d=4thBC*4tzVpCYXFc$a
zeqgVB^zua)y-YjpiibCCdU%txXYeNFnXcbNj*D?~)5AGjL+!!ij_4{5EWKG<MLirH
z+DX^Dk(~hl-o)R17Ke7NBWBmGx0}_Yh*L{$3or|S`y{XU9=}stg7(?(^wZZS2Da%+
zWvCP|MzT2WK(<`aoEV!R1WAp-r%3{)SA=78<qFf;<rwNmD*Y*6(NUk(!LD}1(qHA3
z`=B=489M4KM^RxXd(tHgT%9X5Tjnh2mdXv4MCT5VYa7rd+N5ISRlSW}1lw5{(5L@K
zwzTh&rM#;2<;oP^LJod0{WsXpN5C{w?l*Jg>av0^={~M^q}baAFOPzxfUM>`KPf|G
z&hsaR*7(M6KzTj8Z?;45zX@L#xU{4n$9Q_<-ac(y4g~S|Hyp^-<*d8+P4NHe?~vfm
z@y309=`lGdvN8*jw-CL<;o#DKc-%lb0i9a3%{v&2X($|Qxv(_*()&=xD=5oBg=$B0
zU?41h9)JKvP0yR{KsHoC>&`(Uz>?_`tlLjw1&5tPH3FoB%}j;yffm$$s$C=<NH+_Q
zuVOy!BKDYAHt^L);tLou9Iw!KVrZ;__9lB4Qu}AkDaaH65g@R}lia;0J%u}*93`p?
zaeF={6)8oIBzH4kIggVAVvNSbROx-Z(+`hO*myDp7yv#WCwMIxk<hHjD5AkCV*KFy
z7uwrr!(roY4b(1>RHi`I3*m@%CPqWnP@B~%DEe;7ZT{9!IMTo1hT3Q347HJ&!)BM2
z3~aClf>aFh0_9||4G}(Npu`9xYY1*SD|M~9!CCFn{-J$u2&Dg*=5$_nozpoD2nxqq
zB!--eA8UWZlcEDp4r#vhZ6|vq^9sFvRnA9HpHch5Mq4*T)oGbruj!U8Lx_G%Lby}o
zTQ-_4A7b)5A42vA0U}hUJq6&wQ0J%$`w#ph!EGmW96)@{AUx>q6E>-r^Emk!iCR+X
zdIaNH`$}7%57D1FyTccs3}Aq0<0Ei{`=S7*>pyg=Kv3nrqblqZcpsCWSQl^uMSsdj
zYzh73?6th$c~CI0>%5@!Ej`o)Xm38u0fp9=HE@Sa6l2<mw_Yh7ly>oX9^^4|Aq%GA
z3(AbFR9gA_2T2i%Ck5V<FfGDt5jFr`inQh;1&EJ*>2Q2WW-(a&(j#@l6wE4Z`xg#S
za#-UWUpU2U!TmIo`CN0JwG^>{+V#9;z<j+vge|-bMmFe5eQtw=$jBe&1J+DLGhNXR
zVF0LJkT6h0B8nsw@>vx;ztc$}@NlcyJr?q(Y`UdW6qhq!aWyB5xV1#Jb{I-ghFNO0
z<gP-h@3s4i1u==>FU~+QgPs{FY1AbiU&S$QSix>*rqYVma<-~s%ALhFyVhAYepId1
zs!gOB&weC18yhE-v6ltKZMV|>JwTX+X)Y_EI(Ff^3$WTD|Ea-1HlP;6L~&40Q&5{0
z$e$2KhUgH8ucMJxJV#M%cs!d~#hR^nRwk|uuCSf6irJCkSyI<%CR==tftx6d%;?ef
zYIcjZrP@APzbtOeUe>m-TW}c-ugh+U*RbL1eIY{?>@8aW9bb1NGRy@MTse@>=<ra>
za%;5=U}X%K2tKTYe9gjMcBvX%qrC&uZ`d(t)g)X8snf?vBe3H%d<Ke$F$Z0AGpq$L
zh*N9G{;KEPa}gmeOBNBk0zORp;`+VU|1_04|4V$bCz(R~xePApA?YFdZU$CR63IbQ
z2Pq2(THUz7SlMWdHOdM19(SYTR)^7j>G=b<Uy4X-FL@RBUeVq-s%!3f=Wp$pdFiyc
z*UH5I+~YQSU-pf1Z~4Z+d0X6)<0i*Q_Z}vh)KKf>l^rv8Z@YN$gd9yveHY0@Wt0$s
zh^7jCp(q+6XDoekb;=%y=Wr8%<!i<hjG`j2f#)CHoE%?oHV1t_^966$UcQ|tMEj_Y
z^Dp_?#syJ7V{9Es?J3v}f}pPx{87yPa7|66#gbBs#7ePJ{bo_oH&rCWA~hx1V^t$U
z+8@1TWfn_Z`;{~9gC9mv?eoQ*Y-C)rhp|}dc#r5_J0yspKw$C`a}OGKQh(E&3WUik
z4AxbHbeGhXO7DYJ7=8m!=+Sj-HxJCb*@hx`<Q?E73ZqASI|ZO4gQX;PgpcX_I2dEP
z4PzF^;fhXQ)40w{k(P#>6;z0ANH5dDR_VudDG|&_lYykJaiR+(y{zpR=qL3|2e${8
z2V<U){GkH!99$-?(vZQ6`9xYUH;m>;?jgHj7}Kl(d8C9xWRjhpf_)KOXl+@c4wrHy
zL3#9U(`=N59og2KqVh>nK~g9>fX*PI0`>i;;b6K<iTA=O-~d|1@8nQW|764_gHT9A
z+Jdw)Cus?cfv_Gsi;gF31B#4DZ2^Yn1Wk~wI*LZ!hnDLnI_*R~z#5pH4R3KO1Ir1F
zNQX5wC;<FU(7pj+t&{Y#h#K(_6=WtrHj4aPX$5uUHjT;c(e}35?V4?SZCg90+pyx(
z`_R8jCQe*LR*{P)PNV>F|8zg+k2hViCt}4dfMdvb1NJ-Rfa7vL2;lPK{Lq*u`JT>S
zoM_bZ_?UY6oV6Ja14X^;LqJPl+w?vf*C!nGK;uU^0GRN|UeFF@;H(Hgp8x^|;ygh?
zIZx3DuO(lD01ksanR@Mn#lti=p28RTNYY6yK={RMFiVd~k8!@a&^jicZ&rxD3CCI!
zVb=fI?;c#f{K4Pp2lnb8iF2mig)|6JEmU86Y%l}m>(VnI*Bj`a6qk8QL&~PFDxI8b
z2mcsQBe9$q`Q$LfG2wdvK`M1}7?SwLAV&)nO;kAk`SAz%x9CDVHVbUd$O(*aI@D|s
zLxJW7W(QeGpQY<$dSD6U$ja(;Hb3{Zx@)*fIQaW{8<$KJ&fS0caI2Py^clOq9@Irt
z7th7F?7W`j{&UmM==Lo~T&^R7A?G=K_e-zfTX|)i`pLitlNE(~tq*}sS1x2}Jlul6
z5+r#4SpQu8h{ntIv#qCVH`uG~+I8l+7ZG&d`Dm!+(rZQDV*1LS^WfH%-!5aTAxry~
z4xl&rot5ct{xQ$w$MtVTUi6tBFSJWq2Rj@?HAX1H$eL*fk{Hq;E`x|hghRkipYNyt
zKCO=*KSziiVk|+)qQCGrTYH9X!Z0$k{Nde~0Wl`P{}ca%nv<6fnYw^<s*I^w2}g4)
zDT(2xL%uqsByOSZ61tavt7O>~9dYxTnTZB&&962jX0DM&wy&8fdxX8xeHSe=UU&Mq
zRTaUKnQO|A>E#|PUo+F=Q@dMdt`P*6e92za(TH{5C*2I2S~p?~O@hYiT>1(n^Lqqn
zqewq3ctA<T{c@#lWCZ$(!d{cN7=2we77Yx!0ew~Gx<3;vHo@;Z=)<i6dXzL;AY|z|
zQh^P>A%0E)r53*P-a8Ak32mGtUG`L^WVcm`QovX`ecB4E9X60wrA(6NZ7z~*_DV_e
z8$I*eZ8m=WtChE{#QzeyHpZ%7GwFHlwo2*tAuloI-j2exx3#x7EL^&D;Re|Kj-XT-
zt9<G*I5j~YwPM=zQc<-<5T)`?p=k3wJ6%=B%=d_@HDXhwqg3ij6<6Gneq}IMRsO?+
zZ$ux+&=>08^soV2`7s+Hha!d^#J+B)0-`{qIF_x=B811SZlbUe%kvPce^xu7?LY|C
z@f1gRPha1j<g?ml{#gpkD^O$XNTr0o(I;d;h4uA8LjteITT`#--;T+ZYX+t7g{&jY
z%jLmo;U5!e_41&}2`Y3PtJNiOtyHYGC;e`w)XqI9cfa-k)QH;zlhbma7)pQ1mZ#s9
zrt1Z7OQrg>q|=f}Se)}v-7MWH9)YAs*FJ&v3ZT9TSi?e#jarin0tjPNmxZNU_JFJG
z+tZi!q)JP|4pQ)?l8$hRaPeoKf!3>MM-bp06RodLa*wD=g3)@pYJ^*YrwSIO!SaZo
zDTb!G9d!hb%Y0QdYxqNSCT5o0I!GDD$Z@N!8J3eI@@0AiJmD7brkvF!pJGg_AiJ1I
zO^^cKe`w$DsO|1#^_|`6XTfw6E3SJ(agG*G9qj?JiqFSL|6tSD6vUwK?Cwr~gg)Do
zp@$D~7~66-=p4`!!UzJDKAymb!!R(}%O?Uel|rMH>OpRGINALtg%gpg`=}M^Q#V5(
zMgJY&gF)+;`e38QHI*c%B}m94o&tOfae;<xSoo%JWgt|4OsWqBge(0MrWCl{^{1qR
z$9kiQL{yp=)4GQGI_Jm5&g#GDTYcGhkauMJQ(qfM)1pg_a_8YpGwNbwNKp#T3-1@6
z|CjTBM~_fXe$Rs`cJE+v;7^0eysLT1ugyST5y-lLQ?!t5I+r@})qno};JoRD-E=Xi
zX_8OynCqNAP{M@6q0{1lA$fd7YVYB^B3HOC?;KS&skUZdpr&?G*{Dvo9Hf%gnd2O9
zvFCA)Qg13bH?d=3bMwL-iMgPupd}c_KuUy2B!UeZUr<=BIK|YBv?yV$q58*?!w_CK
zhp}K1=StAQ6{?zIqvi9mLesqVm&dX(9+AzcRVtrMpZ;{ErIyVQpVYzYVcvn6%u9m3
zENe?2g{r;1I%;x<{deB!54%lK?QVcb%q|Y(3&@xG42;qPh~(~r6ouOokrhp}g_Byo
zKp4yiKG~E3?*xr!?^(OHXYKbID@Vk%L$MJN?dLjF_FD?rZRr8zTic`kxqVF61s8OU
zY1cLlYqVUOIkCpn>og&!J2;6ENW}QeL7<PXg{yny8O<B+-%z=8!`{k@uZK?dU2tpL
zoDCc1bk4tH!`>3jatbI1*9X~y=$Dm%6FwDcnCyMRL<PZ=`4kP-O>}zo`0=y7=}*Uw
zo3!qZncAL{HCgY!+}eKr{P8o27ye+;qJP;kOB%RpSesGoHLT6tcYp*6v~Z9NCyb6m
zP#qds0jyqXX46qMNhXDn3pyIxw2f_z;L_X9EIB}<BZV)NY+Sf`GmW4*C1<w9<G3@Y
zR-2Ao^uw)%Z0Eww)CNf&GoE61(l=R$@lLulhRTBom-G)|sA)*B&(~_KWRT_L+saB5
zo*q>AhyC`FYI}G3$WnW>#NMy{0aw}nB%1=Z4&*(FaCn5QG(zvdG^pQRU25;{wwG4h
z@kuLO0F->{@g2!;NNd!<zny}%07Jn8Nf<E`qd>PfqM-;@F0;&wK}0fT9UrH}(8A5I
zt33(<pT6JhCadCO^EwcP0}B}m196bLHZSD1wzS~lgDzyBOMDp_>+&U;CLN|8+71@g
z(s!f-kZZZILUG$QXm9iYiE*>2w;gpM>lgM{R9vT3q>qI{ELO2hJHVi`)*jzOk$r)9
zq}$VrE0$GUCm6A3H5J-=Z9i*biw8<GlN{|J&^K2l_*g<#Pt^RN|DX}11Ly}*7(>ng
zi<1nM0lo^KqRY@Asucc#DMmWsnCS;5uPR)GL3pL=-IqSd>4&D&NKSGHH?pG;=Xo`w
zw~VV9ddkwbp~m>9G0*b?j7-0fOwR?*U#BE#n7A=_fDS>`fwatxQ+`F<!Rj$KZl*<p
zT?$eX^b9WOf%^Fc5Ow$#oiLZxFXB|4X4Ah-N23bVC3rdbHNy5`I((oY2SI(gVJE_3
zv~k-4(EcFxN5Hx@>zhBGQUAyIRZ??eJt46vHBlR>9m!vfb6I)8!v6TmtZ%G6&E|1e
zOtx5xy%yOSu+<9Ul5w5N=&~4Oph?I=ZKLX5DXO(*&Po>5KjbY7s@tp$8(fO|`Xy}Y
z;NmMypLoG7r#Xz4aHz7n)MYZ7Z1v;DFHLNV{)to;(;TJ=bbMgud96xRMME#0d$z-S
z-r1ROBbW^&YdQWA>U|Y>{whex#~K!ZgEEk=LYG8Wqo28NFv)!t!~}quaAt}I^y-m|
z8~E{9H2VnyVxb_wCZ7v%y(B@VrM6lzk~|ywCi3HeiSV`TF>j+I<PcrA4vbhkc}Ds9
zVnPj;dD9hvN^{*9tq;`Y3-i35x*J^9kk!Mknb6QMp+R%r;|Y~}U1bd=<D2Z^=6NHx
z)o!mbv)c13!qxVmdz@Dme2Ud2?)buFbw!<Z_N}SPHX2@PRM{c<oRhmdQ=Q!h%GA-#
zE|+zRyX;@_)`kh%@3wm_ZjUz-66I&coi<`>jd|p*kyn;=mqtf8&DK^|*f+y$<HJ*z
z{kCJi%r~syv1<5SAj?Qn<RD-N0#-mimPHVGsjQ(4>38+9!sis9N=S)nINm9=CJ<;Y
z!t&C>MIeyou4XLM*ywT_JuOXR>VkpFwuT9j5>66<JwXm0Iz|uD_GISrZ<tb63#|b6
zmesyu7v#<;wAs4wx|xl$8!C)O(dny+&uQp5Yiylr74+Z{`kuduLfD{$!RweaKvq@@
zSKvT=l{+EaFCqSAuk-})NiD5^S-DyEOCPWcr6mSZED8GEaH3HbBi=sIw&e0Ek0*HT
zg7i-oY%env)m$!wZo6{H^btX$@qVG{e!&!~J#BILfmfs_E?=UpX#O6)G;!&c?y}Qg
zZDtQIxqNpZ+R#vKv;FOFva`NsR7883$-r&2{_WuFALO<~3Fk}Bb(WC&g8i;%)qzDY
zRjOTdfX!%Ad(<}BcYy4>7A=CU*{TBrMTgb4HuW&!%Yt`;#md7-`R`ouOi$rEd!ErI
zo#>qggAcx?C7`rQ2;)~PYCw%CkS(@EJHZ|!!lhi@Dp$*n^mgrrImsS~(ioGak>3)w
zvop0lq@II<?zr~h{;~Z%uibTbs^_R=H(HEh%|uq3KKIc_zxBu?d|hToq+T%unvO@H
z_7G`_g*WS&kUbvS*4>SuA0Ou*#1JkG{U>xSQV1e}c)!d$L1plFX5XDXX5N<n2C0jm
zX{r1Jy%RD8vWp=4fyb$$F_f=*`nvNgb$TK5DH~vUeDX&BtW7RGgbP7rCk$}DqbN_=
zG+@cCNjfaVNpOlFw+a>7Ns{kT{y5|6MfhBD+esT)e7&CgSW8FxsXTAY=}?0A!j_V9
zJ;IJ~d%av<@=fNPJ9)T3qE78kaz64E>dJaYab5u<efW`3H($g#7XgvMkYf+oz36no
z(7hfLHbbB2R0{1uae-^d+wzih8L%N9he3ud^j?e&dq$dH2awC*y4Q%$6QP+9{{{^S
zS|%?I`*;k>aU`n~Zdp2h{8DV%SKE5G^$LfuOTRRjB;TnT(Jk$r{Pfe4CO!SM_7d)I
zquW~FVCpSycJ~c*B*V8?Qqo=GwU8CkmmLFugfHQ7;A{yCy1OL-+X=twLYg9|H=~8H
znnN@|tCs^ZLlCBl5wHvYF}2vo>a6%mUWpTds_mt*@wMN4-r`%NTA%+$(`m6{MNpi@
zMx)8f>U<?#KGhQOH9sd_@m#$xV)2XXy+)7rj<v$+@Y;iI(?-Y3Sg0r<Nksvzzi#Zp
z$q~EP;jFN*8js?YBQ<`b?Z-d1$^IIsy$A>4hd!row@gM&PVo&Hx+lV@$j9yWTjTue
zG9n0DP<*HUmJ7ZZWwI2x+{t3QEfr6?T}2iXl=6e0b~)J>X3`!fXd9+2wc1%cj&F@Z
zgYR|r5Xd5jy9;YW&=4{-0rJ*L5CgDPj9^3%bp-`HkyBs`j1iTUGD4?WilZ6RO8mIE
z+~Joc?GID6K96dyuv(dWREK9Os~%?$$FxswxQsoOi8M?RnL%B~Lyk&(-09D0M?^Jy
zWjP)n(b)TF<-|C<kuA~or~e()IVaJB8ThDOo%m84{2#Jw7lA;F7HB%yOOfao*a-Bo
z9vF{4tjJ*|r>G%!Vz?8Fu&6iU<>oG#kGcrcrrBlfZMVl0wOJvsq%RL9To%iCW@)#&
zZAJWhgzYAq)#NTNb~3GBcD%ZZOc43!YWSyA7TD6xkk<oWhdAZNF5oEMySt*u%}=mX
zY^=DnO8CU4$;_0G$Mo-Kkj5NlGljS+>)n^FaRAz73b}%9d&YisBic(?mv=Iq^r%Ug
zzHq-rRrhfOOF+yR=AN!a9*Rd#sM9ONt5h~w)yMP7Dl9lfpi$H0%GPW^lS4~~?vI8Z
z%^ToK#NOe0ExmUsb`lLO$W*}yXNOxPe@zD*90uTDULnH6C?InP3J=jYEO2d)&e|mP
z1DSd0QOZeuLW<s88&Dqv$ZDY(qEHICGi1F$d4+8O&b2468PMe9JW2)dic7s&U~)}9
zv>o*NqZzopA+LXy9)fJC00NSX=_4Mi1Z)YyZVC>C!g}cY(Amaj%QN+bev|Xxd2OPD
zk!dfkY6k!(sDBvsFC2r^?}hb81(WG5Lt9|riT`2?P;B%jaf5UX<~OJ;uAL$=Ien+V
zC!V8u0v?CU<?sa9rw*YNr=`U}IHdv2<G`|o3Bx8D;^GeQOIB`c%X^K&>a)4*Q+Q_u
zkx{q;NjLcvyMuU*{+uDsCQ4U{JLowYby-tn@<?{mQ!v2u1l{5e{t5@ZjF*S!>hatL
zy}X>9y08#}oytdn^qfFesF)Tt(2!XGw#r%?7&zzFFh2U;#U9XBO8W--#gOpfbJ`Ey
z|M8FCKlWQrOJwE;@Sm02l9OBr7N}go4V8ur)}M@m2uWjggb)DC4s`I4d7_8O&E(j;
z?3$9~R$QDxNM^rNh9Y;6P7w+bo2q}NEd6f&_raor-v`UCaTM3TT8HK2-$|n{N@U>_
zL-`P7EXoEU5JRMa)?tNUEe8XFis+w8g9k(QQ)%?&Oac}S`2V$b?%`DwXBgja&&fR@
zH_XidF$p1wA)J|Wk1;?lCl?fgc)=TB3>Y8;BoMqHwJqhL)Tgydv9(?(TBX)fq%=~C
zmLj!iX-kn7QA(9snzk0LRf<%SzO&~IhLor6A3f*U^UcoAygRe!H#@UCv$JUP&vPxs
zeDj$1%#<2T1!e|!7xI+~_VXLl5|jHqvOhU7ZDUGee;HnkcPP=_k_FFxPjXg*9KyI+
zIh0@+s)1JDSuKMeaDZ3|<_*J8{TUFDLl|mXmY8B>Wj_?4mC#=XjsCKPEO=p0c&t&Z
zd1%kHxR#o9S*C?du*}tEHfAC7WetnvS}`<%j=o7YVna)6pw(xzkUi7f#$|^y4WQ{7
zu@@lu=j6xr*11VEIY+`B{tgd(<i-P<xW8QmX{Uu}CW{$k=4G`<yQ5DK7nY#9L<7KO
zZl2V*aS4sKmaEUS-mY%P1^cv^q{7lxZ)5qzsWF(QH6y#+dwE4lRddpa#$Z}_cCaKa
zE;TlFY<W#EqQ=~xoZ>c3zO8%nGk0U^%ec6h)G_`ki|XQXr!?NsQkxzV6Bn1ea9L+@
z(Zr7CU_oXaW>VOdfzENm+FlFQ7Se0ROrNdw(QLvb6{f}HRQ{$Je>(c&rws#{dFI^r
zZ4^(`J*G0~Pu_+p5AAh>RRpkcbaS2a?Fe&JqxDTp`dIW9;<O_d1fh3g+@%<JHS<h;
z`xr?<<utwG<Lj5Zdhfz~Sd#5Kb7T9+cKkOui1y`+Uv$r&om%~&H3ligXMa!k1A}&8
z`oKdmM{uQUq3k>DL%0wxX5;`KxyA4F{(~_`93>NF@bj4LF!NC&D6Zm+Di$Q-tb2*Q
z&csGmXyqA%Z9s(AxNO3@Ij=WGt=UG6J7F;r*uqdQ<A<k`&*~1mNB0QW1T5I+z^l>a
z?7j!nV{8eQE-cwY7L(3AEXF3&V*9{DpSYdyCjRhv#&2johwf{r+k`QB81%!aRVN<&
z@b*N^xiw_lU>H~@4MWzgHxSOGVfnD|iC7=hf0%CPm_@@4^t-nj#GHMug&S|FJtr?i
z^JVrobltd(-?Ll>)6>jwgX=dUy+^n_ifzM>3)an3iOzpG9Tu;+96TP<0Jm_PIqof3
zMn=~M!#Ky{CTN_2f7Y-i#|gW~32RCWKA4-J9sS&>kYpTOx#xVNLCo)A$LUme^fVNH
z@^S7VU^UJ0YR8?<bG~Mj6Gj-lk3HOub{MXq84f%T`QY6$SQB%P+{DM48!0oDB|1i&
zZKxv58$HkYAPzeA(N@4W-r2I(ob~ZN%-H1^uVTL2tUjwxrv8WT<9HEQp}oppV?S-b
z?TWa%T=%&4xZ~a0-G(Qtj>Oy$^IYuG*bm|g;@aX~i60%`7XLy*AYpYvZ^F^U(!|RW
z*C!rJ@+7TGdL=nNd1gv^%B+;Fcr$y)i0!GRsZXRHPs>QVGVR{9r_#&Qd(wL|5;H;>
zD>HUw=4CF++&{7$<8G@j*nGjhEO%BQYfjeItp4mPvY*JYb1HKd<ZQ^<n)7B(e{N}R
zNACLEJ-M&vp2!R2b>!{HJ9*)(3%BR%{Pp?AM&*yHAJsW({ivOzj*qS!-7|XEn6@zo
z3L*tBT%<4RxoAh>q{0n_JBmgW6&8hx?kL(_^k%VL>?xjAyrKBmSl`$=V|SK}ELl}@
zd|d0eo#RfG`bw9SK3%r4Y+rdvc}w}~ixV%tqawbdqvE-WcgE+BUpxMT%F@btm76MG
zn=oQRWWuTm+a{dy)Oc2V4yX(@M{QAkx>(QB59*`dLT`<?!`ti2@y+pV_8st7_#g52
z1!@8-14n{+!KuOff(Jusq1w=z(B5!jxFx(cyss+1s<Z0Bs-u@|yyQrAPIYVbrs`9d
z>Pz3Lsj9iB=HSHAiCq()ns|Cr)1<p6y)@aLys9>*c605Cx}3V&x}Lg?b+6Q?)z7Kl
zQh&1Hx`y6JY-Cwvd*ozeps}a1xAA0CR+Da;+O(i)P1C;SjOI}Dtmf6tPqo-Bl`U78
zv$kYgPntPp@G)n1an9tEoL*Vumu9`>_@I(;+5+fBa-*?fEx=mTEjZ7wq}#@Gd5_cW
z!mP{N=yqEntDo)|>oy6{9cu+-3*GTnmb^`O0^FzRPO^&aG`f@F_R*aQ_e{F+_9%NW
z4KG_B`@X3EVV9L>?_RNDMddA>w=e0KfAiw5?#i1NFT%Zz#nuv(&!yIU>lVxmzYKQ`
zzJ*0w9<&L4aJ6A;0j|_<vbtcWAbbzpCj3Gin*xk%@5HxYh(fosHrML5=EAoJzwHRw
zh@)_=)rwlI8GD^(O|@nqTobf9QEEG(*M$^xqkm*B>~i>+y(q-=;2Xxhx2v%CYY^{}
z^J@LO()eLo|7!{ghQ+(u$wxO*xY#)cL(|mi<iezIsIQq}e;H<1HsO1a%jmXB^n!Yj
z`bEguLTH*W^N>H2_ck2yN{mu4O9=hBW*pM_()-_YdH#Ru{JtwJ^R2}3?!>>m1pohh
zrn(!xCjE<?5dV)b*C5Aj$gepjhO+1}F~03sn})p^Uz6_w9HjtSwO;4fgQNBdkCC(S
zXIQs_lKEg{DKt7!64@q0U7<~Z9sWW2MiWn5C=n^v2(+j+NQ}hd(YScLR6bFX1e5GJ
z{f}vqE*X+(y(=SeU6&=<n3p71@^G&#A3gi#b>0Q&EH1<ywPMV@T7r4FN~KK7(R*2e
zG3w@Kn+NlNX^aE);gT>QK?zA%sxVh&H99cObJUY$veZhQ)MLu-h%`!*G)s$2k;~+A
z)Kk->Ri?`oGDEJEtI*wijm(s5<vO`uZjc+%3o%>f$W78FH{+qBxiU{~kq((J3uK{m
z$|C8K#j-?hm8H@x%VfFqpnvu@xn1s%J7uNZC9C99a<_b1J|mx%)$%!6gPU|~<@2&m
zz99GDp`|a%m*iggvfL;4%X;~WY>)@!tMWB@P`)k?$;0x9JSrRI8?s3rlgH(o@`OAo
zn{f*gZ#t2u<vX%PzAIbh8QCV^lkM_->6K??hx|aElOM`Xd0t+SAIUEHvFw%?Wsm$s
zUXq{6UU?a>Nc@@Xlb_2k<d?Yk`js4zSLLAmT7Dyk<TW`guge>9M1Ctr<#+O?yd}rv
z_wu&<L5|BGrBD7Of0n<<JMvdKA@9n2@;7;3{*GxNK9rO44>=_t$!Yngd@N_AUj}T;
z#*Ce|%XZr_sQcsWcsl{pCnnj+c8ZNIMmx<;w=-g$Q>BU;9k;w|zQ;4!W32Xg2Cd?{
zvmO3kuKQ^Hv;o>6ZHP8ZJ2`4~Bx?N;cf<0fi=!*G^^WzbTF3e$b&d^qqB{>nqLG81
zs94bBh%|Vj+hLu=!8(b9brJ>ZBns9^6s(gdSVyP9qnu2_I{Sg8j-rloG6{d`De5We
zDe5WeY3ga}Y3ga}Y3ga}Y3ga}Y3ga}d8y~6o|k%F>UpW>rJk31Ug~+N=cS&HdOqs;
zsOO`ek9t1p`Kafko{xGy>iMbXr=FjBxZMYc8a#gL`Kjlpo}YSt>iMY`pk9DF0qO*(
z6QE9jIsxhgs1u-0kUBx8D@eT{^@7w3QZGooAoYUO3sNscy%6<6)C*BBM7<F8LevXU
zFGRf%^}^H(Q!h-tF!jRJ3sWyly>L`dk$Xk%6}eZQXgo#!75P`>Uy*-B{uTLG<X@40
zMgA4}SL9!je?|Tk`B&s$k$*-075P`>Uy*-B{uTLG<X@40MgA4}SL9!je?|Tk`B&s$
zk$*-075P`>Uy*-B{uTLG<X@40MgA4}SL9xidqwUQxmV;~k$Xk%6}eaBUXgo6?iIOL
z<X#1$JSg(7$iE{0iu^0`ugJe5|BC!8@~_ChBL9l~EAp?%zasyN{44UW$iE{0iu^0`
zugJe5|BC!8@~_ChBL9l~EAp?%zasyN{44UW$iEuoJ{&DaDjY3GsEwTSjAnVzEDxIH
zL9;w)mIux9pvk``|C;=3@~_FiCjXlJYx1wjy(agXylZl<$+;%y7~~jDCpp*TT9a!{
zt~I&V<XV$!O|CV$*5q1~YfY{-xz^-blWR?`G3|Ub9pqZ`yspW&Cf}NTYx1qhw<h13
qd~5Qp$+srontW^Wt)qNLLXk-9aux9_WlUi5WYd6^D_dVgyY*ioe@L+a

literal 0
HcmV?d00001

diff --git a/www/web/templates/media/fonts/glyphicons-halflings-regular.woff b/www/web/templates/media/fonts/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..9e612858f802245ddcbf59788a0db942224bab35
GIT binary patch
literal 23424
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
G`u_lkUM?>H

literal 0
HcmV?d00001

diff --git a/www/web/templates/media/fonts/glyphicons-halflings-regular.woff2 b/www/web/templates/media/fonts/glyphicons-halflings-regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0
GIT binary patch
literal 18028
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

literal 0
HcmV?d00001

diff --git a/web/templates/media/js/bootstrap.js b/www/web/templates/media/js/bootstrap.js
similarity index 100%
rename from web/templates/media/js/bootstrap.js
rename to www/web/templates/media/js/bootstrap.js
diff --git a/web/templates/media/js/bootstrap.min.js b/www/web/templates/media/js/bootstrap.min.js
similarity index 100%
rename from web/templates/media/js/bootstrap.min.js
rename to www/web/templates/media/js/bootstrap.min.js
diff --git a/www/web/templates/media/js/jquery.js b/www/web/templates/media/js/jquery.js
new file mode 100644
index 0000000..49990d6
--- /dev/null
+++ b/www/web/templates/media/js/jquery.js
@@ -0,0 +1,4 @@
+/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){
+return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ia={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),La=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ma||(Ma=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Ma),Ma=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Ya,Za,$a=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)),
+void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fb=[],Gb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fb.pop()||n.expando+"_"+cb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gb.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gb,"$1"+e):b.jsonp!==!1&&(b.url+=(db.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hb)return Hb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ib=a.document.documentElement;function Jb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ib;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ib})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jb(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=ya(k.pixelPosition,function(a,c){return c?(c=xa(a,b),va.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kb=a.jQuery,Lb=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lb),b&&a.jQuery===n&&(a.jQuery=Kb),n},typeof b===U&&(a.jQuery=a.$=n),n});
diff --git a/web/templates/media/js/npm.js b/www/web/templates/media/js/npm.js
similarity index 100%
rename from web/templates/media/js/npm.js
rename to www/web/templates/media/js/npm.js
diff --git a/web/templates/media/warpzone_logo_large.png b/www/web/templates/media/warpzone_logo_large.png
similarity index 100%
rename from web/templates/media/warpzone_logo_large.png
rename to www/web/templates/media/warpzone_logo_large.png
diff --git a/web/templates/media/warpzone_medium.png b/www/web/templates/media/warpzone_medium.png
similarity index 100%
rename from web/templates/media/warpzone_medium.png
rename to www/web/templates/media/warpzone_medium.png
diff --git a/web/templates/media/warpzone_small.png b/www/web/templates/media/warpzone_small.png
similarity index 100%
rename from web/templates/media/warpzone_small.png
rename to www/web/templates/media/warpzone_small.png
diff --git a/web/warpauth/__init__.py b/www/web/warpauth/__init__.py
similarity index 100%
rename from web/warpauth/__init__.py
rename to www/web/warpauth/__init__.py
diff --git a/www/web/warpauth/__init__.pyc b/www/web/warpauth/__init__.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..390566db7511b986b75376ce9dfd974a364ba05d
GIT binary patch
literal 122
zcmZSn%*)j{D<dqK0SXv_v;z<qvjB+{28Lh_kcgiKkYGR~ij{$4`uPPV`sIm51(|ti
qMTuZmVrfZ+etdjpUS>&ryk0?N2?tP}O>TZlX-=vg$h2Z0W&i-!XcyuD

literal 0
HcmV?d00001

diff --git a/www/web/warpauth/__pycache__/__init__.cpython-34.pyc b/www/web/warpauth/__pycache__/__init__.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..0c067e0d6df1d89478d078bf2d2347c3c2137c69
GIT binary patch
literal 105
zcmaFI!^_n;D<g~n2p)q77+?f49Dul(1xTbYFa&Ed`mJOr0tq9CUt)Ut<%vZFiKQhO
g`tk9Zd6^~g@p=W7w>WHa^HWN5Qtd$Mi-DK{0L-WrTmS$7

literal 0
HcmV?d00001

diff --git a/www/web/warpauth/__pycache__/admin.cpython-34.pyc b/www/web/warpauth/__pycache__/admin.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..1c5e680d0e42a3924c983848c0814ee4e7a54f0d
GIT binary patch
literal 620
zcmb7AJx{|h5IyIsX=rH$5{RFWCEb`1f{6txM1dhoWNNFl<fGWBD!P`DKf+HUD-#Pp
zfQdUtK_FPLd{1}2r+e@G-suLbm#6D}2Ji~sj*IybhF&2EybMx+j6uwRQEfqLL1sg2
zL*_v20Fw-6E=U{J3{Hd%!huI5IzSB%)}|4+Oo=?F=D8p|!}EUfd=M=dh5j4rL&z$Z
zi)@;QR<(7`wO$rVTu3d;%i>Pvm47Pu{7OqTCU$dhr+SAzCKAXxI*%<{W`vV=e@{9l
zkzr_8ev;%olSxtqNs<*}ky74ClKTZu>&`Q%HV!uMu^kPTT+R8Syd4;)(fmQtC$=!O
zh0w7~{V#{zX0OJV@<@?pDxcuXK%E8jwt+y=s8T)*+wrED@qAK5<03EB^hS}XxYxLj
xa7meJW#g-I5Gr5E$yAq8Rlyncj0dxWk@!oy@(=32I;6kXWT$WM*n6yp@d@cqeaQd-

literal 0
HcmV?d00001

diff --git a/www/web/warpauth/__pycache__/ldap_connector.cpython-34.pyc b/www/web/warpauth/__pycache__/ldap_connector.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..678b2e39b981a8266dea305b647a0812b9fad80e
GIT binary patch
literal 1271
zcmZuwOHbQC5T12x$E2pv3Q8+lDeBD^kjkNlK2*x9NHn0BS99pf#0DIUo$fkBM4=Zr
z_SQ@P0zasiz4nw#e?SjyXEuZe)RjFuJG=AE?98`6-O<wJ_b=P8On@ISGzzG{!C%gy
z2=QZ(0Mz=r0SSX+18N4am9PMz2^Y9y!a3S-$-wul9y&tBW6F_Hp2z8dtdnIht^+(r
zON7vj!XP4ghX&yh(g3?=LTEu~Ls*0h1~t?j3^Jld*B0kD7P2&r>Uk#W><XS{im-sc
ze1;+iXfVhPXcXX_K^K6VBpW6)EN!>7EYckqX5xFS;yKDp!l0>2aT@1wki?xx7>K4O
z=C?NAaf;3TrRw%lm2Xv7)wH%;XTv!;^K7qy$tim;PD3u$y??H6S1XHrv7)AKnKtHq
ze`meAh{ZEyl<Z%Ea53ty$1}6-Ks19^emJY4>w}BWG*6YoIi<<@I9=LA0c?_W9^9zV
z%;3<CQc<~dsfwsjRj%&O1Q|Rg?%<?z=!;QYs<DG8AHLxP8YNW+Sm(*jptnvg*DX4R
zgWxG$9sC<Ar*qIn4gegDfSiP`31a3dBkW%nKLfhh!UC{Vv(n#5KZ4nB>`@8CS72ur
zX7B=XY_LVmK114|mkmcY$c#wU*M%ff`MGs<jv>GNoevlsKLq(~!EVZ67gxSltn{c#
zopLK}$4P>GF6UYKBogudX*o;6ax;*!or$nBJ-jNP1W79@$Fdw9H}lgT)u;CdNAEWZ
z&(;N2j&??N2ov|!#8zczb!~06vcfml`NmRpdA<5x6=W`y)f91>dqv$5WwvA_YBmPs
z&34UBqc+Wsi15jwrdXt`NQg|_?%hQFFh~y~PX2t5`4q;M)J0$gcAq_B4)Vuk51DC{
zSm)`@mi`Z*;@QN)G&qhpS0&Dmv#^zr?sERA6(s!~aTh~~F%r`xh}%Pg$R+6U(lKeH
ra1GaV3)<$Hx<oaH9zrKe`|nY24MAu`O;YD&KZn=UJpCwKHtzlfqc19?

literal 0
HcmV?d00001

diff --git a/www/web/warpauth/__pycache__/models.cpython-34.pyc b/www/web/warpauth/__pycache__/models.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ec2b7b6da1abe401d7f16afeeffbfdfb625159d2
GIT binary patch
literal 2393
zcmb7F&2k$>5bo8kepX(^vSSB=UHn5K3KXii63SGlxTuOniZ}(em#vj%EU&UZ%8WLS
zUEIuL@B%qg9J%uhbLHd<55S49XC)!K93U%Cd$zl$d#3mMdj1SL?Vo@9_4|uD(I2$(
zc$n{D=wBcN{v1k)GKWHk9Dc7+TBFRR(51|y(4(wQVZE}slr|`A+I1eKEy{cfeRB3i
zokW9v!tw@5hbC=0M}#%n7jSM_LyKgSCQDlYn@^%`ZEcdiUD1JdjYMFz!Q~Y<NVxQ<
z*SWyPspptRRtTBuo@@Mj$FaJf$W)l%n|vn6a{lH&Nc7Aa23X)9@Phk=%0?Vw@wk}m
zVdx(qByk~7hp<M{rHRJ{LQT%eK@qNMaM&w8O{;0~R)uF*;gEG~yJ0pT##)~gN_;1^
zoE;WVWNzA7{5(o!KAs(4ASsz3E@wrQ7bj6H#NnXVHmxYi<4i`8X-5%`T&6q^qUdQE
zr<Fz3uvGCmj8|%@OkHMik{a(g*2kvvbv%=YNhYfbHAhN9AzqNW$;(*$wbj3K600ea
zAK$6U+Mk}PCQLkZ3nFkf?ayj26_8!_*zE<xY5`F?pa|7NHO4i@k_1jrQj3-f8j$DY
zhNxs^vX}q{&Z!2V&6NQIWv&E{D$mY}(qAY6lBFjm>m<62B|uSZkl3_yM7xPEvSnHi
zL_B?rf}Oolly|vu`V%p_%au4Qa>?^dhrzVa$@8y9qoT}bVJFGu>{~T{2<IX<z8FTM
zA}zDrxMd<tqs)`1r93oiQ<Y?~I*p#lQ{#`5XEGn)Gb%3S#qSWNrgP)j?^GM*BL^ye
z_&<+(7@8~lBhiGgT?Y_WuR#GMds?PP|9n2R1+{5Lk)Ek2+ToRq2y)K4ixc+e##hRt
z-a?S8Y1X0$XB>e_QS|0Ys;!k&ONT+Pqt-Y`z@h_Tn!{MjNaW^5F`UTJEE=WYh13?m
z_JF2+lqfy3us1%e)l{u>3{I)uX7LV-C4{RP7eZ}AbTRZMMBp@>ptj>|S3fs!t^E>!
znK^sB;5~>{0Pk1i=e~v(00aZg+=Dz5EKd9KcJjfMU}zO!KoyY*fmaLUN4@&l#%j3!
zft<zaeJocT!=8K4Yg{R$J%*`UwwlHfcRzhyIgH2Q_+;9H;CiSYCWD@LH6p983!y%Q
z;av<1tH81Emnyhy0ngyITES%t7^4?d{I{L4Y5`1gFdugWl=h~m?gZQ-+!R1{v;&y9
z9XKKQ4C;0kd<NCm7kuvGqih(TtGKU<a(cE4LXUZ78J!oR0Ml}2bfLy!+fv$ks$1AG
z6I2Y!Y$%m_9q)$~%$Tc+>7;I3r%bZP<3#*F78#G*Ggx~KjVy#eL(~OREduP0UXiMw
zBFIZ}Fhf3H$+5kx4|4nqM-_i-#gI`98RMcl6+Jnbs<W<H6+{0A7e9vYM;Q7B1Y^&y
zZ96;8dJQ~eTW=jLbQ0&|qA!N_9t*cpd_^(r&+nl*vRyda-PrVD=aN&{s9wWh9_t8~
xyjBgYG4%t!_3f=?DPzHFb6*E_)A|B=amRkiP1x?b>+Cv#({*qAyPLNfe*;Md+M)me

literal 0
HcmV?d00001

diff --git a/www/web/warpauth/__pycache__/urls.cpython-34.pyc b/www/web/warpauth/__pycache__/urls.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..71140a398ab4b62680b4413529ba30c23641144c
GIT binary patch
literal 732
zcmZ9K&5qMB5P-+|Ykt~psk9d)E@+X6kkS`eEu1(aBqR>es#Uah(}cv1?36;UJORgj
zgncDn;lhOn;KbP7uA1g&;`#E)Ga2RYcoN^<|NQ*k1^5Lg#~9b|@K(PuP`n5<04;%>
z05Q1(jRUO<xeKiaxd*Kexesjsc>shFpe`^M>Jd;6s1H9J3j+(oAshh<pbmyG1m-~<
z4Pj(qJcKbYAL?WX6AKUK_*i{n;n<o}1IrNd3D67pl+OO(mqJRkyOmAqX}=L=#r0G&
z#rjoOD76!k>QN`fx@wpXB`Yh{Gr13!R$W|aj~6Y|e#I&KwvP-J+kSDiPnJg+lV_Nm
zZi(pCIePu}<MqMX6l!yGyL*$O7B3%*<NEp2`fgM3l09{ZZCsq8{fl$C;%gz>qOSx;
zfBxv7&=2WU&uEQ1i|kJDb%sMx(!mMk(_JCEV%u-BuNB)ViN6j=&jjCuz&Np;$jS(L
zau~xQiAu&-z4*eojEo(c5M$5@R_KZz2g=n0$ccGj!oPX8I96PkF0$^s4zF85w+*`?
TXs9`c8F?995_>wAj(PqEsY<`v

literal 0
HcmV?d00001

diff --git a/www/web/warpauth/__pycache__/util.cpython-34.pyc b/www/web/warpauth/__pycache__/util.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5dbe825c75ef0165d5cd1fea283dd08dfddee0d2
GIT binary patch
literal 206
zcmaFI!^`#iYEM`J0|UcjAcg~0Aj<)Wi;aOqCL=>86GI9ELkc5<SqhNF%wPr*V1Wp*
zf(6on0&EOsQ9xDf48fWlQLF`-RaJ?%SaLG+vZJ^HK%C%=)YOt&EP08!skc}Ylk!VT
zZm~K-sDi}w)M7tP#v+i-D;bK|fE1YcC8Vcco>)|nSXz>yUs{rxqgPOQi^C>2KczG$
Q)s7M5MiwB!%qYkR0P(3YHUIzs

literal 0
HcmV?d00001

diff --git a/web/warpauth/admin.py b/www/web/warpauth/admin.py
similarity index 100%
rename from web/warpauth/admin.py
rename to www/web/warpauth/admin.py
diff --git a/www/web/warpauth/admin.pyc b/www/web/warpauth/admin.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..34cb789c0104c9620c44bf283b055512495dcc61
GIT binary patch
literal 700
zcmbVJy-ve05I)CgQi@6u1Bi_=Q~Cl30W%=v0uoswQ@bT4e~MjIbS)z<$aC-jaOaeY
zfrVPW&v*7`-+gEP+3zhs-XF%W9zL$;Xl99^a5BgN3I+)SMzIIE2L*?OL*YZ>1Jev<
z9nc(B3={_n1DK%i!yCW~;1Lg!&>bMpcRX}9yx=#l3o3+B)W!7K7mkRbXFCW|6<Ha1
z6doYlN@EsPql7lv-c>KUv~=l8$@<>t#vc92xu8cjYU%AuG($HvkVr9#(1$h;ZKr7|
z3!SF6=YpbA^BlvL<){Sa1Yua!cDRsDot2YDI#15+^Uzfu*RO&jDI_+j2t3=z<)`3(
zRVL`41a)PrIs&}7i?*)gCfdQk?jfj|ET>gGu1ecvPXc$q4iHEcX^Bz4&W)hX3HKM&
pqef3NW3lPfqibR~HBPUfWZP8fzVo#0_Zj6g^!h$O<O6n$_6?E$jK2T?

literal 0
HcmV?d00001

diff --git a/web/warpauth/ldap_connector.py b/www/web/warpauth/ldap_connector.py
similarity index 100%
rename from web/warpauth/ldap_connector.py
rename to www/web/warpauth/ldap_connector.py
diff --git a/www/web/warpauth/ldap_connector.pyc b/www/web/warpauth/ldap_connector.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2de888b4dbde7ce5057714fe86d14644bf091beb
GIT binary patch
literal 1416
zcmbtTOK;Oa5T5lTZAuFTQ6A#r6ABk9(JMl<O&^hpTdn(mURG|rZJj!{<=r$&l^#%g
z<d5)!_$AzdnK6AJPLwD+p53))zWL@G_xsG$*Kc2TyYTzx;`2Q&vw$YSzkm#2zxEx-
z1oR!)cR(aABt9e_TmoDGeA>sofT-2L@6w<63tIwRJ4wN`wP}82><n%;+KXGuMV{-f
zEvoCh4&E%$t1r=L%qS>3#>QM2mmC+g2Z;lh0``57QH!v4DG4pwEaNh7&{%+;0P8@{
zg$n^=0OgVGdC>Fuyuo$?E~peh+!P~h5nAh^$&$FVQ|P35YSTDN&$PrH*vDuVced9R
z)uEylxw|6Oj_lYMc)^F)#VJKmRB_P5S}hTCkmiXp_Te8fmO5cuwL|;#@6)ZtDB9bU
z?V3u$WpsAf!Y8mXuh5$>N;^M{t1`_GtC+obV2|fHdH0Ix*X4+Np%hi5)GP&~h#=;~
zHH*Xovp9hc5q3ijT}dAegON@0aNP;W1N`nt+uQsQuZC0rqDxr_06iJaXLLpjFh(r^
zoHW7A!PtZ9HA588b6|{JMvLusLFBC4XfIy_&$`t0lPRdiAkKXd)`ziAsyJ_un#K({
zX@JQ91zr19NwSXcrL}dGc$5qHh-qtShbi%30yKksm}VL3I<Q4>s;l&H6ckw!l(8|x
zqDl-Y;`Tvs8fOC?q$be)(vEma(jPb~JTxr3u*fx&%)R1BC>Tk+u<~}oz0Sr)CtOq8
zn`&!Cu5QW?SRo>^Rf{O&zHq34(G`mhA*gc5Zmx&qlFBQMQ%M`DM<Xd{tE#B(+*4{`
z_c+dvw4&7NiUyLkp-T|1cqE>SNwm}AneZH6)Rhw+rSiD1mExgOs$V3747ZYIP~Jns
z5Le^OX!!)UH#ph*w@Hvx^nF~0rn2EQy{20Sq=~5MCQvk0XVen(fj|1Mv`qZly0mw!
LBT6?dW~YAvJe)LQ

literal 0
HcmV?d00001

diff --git a/www/web/warpauth/migrations/0001_initial.py b/www/web/warpauth/migrations/0001_initial.py
new file mode 100644
index 0000000..d9bbae0
--- /dev/null
+++ b/www/web/warpauth/migrations/0001_initial.py
@@ -0,0 +1,53 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2016-08-18 15:07
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import ldapdb.models.fields
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='LdapGroup',
+            fields=[
+                ('dn', models.CharField(max_length=200)),
+                ('gid', ldapdb.models.fields.IntegerField(db_column=b'gidNumber', unique=True)),
+                ('name', ldapdb.models.fields.CharField(db_column=b'cn', max_length=200, primary_key=True, serialize=False)),
+                ('members', ldapdb.models.fields.ListField(db_column=b'memberUid')),
+            ],
+            options={
+                'abstract': False,
+            },
+        ),
+        migrations.CreateModel(
+            name='LdapUser',
+            fields=[
+                ('dn', models.CharField(max_length=200)),
+                ('uid', ldapdb.models.fields.CharField(db_column=b'uid', max_length=200, primary_key=True, serialize=False, unique=True)),
+                ('first_name', ldapdb.models.fields.CharField(db_column=b'givenName', max_length=200)),
+                ('last_name', ldapdb.models.fields.CharField(db_column=b'sn', max_length=200)),
+                ('email', ldapdb.models.fields.CharField(db_column=b'description', max_length=200)),
+                ('cn', ldapdb.models.fields.CharField(db_column=b'cn', max_length=200)),
+            ],
+            options={
+                'abstract': False,
+            },
+        ),
+        migrations.CreateModel(
+            name='PasswordResetToken',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('user', models.CharField(max_length=100)),
+                ('email', models.CharField(max_length=100)),
+                ('hash', models.CharField(max_length=100)),
+                ('created', models.DateTimeField(auto_now_add=True)),
+            ],
+        ),
+    ]
diff --git a/www/web/warpauth/migrations/0001_initial.pyc b/www/web/warpauth/migrations/0001_initial.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..1df7dab1332fc2588b873a2aaeff67bae9696594
GIT binary patch
literal 1761
zcmbVN-)|E~5T3iU9by~^KSB#Fh4dGGAxT>a@laJ15ET*xWP(ura$4Vx&ui}X+}mB!
z^fmp9korIL|LJR`c4p3YjFP_87v1g5emnckH?y1MuZ`~C@Bes{!Tgud_W{J<UeG|(
zUjzj}8No1ui0v4P7|H~O36w1uwi<5&MH_}4&@I3OrfV>cK)2y{fMbB4hijk{c-8Mv
zO!E)@`Vo!%CcT0+S*0;8jK^9Pt{?MEmtLjGYvoO4o#%BWp$fO}*J=EGF}0+9nY<5~
z_I+B9z-%#Qjya8qQyZp4PST+ahzzd5^c>SAmd6l{$=Ly1XX?`~OwWTR&IDNJIL8n(
zpt}N~DFP5oBIq8&^afy$z%2$}SOISc_~Lw{oR(~YA%;EBm*CzpBq#hXv%>mJepgl^
zHrro4WBUc;Hj~&owdC3|XG!U!Q-F^@1YAD_xbY$2lT(0&D2-}4>HeSDek$4Clxkc6
z{h6q^qNTnC`u0N6?UkZ^KG#wczhxzt&M(e#eksn2pucKL$~Diq_;F6%ya|I>{jaHu
ze2ZRIl^D3wo@q7vsjk9IdT?y8&@OO`YTGoa`ZX=k=6+)SByZs3lN&8vsz+&76`{0Z
zk#|3oBdjG7wf!#v!(uPbAv5dG(`QzjQq@Q4TRf754r`+d^BaaWnk|uIIGJh2uW37;
zsb+Fm!Z{kNk@L06ycnFrYl<S|0->2CeFLAev7ulo=R0Tl4(<LT`$8?|n4hzuO&=_k
zDTJv;m(@nL6-_c5_#D1e&K*{@9-u>iP`yPfv$S!KW>xT2n$@U0HjZ~#k1B`4L4Z#m
zi!Ol^ry~nuO_ZC60IN$SmaPs`rFH)jK|Lp*N~koI0;MTk9HBrmS?q&4pr~c6@g%EI
z(l|q_(PjqSKyD_k!z1DNoUfe$r!V?EnyC5-cY#!~AZ7Jvz^X`~r`BVRa{zmv(2dpz
z`^-4sEabNOkwj>$4YD4S76+!p#=}*qW^@@!Is0V6$;*99<}Q_b_fXX{W5>0U5h*d*
zJ-IP=_xAR_N#{B4%#H?Ja^Be8qgN-Ur?nn+;;m>qx*KiBNz_dm`#bXRb7$$h6K%=U
zXKm-2j)M<1X*wWRBaEIZn^!xe1`F5-c9lkrL_5vxy)%{rG`PtSrgV~+jQ(eKQuXhf
RI{(079sk4FjITw#<X@yfbKd{}

literal 0
HcmV?d00001

diff --git a/www/web/warpauth/migrations/0002_auto_20160818_1603.py b/www/web/warpauth/migrations/0002_auto_20160818_1603.py
new file mode 100644
index 0000000..557159c
--- /dev/null
+++ b/www/web/warpauth/migrations/0002_auto_20160818_1603.py
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2016-08-18 16:03
+from __future__ import unicode_literals
+
+from django.db import migrations
+import ldapdb.models.fields
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('warpauth', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='ldapgroup',
+            name='gid',
+            field=ldapdb.models.fields.IntegerField(db_column='gidNumber', unique=True),
+        ),
+        migrations.AlterField(
+            model_name='ldapgroup',
+            name='members',
+            field=ldapdb.models.fields.ListField(db_column='memberUid'),
+        ),
+        migrations.AlterField(
+            model_name='ldapgroup',
+            name='name',
+            field=ldapdb.models.fields.CharField(db_column='cn', max_length=200, primary_key=True, serialize=False),
+        ),
+        migrations.AlterField(
+            model_name='ldapuser',
+            name='cn',
+            field=ldapdb.models.fields.CharField(db_column='cn', max_length=200),
+        ),
+        migrations.AlterField(
+            model_name='ldapuser',
+            name='email',
+            field=ldapdb.models.fields.CharField(db_column='mail', max_length=200),
+        ),
+        migrations.AlterField(
+            model_name='ldapuser',
+            name='first_name',
+            field=ldapdb.models.fields.CharField(db_column='givenName', max_length=200),
+        ),
+        migrations.AlterField(
+            model_name='ldapuser',
+            name='last_name',
+            field=ldapdb.models.fields.CharField(db_column='sn', max_length=200),
+        ),
+        migrations.AlterField(
+            model_name='ldapuser',
+            name='uid',
+            field=ldapdb.models.fields.CharField(db_column='uid', max_length=200, primary_key=True, serialize=False, unique=True),
+        ),
+    ]
diff --git a/web/warpauth/migrations/__init__.py b/www/web/warpauth/migrations/__init__.py
similarity index 100%
rename from web/warpauth/migrations/__init__.py
rename to www/web/warpauth/migrations/__init__.py
diff --git a/www/web/warpauth/migrations/__init__.pyc b/www/web/warpauth/migrations/__init__.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..1b787248a833daff14666059ac4e43fc278c2397
GIT binary patch
literal 133
zcmZSn%*)j{D<dqK0SXv_v;z<qvjB+{28Lh_kcgiKkYGR~iuHhE`uPPV`sIm51(|ti
zMTuZmVrfZ+er{%ZQDRAEeqOPDe0*kJW=VX!UO{CE2T+SmZhlH>PO2Tq;9?+V001;%
B99aMW

literal 0
HcmV?d00001

diff --git a/www/web/warpauth/migrations/__pycache__/0001_initial.cpython-34.pyc b/www/web/warpauth/migrations/__pycache__/0001_initial.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..8f660d3c1f6a68dbd5ad08be6697e7f521de273a
GIT binary patch
literal 1557
zcmZ`(U2hXd6utZ5wbyY<ni5+29cY_c6-l5HPgNBJ0wF=D+Mr5)S&cp8^_cxIGrOee
zEBqN=EA>D0H_U6F^1=^5JaA^#c8mhM-u0b3XYQPP?%jFSTkpR4=ifiCb%_3_l`DjO
zfJZ;Vi{s}}MwELr@W``cpE95FfCd5OAq~RD8&KAwK}7d>NW4Wa0Bn&6XxgUdz_y78
z^hZBBMNsN{W}`0TsN^EaWF-{Kbl*4KT&9XuvMjWTa!h9WaAfg|YZJx+9(~{w39^hp
zXy99pV3WcQNwjDhS(eza;Ud~J?GT3(T*w<^szV~S)TUjUt`U!kcZtLB0ProqUjbk(
z0KItxzHVXsBjOhT4lQ_N1q>L#AI~>RA;u<2;4cvWgl;~k;EdnJ5A)kviP&s^={?&o
z7`H5mPtPs+Y?-r5>GC<i=kEf(I0yLhUBFl801HtX)lx|O!EC>F*?vQ|8j$c?r{ap1
ze4F@{g`!s-tSQ=eb1gaeEi1Wne*Zq_56+1a?KCB|HBVcJ<EQ9Fl;TJ9V&B9M7Y%o0
z!h+?(#1A-|-BV>fGtpRzjBDfb0-eeJN-|NT)#UU)G@uDm$xY0M$*9cgywEY6a2?k9
zP$(0jxu4cTqf2R2n6;UbIa4Re6LDf<EtF)L{9D{L?Oa&AcFP<4G2*t%S@RKe*icuB
zjVjZzydGnz32Mo8fWY`S-LX`<N-Xs`g=eBTbctkaF=1Kg!n8!rWTw|J;zEy<bek9-
z1UG+US|68+|1Pwsj>;#ZFh0WfSY4ILNC{R6jGhTKEVXdk8UOwr6V_mKicgSCIAMBX
z+DoikS(L{K<NUC{VLFLhmL#T|B>1-LOu+6X$<vx;mOn;qS;z|7m>w51QE*X=q|nMH
zYu0W%77y*IphD}3Z%>%IYinep4C?Tq!cj)1cfY7aD&|x11F5S972iTOjk$gY86C-7
zG{bH=!x`i>e@W^(qPW-V8+)k4-Z4`%S&S8P780B6ogGwr`}_OXlR5F-*@<dlwe1Fd
z6R(~h`B4~qk-z0_d)K^eKk&LiGyWMKd+#iLJKmPNU5tLmDmAXFT0t9Si-?AsvLY>a
wk*XD?(cxl~{BCn#?v7p8s-Nt<<#LuzW8JWUI=?g}_|=Bd5ndbqC9fB}1sKtI`~Uy|

literal 0
HcmV?d00001

diff --git a/www/web/warpauth/migrations/__pycache__/0002_auto_20160818_1603.cpython-34.pyc b/www/web/warpauth/migrations/__pycache__/0002_auto_20160818_1603.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..867720630f7c5bd98979b1e909f196dcf3b12609
GIT binary patch
literal 1323
zcmaJ=OK%e~5T1P|o2C$;KzUW_jc`cPBB34t6_AQ5K`(%i_F_4)vvu%3>fHs}Yxy($
z0PY;Qarc!|FZ=*bjCT|IAnhie8IR_h8GmE{ZZEbrzJGfkHUNIXiO)rQ6IZ^Cg5lo+
z2@qQlT40&I4bq0#fzYY<4oDY54_-1Cm<L}l!~^cY#D_zS@_{+<rt2SJI_O%uQzl}R
zGESr@xS}#gUn>@oqJ>D4d}n0hX5TUzo4E3y761p+1GW&_!0thWEjhqln0Tf{U7caM
z25=uH4VW}x5&&xgL)ikh0Eb{7f^!zqJ`KT0ge+pPH76Kroy@;b1z!So8CVC{6;p*>
z1$GVL?kV_^p@m`O`S7#t)sXA+AUCEJ=R<DJgDhVNxit@R`$EW_c@T8|N5zbM4+)8y
z5F+7s@k*@d;Pq_oy7`H!jF!c&ZVv{7H6jvG2rBVv;9Zd<p)n5w$!Hd-w9K??9NLKl
z)81Hc$#lSmWR%J>PIQ3ooiZMBrG30@dnJFX8!<PITnDxB4w3dK!Tj_ykvxft-J>6P
z)AT~7L`>B_`M~#ekaLAyhy%VAHcj;s9opkD6;ivEY>kD=i>g6W_#;ntOlyIpGq0T|
z+9|Q6u6^+Dm<Okh*<I94Qsp2-w+O*Qmy)C1CS<Rq(wx@p7|(dZcrp?^SB`17^-SV3
z+Nvn<O^0l#{fe_(`xP^}Zf_?Ak7iN9E0Gs9Ab7D$r`T4S;cKj(;8#%hF?A*WJn5%d
z(Ko{p$ym|KGGpo=KiNJGY@MJpCF_H=M}v*E4T9=nFWXlxCJJ!n&r!6Uzzr-Pe=Bya
zm#6x{RL}h9=_+5hVJI4xMX8V!Wn*TX{)8q`+GE3-mZh4CUd=?WCPJ-ZXqDplfVI^%
UIhv1a+MgO?b00;=?pST-FHD>~-v9sr

literal 0
HcmV?d00001

diff --git a/www/web/warpauth/migrations/__pycache__/__init__.cpython-34.pyc b/www/web/warpauth/migrations/__pycache__/__init__.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..cff914e5847bfb0da1d8788a11b94891d95d23e4
GIT binary patch
literal 129
zcmaFI!^_n;D<g~n2p)q77+?f49Dul(1xTbYFa&Ed`mJOr0tq9CUwZoa1tt3BiA4pO
zd1*z7U{+#jNrrxIW_nR#NoIatv3`7fW?p7Ve7s&k<t+}I-29Z%oK!oIImJNC005^Q
BA1wd?

literal 0
HcmV?d00001

diff --git a/web/warpauth/models.py b/www/web/warpauth/models.py
similarity index 87%
rename from web/warpauth/models.py
rename to www/web/warpauth/models.py
index 0c96461..3f4bae7 100644
--- a/web/warpauth/models.py
+++ b/www/web/warpauth/models.py
@@ -14,13 +14,13 @@ class PasswordResetToken(models.Model):
 
 
 class LdapUser(ldapdb.models.Model):
-    base_dn = "ou=people,dc=warpzone,dc=ms"
-    object_classes = ['person', 'organizationalPerson', 'inetOrgPerson']
+    base_dn = "ou=users,dc=warpzone,dc=ms"
+    object_classes = ['posixAccount', 'inetOrgPerson']
 
     uid = CharField(db_column='uid', unique=True, primary_key=True)
     first_name = CharField(db_column='givenName', max_length=200)
     last_name = CharField(db_column='sn', max_length=200)
-    email = CharField(db_column='description', max_length=200)
+    email = CharField(db_column='mail', max_length=200)
     cn = CharField(db_column='cn', max_length=200)
 
 
diff --git a/www/web/warpauth/models.pyc b/www/web/warpauth/models.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..7735a7978f6dc1ee8e92d81d164e849b892d8a54
GIT binary patch
literal 2744
zcmbtWTW%vo6usSTJGS#wL<XUR=OAGTlpyiTAjF_SNRtrNBuMzD)pnKb_VkOcGMS9{
z8#cfOW)p0J{jdPI=a$`>gr6jn#FeUBuUn_iIpye|&Hnl8KYt$6@+ac|-}1-)#f9d-
zfHI;ypkY7(+972j<q-`d%3CySQQoFu+xJD3b!fOI^IDX3Deuv+$9-)w0nPg~2}pP7
z529B@zYNz&uaQ}!dDGWz`Zh@S$n<1Jzlm;=UcWwLqv_is9nrJFCg+|0%RhsFYp%mZ
zUTTxs0gmQ+Ts)p7^^??O+HG*_$HJMZSq9MkG__8;Py7;y9b<_nWu3cSZk;C9UX-;~
z#u|54J~zcR{J!HM_LK`lfX#$7kCs@zqJSa08DV&CjOj>(kqpUn8Lfa}RL}eo`n+<U
zyofVXOx-NyOCdQ(vT$WwloxTL^#Frhmy0+qlHA0xLnMwFi$%sw#Vt|-QHyH}Yiif#
zipi5Sa|q26J99wu`^1^EG&deHbe+`;<JPz`t_^qU0axj&upe{tsI1)4MN(I3F{u-&
zae}iWe;J3>rNVYt#3Id3uq(fk^HZHv=bTZ4DuxNFuest;<zo*+(32tJi=PT3O^Y=D
zwZSsOCDW_T=tV<r`mQc`rTZKVnW)Pk6R`<)S3zOmawJpHPiF!)Bm1Pcz&`MJTPhp4
zqa7S+pNn$ws4``hnJ@JC5s-LU7E;fx(6TbMEerP!hSt-hNM9x{EsG>O^&P_G!nmL6
z=`sQ)>QOu{vqfGw@OhDHS!+?Gzw(`|bEvA*JgG0^=jKw_K23i!#R+pjK?~{MT)2=6
zTgY&2?6^)V>@4ANF$ODEpT`&p_<tvw6YC2dUKnbRt6m}?g*Dmat{e~&#j$mD90M|o
z#3;CX2I_$4-FbJw6~~O-nB^VEA8>P-f!K%wF%>|UJV%K&u`b*e2g=dhj9om=*a?gk
z9Vx^G6Oq~^t*sO7$u00e-%{9A;jrp`6xj4CajD%>KOmZr4VKgiI>C0hAME+xs27PR
ztds=nYSaYch?<Z^qbBGmXxubx>;`vxY+UmH>B!$tXZzy!fF<em2r;%+3n;jO`UC}z
zK7j16kX1N=IFA^Eka+@cw)X?&Q(o>Ne=O1lD1I3n`Hf96>VE5EZJb4T(h1~l0rC%Z
zxu_b58o!$H&<0`eS5tmVBk>b4F7_+&s1P0{hVSi*y-TwfdHdoD+YXQK$y>nABX1&{
zXZ^}~@S0f&ft_cHd@P)&D0RuEUZBoCBjl_~o4$~g73^o}6Z&M4k4&u|aL6;XaSZkD
zYFKVC<~-H66{$QXc!R_$?j=-F%9otMUH##6p7R#lLYrS*ZF|EM)Q8-qK0*Q868(!Q
zPgCt30oyB3PyE9pXWv%#pYeL&u7%%#;k|G#*k|$gqQN%yl2>A$6w~rhkK~<~Hzs42
z>e1oy{q-92X-f8zCZ3#Y<3x`>B7UO%x)Zh&s~|Cv?lHa{$$KtxRuG9=<@tutZf9)r
e72s>mlfS5ZgXcz0x)U4(8^KQWUhiP{LFYdmoCi<<

literal 0
HcmV?d00001

diff --git a/web/warpauth/templates/warpauth/login.html b/www/web/warpauth/templates/warpauth/login.html
similarity index 100%
rename from web/warpauth/templates/warpauth/login.html
rename to www/web/warpauth/templates/warpauth/login.html
diff --git a/web/warpauth/templates/warpauth/profile.html b/www/web/warpauth/templates/warpauth/profile.html
similarity index 100%
rename from web/warpauth/templates/warpauth/profile.html
rename to www/web/warpauth/templates/warpauth/profile.html
diff --git a/web/warpauth/templates/warpauth/profile/change_password.html b/www/web/warpauth/templates/warpauth/profile/change_password.html
similarity index 100%
rename from web/warpauth/templates/warpauth/profile/change_password.html
rename to www/web/warpauth/templates/warpauth/profile/change_password.html
diff --git a/web/warpauth/templates/warpauth/profile/information.html b/www/web/warpauth/templates/warpauth/profile/information.html
similarity index 100%
rename from web/warpauth/templates/warpauth/profile/information.html
rename to www/web/warpauth/templates/warpauth/profile/information.html
diff --git a/web/warpauth/templates/warpauth/register.html b/www/web/warpauth/templates/warpauth/register.html
similarity index 100%
rename from web/warpauth/templates/warpauth/register.html
rename to www/web/warpauth/templates/warpauth/register.html
diff --git a/web/warpauth/templates/warpauth/reset_password/change_password.html b/www/web/warpauth/templates/warpauth/reset_password/change_password.html
similarity index 100%
rename from web/warpauth/templates/warpauth/reset_password/change_password.html
rename to www/web/warpauth/templates/warpauth/reset_password/change_password.html
diff --git a/web/warpauth/templates/warpauth/reset_password/token_gen.html b/www/web/warpauth/templates/warpauth/reset_password/token_gen.html
similarity index 100%
rename from web/warpauth/templates/warpauth/reset_password/token_gen.html
rename to www/web/warpauth/templates/warpauth/reset_password/token_gen.html
diff --git a/web/warpauth/tests.py b/www/web/warpauth/tests.py
similarity index 100%
rename from web/warpauth/tests.py
rename to www/web/warpauth/tests.py
diff --git a/web/warpauth/urls.py b/www/web/warpauth/urls.py
similarity index 100%
rename from web/warpauth/urls.py
rename to www/web/warpauth/urls.py
diff --git a/www/web/warpauth/urls.pyc b/www/web/warpauth/urls.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..881c18b6fb6d1d906b6d753503caa0f39e4c36e2
GIT binary patch
literal 827
zcmZvZ+iuh_5QfJ&?YRe}-XI|)RHPuJ%?nh8C#X;=^&+ZRS!-`LA+aOd%fdBJz$Nd;
z8}I;S##!18Y7P_spJ(Fn@9@uJdjIR^-5L(p9KRp&wZAb4d>AwUErWsqBOO2!KpR34
zLK{I5K^sF6Lz_U60Fw+v2r`6v1R??v!;iqj#KZ9rjzA_*Cqp;}89_Z6!ik5|A)JDY
zp`H!l%)>r&{%`e#hjX8KLa-b|u>f%jx9J&fw0giRWjJynhMj5Bh(wH`(PgFF366}k
z(ycmf?Oq$<Mu<A2H&r9u*iV<0b<$W8pM6<&>F7U-x6=QsQbK;Slf%5;x$M%;NEzAJ
zqCW5S@lr_NK10(FpRW3zw%l&7@AvQDVdj)F4}GD0c`Vmku1fj11#IsWr~jk&)iWiP
z+Gx{qS80V+FP^H7CT>!4$&sO=#)b59t<`3UZrU6fcoX;BbbRNw%deH(+nhYl0}5n(
z?p>!Hc>7kA<H#VC=vJ@EzEY}{(_f^@=@jyW0@?19alwu|JPBn}WbhR1Ym}MpTt;nR
m>xTOgHIz}G%kH~B%d1w4T_dllJxjYiV{axG%-_L9K;OT1vcQ1=

literal 0
HcmV?d00001

diff --git a/web/warpauth/util.py b/www/web/warpauth/util.py
similarity index 100%
rename from web/warpauth/util.py
rename to www/web/warpauth/util.py
diff --git a/www/web/warpauth/util.pyc b/www/web/warpauth/util.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..12ce56a81d5b8798f750c19a276710d45cfbc2e2
GIT binary patch
literal 247
zcmZSn%**xrYEM`)0~D|VX$K%KHU<)zj0~Af3@Ho@DU1weDL@u8gBeJG1tP!-7DxvQ
zurZiL0adXx1Z!{r^_753Dafp<N-SXkvT`!>vP-yti~x{Oa7Jos30OQYF*g;gG%+c^
zv;@p@gtH0~(^HH6G#G)}g4lqB1`s0=#qvO|ettoTetBY1L1tcBQ6iX?SXz>yUs{rx
cqgPN_0&<H@ZhlH>PO2Tqpkk0~m>C5b0cu+@qW}N^

literal 0
HcmV?d00001

diff --git a/web/warpauth/views/__init__.py b/www/web/warpauth/views/__init__.py
similarity index 100%
rename from web/warpauth/views/__init__.py
rename to www/web/warpauth/views/__init__.py
diff --git a/www/web/warpauth/views/__init__.pyc b/www/web/warpauth/views/__init__.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3a8b9c9cae2c852a5b862e67aa45d0ce2f720abb
GIT binary patch
literal 159
zcmZSn%*)j@D<dqK0SXv_v;z<qa{-AI28Jjg$;c3_!35-%umXwXjH1k9KMjz&5|Ens
z_{7qZjQpbbcnu(r0YMaN0=fG61tt3BiA4pOd1*z7U=~QZepzN}d9i+cd}dx|NqoFs
YL1hUCP_<2NeoARhsvXGiVjyM!061SFEC2ui

literal 0
HcmV?d00001

diff --git a/www/web/warpauth/views/__pycache__/__init__.cpython-34.pyc b/www/web/warpauth/views/__pycache__/__init__.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..cf9f806c8e81dd335bd7155363ddfddc0cdc2865
GIT binary patch
literal 133
zcmaFI!^_n)D<e#dfq~&M5W@i@kmUfx#auulg@GXoNHQ`6YckzpP0lFFEcVl6yu}qC
zpIBOwkzW)azmlPd8K@9U{F2erFHbBg0Lkf>Wu}%F>&M4u=4F<|$LkeT-r}&y%}*)K
MNwou6Q4GWk09*$kLI3~&

literal 0
HcmV?d00001

diff --git a/www/web/warpauth/views/__pycache__/login.cpython-34.pyc b/www/web/warpauth/views/__pycache__/login.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5a04491559cd14033a02c4b6fce87494d844ad72
GIT binary patch
literal 1409
zcmZuw&5qne5U%#$*dBXll3jixAVj&D!>qWEA{N*LL^MH}1qoj)XS%cF-L^gHZf8lf
zds<$A8?V5HJ7*pNi9=sGAt4?hC#vk()gs}aa@E(>-Cxz${wGP}-+ub>+mC&KKjFrO
zF?@or{uK?!hk*pB8RQHY#STaZY8P@BY7cS`Y9DeR>HzX!$Z$c9pbjAqp^hMrppGGr
zhcT~TZ4CK%h<%U=)G6fY5C<T4pq@ZJ8R8MhDID<-cmzKH<hMYiz+>QJ;0f>)F2UhD
zz$Y|%i7amuxXh-1A$`c04U}lOP?=|wFO1nd6?)S)TG+R5MxU1asd&)|ZT^cdT5}*}
zdnUNuyP1#p!?tU9=Gvs}%vv<2T9rmvU$)0pV*~uOox$xxC3vO8iu|2^uu!-YLL8B?
zQDviLX{xrtkbSgbL>n)Xf!@#X)qkTw9ZcW-`POq`&b=P<VSWy9!hi>G>VWzKD0G02
z;LZiR3PKDVFfPI8m>a^mL*2V@;T%DL(+Jcr<ezw;eh1^zObjm_lp=x)+$?|-oa|Af
z8GdM+uty`98x$p`k>v{{fE$eA)a}V2lPe!JqbiUwCN%(N3?`v<P&6F4#NBX#Y-f@C
zkExS+yeW@GVJag<9zARMtHOxy%|q)wFDq%iub(WBY}jd`nz9x)+>~0MwTfGxi{kUc
zH*DX+(d*r_Qf)}5{a%6D+SD>jtxs!f8`Q$ATdpS9Wi>)$qe>U$%2Y3f3JFXI410t`
z9%-R9DrWZ{A1oeybMWY}SRO8yUp`qBUmbp@Vw&QTanNMG9g*UAw$zlsTWG9Dl=GBq
zA<O2tLnc3i`T)n?+?nlP^L<%~GreWKd1d3_1Q8lxs=ki~SWLGwVJY5kv4lk|bprIK
z_<fg69rYn**=U&CDfxOdthjG?uTE$2yb_WZ)WpU08KkpFCG=--4;@qpr6TbS>dOYL
zoW=EenWKnS-+_#&_sFM`26GoZJ4P1xXB1SzJp{Ce2Ar5FswLaCQ+|T|XlHueDzoa0
z?z?EmTX>EC@X%bEsOT3_0UEozO<1*!QPr~<$=$0tNO;Z5-u<7%85gTom8Ml%jcK)H
xo79;~>OueXN|YIaeNTJNH!AFF?aK`3b;~;`9#9W8={{xm+50F7-LaFr^Dh`>RIUI3

literal 0
HcmV?d00001

diff --git a/www/web/warpauth/views/__pycache__/profile.cpython-34.pyc b/www/web/warpauth/views/__pycache__/profile.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..9a799d86a817a05b14b0d5d9c566123003cceebc
GIT binary patch
literal 2567
zcmZ`)-ESL35TCvC-Pvb5w)5GfAGocA<U*YngoG3!N@)aAl}2r$<zB3-cN3p`A7=O5
zv{nKS;hFz~KY({$_$OApAs+gIc&?COX3ys&Rq^@eW@cw+cV~Vx`&XmsSAP5D$)7&J
zA8_vHApaS@YK;MK{4<CF5(WVSMzRI51&IxTUC1`X6-XQioI<WZ>_Xx};6YM_pbAM1
zf*K?~1b$)Rm>G2l>V@n=+<>GBL9>uOh?gK~LC`AXD#UF_IuLXqS%zS_(AFScfycBX
zAL3OARzWm@*MT>HBjdv<SbPb13w{JR#r?0n%b*RsQyQ$l%U~J!N@=h`ZXfklUsJq#
zOt-!X<A{fOl%@Bi%p|IugG?q08CQyw3)!pa#+P|Mc_`E*OO?>;=cUg>{!n~36)L}|
z-^=nlahx3qu2;|7qkcD=rX2lOrQnei!yNggI6I8efkaoRqS5C4FYfH$&C(PNa9@_L
z-sj=uYbB&^l-w@v6iwN!JzXmtOl3Utwhh0nSIPwj2a$;RAPo~SL`;|;eO-L-;;TkT
z5GJ_+#}2m*SAm^lfH8xy1>-{Hz)oHP?n3Us*oCnN+=ILdg&n5o6d3-=PZdpTkoz>o
zk--ewl*C6pe@}yU1ciH7duloy3Z;U2jK>=s%4|AOx*DY_57VL0_B7(bk{O%g*$0%I
z+1gPkC*d?7ZBJx&5XGWD%9FTP*Ult76iQdf6hlHDi4E$;uL*#XO+2h@Akkj-Y>eSm
z+CCJywpA`A6_2bS!MJ*q4$SP&Ag`k4&E@{~V&NB&I8uw{C$F><Ay{5^&`x1N0$4ut
z*$VrB$@frNguRMF8($Olhg6`8uopqZ;6JxP-h|u&UNI5NZ5UTz>;QKlcTKQ88o)@O
zFe6qeCz~f$DR?N@rBFqo0+@_3RTP{!@TvpHn7}$5n+4dD^b@G$4S4Q@{1u(Lz-F8C
ztYNp<IoryUZ>e0-i3{Jm@HA!c^ceT)!^W`<8z&wddoXUAWst`a2G1>!e^XiG_EG?}
zn=2hgO4}$ANQLE=QF=y+$6+v7qAA3*$T=}>+BY$H3`FNLEyvFG*lX-b%7a`+qAU9k
z9zC8_%T&oVQu+sxRJp+e!XzwNM<ihs&zfJQFQ_ea?~(Y1b#-MgOGR%*uG3^U5&0<N
zvPNqVj^rkhEh3kRY!K-Zv5{!sxY?x=)Xp##VJa=sJBYVvBCnI-4N_Rc6!VTuMTIX!
zuPU$5kny%KDh$|xW<uVgVM1m>uF=%x;V4WG#UM(lQcPo`jj4~35GGs9x2~}!JywI+
ztizTOr&rk$Yv5B`yfx(M@h#cMnG5{ViKs^I;;a5aa)w|2R@*?d5|VElB)bO5*ewX<
z2yqWoKuzL;SUVHtA)#vCkkTLK12|!`n1L;2lf3^#$STdA0(PfUL?>1S0>d%0Oq&{)
zE8z}G59kY95)}>Nv~6(uJ6$}bHy`lwApslVSu1Ois%&MQb4c5jD;N%w_cv@?yBT)e
z$&q$bafIJssrU|tS&HCGW}Ewn1SPuIzT$3_c0>G_Hmzni_d}(QGReDhW0S@%M?|Js
z-o>mAN3W@W&$b@KygMnaFBm-jpDy|OU;Opz2Fmh%+OffLm$*6--I^n)bXx%M5)D~A
zJ=Y*@gHOD=sLkR|i<?T@Qsi%;QhtQ9ckoqLkeJqJ5fE=947U)7HTEF_uZi$9mc2`Q
zosSX5S$~*G(HAd=VnSE6DhkIf28-%y&n?v`llgF(E7QGoeXbti&0Xx7E<5QFp&o2b
zt*<SXNwF56_32LObAhXdc<Cxhom_8}O}~Hfq$XTJYcZN+T*RvA2z1Bj=3;1?N3r(s
xTE<KM&|C<ns?2H6#mdyODdXx6dYi`LQ%bX<;I|n)Hw<mFbu8M3cfEG~#(x5MOojje

literal 0
HcmV?d00001

diff --git a/www/web/warpauth/views/__pycache__/register.cpython-34.pyc b/www/web/warpauth/views/__pycache__/register.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5c65e1ec4460ad5a9d07d9a0ce2884cf633bfbc3
GIT binary patch
literal 1586
zcmY*ZPjB2r6o2D?>-E~%&3`K31P8WA3E~`8h0=;c6)F<iVxg`a&urGt*xt;H6B=!}
z1aap>AjAjZ3m}!lTzf(wK0r^rvDfKh@4S8g<~Q&CX2$=9QSi^NKR<or0lbEl$3p!+
z4*3%bia!DzAZ~RFIDx`~*aBi=HgFpX2V$qS9pEk$9>iX2yTE%;_z?T8?E&vY5kMTY
zb`SUfiV)(kwSC|b9Me9~0Di<(*Ua)q<H2883mlG#9zIQYMiZ4)<wGGVfi8Dii9({{
z306{OT;Z2W&A(=HUX_xe9X<ZyvnLO#vSg`h=J=0kGXF+4$>eTI3_Lyoj!hg7aLB*W
zi>oV?791=!8x9r#IRWaxnFZn%F{TC7g*(>-mWGFh)fqiB?9TAfa6s9RJ8%PV?ZV4-
zSh$e8us{z1@~qqkM|p4-fcOQ-H8OcM1f;|ig3CYq))0?VJ@~<c=OuyX3oIuv<;Xt`
z%3B@ly7k*jUAzW5=)lfj5!Hj-2O0vR+#rNSXtWYuU>`P|*&yB}bZsTjmUBlULLc$~
z@&V9c1A;~OV1clqX_1Z^qJB4NreojaEPR+mK(TdHaFbgF+iaDQX~TpXGv6>1iP~)D
z_hEtSZJBVs-7Ekdxkx+3TyqvTno4os&i^2EbEWJOK<$9qHFM~e3EbF*_oMOl;UnFX
zb(%6Mwad)u($15wj*hio<4Gx#f@y!ANO@Tas{5VxDdrYQ#^Wd}FU;YbG^U1lIL$bp
zBsiuS<5XU`FTT6{_``VAC3dj!ZU-hO6amUgO^QUNGi}!y73Oqm=ddc-alF&bX_Ar)
zTsS%5>}uyS5%Z*0vwgu%GpU%^o2i12-_h<oIb~9N1yi$%iUEQN+aLxHP1%o3Y1&OW
zOG;txzP1F@o@9wgXQF2uz3L>#i-Q>05F%rCRhLSvHz?CgNHuBL>GPyht+W(F6L(~C
z!32I}KyRh9q&#I4)54_dSo<e+#_5EX!o?)vpcn_bC)jz-q!OWVMn<d|(O{CPCQOrB
zI|fRxalFivw7cHFf%phh-@LcCe@n_m#xCVsYUVGs-|=Mby!;#mkbnf%kVMNjBsN(m
z8{~cK6ZCB02yp~t8}<Im8=(FHiL8+&?jp)~D0cBr@6a5(t@hGNus!yD%I4;yC0mZY
zHrQ^&XqhQzl~8G|WJ7`;EZsBwmNney-L9X#|99Nb8xL=zMMW8x?dC<d-dbh6sj#7E
aMT||k{sGRaIlE_0n;fAC$!O&btp5O<poTdB

literal 0
HcmV?d00001

diff --git a/www/web/warpauth/views/__pycache__/reset_password.cpython-34.pyc b/www/web/warpauth/views/__pycache__/reset_password.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..de612fc29869922bda9a3fa917ac1e02b5206b8a
GIT binary patch
literal 2358
zcmZ8i&2k$>5boJs{r_6FWjh4QNk~9cumcAUl#7B&l!C%IuGqw8t0<MM9qY%dU3qpC
zJ1#o~I7d#rMV^2w2Y3kP$|)Bffa1W{yOI*D)%MQxboX}meBbQf#ZvyppFcmT6^Q<#
zH-0w8pW}}Hfbj4a<P*8Gu^?AW^%l9-bZnDr$773phlVL~Q#4GIn<l|gZ1OWS%#xc;
z<_`He8s^E(C-W5f1sWE~Ehh6c`6b$A&kXrx8dk`y(6CBwHCfM+KS#qFxi!pl<mKrF
zvYh91y#jefdVxe2c)HUly+SFp)v!$M(ZN7=^n*}FTcK{A_9Ja7PuhOpYwLa(G?fZf
zLzv>1T8|#fXcPvK#5}EJ;7ML7Z9e#7`+gV%h!UHM4>;_0JBm(1<-tel-S9{TCcEji
zN8d)V*V6W0>v40Zx!c-(^mTKqwfWV<=I&SDG&_P5!!Lz<9`}9R(H&?t(EybQx)gLF
z=p0jvR8>5CN!q4?LxU7~)<loyu3VD1z}%uida8A3<p@r{k<QR1(S;o^XX)IgR&HvF
zahi0V1_jbZ8kERO@jLM!l-Y}oD=Y_9o(d1)F{w~p&+*=DoWrt49>U_?S-P}H1Vnqs
zRpID)I?9tO3UT3(IBSqzpmT>~3-($hY+O<qSHLSaiM{W5(~+)2&mG!FoPEU8b<#_0
zjE%;NVTdR@jlz~GEADw~G}!@TkNcj<j?ws_J(MOThwZ-q>IXFT>}C(!`sw<*A9mV)
zFO2m1|9#hQM<(UTgK_t)yff}}WE8C)hHCY8bhh{qQKUDSuAcODkJWch+G^Au>)zE!
znlaGo%3!Uhhkj$(Wc;w(?FU_x>q@<eu~f#{ezdcza!Ac&!Wfv5v9YYmP^m17A}=~z
zjmh-dQP1xm7$@qrKQdMrnao(V11}t!Tu+{Q{jLO@9X5ka`zeYawV^XkKR66cu6f##
zBZfKjsvl_dhViZ(ei0+Ekun)2kH;J)&G|~@+T%zWF)~8FB=sJQ{<*ofKCAj^U!Fu)
zYF`^Y<06Ar+=Dt?qE!eI6_FFRxGw5=7IEDWc`+xhi5i~wY}J5G$6`zTxcC_%UV;#(
z?@l-Y9sq|AzMm)H9b918C73#{(%!Rwr)J;>cmpJZ7&hrN6Jrn)f$^KAWdID28{q7)
z=q)hd$RYJ(4DLdVbkG5?1k8RC1OzfrOQaS>GVs8z$tVS$*%bXcG2s=kgsJyCGenn}
z9UI3tg|0BEnYqCIgi+!m6$2W82eXi3jm}dvnCBG0g4ZuYq)V`f{gV8G(j*AKAWs{6
z!H^s<40#_~G4VVQF9YJO#C?K4h&M^70Q)J?GW0w{`@uTA7h}I)CVrJS{H|IH+JDW-
zA{RO3WNAxX$L_t_fH<qfhv8}v>eZ)w%$n?ssJZFrV?(=c9z+|q5<oKORSCi^Bs_}M
zXLo0?yF%MeuN`#d><E}pE+NnY!Wg^l`|1Wq<;>I~>#{iVrS9X1u!Hc#WI9Sh;h9V%
zJ7M5OD$iDFPx?|zWwRdxQoX~1Ijb1jDh=T-Ofq1e&eAa1gK^*YT3(<S)oPW+Yp!M0
zEq2W(wZx>gMkj80bka&xap`V_Q*3$t!$XOWP)EjZb;~|JE-mDle23H>j?L^$#QPYT
z%9Xa<gEG1cL3UltS+-aN6X(Ibij@-|ijuVqUf#lU4x>DHS`%+u>J!*E7S#$KYKg@h
zi**Q7_Xg;DxYh}kT$9toB}%I0hMB^|g3sN!bW@#ZqF$(UXRM?6;Bl9xTf26pFmA6Y
z%~r>{@4J=RbQofLqGY3aOWZkLItv52hHrw#ahq&oe73};ywRk%U2&(f8wfP^<!Agk
Xj+P<#c*14XMU^irFX~n`TfFuk^B6JF

literal 0
HcmV?d00001

diff --git a/web/warpauth/views/admin/__init__.py b/www/web/warpauth/views/admin/__init__.py
similarity index 100%
rename from web/warpauth/views/admin/__init__.py
rename to www/web/warpauth/views/admin/__init__.py
diff --git a/web/warpauth/views/login.py b/www/web/warpauth/views/login.py
similarity index 100%
rename from web/warpauth/views/login.py
rename to www/web/warpauth/views/login.py
diff --git a/www/web/warpauth/views/login.pyc b/www/web/warpauth/views/login.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..60bfafb6cbd81a2a656d02ab2b683389d78727a2
GIT binary patch
literal 1683
zcmbVM&5q+l5dLiE*GXowEPpE@KqD=(I3zDHLOTny3u2W;&VYn3mN(rq@r-}6-R&J#
z%AAH5;KoyM;SqQQB%XpB4**r=1kl0-;&i#Iy1M$Ss;?dVHVJ?F{=2VM*!{Znen7+i
zNJ7!yLjjZ?5)U5hJ_;XYfFwZKLDE6lMbbstL(*$K0u+6e10(~KLnK3#A(F6N>qxW_
zl2NO7QH)VekW5;=hvER`A(F#Z@1vOFObzfYklcZuKn<Zns1eizxA4`Nmu?B)UA8Qv
z1HzsEPQS>bnd^}-x>DLi9oEMrK6P#rYrCl{tKFNg7#?OS*3TPl-9MHVwL2+_`dTaZ
z`YXF==~3NODhl?8WQ|+v%H^xfX~$J9>WjP*JT$8t*Ww${iqR@JdbP7~0^*w*!a)nF
z^&D|zlU26JTwYhLk#qcT#gdQU@i7hiD+%hHlYSlVW&w^}YwO^63tak8U0nGvzkt;M
zs)u_w-d^dG;=^^=y!D{^*!o=Zn*dw#1+IoLKk)pr2lF!=Ie^t$pPDzoO$Tm(%OSQM
zZjeVWJ|-0Fh`@}wnY6NeP5|hD5LbbKAz=Htn@ARfn4BuAzyaJL#~}t#dbe~M1&Fw<
z3n}vxDRW5rCcDt7%Uz+}kkn_jdYL-?jiZc!^DHl9^2O8T8Nmb^t4)=aT9i#@?R9OG
zgj72H<djMW%;`uf?_Cntnb~lU=hCa$+Lc8#CA;k4qpi#yWd)IpSxAxBwTjs%=0?fs
zi@Ivj<u=V$E`On8_Kg|801+cos81HFt)<or`<|RE9)EfA_%vOfE|;G@U8J9%ejRfj
z68FqBI%dQ%4McJtM_@`3viJ@!y+%U3Idv*@TZ6R7s*8pah{ymD_5+&D>y4Xp)_HYq
zGMP#KFLHftcU9QDbd0>EFE4Q6?GXuhAwT}1H=*YZZ|n`diQl97l-_T9Q(v0Y?rcn9
z8EqSN?zrCjOOl@Fx=<;1N_fvn`ZR?1d@ZR(L=Pq$wT!4Q{9up8-(yB>iTMyIn%t)N
zJyQQ))_ge$J6-FP(|(^+%QS-@dW%S4apTn`)wZ75b#2_LaaOwHc=K*$&7UUeo8aTG
zNi5$jF2T-cMGP?cvl&-knAB3{&s^NQ|L!|edR3du)yBr$7x@<MVm2->Y|A?4!JgbR
tw#P?giSMzvPvWlv{bz0rX!~(ltESK&agvs6GWCwUcZdc2g#PfYKL9~BX+r=2

literal 0
HcmV?d00001

diff --git a/web/warpauth/views/profile.py b/www/web/warpauth/views/profile.py
similarity index 99%
rename from web/warpauth/views/profile.py
rename to www/web/warpauth/views/profile.py
index 6dbc13a..fb099d5 100644
--- a/web/warpauth/views/profile.py
+++ b/www/web/warpauth/views/profile.py
@@ -7,7 +7,7 @@ from django.contrib.auth.decorators import login_required
 from warpauth.ldap_connector import LDAPConnector
 from warpauth.models import LdapUser, LdapUserForm
 from warpauth.util import *
-
+import logging
 
 ##
 # http://www.python-ldap.org/doc/html/ldap.html#ldap.LDAPObject
diff --git a/www/web/warpauth/views/profile.pyc b/www/web/warpauth/views/profile.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a5e4cccfc8ca4da5ec41df5e9dc200ea46a1c097
GIT binary patch
literal 2912
zcmbVOTW=dh6h7-qd`X;JFCnD_(*m*zO&*YV3W!n~fmDTPTT0~@YwMlF>+Z$ujGI<U
z#6x&S;t%i#_(||1ka*w)3BK>F*J(?6ptg5>&YYPuXXbq8o2~xQY5)22PY;GN`_%FO
z86GR1NQj>&u}I=c-xH5|MdFGiRq0m?y()1{lDhQkg<g|*L6U~_8<I4o-;|^!{gxzc
z>9>m!b)B&&{l!9Gka$Uwj`TZ)-jH}%k`?K%6nazQRY}&Qzb47L^w*2tmc$q2zUfHV
zmT*zRB?(vMOe$eVeh@iBz?b9|*5%TA`Bm1H(z-!!_j+qMiRf>9dN>VnD`*}BaTEqF
z%F;V|p5=vsr*@d-i7nIxsJTf)llN+zw}j?P=O(_flPtByU4E(K^C0xicT;2CzfAj?
zyA{XTu?gM9muA7Vmrc{KShNXiZo()xLs#@HqbJUeqI8hMISjLr9rWM*;?}|KEKM;O
zo2a12(ZSs?n0#YRt|6Do9(GoE<SE>6EwqK-X&&1Kv>jD<+y%&G41>eS#Ni+f5;NpH
zK0KJ)c<cxbpyd=$yRML`vU?&juE@A5<C+?4vg_&+*2OKzxFO@FgbRWIigC#DnRxio
zPXj~S;udKOo1A@CB@XWO81FuG?2(Bw%$sA_b~+pyYcU5K!p;Xrc{ZI`J&7o_E=Y&Q
zRbiY)q0`gkpefF0pxM3z({Yebf~gzrO!Dk7ip}=OC2@}#*Tp8m5wgl<_ktLiCm!ga
zIK<MOMxcx9d0C$k`E5F3oY|u>@?<rXBjfbny4+`IK66)OheMfZEZBo6+E}(b*~INI
z(kMO51C=!9Cy_a}^T;R9G|&jZeM;n81|XHT*Y+-WA9$L@CVIFV&EhA>>3J5J6Hmgb
zJg!Q9U0g-NnkE48BAw$hj~v&a0f{^HG?kjx&C^P$G-UI%S}IK_KtoH$ZA_8Vx;$Hx
zle&zNYF)tlHhouWfb8S8<iEh_0w|(22iH7~hbIu*vT;(Cjnjsl08btD2pJYn9#<s)
zm284YQW1=sb^flMRqbq)opp~R8`_D;JsB)>3WXIqr?AQpDIj7`#_L?pJ3kr4$-Yls
z@mJ9(JPy9Tci-}y%f$E>X<{-Cque@$NP(ZA)D+iA5XF|o{Z;yeEY-ck9u${IS3U1%
zsp+vseG(8#3e0ZYC<}c;NAc#rN$Dz^x7fVFrptzIGzj&&$KqDF3}X|dK8yw6fy-#(
zzrz{V*hhE{Q~x?;g5L&DOpm+sx7euv`RHO8S31<Njei3&5&Sw}UdOcIC`gaY0JsN<
zDQ#atul<-Vf$SBpUD@(F{8pB{s<*}-Z_!)!mhf%OpB7|(+ZC;XDrV2C;4diWRq!&G
zp$1qFHw9Gy9wQ-v!dL?^G{pAFTra52b2UGbb0DYR&kUHbS<C>>ZPNRX#5GB<BD?8B
zCW3{6+5+Z^#gse81##9$qNNA;0#CB^Py&lu0>AM#Exo~S;Tr4=nnIOfX<V|fm;6d*
zd=A7uxkE9dIowg4Ww;6^$10}gm?CEt;$WDiKz3p`(RBbgS<?lT#@#6G2Kdv9#9Bh=
zAh7m0%fs$$ie|JM0_$n!x=8SFr1!ODmcNd}?xdXX!WjGC%+31I^6)n(z0XFgqf3cb
ziM|HRa8<f5aLo7>@L{T0zn@Rdb0kgFDC*De5^STmf|b*A^SZ?Ce+1vVc<fa)%GniS
z`zDZm1=wzR9|FrAAb!8clGE3WaE#i>wuf16w$0O_neeT~7NtyXDC|YylbvSc?FiTB
zaO$jHJ$iM`EF-?-=q_35J}bnhBRxRJdY><uf+ikq^Ag$)4I&8e8e)C&g5$ZDx9YZD
z%kxt@KmYlFBnwS!3-02r>6pN|b?Tzne-AzW+ibSk@TkryMWz3DNixb^tUHa(r{pS2
VHeL1jy{7G|ciC$<w_01*{sF+$SNs3~

literal 0
HcmV?d00001

diff --git a/web/warpauth/views/register.py b/www/web/warpauth/views/register.py
similarity index 100%
rename from web/warpauth/views/register.py
rename to www/web/warpauth/views/register.py
diff --git a/www/web/warpauth/views/register.pyc b/www/web/warpauth/views/register.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5c451e689850f9ae82ae633a649cd427c107b13c
GIT binary patch
literal 1828
zcmbVMO>QGa6n@oi|8?xx$uI)}v4VvGks#I)0)`o}K*OjL24o>xm9BE!J=H&{s!kZm
zS(ytU4#5Gq0Mc*)mfV2_5(j|ys@#s*;&xZRpL&1adsUsk$I+iZ|M)D0%`d?3$M~8x
zE&~4y6u{im0VoDV0P_GC={le~P=qiKJs*PVLeYbH&+}bSeJBPnA9%h8Y6wLH^T_jk
zP<v2}U_SEv0Mr=H#SnhLkoy$-Y!+c2*+2MuGGj>E2`<mL$^^GrRX)<X(q7R;#iG)M
z@oW!SElVLc>JjpvTU*D{)KzJu-!(?*7oUCd^kG$&GPSL*0f_~#zcQ^k#eO%Xl@g*@
z5AijBpv2;zQL?8SDuB}!Kpqf4&jZje8L=G@AspQ@*f3pWf|lta(`lJLG9lOy@-AQ-
zZoBZ}09IYdd$0;&&47Jfz6qi2!}AFAPrz;o?}5t#W0wrRSz$s$3T}QQn>!kl+R8B_
zN9*4~M6LDJOJ)a<4?*k!dRe23zd($3)GN#y3+sR$GBMs!5DEbt8T1fAz6bdT#J+Qa
zDfVI2hkQ&0iHU>d7urVk4QS750138y>WE28Oj`m02%YMX*8CnBGW&|NAHr$~`F*E&
z-~vDkC4y{UgEh`4el}gY`jv@;owQ5r-x1i?$wnNKV%;H>&t~_q#ZM4sY;=>R(ilsP
zmo#(O9e}4_o}D9D01eJb$qVV2nj3RdX<>(`X_*hbX~8pPY3Q=@nua)$PJ#kI*^5l6
zgyXx&q!PwZyzjofdGBpI-7(sRdliLk1d|B#S5`JDxJ{R~gSsXY8GdM%u#&2j_5n#Z
z*}BdA8dKsIN*Yq#a9#7pE>E<)%#4-#cxekYdxLyXE|0k~(or?Pl*ZC2!?Kr^h^gAx
z9Z@<VkEpK4RD|1|D#^<j<zVTC(b8EO$#uGn$+1JZy2$YmdasBChWEx*Q`(rCfdhkw
zJk!P|4sMF6c*~LJw2TQ}SFqvNGN#ILPEfPt<)uuh_@u?m_3NU^lt@Gw(=KOtt{WK>
zelfXpSCGq3%c};9jwy?Hj~2RBd_byvfwP12;nv1^qG)y>g$i$zB;DRJD1jL*<{ey4
zs@k3q^jW#k+)=Ix*O|OAcde*jxP05zP!{G>a>61O1rs*jJR{a&2W-OjgAY)0i0=sB
zh}}nexbs9vzs1JEG?>w?8oMsj6o?$5s*cl2%VYU{Dr>rGjc*@y-0OX_X)ZVW%@WT=
z+F0XYvjosav!sic0JSu+?T{V+7Zl$r%4EBtsDxC;4+yn&t7vSd;`dSFK)hT22b`xE
Sq*3xCYMr5KMr^wCM8Uu6*@hkf

literal 0
HcmV?d00001

diff --git a/web/warpauth/views/reset_password.py b/www/web/warpauth/views/reset_password.py
similarity index 100%
rename from web/warpauth/views/reset_password.py
rename to www/web/warpauth/views/reset_password.py
diff --git a/www/web/warpauth/views/reset_password.pyc b/www/web/warpauth/views/reset_password.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a22e39704aa733b7e26be7276d62b0f6fefb68df
GIT binary patch
literal 2630
zcmbVOZEqVz5T3oW9ovaxCu!WYP&K6#S-jZ1d;&$hsC8*YNTZ8sDoe<^_%`-A_u|~H
z;}j(l!u`k};VXZj{0)8w;zK1QcxLaMKqS7@_Ra0i&dkov%rk5Ik4pK@?>|57Q}(g&
z{t}OR3F6@=C?M)yj0JVYoNrOrnvZSj+GcD~kfSh9-8_W_>J~__6`O(u3X9Y&rt=&H
zB?`;bEvNH51&b6eQFkew7bvJuhcy={Sf;Q_-71AO>ekZrA_XfHu2Odu^Af#)i)-ww
zSEd(mah=C|jYXWn{~Mp32A@l>f;>4G$-aINOSKd0_NlM5u7ds44SdhlejK%vBu*NF
z<(EJnX+3tN8pn~6DYpP_A|p>`QWea%AAGfYKaL`po-4D3cQ5zdb(NaNi3eL!cj6-%
z=^`t7?)W=3H+3DH-Tj`^-fMSyohRS4cY528AGSM>zis!~UOs#7<E^UTXrd8LEodg_
zT+kV&7A3Ff`7fkx8s%t|C(p|G$ij^oiF3>?8WrZ;9NjpA(r=^}Xhw8yo8=;%+0-k|
zMKLarF4Jg{!!oLnm*+k48!fXI3s;$rYCIJl%wtlex?bTVZk<7Ll{}cm-bI>OBqE~y
z<5!f^Yjjkm<WIPkBXO3auOG4WH9}_76S3#u&ukJ<cm_qiPP)#k$T)Vu3S3DuzN42B
zo`mDv8)s2RFo-6;XJS4<ydyW1n!_nW*AM(3F;Z`V43X~7TCE`NyTLG4y7gZ>t$WI7
zdGcT~P`uCHq~DiHZ63zS<~^m>!FmXb(#trTQ(q5x<sGa{-DK=e^zf=x&Gpb5$f!Bg
zVbI_*Kr)Decrfszfi7V@ka`<andls5yHEBy4vQGM*c7!gr-Yoth3jygI%O7N1wOQq
z9lB~5_y>lmhVDn2p@EaKu}R`aUL2bJhVs<&2NL*Tb=FE%+><nLW0x0s&5sUaqtZU@
z%Q0gpjVuGnVe1Y@zroQqyCm{>!gkp~J|P@4=~0R1A|D$n8yJ!ys)bQ29_tpz54$C<
z8JS3)_;RYQ#Iremo`o#xnb6i@Ky8AMsEU%X#hapz_Y%H$L|Lqeo8afg9lOu&GA`M-
z`*_p|Tspm-0S(}q5k2^RnKBUBsMX^d?LYr(E|Ft2qI?->HX#r|Ag~5C#=`<_pvF<k
zfB<m04mXc-l$@ExGD``)$n6r<{F5LQIs;&dlA1^d9?+VN^1!W4>eoz!SAaT(@=MYc
z0ty&+$F~F;9GV200i!QNs5s9X+yL)DYJstN21nP}1#iA9n}nqqqY`?le^Dhf!W)!m
zYd`t|5C$9<>CiGjek8>C0#p_doXn9jZABXps~dsdzXT#d&-8WD8wSkiE@&qin7N8~
zoExD27N>&ywCS9iQLHylxMLeUUx1upGM{{m)`)uJ`Uf<_o;20SQ-`kwcne}+XI9kv
znExL<`$IPx$ctu@f|UJAF}A{{Y!EjHjJpnBG{!YtDN_4rHM|_fQ&a!_M1t*^v6B5b
z@|43hX8_^JKx*kQ5S$t_8DX7dBAqvw#VB>wm@r>o1IfH&fM2+1Hb0p7f!FgQV`3+c
zqyuSkZZWxpCGYIq1~IWp+nqr>i;SnHnU1HubiqW-T$p^Sp64GPO5BBgX?!xW0dBM&
z4wc@8&RtkBC^qD^pv-x{l7bJxGASdwE|x4?tOL+%fO6F;i4R1@+5o)o;=N+61K1UY
zz1840;26SjbGUsw?}4B!QS~DvId1mjL^kETk*PFfoDEYknGoL+CWM+(lrhyXPIP~w
zm1%dV>C1v@UI~iH9sh5bS6p+V{lLWaf)mCl1(jBqY4luXy!rz&*~I0haWkZa<GhU}
s=MyHMf?S6C^<!Ryoh`U93FPN|dbI(<{SsfRE^7R>%A#)7ilv+X0P%q}<^TWy

literal 0
HcmV?d00001

diff --git a/web/warpfood/__init__.py b/www/web/warpfood/__init__.py
similarity index 100%
rename from web/warpfood/__init__.py
rename to www/web/warpfood/__init__.py
diff --git a/www/web/warpfood/__init__.pyc b/www/web/warpfood/__init__.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..8c65345c94329120f3084f41a0ba644b90d7a254
GIT binary patch
literal 122
zcmZSn%*)kxw=gW30SXv_v;z<qvjB+{28Lh_kcgiKkYGR~ij{$4`uPPV`sIm51(|ti
qMTuZmT7G_tetdjpUS>&ryk0?N2?tP}O>TZlX-=vg$h2Z0W&i;Gxfn43

literal 0
HcmV?d00001

diff --git a/www/web/warpfood/__pycache__/__init__.cpython-34.pyc b/www/web/warpfood/__pycache__/__init__.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..dfe5e7759e507bf8d766db3d26244c9a402a2623
GIT binary patch
literal 105
zcmaFI!^_oow=j$W2p)q77+?f49Dul(1xTbYFa&Ed`mJOr0tq9CUt)Ut<%vZFY5Dmn
g`tk9Zd6^~g@p=W7w>WHa^HWN5Qtd$Mi-DK{0PZdos{jB1

literal 0
HcmV?d00001

diff --git a/www/web/warpfood/__pycache__/admin.cpython-34.pyc b/www/web/warpfood/__pycache__/admin.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b82e36e23068e2ab30950519eec6f93691d626a9
GIT binary patch
literal 778
zcmb7Cy-veG4EE)xP18b)n0SORq%VLF2ni-Cq#}kar;t0UR%uf%DX4Q9nb~*%Ug<W(
z#KHqGVc(I`fu*O|vh#hhKl}34*$H3YpKmw=_<)V$V|;>EzMvEMFvtO>3=#&6atCq;
zt|fzs3(|uXgA3t;@ZbqS4+!vK<r0uIOp3gw<@q2QhG&5_FQ|Df%WHxN49@~<UI?NE
z!zlbjZ4fc-r(!yuVZaVEdQ~4B$_~-PKmut;>4`(r3?oPP&Wl0}rFs}=@{~#pB3B2T
z&(f*nT!)-b3$e&4?r?s;NOOz4feNsqao_uK|1nkbJ1o^VI^y|Kc?dVrN(WuXG5J=~
z_DI@UTFFtNmbErTx1t*4sQ8}<8@1?Nh^~!Rccy%+&SoiB3J1@sZ5mV4?nYzE2T?oO
z6_a!}D&nk|Rcd^zXd_9tURjJAmU*cIB}e13l1jHXE=7lz1REJ<hq|-57c;E=;8(Ds
auK(>t2S@fUkLjl<chU7&=pV4IYwZWV^p;To

literal 0
HcmV?d00001

diff --git a/www/web/warpfood/__pycache__/models.cpython-34.pyc b/www/web/warpfood/__pycache__/models.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..0d0a419f1c2fcee583131687a457f4b82a750500
GIT binary patch
literal 4022
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

literal 0
HcmV?d00001

diff --git a/www/web/warpfood/__pycache__/urls.cpython-34.pyc b/www/web/warpfood/__pycache__/urls.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2f2625960a07455918026b70baf233d0d45b8e6b
GIT binary patch
literal 626
zcmaJ<!A^rf5S^vamX_A0iF)+XsAvK|&{Qv8jfutsF%r_9B8IZKP+K{8@oW4guEv8G
zKfsf_l(ra+%kHrAcr){6*-xX>I(vV(CJMkCRE940r(z|~!cZ{@gaA_l4gn&41wsX`
zkN~X#)_|%&HF!~oMCyRT6|=EInt)n?=qscJSTB(F3NZj11=5j-uYuD9+J#GV>qBS&
zljOA-55<cdWzE|-$TH6!<Z9$i(b4A~kKGAlX|`8>dJJ%GAD&zclRL!J4e01*er(zU
zr@Q95l9L^j0V(tS5Z!|QXW;H8u;h+ImLSdce`biifEEcDr^qXnw|^y&)U^Oy#Ehr^
z2-w-gSGnh=p7-dz7x~N@vuI+8V@kOAqp<8%91FE%t4Xc}5yeHWO3&&1=)!52uGHih
z)dG22WQ@HuMII%uz~$vA%vayCr6yUymQ}6zDQ^y^jLt$F5kX4~VS1#c_Q~@31_{o$
AEdT%j

literal 0
HcmV?d00001

diff --git a/www/web/warpfood/__pycache__/util.cpython-34.pyc b/www/web/warpfood/__pycache__/util.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ede0a54b49b25d9e922cba2ca4b5c8bfb9e08e10
GIT binary patch
literal 586
zcmYjNzi-qq6n@UHUhl3@5IqTXz99oCVz>zq6)UQcPGZP{+_RG!;`neJRYYYf9r;7}
zm%K9F!i<p6@g*mn>b&<o`+Gl}&%dWf<3FcAKHM>)UvzIBVE+c*d;tg;ql!o~${8`m
zNChNdAuU8iBBn)8Bs=0@PmFfN;hq@ph{-^d=$z6bN9PfV2lSmN4@o?vWqQ29wUjbH
zQngzdt+|ias_VFqDph~><M;hxc_pRuQO&jVF~2me^YQr*lFF1g=E=JuA}h42^Z2|E
z7{yE3te|;V0WgNYg*UGN4#wz)=$7@uZv*;<O+XG7(hZowpdR}f)Z>Bf0(x2mG+U<0
z#ipOwMe}Cfbn*Oo_M+H?U^f4@+ie>8*qXK$J}xT5o$YIV2$^Z%6RwehB-vW?lk5}Z
z{yxsmuDM+o#)z}lsVZB4^^?L_&E3bo?hr*y1R!?8><sZDjq+#W6R%5?txWB#y3DRx
z&1==k%t^hjxRZ{T&7K|p!cNdT3>YrH2Pa7Q(MxSaTglh`yERk5F$>wF;X4ig1H4^}
A=>Px#

literal 0
HcmV?d00001

diff --git a/www/web/warpfood/__pycache__/views.cpython-34.pyc b/www/web/warpfood/__pycache__/views.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..1d987143db0ea4cfe524b3ca7d08191879da8f98
GIT binary patch
literal 3590
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

literal 0
HcmV?d00001

diff --git a/web/warpfood/admin.py b/www/web/warpfood/admin.py
similarity index 100%
rename from web/warpfood/admin.py
rename to www/web/warpfood/admin.py
diff --git a/www/web/warpfood/admin.pyc b/www/web/warpfood/admin.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a833aade996ae75ef5ca22f12013cef216bbd45f
GIT binary patch
literal 882
zcmcgqxlY4C5S_JSCoxAtNk?f>BtL)<heQWL4niW0W$aDl$VaqZK&eAXO~=Ra4SWE+
zStr3QDOh=C=XmRVGqd*Bp7-(jb|2GfwXmN-s&}XapP-B=7c>?m*taON=uQfn*(6)E
z6qLY#>(B&ti(ZMAL=Q-eU6Vk%ZE#Kl=QeSjHLh!L?FO#X#Ceo-Y2<sLmVRUT0+x25
zq9jj?+U3}>?n7UdWipcLIgRBx=Ql+%<N{K4pd@i^!N`YAz6GT@9EL@d%P`b@TNvhL
z@|3}?Q3#Q-sv}s#a;}Fjk(#H)L`BA$;Oe0vHJC2~{%IRhvEf?!02`CLjI^AVYVjv_
zfsNAv&uJ?z+^rqRn#;OTw+a=;`ah|-pwauKa^o{Ey$_YlqGDPO;<C^xeGCvG%}8!C
zw|0PW$gDDhQgWJBS}M(_8zVP^yJnoJ$qYg7t}yG)2i%U$$yE;mCbms;4WE<xshsj7
PtGJlH@SL7Fv}^eR#T~5r

literal 0
HcmV?d00001

diff --git a/www/web/warpfood/migrations/0001_initial.py b/www/web/warpfood/migrations/0001_initial.py
new file mode 100644
index 0000000..b058e2f
--- /dev/null
+++ b/www/web/warpfood/migrations/0001_initial.py
@@ -0,0 +1,77 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2016-08-18 15:07
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='FoodCategory',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('name', models.CharField(max_length=250)),
+            ],
+        ),
+        migrations.CreateModel(
+            name='FoodOrder',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('user', models.CharField(max_length=100, null=True)),
+                ('article', models.CharField(max_length=100, null=True)),
+                ('size', models.CharField(max_length=100, null=True)),
+                ('comment', models.CharField(max_length=100, null=True)),
+                ('price', models.FloatField()),
+                ('paid', models.BooleanField(default=False)),
+            ],
+        ),
+        migrations.CreateModel(
+            name='FoodProduct',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('name', models.CharField(max_length=250)),
+                ('size', models.CharField(max_length=100, null=True)),
+                ('price', models.FloatField()),
+                ('food_category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='warpfood.FoodCategory')),
+            ],
+        ),
+        migrations.CreateModel(
+            name='FoodService',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('name', models.CharField(max_length=250)),
+                ('phone', models.CharField(max_length=250)),
+            ],
+        ),
+        migrations.CreateModel(
+            name='FoodSheet',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('date', models.DateTimeField(default=django.utils.timezone.now)),
+                ('estimated_order_time', models.DateTimeField()),
+                ('closed', models.BooleanField(default=False)),
+                ('order_user', models.CharField(max_length=100, null=True)),
+                ('order_time', models.DateTimeField(null=True)),
+                ('food_service', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='warpfood.FoodService')),
+            ],
+        ),
+        migrations.AddField(
+            model_name='foodproduct',
+            name='food_service',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='warpfood.FoodService'),
+        ),
+        migrations.AddField(
+            model_name='foodorder',
+            name='sheet',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='warpfood.FoodSheet'),
+        ),
+    ]
diff --git a/www/web/warpfood/migrations/0001_initial.pyc b/www/web/warpfood/migrations/0001_initial.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5c994dba5382374745ddf790c4a230c9cd8d1b5d
GIT binary patch
literal 2392
zcmbtWZEqVz5T3j9ThgRS)3`5$mX{W4KsbTV2$4EOLZ}qkl>qbMbh%wSXU@0Q-EK?z
zwTK^t#4qC;LV{=J&URb~RlsMhcV>2Ho_S_&*THX_>wo<6>o+k~p8&s~kx#|<m?(Tb
zN{OZ(4L$N$_9^vg8qhGHX^n=pQX5cOr(r{OVBVB@jdVbh7L7bob^3|u1<`lI7O8*+
zod*0Tf8x{eFtghjT$aQ}=`c;K&ZD&G_-t9nFipmJWD}DWmiJAuDlNXUYnVTpn-(eT
zLi><Y_!-G)V&vLqykpFPsZNs;C}8;vMmHIyf(c?>#s=v%QcY4VfUb?8Uz26)r0~50
zr3dBM$HZSc+_;Rx&2tW~lG@_9@W!#WFE(Af*tB!8>AIL0HnIO*5rMYNX;!&3S97^>
znOy#f9Q7|yU&3=!@NAO0MfxgDwrGNiY}4c#soSJpt7sY5R}t?0Z-lR(V{B2=U^U8}
z%S5>=4tIoDByyc5yEJLTA$N;<qq0_2cvHmHDyX;4L3*hx-kv+JT19-`6XiwJ-Jesp
zC@#wS4ykwLMZHJr!K=5wpnyBP+}M$g@4af{`y3Y=$2bUXQh(6-0Pm!&VaTGXb{m)+
z8>4!W)nk*N$xA&-bgBx+?|h;xFNvHrVVrBMQuYcIvpktb`C0gbK9hI9(0LN2$#X5s
zpX&U?6grd;?B<IjHxF5!BGHdws<W{@O@4>j@$tbh9_LEuvedChoN^Ubm!_@>DavgU
zr&^X22q((eOs6`tu8su&7MJE(1n|5^=~3iT>lil&`8qes#nx>?9zhP{dGZXyWFd|;
zZMBs%&$u>}&!T+BOS`;(&eg)<K<7_6s>DAvnO@{GIMvz;ScMpl&qG~UPzN4E!^wt_
zwBw^RPC=P+e8`p-rr?|?3%MAA88(T@E?3Z1U`m?#bS|sF$@9ipnY?AJQfI-+76~dj
z6oPu^Z=PA*xdpXtVF<->7)qot#7*E*4Ur4|BzIc4PqM_KF{CS$p6N{KEKYRMm#c<B
z^`xsFG19&;&P6yxza4WI3eIEPKw8?YcN*oTo@qKxO=L@vd3k6|s-x_j-Q+qMXJ4X6
znP4@Evayk}suM{;3XQu=p!N<2y~Cr=Ew{xH3iJepSz>TDNekJ;b$E^<Tij`snP;Lr
zRB9R5%y4PS9ofMWS`Nj>5ckc@?sLhKY?MbbWBT`(H|zev!NEsiMO}Ax*5^o^aPcjM
zhL5MV<~95W-d<4sdVBJ0Ei`S&Ti%D29a1&B3oYB)rOj)2_kH-l(_!MPVvd}3If~hb
ziiG)+yskQt%9WM64dX)JE&mF1=bZNM@K%0#swKi;cg~*Vv}8tR|B)Ukz$az@eaci7
OEezZK4R6ES2>t>*(E2z4

literal 0
HcmV?d00001

diff --git a/web/warpfood/migrations/__init__.py b/www/web/warpfood/migrations/__init__.py
similarity index 100%
rename from web/warpfood/migrations/__init__.py
rename to www/web/warpfood/migrations/__init__.py
diff --git a/www/web/warpfood/migrations/__init__.pyc b/www/web/warpfood/migrations/__init__.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c25abb283230cfa09dcaf642eb31d30b1383cfdf
GIT binary patch
literal 133
zcmZSn%*)kxw=gW30SXv_v;z<qvjB+{28Lh_kcgiKkYGR~iuHhE`uPPV`sIm51(|ti
zMTuZmT7G_ter{%ZQDRAEeqOPDe0*kJW=VX!UO{CE2T+SmZhlH>PO2Tq;9?+V003VY
B9H;;Q

literal 0
HcmV?d00001

diff --git a/www/web/warpfood/migrations/__pycache__/0001_initial.cpython-34.pyc b/www/web/warpfood/migrations/__pycache__/0001_initial.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..6e39c4a63cb265b0bca1271f1d39233ab9fb0e44
GIT binary patch
literal 2125
zcmbtVUvt|;5MTYZWy?)S?Sv926k3XbI)MkC7$(Lc48ycAlg^Ye4;n>xc4TCoIY}+a
zYk1~+@XElKxmTX@!UyQ^!0t(M;trvc!M4tOySKmH{q5=QFTd0J`?o)y{O$w%370-L
z%6s@^-{ZjWXFvilH(+dlL30xl6Xq6-EtuOdwo9!Ai34L-d!XDP`AcR4bKqxma)4Vf
zYr+}&HGx@h*mut{0Q3#DUZim(7!Q&-=Q2#PzNuRCcq+p@7HOv3IU1AfQAF$OPZxzf
ze6n9G01lKLCO0-IU(9TZvJKpU8K#6v3(8!0gR)?##Ptn5;?x7y0@j8zuqU|K1X_kl
zA6N&K1}di}3g!jijq3oeT>@MO_6o&CG>Wxxwdv;7rta0Io;I}*9|(U_Pusw@sLZOC
z#%e9EUZ<9SBZvJ*sxRboOXq{cz6QJlvl}o&s@GtKv}^-=y`p96tY-Me|IYCCCB~LL
zwN|6Nd7UV4X+Uh{mM&xiW;bEhML^mu>`rB^y70E1u6BXFb19`4cE#NqyxJ-n^PW~-
zMcunKb<5`VfZYf7p5FiWfc0PQeg+op@Y3;p?fAjV96zME=s3k!eiPUOe6t72dsx4|
zkCmN<bFTaYA=oI)`Bcag<xXOruuPdTQ+`<FB8VhMBU9~#jOU>|34Y)w%FDQn!z4cC
z2g-lS<&nsEpyAA~_VJ7ee+m+wPV?jQ=Xew-k79fy8JEf~(DfWo1i<)3lBh-~^EgVl
zvNMEJjY!PrJk6DZ@gmeNLQJK>_#`ZnT(t@5TPau(<*GBmNf6b!dm;_+JmNW5W-d;9
z&qBGN6$A2FR;UpUxqM3K&f-|4yv*<LnDboO4B=FlXE|1jbq9jd4sgbm8zopLQ>{`*
zmDIAf`#K-g6833#C4L>TrO!;w)woUT7gaHiW`69EPU9;lql`{BR&hx8sK2F}fd&Zz
z)d~UxEfS8h9|S)ZVM49IStCy49Q&kv#uq$gJdI+WNj#WAwMV+K59tV(w(imp`+Y$D
zSKjD2l%?1@NJN;Ivj4dd2@liSA|#Ke>DRa+Ts8~SsZb_6Qcc|iydhL$G&~#)_rFk`
zedO{na#(sgMII-aY7%Rw)Br0L&s1~BScNPWc;Dzt=2wt=n4BJ-f4n0W`3~_BrxO`!
ziTK*NxRiEwcXvMus=5b@6X~FL3!m&e9DLI?UE4EU^S-fdRsY7e{;n-GJ)Ex@4=Ov(
zD(N<A$<`}vhHKn45d*(EO5dYaOp3gaNWL^Np7Kgw2JA?)UJ`w4sT`Cy=%8jyenL*Y
k%C1=&)FkN`7i5&ukk&UpE&Kl&H8yMFux@S|zTsQ{05#hNdjJ3c

literal 0
HcmV?d00001

diff --git a/www/web/warpfood/migrations/__pycache__/__init__.cpython-34.pyc b/www/web/warpfood/migrations/__pycache__/__init__.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..09b0e1a4a1532dfec165e4b806eb7a75771f4237
GIT binary patch
literal 129
zcmaFI!^_oow=j$W2p)q77+?f49Dul(1xTbYFa&Ed`mJOr0tq9CUwZoa1tt3BiA4pO
zd1*z7U{+dweu{o>W_nR#NoIatv3`7fW?p7Ve7s&k<t+}I-29Z%oK!oIImJNC007X9
BAAA4+

literal 0
HcmV?d00001

diff --git a/web/warpfood/models.py b/www/web/warpfood/models.py
similarity index 100%
rename from web/warpfood/models.py
rename to www/web/warpfood/models.py
diff --git a/www/web/warpfood/models.pyc b/www/web/warpfood/models.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..fe285b0be441ac3df4e2cc1c0bab81023d06b8af
GIT binary patch
literal 4454
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

literal 0
HcmV?d00001

diff --git a/web/warpfood/templates/warpfood/main.html b/www/web/warpfood/templates/warpfood/main.html
similarity index 100%
rename from web/warpfood/templates/warpfood/main.html
rename to www/web/warpfood/templates/warpfood/main.html
diff --git a/web/warpfood/templates/warpfood/view.html b/www/web/warpfood/templates/warpfood/view.html
similarity index 100%
rename from web/warpfood/templates/warpfood/view.html
rename to www/web/warpfood/templates/warpfood/view.html
diff --git a/web/warpfood/tests.py b/www/web/warpfood/tests.py
similarity index 100%
rename from web/warpfood/tests.py
rename to www/web/warpfood/tests.py
diff --git a/web/warpfood/urls.py b/www/web/warpfood/urls.py
similarity index 100%
rename from web/warpfood/urls.py
rename to www/web/warpfood/urls.py
diff --git a/www/web/warpfood/urls.pyc b/www/web/warpfood/urls.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2bddbc967f9d63e88f5a80544736c0dc64f3eb91
GIT binary patch
literal 715
zcmaJ;%}&EG40hK2|1lu}M=l5oNb3tsg9}%L0CAWQRke7fsB21-v9SXeo|Pxy0l>~S
zR>VY_y7AY~_7~gvY}GG5p6`aRTs8Wh)2rXeNZJBofU$sq0Kt9%;sV^F0O<faAd4VN
z@Lmv%lmW@5U0ESjz>-C3E2Iuswn$@zGyy9XX)zL(U{D3wh8uT_Bt&1dTtO$}keOuh
z!eQh@SIIu4(R?0w2c}3)5{%LC9i~B+`Xi-`-d}TGBAj~e*;P+JA{sxE{rl<ZF@?7C
z5kAxO(K^hiFpSZ+K^w#OeuXdT!&qsQ`tVPlG>D{4qcVwEPQ}iqG|bM6!C9&@^N*O_
zUs>|>OP4!iI%MQikc6r`RLQ7IJ=NEQ!A~2gZ?bE<U`m8XiNu+0FJq>~)J01ccQlPP
z!g5WM{Cr_cpfYJ-3}%UT=|8NE9g(L}<MGs@WRwN=#4<cq*G*pykGeNjauQ>ohp)Lv
LN7RekV)1+fr#rhp

literal 0
HcmV?d00001

diff --git a/web/warpfood/util.py b/www/web/warpfood/util.py
similarity index 100%
rename from web/warpfood/util.py
rename to www/web/warpfood/util.py
diff --git a/www/web/warpfood/util.pyc b/www/web/warpfood/util.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b6f7e86988674bd26070996e45148576c06dc7ca
GIT binary patch
literal 689
zcma)&J#X7E5QdLZJ{%`$o1s}UWHO+oa*)AYilRZ+ASi4ggO`FaDTS>_3L=G|MmnWy
ze{Gj8LGm6|xNE56>E(mF<MHx8hvUB|zpq#HZ|&m$2|GAA1ryW|SwTxd!U!@MDOgT3
zwMA;1W(;-)u)6`H0qkwScmVqe)W|%b*%FzD^owYjlX^vq;x(=`PgsS3iX%R{xboJ@
zxQ#<=)@vEJpc>=8$1%hgMvGgmW8zL)okHb}?_*LIN$qfwuNktu93&T&%Hk4M7aP^e
zT89-kkzw<NpRvPxxCj$;PxK&oHV+y7gvcnua=Hgeh5<nzV@9V{M#qbSFSx?2P=@PG
z!XyM{le6-?GLQUd=Bbg+_f92MHD1O!I2TXTD7Zv=gR}@6o~`@N7aWybIE9+}Hcszk
z*BV!KGO5aYHSMEm%JxUxM@;2AO!g~h@8OslBk@*T4XwNbQ{SYkeYx^3cIKwM?X7fX
wt;?uw+sLS+tiy(;M(134egyZwqnEceLf!}KRp023JpXV2_eSL6D19gSGodGvVgLXD

literal 0
HcmV?d00001

diff --git a/web/warpfood/views.py b/www/web/warpfood/views.py
similarity index 99%
rename from web/warpfood/views.py
rename to www/web/warpfood/views.py
index c9e77d4..e7f5bb2 100644
--- a/web/warpfood/views.py
+++ b/www/web/warpfood/views.py
@@ -61,7 +61,7 @@ def view(request, sheet_id=0):
             if product.food_category.name not in pages['food_products']:
                 pages['food_products'][product.food_category.name] = []
             pages['food_products'][product.food_category.name].append(product)
-        print pages['food_products']
+        print (pages['food_products'])
     return HttpResponse(render(request, 'warpfood/view.html', pages))
 
 @login_required(login_url='/login/', redirect_field_name=None)
diff --git a/www/web/warpfood/views.pyc b/www/web/warpfood/views.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..469f7f68a221f1c7abf113b25027e4299b3571b8
GIT binary patch
literal 4108
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

literal 0
HcmV?d00001

diff --git a/web/warpmain/__init__.py b/www/web/warpmain/__init__.py
similarity index 100%
rename from web/warpmain/__init__.py
rename to www/web/warpmain/__init__.py
diff --git a/www/web/warpmain/__init__.pyc b/www/web/warpmain/__init__.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c218eb2ee213553a85a669c8552205540262bd5d
GIT binary patch
literal 122
zcmZSn%*%CEr8g{@0SXv_v;z<qvjB+{28Lh_kcgiKkYGR~ij{$4`uPPV`sIm51(|ti
qMTuZmZenJhetdjpUS>&ryk0?N2?tP}O>TZlX-=vg$h2Z0W&i-!AQ#vG

literal 0
HcmV?d00001

diff --git a/www/web/warpmain/__pycache__/__init__.cpython-34.pyc b/www/web/warpmain/__pycache__/__init__.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..4bb97336e622902aa44c1127a11ffe67df05c916
GIT binary patch
literal 105
zcmaFI!^?G5r8kTL2p)q77+?f49Dul(1xTbYFa&Ed`mJOr0tq9CUt)Ut<%vZFxrv#1
g`tk9Zd6^~g@p=W7w>WHa^HWN5Qtd$Mi-DK{0L)YsQUCw|

literal 0
HcmV?d00001

diff --git a/www/web/warpmain/__pycache__/admin.cpython-34.pyc b/www/web/warpmain/__pycache__/admin.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2876193affb82e9d3f92fda42b5b5e7d20f5fc23
GIT binary patch
literal 404
zcmYLEu};G<5Ix69nnnR4G4Tmm(uEPBGO<9GN(>&bOl?)E;-uKED(15C7cBgeS0)xd
zfQhrCg5`U9zIS);{9T;nkC$%`?*Q<L@plqra}0ZjAn_9D05kzcfcSR=T?Co}qd*ja
zbqtEafxxY#AY*vN5=^0xz##}M1)0F2O22R-RKz7h>b6G`H)?N}K6^X_$sEI$2nxI@
zda}r`v8W<9^&L09y{V|nIPZm4oV%QJJ;+_>dBOSfPIRO40Vcyy0e;Tw*<P597HvNZ
zJJg#O6QexwmJvb`g?Cd;*r{BLel^s~q2HSJ$#|Ka9s6svQ=K&wvo14g)!MBxF2DEb
buwWSUZ$7eVD8Cwaz4pJgDMCq0dO>~x-o;k2

literal 0
HcmV?d00001

diff --git a/www/web/warpmain/__pycache__/models.cpython-34.pyc b/www/web/warpmain/__pycache__/models.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..18024819281970ffe5aca591855ab604a21e5b0c
GIT binary patch
literal 1064
zcmZuwO>Yx15FPJ#!UjSFQV}=cvX}J2u|koGnp1OW#9=R%iJdf+cT?<LrBvL)l^?=i
z@|9CB`~XhOI7t;st@Z5q*`9ghXaCN7-FNSQd~yun7aX(*{SkIMLnHBHpaCidB?Cs|
z0CWIV2xYh(hoB><Vkl!^V;O;r;X5viL4|OYzy?>QFqR3()K8?KVvlAZGq@-^cbEtY
z=K5{DoUNqddf6x=v_&kb5b$2-oV>G@sfgHpi_sflw@3{X5KHvRz-LD?I1E6BfW$Ts
zAV*@g$2Y*r#3L!rLYaBLL*)H>R(9c@c==?<*F_Vxwys-=8?IHoXfE$4xr^#n>#55{
z+pKuKT5}=g43F10`cpr}Zc{Yh0ImSbXA>+lZkCN!=tNfO`A;x8uK4p}c)S+ox)RI!
zczX`R>#r{5+%|^u9z_b!0K3hJ(Qr30DRP%_UW-a`?z)`g-d2;JbN;0jdOKr6-0C`~
zm%^Mam6k4Qtum(T(W$y=wrE-@YsEsj-bc}>>9SHgd}b5^(mcftp6`JnZib|xN-c%V
z*%2GCoDBkx|Dz!h8PUSGXbv?TZ{?%w6u>5+D~D2E6p_oQ;QuZIorVwe=0PA7z1)kw
zz&NO{k8|7G#~GfhM)=~*OWZsu67vlIrcdTM87jxcUI&-V>BQ_o#Uz-avRy=x2I$!c
zP0kW#UZXQ9qK6R)ek_DJ!U@Xh<;|HNPl^s{Id7ZRpq7Sebsc#n>cwg(KYKOHd^eus
kGqHy9yV$=Q&)&y*ETPLzws+(MT~V8%=?8t*4_|fv0&*$TivR!s

literal 0
HcmV?d00001

diff --git a/www/web/warpmain/__pycache__/urls.cpython-34.pyc b/www/web/warpmain/__pycache__/urls.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5029dd040622b0fe55efdc62e0fa573e221181cc
GIT binary patch
literal 501
zcmZ9JJx;?w5QX2`UdM3~2q?)3(ztO-8ie2iX^<$k2->hqaO9t8?GQ*yO~)bNN^YrW
zH~<y1j)H)dcRcgW)AN)3+3kgcljo~f2E60f38+7(TfR_H^f07A#vmA&ogJhOG8e+#
z%`Q?88HeD=d<Y**Gbj(*#j*v(p?o|!4Qw?qXkf61ZD_t%hI`n7_ObLEW!J)m2hoP=
z;W9e-pk#<x?XFEqFE5ix9yxVe$?|SqNTX^m*PC+d%*NEoOxNDj&cRI1i*+>_3w~jn
z?a@rCEXk9yGO|jFoHmCIx&E=*j{a+`H3`F=&`#4Rtov#y^F<Ng6!~pTxk}?uNO7={
zW@Yom_X#PDYvJH8j2kE8(aLZtHBWM-9|UjG)*W(N$*R&OFW+D~R%XlBaXi@@P3#xr
c)ngr;W`$a(`iy=n$}W{Y>$4FbIzu*O-@#XZa{vGU

literal 0
HcmV?d00001

diff --git a/web/warpmain/admin.py b/www/web/warpmain/admin.py
similarity index 100%
rename from web/warpmain/admin.py
rename to www/web/warpmain/admin.py
diff --git a/www/web/warpmain/admin.pyc b/www/web/warpmain/admin.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e9546890eaa7477c0276adaae4f591ccf2fceec8
GIT binary patch
literal 463
zcmbVI!A^rf5Pi!6Y7=cg!6PTQcr->mYY#LrDF?|~w#_!M5Oz)DxnBKRKR{=e#t(4A
zJl>munKvuHFK4eeUoRV+PE7B63im|N&?C?Soj@fZSVw3hbP|<>&;t7yTH+|sNU%(>
zB_87wI09=bR4JMSt1P94=7&xui1~y-HJ!1O<he_IaQ@;%9=P^ri+_2faOVUX?5130
z#F0e=p3`-0Rj2FP&w}Xs=Dj63eMKn*=B|kq{osp(8V6&yqYA83#umX)K75qi^o+tW
zNuy=P!e0?Idu4ZhzUi$W&09$s_&EW0;~qK9)vYVTl5A_#JL9|_gRN&ShSkD||9A_#
R-cH-y@f625yO0Yx7r(elT}l7|

literal 0
HcmV?d00001

diff --git a/web/warpmain/apps.py b/www/web/warpmain/apps.py
similarity index 100%
rename from web/warpmain/apps.py
rename to www/web/warpmain/apps.py
diff --git a/www/web/warpmain/migrations/0001_initial.py b/www/web/warpmain/migrations/0001_initial.py
new file mode 100644
index 0000000..e9f0080
--- /dev/null
+++ b/www/web/warpmain/migrations/0001_initial.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2016-08-18 15:07
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='News',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('user', models.CharField(max_length=100, null=True)),
+                ('title', models.CharField(max_length=100)),
+                ('message', models.TextField()),
+                ('created', models.DateTimeField(auto_now_add=True)),
+            ],
+        ),
+    ]
diff --git a/www/web/warpmain/migrations/0001_initial.pyc b/www/web/warpmain/migrations/0001_initial.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..47087c65e3f582cebce7e20fb9ef2591517b306f
GIT binary patch
literal 1006
zcmbVKOK%e~5FYO%@3a94F8l!Y)CA556;f5=&>qrAh+I}~JlQ(zBeK1u;TnDoM<jk3
zS0tG6rj5AbU5#hP<MH>+O!#Zq`~BnR$0ZzANc%YiV5g)g`UT_wg@A<s!FB+707VFk
z5Q+#E5qU$v5Y{oQ1gHqU0qg-jEn-kH+$1f^qyNxK1Zi$WqAvBaQkdr2p^>>w0zT=H
zD0F6|(^Y95-zz98x2{X-)x*gn(i8H&XQbarL12IwFszL92r!0q>%f3OGsrfqJB*OR
z2pY>4U>8&yREID}EAn)GSPvBaeNY1q+e5%d!+(zUAlP~0oqeXv=BYOaphnF_j>%%q
zkWmSTFuO^f5L_3LC}n{)E7!Pf_^veO%GO*Ct=xb%S-UD-8k7!|>yu++bRo?y{fs+b
z7mG&ATz^F${sql#Wij=sIn9R)|3Xb+O@ZZonq!%{J59|z;HdMwj@i;K$GS~gf!4~b
z(H~xagi}`AR4SEl16+qh>fcLK|3aEl*XkU}WNvd)qvMpi)Q*sPm<l&oDlC^8?aYq_
zQ=594SKRZNp9t>zJ1W2>m&Gx{OPUt+yr*~4G=7en<GpLFAz2qxt+_6+@$g(#8yYk}
zR|#2g6!tZl<7(r^TWL1BTp8)LLh5pSoW}8FGI^CAD4cC}vyiSab^DY=E1)mxidOJa
zyb#aCskruIf2hZ*cD12;%qSE*c(s;gR-LI^Pu`RD8IQQU_MhN<Pu?_Lc*{U7H)0e#
G5B~xO1K=$H

literal 0
HcmV?d00001

diff --git a/web/warpmain/migrations/__init__.py b/www/web/warpmain/migrations/__init__.py
similarity index 100%
rename from web/warpmain/migrations/__init__.py
rename to www/web/warpmain/migrations/__init__.py
diff --git a/www/web/warpmain/migrations/__init__.pyc b/www/web/warpmain/migrations/__init__.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..cd4b65679be5fa51559303fd3de449997d87fa08
GIT binary patch
literal 133
zcmZSn%*%CEr8g{@0SXv_v;z<qvjB+{28Lh_kcgiKkYGR~iuHhE`uPPV`sIm51(|ti
zMTuZmZenJher{%ZQDRAEeqOPDe0*kJW=VX!UO{CE2T+SmZhlH>PO2Tq;9?+V001+r
B98UlM

literal 0
HcmV?d00001

diff --git a/www/web/warpmain/migrations/__pycache__/0001_initial.cpython-34.pyc b/www/web/warpmain/migrations/__pycache__/0001_initial.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..1d46674b73e867e0b3fde052036b6879904f7dae
GIT binary patch
literal 856
zcmY*YO>Yx15S?{4o3Bk93gyBL4k(u<a7L)8RS}2wLM5bJEH|EP9lX22-X$&9@MpMI
z;?MYoIQ7C0KpYr*8x>aZ=*`Sq&wF0yS32zfx%vL#2Lt#C|2#3_Lt6HTf}~#r8X%8g
z7D4252AV<Mf>{gl7-lg<Z)FQ)3}2}k1GZq<h7I-GAlvYMoZQkzFpk`)F4Vk~$hE4_
z2yMsA^>dXOQK_=9F3G8>?cCG1&klh@TK0wlf)_y=X3WbX0U2Q$*@k7}g*7^8Dt2Jm
z1xZEXcS5AJ2eJ=x02_!GL{0;ZibIe)Aa^}&1I)KZ|Ft#{`Qn36>=Orkx);&`$cN2~
zo|BPtU>RvkK|Uh$`>uDob$IULLgeV;GhCC~g+eW@V@kSI)K$sn21SL^4OT|w!d&x@
zc<p)?jS^aY!4sE$MsrbG<Y623?%2gOwdoMW71vl~)#WXn4$z!hYuBz+rO|bAv{qyU
zwgZ}RMY-le%Cqs%b$Qs5bJypbzCx{$aLW0oT4+CvvW_ZLMM_*MafOA%Vy@7dmY+8`
z3er#g_cO7t^xlx86YtRVjxL3{gXefvHE?)LUe8sIP1-M4bS1()_y*=FZ4tunmy>c;
zP1eG!RIxB3pj@b8a({0o)9LgDzf*Uxx;AZkyGzUNQAk<BlDHQo?0NJg+K+al&_5d|
w-s_^SYD4Y}{R>F6T#6zq59CF#6`Tb2y`Tm?^X%@c=A>TxBe34}h&^uo1qI>YnE(I)

literal 0
HcmV?d00001

diff --git a/www/web/warpmain/migrations/__pycache__/__init__.cpython-34.pyc b/www/web/warpmain/migrations/__pycache__/__init__.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..36db2cd627cec7a5cdbc8b5e03dd737a8a6d6faf
GIT binary patch
literal 129
zcmaFI!^?G5r8kTL2p)q77+?f49Dul(1xTbYFa&Ed`mJOr0tq9CUwZoa1tt3BiA4pO
zd1*z7U{-EoW}bd-W_nR#NoIatv3`7fW?p7Ve7s&k<t+}I-29Z%oK!oIImJNC005?f
BA0q$&

literal 0
HcmV?d00001

diff --git a/web/warpmain/models.py b/www/web/warpmain/models.py
similarity index 100%
rename from web/warpmain/models.py
rename to www/web/warpmain/models.py
diff --git a/www/web/warpmain/models.pyc b/www/web/warpmain/models.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f92532a73b3fb2bc0a324d602d79c1b3924f50a6
GIT binary patch
literal 1246
zcmbVLJ#X7E5Ist^>^KSFx*hs473kn8UOE;<&=lF?K`{zg3&C2HBZHCxk%Cj8Te|kw
z_6M}@NXPM73nF!QyyM-wdy4;@k3M|-{cT0NC&u@ZBC>4B@d`3Tm7q+JU_BxeQ591b
z2R$a!qpD9?A9{~;Oq+xXL3y8k5j_$uvjOD^>AtrP_SPZgL%N-wAW!)h&s0EiV{Bbr
zu9{p+Q##!$W5Y>;lM3c1oda)Jzi!&f^`Oo5)|U;DsE_r9fh-|t;`((&n|KEbICKx?
zMX3AG{zxK2vG5#l@!8PJCzQv*Ut}W!OhC&{DZQO?8aKjLsRwCvy>@pc+C;vfx--U|
zK~tS;WZi6~%JUWDd|Fpr;Q)r8L>odo_+TCY`>RW5bWj<g)ux!@OMbKOA<de5H`}WA
zzO0K@d8txmJqxY6xc}k!dMT}Ir96jdBWxt5T$dYSld@KomeRwJ5`mq8nsO<QyL@%0
z+UruA+=E)Qo%TX!b(`|#-f5v9TySDjrL9$K?Kt6A<@BPg^z-Se)v)C$U;Yf|KQN_C
zQ_f?#^@(^bCgMy?B9Dh@z?@(P`-h!972ZJzRKSS90FWDl#F&>^#KUAq5A8-fwGZch
z`S7><aPR~C=Su{wA@?|%{kr|ox`Q@&mZV&2ddi#6!=8Rfj+tF>f9-M2c!l^0mSu`0
zA`#&l&T^2Hy^g#8B_dy7dFCWy?*G{xTZ+zgEwcsZfe86V)$8UW{~id$G~1a948^A0
iCdc6Y&+B`Ua)zU7^8^1BDEpZSYlqmz(O8V*H=}=xaqY7J

literal 0
HcmV?d00001

diff --git a/web/warpmain/templates/warpmain/about.html b/www/web/warpmain/templates/warpmain/about.html
similarity index 100%
rename from web/warpmain/templates/warpmain/about.html
rename to www/web/warpmain/templates/warpmain/about.html
diff --git a/web/warpmain/templates/warpmain/admin/dashboard.html b/www/web/warpmain/templates/warpmain/admin/dashboard.html
similarity index 100%
rename from web/warpmain/templates/warpmain/admin/dashboard.html
rename to www/web/warpmain/templates/warpmain/admin/dashboard.html
diff --git a/web/warpmain/templates/warpmain/admin/news.html b/www/web/warpmain/templates/warpmain/admin/news.html
similarity index 100%
rename from web/warpmain/templates/warpmain/admin/news.html
rename to www/web/warpmain/templates/warpmain/admin/news.html
diff --git a/web/warpmain/templates/warpmain/main.html b/www/web/warpmain/templates/warpmain/main.html
similarity index 100%
rename from web/warpmain/templates/warpmain/main.html
rename to www/web/warpmain/templates/warpmain/main.html
diff --git a/web/warpmain/tests.py b/www/web/warpmain/tests.py
similarity index 100%
rename from web/warpmain/tests.py
rename to www/web/warpmain/tests.py
diff --git a/web/warpmain/urls.py b/www/web/warpmain/urls.py
similarity index 100%
rename from web/warpmain/urls.py
rename to www/web/warpmain/urls.py
diff --git a/www/web/warpmain/urls.pyc b/www/web/warpmain/urls.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..8bf73eb9ef3a92ff5faa3de8ff5102b704ce759c
GIT binary patch
literal 587
zcmZutyHdk25Ip&nH-woaElmnnPD#Ts@B=B#426p@N~8p3EZJiz1ZrwJ{*(`ZJB5S-
zJofr__w2h>_&Ml~uHGM3@N>2CeT$F%KoEE{C;>Esf&n8QKpB7zp$HE=gfaphLlJ{c
zph$p81|k9(!nOq>29dy9;Kh~~+g@xR#SX~$*x5abJ&*}(6W`e<aT7t&0WpC4^b8kM
zUwEYqD;FZ{n({y*B$_Le24r;*1h-GiiZ{ZMXXM^m@)pwr=UVz=P6lOP@MX1gv#E=b
z+)-^Wyezab%DRR-RT=cpQRO5)o<`WoKb<rZ+q<WB66Ps!H$)IyZZ=i6s?0jW95zP{
z9EIHTrlv62v%*hupLX;|&-@ZOh05tH{Nl<8`Qj@d$Mw*_pV!<u*%+H5g<r6jNM}{;
pW;9Znb;Er{!)LTpR=+wroNHZ)T`6y9728J`vLTzq<6z9j>>C_Bfnfju

literal 0
HcmV?d00001

diff --git a/web/warpmain/views/__init__.py b/www/web/warpmain/views/__init__.py
similarity index 100%
rename from web/warpmain/views/__init__.py
rename to www/web/warpmain/views/__init__.py
diff --git a/www/web/warpmain/views/__init__.pyc b/www/web/warpmain/views/__init__.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..0145608a8f0d55a7b176ddbdfad1e2753ab09ea3
GIT binary patch
literal 159
zcmZSn%*)j@D<dqK0SXv_v;z<qa{-AI28Jjg$;c3_!35-%umXwXjH1k9KMjz&5|Ens
z_{7qZjQpbbcnu(r0YMaN0=fG61tt3BiA4pOd1*z7U{-EoW}bdoW@>q{etdjpUS>&r
ayk0?N2?tQMO>TZlX-=vg$natyW&i*-J0c$d

literal 0
HcmV?d00001

diff --git a/www/web/warpmain/views/__pycache__/__init__.cpython-34.pyc b/www/web/warpmain/views/__pycache__/__init__.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b7303296abddaf3b5997fd2682fa71c5ed2b3124
GIT binary patch
literal 133
zcmaFI!^_n)D<e#dfq~&M5W@i@kmUfx#auulg@GXoNHQ`6YcfT#CTA377W-*3-r|an
zPb@9T$S;bIU&&C!1XKtne#z+RmnRk#<R)h3>6c}umKW>C$7kkcmc+;F6;$5hu*uC&
ODa}c>16ffF#0&s18y~X(

literal 0
HcmV?d00001

diff --git a/www/web/warpmain/views/__pycache__/main.cpython-34.pyc b/www/web/warpmain/views/__pycache__/main.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e4a1a19ac952e496a58f037f2f8946e406bac56d
GIT binary patch
literal 804
zcmZuuyN(kv6uq8zo*P(cMTJC}6`K6O3L()@r2s@RO*9#sWFpTvTzgnH&}G~G5Pr!m
z6%8Li1J|A<Y=LKd?ECQbIoChOli|(f-TU7R;5$4RG3{T{)L#fV{R|{P!=PZmoE?A+
zpb4P}dpiUfK@&p}_jUv_fp;!52AM*WL6HFyG4KR<3OoZofFlHa2z&&$07t4l06qpj
zab`jO0lb}0e-HtfGn=4jxj@>DUmLT3BlKRiT97@JYE!o>6d$`91t$-?B#4&cTH8S%
z>`)%kh2JmiIb~61WmX?*A^EB;8?mgY1%9~I$$v#tKPNB%I|jSJHGx=~(5b&N5ttah
zlEBcpj`TC)8!c^Gp(u^u#h@hyD_LuEczj*rzA5W=;UM3dM$QvVsJczndPiKe%@mTr
z)%wQ9`*I^Rh7`ttfYhW;p3vqS;FLVSp5%*D$xk)i(-+>;;hOsNIin;U5kPRka7OF@
z1zu2u1RCb0kh<U`C0HKLPj{4S)tR1m_>UNl>G+)Cgci@Mhchy5?2ovJb{c@;Bf|N}
z&iJluH!9a#g{JC^_8RTz-o2&Q^*7k3_nu0%2J3ZRc4nJ%Q7J5qLXA#dF>w@qq%*ZF
r&i*pa8^wjxzQ<m_zy1M9*GBYAvn$H&q<G<;UOP!M=Ds1Dh0o$YF;uzX

literal 0
HcmV?d00001

diff --git a/web/warpmain/views/admin/__init__.py b/www/web/warpmain/views/admin/__init__.py
similarity index 100%
rename from web/warpmain/views/admin/__init__.py
rename to www/web/warpmain/views/admin/__init__.py
diff --git a/www/web/warpmain/views/admin/__init__.pyc b/www/web/warpmain/views/admin/__init__.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..733dd27545037f0086c86e0b8e9cbbc1217fe6cc
GIT binary patch
literal 134
zcmZSn%*%B`t~V^10SXv_v;z<qvjB+{28Lh_kcgiKkYGR~iuHkF`uPPV`sIm51(|ti
zMTuZmZenJhepzN}d9i+CN-mHcAD@|*SrQ+wS5R5P0n}rYo1apelWGStxfqBU07DEM
AW&i*H

literal 0
HcmV?d00001

diff --git a/www/web/warpmain/views/admin/__pycache__/__init__.cpython-34.pyc b/www/web/warpmain/views/admin/__pycache__/__init__.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c91374a6a7d46e22f3deb309de4dca70116fa0b8
GIT binary patch
literal 117
zcmaFI!^?F-t~ZPU2p)q77+?f49Dul(1xTbYFa&Ed`mJOr0tq9CUrKuV<%vZFxrv#1
r`em7^<;D7mDY-y)e0*kJW=VX!UP0w84x8Nkl+v73JCNRDAZ7pn2hbVd

literal 0
HcmV?d00001

diff --git a/www/web/warpmain/views/admin/__pycache__/dashboard.cpython-34.pyc b/www/web/warpmain/views/admin/__pycache__/dashboard.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e9aaf8c9d0b1aef0158b3d2202394829086d19bc
GIT binary patch
literal 557
zcmZWlJ5R$f5I!eOlfF<TBsN%>!jOs`AtV+SDnt=Om&%Pz6Xe9fc6d~5W#xzPm%K8u
z@B^4QrxmJ%eg1qe-+kxr{-Aq#{C;~y06t-B1*o6l(K7^wLO=i%1f~Rtvpo<V6h2J-
zwe5pwK@q?-SlcZSZMfk9FqAg15Lg5&@K^^}7v2C?SgUbP;@%fFftc8~;w9q>wf==M
z)iu|ZEHy`aN61B9&J=&BbHy2Y$dT==owX9naMb7{yNglGNX_gn=Yq{jTJUj-<2B3O
zZnSeedJn;%5O{3{G#;#c$7>RM<K_MnRaHUrazt5y$f(Zdk}8&DrVz2Oe0;7v1RGRz
z!8LLU9Y3zk2dFLveh!n-UzNw4Kk0w9suvsNIP-Ie`Px+jPxTSw$PU>(Ef+G;nN%jN
zjb3-_ZQL3DP(#8VY&@wfjmqZ<txc9No=QcHR9dyLo*g(QO{6xtXnHgxx1i_pqLV_h
QTJTf%S2{u%61ThlF9V{AegFUf

literal 0
HcmV?d00001

diff --git a/www/web/warpmain/views/admin/__pycache__/news.cpython-34.pyc b/www/web/warpmain/views/admin/__pycache__/news.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..7a7f552cba68e46cd2e80edcd33ece681be27458
GIT binary patch
literal 1177
zcmZuwy>8nu5I#z>WyyAIBxsucW$303_SzvR3Ir%RxosR2s1`vnnOKT`T#`<Zz?s~&
zFVU?}(5L7NaP8Ek574Q1loMpABp!~(?~Wh8qyF^zVfW?Nk4GNBFSz%#(0`3XeM7_X
zV^9E;3}ObQ1F-{)q7D=;lpe%hGk2kALD`15-ON2Gd^jd#3yKbu0mK26A;cjt(FTs6
z54;0BfHgRT3xRjx3xhRo)rJ3Kdcga)81w^}Mq9s;Cq#~EOHpwlO-BlzNiowAGrhN3
zFOGy-)RhuA-zw^}tV*Q#yhI4c2z!C4-b7p~(;@q&mZb?A*ishP{@D6svvXTEIn6}D
zlPWF6WaiN3_;@%-xkDW4Cz=&NZpAxyK%RnTHsa9fZX8%Skh^$rke{sYk$>Y_ObhZh
ztXxQ1WOKX3G>T=Dr<kfyHWv=651<3cL&&?p5ytF73l4BIEVn_e7>RxEg8V@&HW?_M
z54f}jw#lP{nA8WoMKrKASYVAL8HyZCjQ9TC^!WP0IOSzlWlGCbXLU8MP_uD7oJo;t
zk<ctTB?<i|!cAaf1!XYQ#W)$i-n&fYqD-@@sb-6e=DIARfoYdQ&ucC_2$o&S=wvFn
zNQ;acPo)>acuOT@+%I^#NXVs5NSBbUMS3Qb^vU<@lN>JrwzZacEs~Qf<DLmEsZ)~L
z7J0^}iy)LXz9pIQxM6Eg;8E;5$j6BNyFVJ=alXjt%vOhn`Ql1GLQsH15gMEU8?YX}
z0~WH->ASnEkF)2F#ob*RVnLc5;!wm3e}ienCU(onkq<E>_sCGy#ymmKbS+&j3Zca_
z3@CdI9r+afsBeZmPph+fq~^8Mv!zz{yp2TN&DtD)46B9N-$Z70rDb+9N|$;*;$l`~
zhij=MU2D^))7zD$&Wd<&E5@j-kwznV(=t-R61hj((znbz2bi!d#49?t8lu@{LwrNF
L>us~`oo)6HHGdQ&

literal 0
HcmV?d00001

diff --git a/web/warpmain/views/admin/dashboard.py b/www/web/warpmain/views/admin/dashboard.py
similarity index 100%
rename from web/warpmain/views/admin/dashboard.py
rename to www/web/warpmain/views/admin/dashboard.py
diff --git a/www/web/warpmain/views/admin/dashboard.pyc b/www/web/warpmain/views/admin/dashboard.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5cb038f79c21cc76099bbe248cb79b26bc09f7db
GIT binary patch
literal 688
zcmbtQxlY6|5S=7@a|j8E4(f<v13f}WG&F1x5XA~<Wn!~2a_nGFI3&8I<!ku>m`M;@
zP~v!A=CGgNO!B!kxjg>3Dd1=I>3>ERZV4pq2n;|K!90S9;}}c~RRZ&*ixV(CsQNJP
zcX1EQ0IpRZB<%snA;>YTAeJL|2Uro&h%;B|gdWgew9<$?91wVArSe_8N$~|@ovTng
z8&sFwrmS&GZ5LiWHrgxM<(c9T$G_Fan=qs(YY%6*OFkW@3k5FjwK8&HMWqV9$Hr}+
zlZ8D3q#eOq+dRgwN?7()8dGT&_6eVbuPdQ#CS*k@MJVr_@N!yWWzvLB<V>2A0Wx(h
zmMU~gSruzn0aLEG5RS;pT#Xr1YkTiS>$Q(OY4sfbJXOE8%$g?l!kmHSK|D)&2)IKa
zAB0`HX(*k?qQTI~*;rRf9xn^UgLSfS7QMckiU!N6RE6^boew$F;}!ucY>N$QgFVX3
eoK^XVoOMJ0=!%I>DkmGGPFY;w#7@NDB>4t$*qwU-

literal 0
HcmV?d00001

diff --git a/web/warpmain/views/admin/news.py b/www/web/warpmain/views/admin/news.py
similarity index 100%
rename from web/warpmain/views/admin/news.py
rename to www/web/warpmain/views/admin/news.py
diff --git a/www/web/warpmain/views/admin/news.pyc b/www/web/warpmain/views/admin/news.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..9c29314a61e93ec97f0ac3dfa1611005c9d255a0
GIT binary patch
literal 1411
zcmbVL&2G~`5T3P@v~iNAYDGaHIB<$UO0FC#gj5M}3gA{q<YKwmO|q_k(%ng`O6e(F
zc>~^qr{HOL0GJu4^unqBS<lYj&V2JZ{N0N>Z@zz-!uD#?_Z_|d2Q8W&1vx;WV4|Q1
zU=o00Z2)-)MFS>{dLKgGgrWtLR=saPz5{3M*@S!-iZ)EzP((0^K$#Y3dUinXg6_fw
z0^J53!8ZjPI;RW&cj(+X^f>Bt(4zwFAG!tsN!X&rnNk~vyCQ1q%oGQTja^zkATDF$
zmsROat=%JSUd?TpICHrocU|i_<W-%uLE_k4d&$Yd`^pvA{uj7%x!<APNb-#EkYvgu
zM<+9Da-EcEVJxX(%5`!=#`uI@|BIG2KqfF>1mI?XN;CmOaT~xofGi}4z<m|D!SZb=
zK26A4unr+<@|uZBA;BuarxZ$6>ky91&p;(-5o8_E<fg>Xgkw64(rvxgipO#hg8Ru;
zY$LinC^Bt8ZR0p01@!>;xC|O1CD>4riiX0-jFFrC^zrn}KO$k2>cW=Rqf60N<)|bS
zN4QUxsWT~>gcZq*ab+ZHr523El2fSQhm4=q{t11qQ@1QqTh_@X=Wu~VKIoHCxKJ2e
zR61r_#9Wn3(E8*m&8?OSeR^d?Sa~81(<#^KGT|N1EEeYQtd{BA_?RWBusY9(ST!Xo
zM}$kxZ!je5++fT##`MB~K@fi?m+>gFbVTQKMfZKPEAIyM1zG%Sl19}MN8G6`XD$^<
zdcLv@p}<;qzPyQ_l0PT)EI`m#ebuGAuObx%z3@o&X!kM@4swm$+zGv&&(=VrW6ij(
zK$>_=`<StQcvaY;aA{MU+@N_*ThGZM7!UaG6B_6&E$7wHFDi%A6?%cMMxW!i<^})0
z9E&gRmD8$3XU~V}3Kv6drWJ9laz5s1$V3@EF|N?&$mF<V&akMcsCulz5~0GlDve+n
lKO^7!&L1=sq1-W@v&zj|hSxLekJLWhkveJ|sQ%%B`U{eDEL{Kq

literal 0
HcmV?d00001

diff --git a/web/warpmain/views/main.py b/www/web/warpmain/views/main.py
similarity index 100%
rename from web/warpmain/views/main.py
rename to www/web/warpmain/views/main.py
diff --git a/www/web/warpmain/views/main.pyc b/www/web/warpmain/views/main.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..99bca5f4d8cdf1a4c4969efd0c8e8680cedd0315
GIT binary patch
literal 985
zcmbVK&5qMB5FRH@+ih8>K-%Npkg64GUSNfgxNzzrAP%`yY3yxXId-roEGuy<SDuy!
zfEl}L51b&4r}LAUZ{{24zpiIbcRxS3aC!>*e@7<_BqY583_vHK79iNpz+}+nQ0K|c
z!Hl3Qpe~X<0yBnB{AB@V0^JnqDF{`79D|&IoPwOg5i)rNKLCzYcm{IDdOhdR$K^9Z
z*1zdl3es>)!YeD4Pd0}?Aoi6Cy|Y0j?{o4Rx6^jx)t5ngC6k{^+$D8H>RLSpygGk7
zcoQaMl`*x%SEN%arMI|w(8|b-Z93I*6+X<)dph9_2?RI@IAqKb&4D?SbB`my0>0Dy
zIlGSZ3K}YcBV)B*HK=6l!csdMqXUMQ6nSiX-!<BnELMB$%#w$%I5(!c?SUE#I3<Vk
z#K>m*L|_1Yvs0ns4l6p4=4CJ@Lj_z$FN^S+MCp1g8BN;<-$X6qe$~`ZLhn;yO}u|&
zxWG+7b|e1g;)Vjm1&TN|5s{sz&M34F%<6fzX6pt_!{y|^G+oWfjGb4!;{R?r0$fvt
zz~~^>@j~H(ba`m(&aJ}Ud29y^kt}4~Q)JKgifP2#i?ekWz22^x0rxAZTIU;dK2%&D
z8Hi_#!2z|w7bj0#V&|kXA#E^T0cTakITc^n%ZyR`hu!c>?y2}-)LZU1Fl7tDznNI%
Gx5XbW9@0$!

literal 0
HcmV?d00001

diff --git a/web/warpzone/__init__.py b/www/web/warppay/__init__.py
similarity index 100%
rename from web/warpzone/__init__.py
rename to www/web/warppay/__init__.py
diff --git a/www/web/warppay/__init__.pyc b/www/web/warppay/__init__.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..16f89f48ff48257f6b0142a8d3225e80fb3235bc
GIT binary patch
literal 121
zcmZSn%*%CEr8g{@0SXv_v;z<qvjB+{28Lh_kcgiKkYGR~ij{z3`uPPV`sIm51(|ti
pMTuZmL1LwTe0*kJW=VX!UO{CE2T++!ZhlH>PO2Tquwo!)006sn7kmH!

literal 0
HcmV?d00001

diff --git a/www/web/warppay/__pycache__/__init__.cpython-34.pyc b/www/web/warppay/__pycache__/__init__.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..530a95887c5e73f9be10fc5465b9a14814fc9be6
GIT binary patch
literal 104
zcmaFI!^?G5r8kTL2p)q77+?f49Dul(1xTbYFa&Ed`mJOr0tq9CU!r>Y<%vZF1&NjV
f@$s2?nI-Y@dIgoYIBatBQ%ZAE?Lf+lftUdRw7C@a

literal 0
HcmV?d00001

diff --git a/www/web/warppay/__pycache__/admin.cpython-34.pyc b/www/web/warppay/__pycache__/admin.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..8ff9d6ab81addbdc0ef4300e05cce83b22e2cfd8
GIT binary patch
literal 101
zcmaFI!^@R6cUl+&5IhDEFu(|8H~?`m3y?@*U<lS^^jpbL1QJFNzl8Mk%M*(V3KA>z
c6H{_C^YjWTZ*kb<=BJeAq}qYh76UN@0CYSP-v9sr

literal 0
HcmV?d00001

diff --git a/www/web/warppay/__pycache__/models.cpython-34.pyc b/www/web/warppay/__pycache__/models.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..efb08a5357d7a0d053fd4b2877f8007332b2b085
GIT binary patch
literal 1460
zcma)6J#QR05FOrr-fAUXWIKuS0S8HS&ACY#1OjAOF5*J~$tkv3Y>t$)GWYIG?nai7
zPWcUP+#B$p@DE|@%8h?Os=VQz;<KQ_i{l(QL%y9ie6t_&&Fuc`mw&t+5WS<dC&YXY
z!@h!%_zBWPji5r1;Prs?fSQ1cpkD{1Luw)_B5GnPVrmj9l0FuaPN^AEF(h#yBa$)w
z1BjSZKxY|U0cC>@WI{6afpjg9BQPYH`9MZ0rn60dVvFPk9gg$&NRY<Djk<X~TS!&v
zx>csq7QVQF1GB&-X3@cI-G)`Bu5^9Li}bHrom<uN-t;$FEuSJfW5DYt!ekG_f-@;%
z`j{01pJB*lK_z5BGNdaSfIL&W_Fs`eA=r~3N=45LY)}H;FN%z-0OBYIN&xzY<DpA_
zHw)R#T9-A|i&CrkNqhR9-|xbCr}dG`tFB#?^Tl~tNjVdU@WcN+_AzV%^Ec5M0Z~jr
zFKX*nD@;PG^zj=q+t~5%oymjq$}E@F#e=?7ljVg=%F?!`EVmd4!T{{$_9~~zDmESG
zE-lM>)u^&`Sy|$Er+J>2<@2u6eZ&Mf?S}iOm3dSvEnV25!e-NZkJO8{_a=?9wmMO6
z^I_Ghqq<Qm|I8>jr1=5|e8y{L#J&`Uhs|Je@wM0yx!4(a|Lqs~Gd6ziMaKTxpvwql
zj9td^*f&bntr-Hw@Jn3`;XUuv(R7@e9roT~bC(UXH}_y%(ACmqkMyEiQI0{4arhe6
zj3@Oie9YK}Figs@=My@NyoX_bf?20?&`T16f-tWJ+@CT)_MyA`G5f>+d*BmLzH1Nq
z;|)+qxVRSe2{55wk9oO!8|LJRYAf?SFwA|J={UYw7pCJPuQ(SUvoP#h4SY$s5H4h-
zuP|FxA{K`EPRHR*M0Vc>VSYg1OAIgMT=?~Lyv>q5?%K{kvW9uPp**YRCyR;vvls1_
zQMN6Q4HSO9FwYF%h2hVEiD8Ou?i=*s>7;KQ!yV_MC;Y+j>hpJ2eDnBXsf@1Y&y@7B
hkEQpi+?KOTe*q@C=~r%No5PF-Bk`RW1-rxD=s(zjFs%Rp

literal 0
HcmV?d00001

diff --git a/www/web/warppay/__pycache__/urls.cpython-34.pyc b/www/web/warppay/__pycache__/urls.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..21504f04e46c16db9408888b0d082feaf809b583
GIT binary patch
literal 270
zcmX|5F;2uV5S(=!a=;-S4KKJRP4WQ*ynqIYA_d4g`%XDIiDf68j+Q^rQBYFz8@E(6
zJb>!f5@NM8+Fi|z_Gf-}^7j6E{|VrW@n0EFH;i!2q`3(e=m-s=6KDh|T?K50PNI<@
zL(mzF#5Tu^z=pL)&=PlL{>>pMMa(8|W6}02J84r=%%57b3(xZh<=T1*#)o=&TNZJl
zx2oR^)oSS16?=jg9N^PavDhi^oZ5TITXURTkG2hCJY}I%<7j*zKHz7`k?8lls{cH7
X%BtKx&Mvz_Pu5%!3qne|poKgDf;~a*

literal 0
HcmV?d00001

diff --git a/www/web/warppay/__pycache__/views.cpython-34.pyc b/www/web/warppay/__pycache__/views.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f820fac8caa6b850f9b7f3c14097fd923384350f
GIT binary patch
literal 1447
zcmZ8g&2Aev5dOHk`djPIa-zaT<2J}i7v%w31TAc%2+%q~rPRp+g|HDBW##=*NGgsB
z`;@*+A0RK0qNg4Tu*aNo=>zoCnUx&>P&=cUkHaBnKJwpYD?EJv?)c9N@Bvo_`S_N^
z{6k98Cy)Y}KqMg8_mFzXd_?}*_mKw3Du^n`s)(v<G(cKIR!3A{`xT@OWFew(?N^a*
zA!{OPuKgO)7P2;?_S&zP>pO@#$hwHS5ULK@fD9qGF!S+NKy{#+cp*x=3)SA(vI*J3
zZ(w}=Mca^V$PR;153-BVVEZE#h=FkJhq+ZVo!Hf()`cdd{)3DcPmIz7&xQQIua!)!
zyLD-gluqI_`ITZQK3*h~*NHl1`zK`<MQ#+?JLBR+<=-vsOO@MX8r!7E3GO^JS1=`M
zmwtRLXfjP>W0Y~dh0<AK3@!YG`QIOoUGVtPXzcvQPsUThb<hY%wn+9#%-^KWfO$#a
zi3fcEOWgp3^)UA_57;>uuoavMW>s=e#kmJt#TmuaxObyXjsTn^;yGG&fmTZNuZzs9
zJ#3N_Rg{Fbud%WF7D627UnAh@22MigKM3NZT#J(wUZ)Mbb024P#*jA?&vJpMn~muL
zjs}e*-K6qdkj43GtXpL3HUs`Lk*+!|$(j*Rj=`3zX3D-Sqzla|pH7xUsL|XlS1X>+
z)zlj2$7!nh>gyWgfsAeJ{F$<@c~B^GRM^8eiLov)@oO~*TurN2OGQAX%to0%-3KR@
zzeDd)n*Vyk`=_y9EaKIDz8z+`Sh)r-n52}9k8C&&K}Xa?NAyHXbUe0d!WVm@E50CG
ze?<{f4&&jGaPj*j=4VoG9>G$h1?C=i>)@9MI0shuV10hOM8bw!>MFSuS28b-Uv-HO
zVvxxAk;!;Qz*Carvd6)Z?oxKWP3p3hRqZo)i`8vb+(o_1iVsE?IpFg29Y(mcwfd5+
z9a8s53?Cn&PbJ<KZ7R8(IU4M^hMdRwtQgAYWwxlp&EtnL%nGSeQ*Iu$H!ZyY%Ofy#
z(XJ*&CNFfHsnbHA45gYDI<^I|U8Q;V*^PN}%a>Ym9^JVyd;LY~I`8oLjhM^VX>@}E
ubjXSyVaZxq*_A$&9pPrU`ZrY4GF1=w@tQuVF45g5S^xUgo@k1@JO2YFtU}ZP

literal 0
HcmV?d00001

diff --git a/ldap/data/ldap_conf/schema/fusiondirectory/openssh-lpk.ldif b/www/web/warppay/admin.py
similarity index 100%
rename from ldap/data/ldap_conf/schema/fusiondirectory/openssh-lpk.ldif
rename to www/web/warppay/admin.py
diff --git a/www/web/warppay/admin.pyc b/www/web/warppay/admin.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d7724210874d8d81a948189dc115430c2e82c80a
GIT binary patch
literal 118
zcmZSn%*&NFcUo970~9a<X$K%KW&si@3=F{<AQ3+eAi;n}6w3p}^z#c!^ve^A3NrK3
miW0%Bg2YPw#FX63JiUU-5)Pmmo80`A(wtN~kV(Zr%m4sy$rfb*

literal 0
HcmV?d00001

diff --git a/www/web/warppay/apps.py b/www/web/warppay/apps.py
new file mode 100644
index 0000000..bf3dff3
--- /dev/null
+++ b/www/web/warppay/apps.py
@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class WarpmainConfig(AppConfig):
+    name = 'warppay'
diff --git a/www/web/warppay/migrations/0001_initial.py b/www/web/warppay/migrations/0001_initial.py
new file mode 100644
index 0000000..8bb050b
--- /dev/null
+++ b/www/web/warppay/migrations/0001_initial.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2016-08-18 15:07
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Product',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('user', models.CharField(max_length=100, null=True)),
+                ('title', models.CharField(max_length=100)),
+                ('message', models.TextField()),
+                ('created', models.DateTimeField(auto_now_add=True)),
+            ],
+        ),
+        migrations.CreateModel(
+            name='UserCredit',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('uid', models.CharField(max_length=100, unique=True)),
+                ('credit', models.FloatField()),
+            ],
+        ),
+    ]
diff --git a/www/web/warppay/migrations/0001_initial.pyc b/www/web/warppay/migrations/0001_initial.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..272f8ba2ae0dc6d316ebd016ac21f350530fa904
GIT binary patch
literal 1179
zcmbVLOK%fF4E8>fCT-J(N4b<cIW_GaA)r+y4n-&pLgccVW}NMW*$4BW4cGFEkoaX>
zk-(naHuQ$rU3qPf$Nv0{C;2(p{Pq3EhdH!QLjRW#gFPli(iedSC?c3e5V0MDj-g0k
zmOzohEG2IOn830FiwI;2-vDj^KF&HIJ8(YgQXci2o>4@a8<Oy)npYAttsEMm?I`Az
zO%jF5jc}?et>b+KMQQ8$q@LZb+#%g1?`uXnq{Ije5Mzdwlb!;0VA*XuAkYkQ1C~8T
zNMQtxWf!myasy<KFsBRh^h4MtNcy%wZgbcT#Jn`Pw{!y$J9mO}i(6)MH<;TXhs{Qg
z$vd23jpqTADE|@9!+S;LqrdPx4oic!be?dPoEX@F$@yrH*l{U|QWWSnNO@-}>E|vG
zyHKd5^~}4HZkv9>yDFO-6b_}^B1dghA<QcKgsX4>7L5{GeZ>&|1<gfeF$>u_&6^X?
z)jWkYCn>Hojb-jG6-`YG#cS<5Y$>N3Pz72m@<zX{eg~(lt}-E|=gD|aiH{9R<$S_*
z2sTd$jnZe2o>kgTt0Nu@*CUYya9I}MWEstp*GMMAoEndgNl~S8)K=(8VvVK5a<0%$
z!mu(ARFpV5<4K%^Ipt}5MQoiihmPAhr5VOR(($D*jh~~Yc<mZ%K-LMRnW_RC5BGGc
zE71n9S=DqK!tjsCg0-+mWR9!ajjx2MRk<)CXth|4*EeQ-czAe}wGAEAs|oYOMA)Y!
zx-q?JKkCNMqWx$u+Ku*;TkCDOq%BVi@4O+NCbS7cQ*tTFygHB<fs{Z($h`&_wEsgH
Sj_P@HI4>Bn<?|WFPm({&#Q+!p

literal 0
HcmV?d00001

diff --git a/www/web/warppay/migrations/__init__.py b/www/web/warppay/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/www/web/warppay/migrations/__init__.pyc b/www/web/warppay/migrations/__init__.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3d71e2c0b74d218b974de63901461b1947a2468b
GIT binary patch
literal 132
zcmZSn%*%CEr8g{@0SXv_v;z<qvjB+{28Lh_kcgiKkYGR~igkfv`uPPV`sIm51(|ti
zMTuZmL1LwTZf1H>Vo7FxUa@|Bd}dx|NqoFsL1hUCP=`%!eoARhsvXGOVjyM!02Bfn
A^8f$<

literal 0
HcmV?d00001

diff --git a/www/web/warppay/migrations/__pycache__/0001_initial.cpython-34.pyc b/www/web/warppay/migrations/__pycache__/0001_initial.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..85b16a74a977e8795c0d748c91e8a341ec318e72
GIT binary patch
literal 1015
zcma)4%TC-d6uogWnMo!*`hZf=J)I2$`wCHksJZ}EDpjS~SZ3@A9-IeGQkZV1Khtfc
z{*1R>vFQg?UG&<S5wL3%TlaD7bME#1ovg%vfBgJ>5CHsw2Os)yh^sonjpOfu0?0fV
zdEi-}fFh9jF!CV_U=)D&j{Cp^_=d><gb&jW%rV~q-hq#U@D4A6foIm6T#gGasFJnN
zOjQG7;!LKR)w0Md6K0rH)!4$9-x?Z+xT-A=K!6p28b-v*LIEk-NZEmDXoa;pkX3YH
z+5?V3#CP3}ZUj6A-iJ8^69gv?hQSr!tH9SRY!1Yx)*q$j;Mw347mN`D)_v;SKJaJl
zL5oSTav=A5p4*Q6ubz!Zq<r&%o)<2aET~i8vZMq?sC)}s{L)0H%RZi)AZM8{-4D9p
z&A2w<L<+?#LnJo|YwCiIwP3a2reA8AF+HPKVrHUBXvviPDo#xDMd*v764c#9-XEKw
z!8E=WyQNCxX?=Nz&j3i(C}ldetQ9h5qN-Sm#*(0=%ZnSzI5+VpyyHj<E^FgAs3ydL
zxNd|A5s$&M!K&#|$4RM)DaCnclt4S7^txfnszI+Sb6KNQlW<XroQr%cMWuZ!sE_w!
zZKrmUbYLUVTP*p+w!lP3mrO6rb8%a@=E^Z1IG34d-S|WmY>|qK5(m{y=XcOMc%9q+
z><^2w9^Nor%6y`kvr0A_-VgI|Z*Om(E`;uuGu^?%JzUi*+!7L!Fo?X6?0DPWhPUQz
z`%BLu&jz7wz@(`gjU{V>hfKt$EKiGFe&K3$<vH}dvetTS(Y-fq`wnbhD%*;6vg!W=
D+i(JR

literal 0
HcmV?d00001

diff --git a/www/web/warppay/migrations/__pycache__/__init__.cpython-34.pyc b/www/web/warppay/migrations/__pycache__/__init__.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..69c15552fa851669701a45d325218223d280aff9
GIT binary patch
literal 128
zcmaFI!^?G5r8kTL2p)q77+?f49Dul(1xTbYFa&Ed`mJOr0tq9CU%LAF1tt3BiA4pO
zd1*z7U{*n5rG9Q^dQoCYW`16=etdjpUS>&ryk0@&Ee@O9{FKt1R6CF{#X!se0EK}b
A#{d8T

literal 0
HcmV?d00001

diff --git a/www/web/warppay/models.py b/www/web/warppay/models.py
new file mode 100644
index 0000000..c462cfa
--- /dev/null
+++ b/www/web/warppay/models.py
@@ -0,0 +1,25 @@
+from __future__ import unicode_literals
+
+from django.db import models
+from rest_framework import routers, serializers, viewsets
+from warpauth.models import LdapUser
+
+
+class Product(models.Model):
+    user = models.CharField(max_length=100, null=True)
+    title = models.CharField(max_length=100)
+    message = models.TextField()
+    created = models.DateTimeField(auto_now_add=True)
+
+    def __str__(self):
+        return self.title
+
+class UserCredit(models.Model):
+    uid = models.CharField(max_length=100,unique=True)
+    credit = models.FloatField()
+
+
+class UserCreditSerializer(serializers.HyperlinkedModelSerializer):
+    class Meta:
+        model = UserCredit
+        fields = ['uid', 'credit']
diff --git a/www/web/warppay/models.pyc b/www/web/warppay/models.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c63c8a4e58777e7c5ca6845d012d73ac9cd0e4d3
GIT binary patch
literal 1672
zcmbVM&2G~`5T3OY=cg@%3IT;maLfU<FMtrDsNz5?<QAm*VlCNC>U3=fdrexzt$hYA
z+<8GB0Onh}Ne)P$MA`N1&dlz7-^{H4YpehC=l72zYJNU{Uy(=U4;B>v1sS4LP$WoT
z?UC^)^(pe}wNIu+X`7-pr2$0&r5%bowXQ{`OKFdy9<SS^eVX=ZEJy`(Lv&4a7HyE~
ztSGt*#U`m9>42tN&ZECj+#$6=C&NvSFZs>Cp<u}lc&f5wlq(&Z#OgwtvepEwNqL*s
z0B1Wq6?w%brQKk;)I}mq@)heYufHUEUTWKTW9OZcvkz?MT;CVDsz!D}Sep%AgRnCe
zG=V4W(bR9qW4?5Yp?b{E>i#te<_bF<5D|5q+#}`J_9E(&Y5_D;6rK!mjqUT4%FEd3
zY+}z7P6yc*Pg!M*1tGGsd7S0*SSmFFFSp|W5d!%)qA4+bP#o6;xuX+nbiKrZr8eUs
zf5}bdGnV%AncbhuVwPm%LON+Cul8$Z_hwg)oH#CR5yyAfzVvt^;qv5ojpIzFI*uKR
zIA+Jn@G^Ai>#^;@xhxJ7ZIr`wT2$Hz6*C_KxrNcGzO=Ow(4@L7<wV;pmfuLLPm@$H
zwWC7wo(jRt63zcZ3Q;;;9wn|1#3QjSHpRB*5TGCq3aygAl)`g1|92?_F7X{?7lj!D
zP@PlU%f<Y;(nDMy0$vDG9a-UBNGNy<zba8KphJ_(h8p-Yc#dr?*bmtK9*+{G0ND0E
z3roN!i;h`z0RnMd@PvgLI#(wbKffP0O{;siNL^Zww3Q2Y)QWR|ym05%;3o!$2%50m
zf;a4{26VN85+%IC5&&52x$3kq9HX$xwdmMo_lG<hIs#Fjf-qL@gw<NdgE0i`8YU3O
zL!`H9l5u6L0!_kOb^WWU%qIDs`c(G~ilWe^jkzaNJ<p4a5FCXrIHb?wG_);04d;7x
zw}zm`@pFWC(Up1VI0OA}uV%V1Np_)?Q!ld}BGh#-y8eH`mvhIzM8B74$$>WzyJFz)
I^mf{R0P-3|PXGV_

literal 0
HcmV?d00001

diff --git a/www/web/warppay/templates/warppay/main.html b/www/web/warppay/templates/warppay/main.html
new file mode 100644
index 0000000..5a036cd
--- /dev/null
+++ b/www/web/warppay/templates/warppay/main.html
@@ -0,0 +1,21 @@
+{% extends "base.html" %}
+{% load humanize %}
+{% load i18n %}
+{% block content %}
+
+    <h2>{% block title %}{% trans "News" %}{% endblock %}</h2>
+
+    {% for news in news_list %}
+        <div class="panel panel-primary">
+            <div class="panel-heading">
+                <span class="lead">{{ news.title }}</span>
+            </div>
+            <div class="panel-body">
+                {{ news.message }}
+            </div>
+            <div class="panel-footer">
+                {% trans "Created by" %} {{ news.user }} {{ news.created | naturaltime }}
+            </div>
+        </div>
+    {% endfor %}
+{% endblock %}
\ No newline at end of file
diff --git a/www/web/warppay/tests.py b/www/web/warppay/tests.py
new file mode 100644
index 0000000..7ce503c
--- /dev/null
+++ b/www/web/warppay/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/www/web/warppay/urls.py b/www/web/warppay/urls.py
new file mode 100644
index 0000000..157ac62
--- /dev/null
+++ b/www/web/warppay/urls.py
@@ -0,0 +1,7 @@
+from django.conf.urls import url, include
+from warppay import views
+
+urlpatterns = [
+    #url(r'^api/', include(router.urls)),
+    url(r'^api/users/$', views.user_list),
+]
diff --git a/www/web/warppay/urls.pyc b/www/web/warppay/urls.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f1ee28f72c47f59eeecdf7670490b677c7f86e02
GIT binary patch
literal 320
zcmYLCyH3O~5F9%`-bhzbQc<Lee*ghrKoKO06d)`1oqTc<%XT<j%|Fml@Qr)`>_$ke
z?D6dEc((e!Jp26mc<%966}=C1^F4v3BM^W=pc5D*Itjt5M5r(*bPB==*a}Wzx5B%`
zmb^!>3QzTlGW-u!Er}J*o>M5tERTJdt*ZqO*!Sk$KIaQ!FD80DXP2_Rd92x7)&zEE
z#_iPf)3|9UCAXxZUH-FYZ&Hlr&@P)!N#KOn;BzVG+@%mrDK3q<rWXH@uc_5jESe+y
fxJhPV6sCDk6A$HtEVsjC=iu&mV^#!LVy%7wQE5cL

literal 0
HcmV?d00001

diff --git a/www/web/warppay/views.py b/www/web/warppay/views.py
new file mode 100644
index 0000000..42db93a
--- /dev/null
+++ b/www/web/warppay/views.py
@@ -0,0 +1,41 @@
+from django.db import IntegrityError
+from warpauth.models import LdapUser
+from warppay.models import UserCredit, UserCreditSerializer
+from rest_framework.decorators import api_view
+from rest_framework.response import Response
+from rest_framework.authentication import TokenAuthentication
+from rest_framework.permissions import IsAuthenticated
+from rest_framework.decorators import authentication_classes, permission_classes
+
+# from rest_framework.authtoken.models import Token
+# token = Token.objects.create(user=request.user)
+# logging.getLogger('main').info(token.key)
+
+@api_view(['GET', 'POST', 'PUT'])
+@authentication_classes((TokenAuthentication,))
+@permission_classes((IsAuthenticated,))
+def user_list(request):
+    if request.method == 'GET':
+        sync_users()
+        users = UserCredit.objects.all()
+        serializer = UserCreditSerializer(users, many=True)
+        return Response(serializer.data)
+    elif request.method == 'POST':
+
+        return Response()
+    elif request.method == 'PUT':
+        sync_users()
+        try:
+            UserCredit.objects.get(uid=request.data['uid'])
+        except UserCredit.DoesNotExist:
+            u = UserCredit(uid=request.data['uid'], credit=0.0)
+            u.save()
+        return Response()
+
+def sync_users():
+    for user in LdapUser.objects.all():
+        try:
+            u = UserCredit(uid=user, credit=0.0)
+            u.save()
+        except IntegrityError:
+            pass
diff --git a/www/web/warppay/views.pyc b/www/web/warppay/views.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..75727c888b360b57ecb3f0305b5c898eeeaea43d
GIT binary patch
literal 1376
zcma)5O-~$05PdzfUo6I;IChL|;e#)Gg1ePOmH<VT(AsJsSR+|zyxm@Anb}!pdV!7L
z5aHk8AK{<kV-EQvKIN3Wss$sIi$~kFT_0Ut^<H)Sb*cN$=TE;6aQ!v-|B|czlfv<5
zkOPH5Vqip%kVhzDB=KC2kvC8@ku*`XkhJF32J$wF4wBAXZz5kn(M8gQ@g2ApTpO-~
zVT>ySw}6k3O|l5rm3?v#ZV|h^d#ob+mtW6t7w%KM8V5hDvM}4Os<N8fJGAe(bh2Oj
zsuxLQmqN77%DXItAMdEUzRJ=(`-8!nR*t8W?C>=6XSWvX>q$ATeTeD)ZF?^?`2Xhh
z?w%Un?C%Zauo#<Mn_TtZ6c@lqaXXGsZ6O$30VYHk#TYe2xikn(T(Iv5p~b$<B{ywc
zFs36g>|W=HAvqH9@z{;Eq1L}{GSAj<oqPd~X?Z;XZesNc#vF`apds!qj=QM7&?KeY
ziJOygh3GQI1#4W?g2x7LukUrdyC)d+ZHrQIDAMuFwy9ZhC?eC$u^V8ZkPo@jPdQXa
z;loksl$v@r9vn`|Pi>Vh$yB}{`9Y{PSDNQGrcLkKtES!x#;UnAq#85yA;^4emA>wm
zVf#F*gGSWpsqYCdtRJZS$<)&$3G~K!0pCV|1kur>fQtGVcN^s-Y@DUlBpZLIQr%6`
z*@g^Ay*`<R1v$g=4|85B2-Is7h?Y&;ESn$9l39*q*EX?PGb`q)xo-v<K_MV*a@G43
z=Y0fHW-y8b_pNuo;1ZZU7fkv1NGGSn@tKexs*KYaG6yFsWVWfa?g*{a-*O!&The{s
z$|JCg6t`r^-Bvob@|Ntf2w}j=3$a|7zaL2;4cf<IQoD%n0mm*e@QDNqJ1~!k!9(`H
zWcodEDR^#_j)&#Cd#`r}sYBpSr{QS5D4ox1tx{jSIEem@UCY(sSmmjT+#Zsn!k?AZ
z@w)SavPwhA!O{u%>Hi@-q3>Ep%1REc__oRK9|K|jXO=t7{jUP5cDzEqA91b3YY+Yd
D1?2{r

literal 0
HcmV?d00001

diff --git a/web/warpzone.db b/www/web/warpzone.db
similarity index 78%
rename from web/warpzone.db
rename to www/web/warpzone.db
index 78dd10507129506c71c68a61acebc501d04b4b27..81069c749d4e6fcb5e38e98ea3925bf3623b89e0 100644
GIT binary patch
delta 3120
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
UuX4`)Yx>$mt9J)94B$fYU-d|9Z~y=R

delta 941
zcmZ{iT}TvB6vyv5XLeWH-ArvY#Z-tQqS<C=clKi-Xe%Y6?Ij}62N~S$3$%}2?Sr7S
z0)vR``Vc`+1yQ|JL#-I(gBoaHL0Uc-RD=daQPw{6VV%{7K<L6bocW*Mx%WSF=hTF9
z>Y{S7vP66qLTuzPIDq4L_gX!#s#ECTM>h>~7VEnYmf6KhJ)ybF9;L8S?ZF`zU7-eA
zNhanfO?RmiCuoYeL1WBzph7#u^6q$rgSaS{LyPLcD?M%%V$yV1s$;^%JC{2t2+93c
z>z)Hm%?DaDsn$$W=Gehhsi&A~3az%x-ln#6>agr^uY)pq*S)H!ByZ^7vZvhDwIwdB
z6Vyk?*~|~@!?Re&7S^F%=kNECiaF`p+{j7~+PV70Kt*^{y0+A?avJTMTO0GrE$P~p
zSI(e)YkNbg%0s<CKj|BNqWAQcCg}w|qY)aUN7T#MWs<$wZA=XcrgHR!KGHOEuV{jv
z(<lwoAXC@L9(=e#aRPM;>SW<46`lZ(Xo?qlz4F9BXjwqj!nFaz)WfC`^9O^`fELcA
z(i!=3KrKM%5jX-pJlF+x&rl1x`OT5Cg0eKp>TQzQCy4^20l{Yvu#zREn&KeuJg$^)
zp4QxeC7@iYQmQ<V0Je3WuWU7b#eVF<1Qx+#xBv+rQ^8J*XECdI;1}JSR0<XmGz(~k
zKX`@PJHdYW?ke7U4+UQG3B+>(&rt<caIXUtmVU@$B_}h}=M{FS$bDa?YrR}~U`Eh5
zUFScfo=WjG-p4bz10(2z8J>L(_RRNUCzZjhbp29U838%_`x-3kjxV(z%x-rqaf&Vh
zEwBm7#Rt(Zy7-*TNyF(BD=Ol?v}GmJNh_VtoUF921;VN}|53wcC~9iDKcE{SEtWiN
z9b4mYiqg`!&q^l)DSZJOG!4VA85+}btnz<$cPMD;nqP}XA~9nQrg`{K^2m|op#>Z3
oc{Zd)LcwUBU5!rR^TmbLo_F4!TtI7PAm)!4QQe4TTO1(qFO1au%K!iX

diff --git a/www/web/warpzone/__init__.py b/www/web/warpzone/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/www/web/warpzone/__init__.pyc b/www/web/warpzone/__init__.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..85f0d771363145672c1bda68c36924f583717d89
GIT binary patch
literal 122
zcmZSn%**8_q!*UV00oRd+5w1*S%5?e14FO|NW@PANHCxg#mYc2{rrLw{qn@3g3P?M
qqC_yODnBn(KR!M)FS8^*Uaz3CgafF~CO1E&G$+*#WLhy0GXMZ(T^8>E

literal 0
HcmV?d00001

diff --git a/www/web/warpzone/__pycache__/__init__.cpython-34.pyc b/www/web/warpzone/__pycache__/__init__.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f6fd584da929f7c3b91cfffaa9696b889c90a2f8
GIT binary patch
literal 105
zcmaFI!^`C+q!-2j1dl-k3@`#24nSPY0whux7=kq!{Z=v*frJsnFEKs+^2DNos{FiE
g{rLFIyv&mLc)fzkTO2mI`6;D2sdgas#X!se0BcMXX#fBK

literal 0
HcmV?d00001

diff --git a/www/web/warpzone/__pycache__/settings.cpython-34.pyc b/www/web/warpzone/__pycache__/settings.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..cdef308fe1ce0859bfa725172bab3596d0ea00e6
GIT binary patch
literal 4639
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
SS%?xh;**4NJsR51ME?yX`-TVr

literal 0
HcmV?d00001

diff --git a/www/web/warpzone/__pycache__/urls.cpython-34.pyc b/www/web/warpzone/__pycache__/urls.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c3ff95294a6079db4b6741a73754d1a2f27a9f07
GIT binary patch
literal 598
zcmZXSy>8S%5Xb-PkMn)_!s&z%=_xRUucL|rNKjBf5FiQ{7cIAYmpysy)9yM^++N26
z(D48~2#-LsEfoz9kcwS9QclWxJ(~Y-W;`>J|E1IMw;$iX{3gI39GsE!U%FTSa)!A}
zPy$8o2Pg?-fFghlQG_5qBSaZN#wg-mM<@r735o=ShhQ;y03KsI#CC)|!QM&72Ve;V
z0Z*_UgAMU~A9jI}FJR+?)SgW4k@Oy!-jdA##l%nlDLeY>R>Au$u!*QvWy81)8&zh+
z#*|4>IcKQ3F{0Y&Hd%IT(LP*C&IDaNeevOBN6p1){w#aa9<wd2Hg$d}_?6DJp+>B7
z&DABhQ&z7U$t!cN>e}3pWjnp1YA30va@S7xk~ZezK(6bW^)mIzJ9^!zEVYBalbzjm
zT-DXOi>bhEqe5qjqq~?<;;V`rw39oyR<S3M7KYo%4`Ije-n@SM>ipx`*=IX(#I0ty
zs`O8&2mZU>+|2WZpQf!VzVKD~?%EDdWX+nApSnK=dhSe09+4TDg^$TGnRm~BvSXRI

literal 0
HcmV?d00001

diff --git a/www/web/warpzone/__pycache__/wsgi.cpython-34.pyc b/www/web/warpzone/__pycache__/wsgi.cpython-34.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..0410249c7df1fea5b2550cf3b443a8ee1b51f252
GIT binary patch
literal 530
zcmYjN!EO^V5S`s^lWHkaDOJzDMuN4tA%qa1wrLQghZK<ZvN7w)#*x?F+D<}q?Pv50
z_@%vo#EA<Zz==tsO0n#x(agMg&-3^2ar*Pu&6oQK;5Y1?gyOgK{CffkkP}8AW6%-g
z6wpmT$51DbClFx-vptyYgWLnT4|g%861XE?XH6RQI;%GQI_eKtY0X4cY+@a|(4xAW
zn}Cir&d#t5S(*+4!|#pt=vkN|+j4}~;+sY$JQJ+8a<1{Y#szA&5Ke7MM${<Tcr2Pm
zt5O7I&3H`nE=Z`h4w*8fS#Ju=8XB%Vn<$OXm`6;fAvFFK=hBuwlQUr|`{1dxHAll=
zWH0&DE`#L~8*OiEG=VRDrFi;>b_By-)Sgrrigm8ov5}vieRwzQUlpVC>+8X=KPo<5
zoqhgzzIw70u31@wna2>6seG^7c8h{M6h#|bpC4_VWF>tdThDbdDYacR3+1e7QzA;7
th`A2=qaDc~;JVbffq%yte-PUE&6?Zx;PrNkZw{!<ub~qk#z*nf_&*SapN;?k

literal 0
HcmV?d00001

diff --git a/web/warpzone/settings.py b/www/web/warpzone/settings.py
similarity index 81%
rename from web/warpzone/settings.py
rename to www/web/warpzone/settings.py
index 1cc6017..9b68203 100644
--- a/web/warpzone/settings.py
+++ b/www/web/warpzone/settings.py
@@ -56,6 +56,10 @@ INSTALLED_APPS = (
     'warpmain',
     'warpauth',
     'warpfood',
+    # WARPPAY
+    'rest_framework',
+    'rest_framework.authtoken',
+    'warppay'
 )
 
 MIDDLEWARE_CLASSES = (
@@ -105,7 +109,7 @@ DATABASES = {
         'ENGINE': 'ldapdb.backends.ldap',
         'NAME': 'ldap://ldap/',
         'USER': 'cn=admin,dc=warpzone,dc=ms',
-        'PASSWORD': '12345',
+        'PASSWORD': 'k7dAw8j2',
     }
 }
 DATABASE_ROUTERS = ['ldapdb.router.Router']
@@ -142,16 +146,16 @@ AUTHENTICATION_BACKENDS = (
 AUTH_LDAP_SERVER_URI = "ldap://ldap"
 
 AUTH_LDAP_BIND_DN = "cn=admin,dc=warpzone,dc=ms"
-AUTH_LDAP_BIND_PASSWORD = "12345"
+AUTH_LDAP_BIND_PASSWORD = "k7dAw8j2"
 
 
-AUTH_LDAP_USER_SEARCH_PATH = "ou=people,dc=warpzone,dc=ms"
+AUTH_LDAP_USER_SEARCH_PATH = "ou=users,dc=warpzone,dc=ms"
 AUTH_LDAP_USER_SEARCH_FILTER = "(uid=%(user)s)"
 
 AUTH_LDAP_USER_SEARCH = LDAPSearch(AUTH_LDAP_USER_SEARCH_PATH,
                                    ldap.SCOPE_SUBTREE, AUTH_LDAP_USER_SEARCH_FILTER)
 
-AUTH_LDAP_USER_ATTR_MAP = {"first_name": "givenName", "last_name": "sn", "email": "description"}
+AUTH_LDAP_USER_ATTR_MAP = {"first_name": "givenName", "last_name": "sn", "email": "mail"}
 AUTH_LDAP_PROFILE_ATTR_MAP = {"home_directory": "homeDirectory"}
 
 AUTH_LDAP_GROUP_SEARCH_PATH = "dc=warpzone,dc=ms"
@@ -175,11 +179,36 @@ AUTH_LDAP_GROUP_CACHE_TIMEOUT = 10
 
 logger = logging.getLogger('django_auth_ldap')
 logger.addHandler(logging.StreamHandler())
+hdlr = logging.FileHandler('/tmp/ldap.log')
+formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+hdlr.setFormatter(formatter)
+logger.addHandler(hdlr) 
 logger.setLevel(logging.DEBUG)
 
+logger1 = logging.getLogger('main')
+hdlr = logging.FileHandler('/tmp/main.log')
+formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+hdlr.setFormatter(formatter)
+logger1.addHandler(hdlr) 
+logger1.setLevel(logging.DEBUG)
+
 #
 # MISC
 #
 
 # Lifetime of Password Reset Token in Minutes
 PW_RESET_TOKEN_LIFETIME = 5
+
+STATIC_URL = '/static/'
+STATIC_ROOT = os.path.join(BASE_DIR, "static")
+
+REST_FRAMEWORK = {
+    'DEFAULT_AUTHENTICATION_CLASSES': [
+        'rest_framework.authentication.BasicAuthentication',
+        'rest_framework.authentication.SessionAuthentication',
+        'rest_framework.authentication.TokenAuthentication'
+    ],
+    'DEFAULT_PERMISSION_CLASSES': [
+#        'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
+    ]
+}
diff --git a/www/web/warpzone/settings.pyc b/www/web/warpzone/settings.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..fc578008ae4126e34ca88bf7ada8cbc801e679a1
GIT binary patch
literal 5109
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

literal 0
HcmV?d00001

diff --git a/web/warpzone/urls.py b/www/web/warpzone/urls.py
similarity index 91%
rename from web/warpzone/urls.py
rename to www/web/warpzone/urls.py
index 43d6230..d45c333 100644
--- a/web/warpzone/urls.py
+++ b/www/web/warpzone/urls.py
@@ -9,4 +9,5 @@ urlpatterns = [
     url(r'^', include('warpmain.urls')),
     url(r'^', include('warpauth.urls')),
     url(r'^', include('warpfood.urls')),
+    url(r'^', include('warppay.urls')),
 ]
diff --git a/www/web/warpzone/urls.pyc b/www/web/warpzone/urls.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..737f379b07d3d43684be9c2971f0973df413b2f0
GIT binary patch
literal 690
zcmZXQzi!k(5XNWi^ZEXwQ-lzyXebPY-BCpWBq%6CkU<nK5-r}n%bx6A%R5dK+Us}#
zIv$57$^#@b_9+l$ZI8e2H#_$1gg49CuRp)Pm#|+`dcUK`|D~Yl7El2cgASk)PzO*1
zP=`>2Ab3Xz)d=bcifHg7sK!voP{bf~2r2>{fR120f$bD_0(NAHk3q#?1n3yHGf)$F
zvkUvglnd1CzpVqAKO&1qWVt7sF%)y|{%i7tPGW9peNF<B7_+x!)hUf3>8`C3!HI~1
zRJE~#osjh!(b$dmTy)kaGyjxzt(B2k^7hM7Bk|%mef{dCKcs}(O1p9CrO{VD^(fJl
zsn_kL#wBN6+11+OdFvb^|Mko>zmjcJOJh@N#@`d!;l)F;c1{gsv9D_6bq^8-IHoXk
zfUA3%md>vGO*t{h`@`~7_PtUXTk|9Dr!#-R*EvrJM-;q4-3x9JXGBgue)#nMJU>1C
zhFnFQMuEDuJ|PSLf`36aa}8#EPGi@t?A1?ab;h4dn``88AJtBEl|JSU{Q-rAcqUe2
M6+Rb-;-J6o0QDQ0ApigX

literal 0
HcmV?d00001

diff --git a/web/warpzone/wsgi.py b/www/web/warpzone/wsgi.py
similarity index 100%
rename from web/warpzone/wsgi.py
rename to www/web/warpzone/wsgi.py
diff --git a/www/web/warpzone/wsgi.pyc b/www/web/warpzone/wsgi.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..6d3a5230fff80a80c4c75d4a2bb32d822eda4e87
GIT binary patch
literal 570
zcmYjNO>Yx15cTf10WBbv4{`P}2Ux2&gb)JMHl(7d)D)0%*|_V;#*x>vtS1TO+JDJ~
z{s(?QJ5H#mwfj7t=XvwS+21GmpX(prD)Db+yno<7d}1&{Oc)bkQsELY;efwPxKuQm
zm}DY>L@aj1Vpo_QVRpq;%Bf6Taa}JKjr+Z*^_wC8J{}BZg??shIm1pKIbDBVdV)^2
z9WJ1vBF~2;;b)5hf}}afZH;zLUpSCDNG%&QO9!tVtiZ{Y?(By0x&b4nQ{A@CR+=pO
z>6G=3xKV>0Nb9+0vmqpU7Pmpptb<oF0OWI`HoR5JU=<3p(7whyPZc%_yxK3`s5!0)
zm4VjbWdoknI@DI>_J-G}pYV|Mf}sW~BU9cpLob;)IQ}>qoR;Im^Yh_oFfLC{559gm
z3{RO_>#qHU9*O`&*4Lr`Aj(B3OLkS3lyZ!L_ITSmEGizXh@H+jx4jI0WjpkgbAqJ|
v%=FR`J>ug%H~o13KZIv|EYzKc%~(ZyNe?;wZu{QvV;my%(#Ppu`aHb_A2OZy

literal 0
HcmV?d00001

-- 
GitLab