summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorMikaël Ates <mates@entrouvert.com>2011-12-06 15:53:47 (GMT)
committerMikaël Ates <mates@entrouvert.com>2011-12-06 15:53:47 (GMT)
commit64f904d6103cebf8ebb1df925b93fb337581327f (patch)
tree4b4baf4d8ef0a3e71dd2ed43587258f985bf683c /doc
parent68fd2350bb5445a81b511355d9be88c12b33adef (diff)
downloadauthentic-64f904d6103cebf8ebb1df925b93fb337581327f.zip
authentic-64f904d6103cebf8ebb1df925b93fb337581327f.tar.gz
authentic-64f904d6103cebf8ebb1df925b93fb337581327f.tar.bz2
[doc] remove documentation building files from the repository.
Diffstat (limited to 'doc')
-rw-r--r--doc/_build/doctrees/README.doctreebin47439 -> 0 bytes
-rw-r--r--doc/_build/doctrees/administration_with_policies.doctreebin8525 -> 0 bytes
-rw-r--r--doc/_build/doctrees/attribute_management.doctreebin86519 -> 0 bytes
-rw-r--r--doc/_build/doctrees/auth_ldap.doctreebin10616 -> 0 bytes
-rw-r--r--doc/_build/doctrees/auth_pam.doctreebin8056 -> 0 bytes
-rw-r--r--doc/_build/doctrees/config_cas_idp.doctreebin3186 -> 0 bytes
-rw-r--r--doc/_build/doctrees/config_cas_sp.doctreebin7203 -> 0 bytes
-rw-r--r--doc/_build/doctrees/config_saml2_idp.doctreebin19855 -> 0 bytes
-rw-r--r--doc/_build/doctrees/config_saml2_sp.doctreebin21231 -> 0 bytes
-rw-r--r--doc/_build/doctrees/download.doctreebin5400 -> 0 bytes
-rw-r--r--doc/_build/doctrees/environment.picklebin40976 -> 0 bytes
-rw-r--r--doc/_build/doctrees/features.doctreebin5812 -> 0 bytes
-rw-r--r--doc/_build/doctrees/index.doctreebin11015 -> 0 bytes
-rw-r--r--doc/_build/doctrees/installation.doctreebin16871 -> 0 bytes
-rw-r--r--doc/_build/doctrees/sync-metadata_script.doctreebin15949 -> 0 bytes
-rw-r--r--doc/_build/doctrees/where_metadata.doctreebin4818 -> 0 bytes
-rw-r--r--doc/_build/html/.buildinfo4
-rw-r--r--doc/_build/html/README.html421
-rw-r--r--doc/_build/html/_images/alias_in_source.pngbin27891 -> 0 bytes
-rw-r--r--doc/_build/html/_images/alias_in_source_saved.pngbin32325 -> 0 bytes
-rw-r--r--doc/_build/html/_images/attribute_item.pngbin37043 -> 0 bytes
-rw-r--r--doc/_build/html/_images/attribute_item_saved.pngbin47300 -> 0 bytes
-rw-r--r--doc/_build/html/_images/attribute_list.pngbin44435 -> 0 bytes
-rw-r--r--doc/_build/html/_images/attribute_list_saved.pngbin33508 -> 0 bytes
-rw-r--r--doc/_build/html/_images/error_no_idp_options.pngbin100130 -> 0 bytes
-rw-r--r--doc/_build/html/_images/error_no_sp_options.pngbin105076 -> 0 bytes
-rw-r--r--doc/_build/html/_images/ldapsource.pngbin40297 -> 0 bytes
-rw-r--r--doc/_build/html/_images/ldapsource_saved.pngbin28919 -> 0 bytes
-rw-r--r--doc/_build/html/_images/new_saml2_idp_1.pngbin33412 -> 0 bytes
-rw-r--r--doc/_build/html/_images/new_saml2_idp_2.pngbin19880 -> 0 bytes
-rw-r--r--doc/_build/html/_images/new_saml2_idp_saved.pngbin44523 -> 0 bytes
-rw-r--r--doc/_build/html/_images/new_saml2_sp_1.pngbin33522 -> 0 bytes
-rw-r--r--doc/_build/html/_images/new_saml2_sp_2.pngbin50560 -> 0 bytes
-rw-r--r--doc/_build/html/_images/new_saml2_sp_saved.pngbin37867 -> 0 bytes
-rw-r--r--doc/_build/html/_images/policy_pull.pngbin83727 -> 0 bytes
-rw-r--r--doc/_build/html/_images/policy_pull_renamed.pngbin27987 -> 0 bytes
-rw-r--r--doc/_build/html/_images/policy_pull_saved.pngbin33304 -> 0 bytes
-rw-r--r--doc/_build/html/_images/sp_options_all.pngbin84859 -> 0 bytes
-rw-r--r--doc/_build/html/_images/sp_options_default.pngbin83029 -> 0 bytes
-rw-r--r--doc/_build/html/_images/sp_options_default_saved.pngbin30823 -> 0 bytes
-rw-r--r--doc/_build/html/_images/sp_options_regular.pngbin84258 -> 0 bytes
-rw-r--r--doc/_build/html/_images/sp_options_regular_modify_sp.pngbin22463 -> 0 bytes
-rw-r--r--doc/_build/html/_images/sp_options_regular_saved.pngbin30935 -> 0 bytes
-rw-r--r--doc/_build/html/_images/sp_policy_pull.pngbin52560 -> 0 bytes
-rw-r--r--doc/_build/html/_images/sp_policy_pull_saved.pngbin42347 -> 0 bytes
-rw-r--r--doc/_build/html/_images/update_metadata.pngbin51140 -> 0 bytes
-rw-r--r--doc/_build/html/_images/update_metadata_done.pngbin44530 -> 0 bytes
-rw-r--r--doc/_build/html/_images/user_profile_source.pngbin23727 -> 0 bytes
-rw-r--r--doc/_build/html/_images/user_profile_source_saved.pngbin29596 -> 0 bytes
-rw-r--r--doc/_build/html/_sources/README.txt295
-rw-r--r--doc/_build/html/_sources/administration_with_policies.txt46
-rw-r--r--doc/_build/html/_sources/attribute_management.txt663
-rw-r--r--doc/_build/html/_sources/auth_ldap.txt61
-rw-r--r--doc/_build/html/_sources/auth_pam.txt26
-rw-r--r--doc/_build/html/_sources/config_cas_idp.txt5
-rw-r--r--doc/_build/html/_sources/config_cas_sp.txt28
-rw-r--r--doc/_build/html/_sources/config_saml2_idp.txt118
-rw-r--r--doc/_build/html/_sources/config_saml2_sp.txt126
-rw-r--r--doc/_build/html/_sources/download.txt13
-rw-r--r--doc/_build/html/_sources/features.txt23
-rw-r--r--doc/_build/html/_sources/index.txt75
-rw-r--r--doc/_build/html/_sources/installation.txt100
-rw-r--r--doc/_build/html/_sources/sync-metadata_script.txt90
-rw-r--r--doc/_build/html/_sources/where_metadata.txt18
-rw-r--r--doc/_build/html/_static/ajax-loader.gifbin673 -> 0 bytes
-rw-r--r--doc/_build/html/_static/basic.css540
-rw-r--r--doc/_build/html/_static/comment-bright.pngbin3500 -> 0 bytes
-rw-r--r--doc/_build/html/_static/comment-close.pngbin3578 -> 0 bytes
-rw-r--r--doc/_build/html/_static/comment.pngbin3445 -> 0 bytes
-rw-r--r--doc/_build/html/_static/default.css256
-rw-r--r--doc/_build/html/_static/doctools.js247
-rw-r--r--doc/_build/html/_static/down-pressed.pngbin368 -> 0 bytes
-rw-r--r--doc/_build/html/_static/down.pngbin363 -> 0 bytes
-rw-r--r--doc/_build/html/_static/file.pngbin392 -> 0 bytes
-rw-r--r--doc/_build/html/_static/jquery.js154
-rw-r--r--doc/_build/html/_static/minus.pngbin199 -> 0 bytes
-rw-r--r--doc/_build/html/_static/plus.pngbin199 -> 0 bytes
-rw-r--r--doc/_build/html/_static/pygments.css62
-rw-r--r--doc/_build/html/_static/searchtools.js560
-rw-r--r--doc/_build/html/_static/sidebar.js151
-rw-r--r--doc/_build/html/_static/underscore.js23
-rw-r--r--doc/_build/html/_static/up-pressed.pngbin372 -> 0 bytes
-rw-r--r--doc/_build/html/_static/up.pngbin363 -> 0 bytes
-rw-r--r--doc/_build/html/_static/websupport.js808
-rw-r--r--doc/_build/html/administration_with_policies.html146
-rw-r--r--doc/_build/html/attribute_management.html705
-rw-r--r--doc/_build/html/auth_ldap.html178
-rw-r--r--doc/_build/html/auth_pam.html129
-rw-r--r--doc/_build/html/config_cas_idp.html112
-rw-r--r--doc/_build/html/config_cas_sp.html147
-rw-r--r--doc/_build/html/config_saml2_idp.html207
-rw-r--r--doc/_build/html/config_saml2_sp.html215
-rw-r--r--doc/_build/html/download.html117
-rw-r--r--doc/_build/html/features.html128
-rw-r--r--doc/_build/html/genindex.html95
-rw-r--r--doc/_build/html/index.html187
-rw-r--r--doc/_build/html/installation.html217
-rw-r--r--doc/_build/html/objects.invbin633 -> 0 bytes
-rw-r--r--doc/_build/html/search.html99
-rw-r--r--doc/_build/html/searchindex.js1
-rw-r--r--doc/_build/html/sync-metadata_script.html207
-rw-r--r--doc/_build/html/where_metadata.html121
-rw-r--r--doc/_build/latex/Authentic2.aux173
-rw-r--r--doc/_build/latex/Authentic2.idx0
-rw-r--r--doc/_build/latex/Authentic2.ilg5
-rw-r--r--doc/_build/latex/Authentic2.ind0
-rw-r--r--doc/_build/latex/Authentic2.log1181
-rw-r--r--doc/_build/latex/Authentic2.out15
-rw-r--r--doc/_build/latex/Authentic2.pdfbin1449136 -> 0 bytes
-rw-r--r--doc/_build/latex/Authentic2.tex1686
-rw-r--r--doc/_build/latex/Authentic2.toc63
-rw-r--r--doc/_build/latex/Makefile66
-rw-r--r--doc/_build/latex/alias_in_source.pngbin27891 -> 0 bytes
-rw-r--r--doc/_build/latex/alias_in_source_saved.pngbin32325 -> 0 bytes
-rw-r--r--doc/_build/latex/attribute_item.pngbin37043 -> 0 bytes
-rw-r--r--doc/_build/latex/attribute_item_saved.pngbin47300 -> 0 bytes
-rw-r--r--doc/_build/latex/attribute_list.pngbin44435 -> 0 bytes
-rw-r--r--doc/_build/latex/attribute_list_saved.pngbin33508 -> 0 bytes
-rw-r--r--doc/_build/latex/error_no_idp_options.pngbin100130 -> 0 bytes
-rw-r--r--doc/_build/latex/error_no_sp_options.pngbin105076 -> 0 bytes
-rw-r--r--doc/_build/latex/fncychap.sty683
-rw-r--r--doc/_build/latex/ldapsource.pngbin40297 -> 0 bytes
-rw-r--r--doc/_build/latex/ldapsource_saved.pngbin28919 -> 0 bytes
-rw-r--r--doc/_build/latex/new_saml2_idp_1.pngbin33412 -> 0 bytes
-rw-r--r--doc/_build/latex/new_saml2_idp_2.pngbin19880 -> 0 bytes
-rw-r--r--doc/_build/latex/new_saml2_idp_saved.pngbin44523 -> 0 bytes
-rw-r--r--doc/_build/latex/new_saml2_sp_1.pngbin33522 -> 0 bytes
-rw-r--r--doc/_build/latex/new_saml2_sp_2.pngbin50560 -> 0 bytes
-rw-r--r--doc/_build/latex/new_saml2_sp_saved.pngbin37867 -> 0 bytes
-rw-r--r--doc/_build/latex/policy_pull.pngbin83727 -> 0 bytes
-rw-r--r--doc/_build/latex/policy_pull_renamed.pngbin27987 -> 0 bytes
-rw-r--r--doc/_build/latex/policy_pull_saved.pngbin33304 -> 0 bytes
-rw-r--r--doc/_build/latex/python.ist11
-rw-r--r--doc/_build/latex/sp_options_all.pngbin84859 -> 0 bytes
-rw-r--r--doc/_build/latex/sp_options_default.pngbin83029 -> 0 bytes
-rw-r--r--doc/_build/latex/sp_options_default_saved.pngbin30823 -> 0 bytes
-rw-r--r--doc/_build/latex/sp_options_regular.pngbin84258 -> 0 bytes
-rw-r--r--doc/_build/latex/sp_options_regular_modify_sp.pngbin22463 -> 0 bytes
-rw-r--r--doc/_build/latex/sp_options_regular_saved.pngbin30935 -> 0 bytes
-rw-r--r--doc/_build/latex/sp_policy_pull.pngbin52560 -> 0 bytes
-rw-r--r--doc/_build/latex/sp_policy_pull_saved.pngbin42347 -> 0 bytes
-rw-r--r--doc/_build/latex/sphinx.sty481
-rw-r--r--doc/_build/latex/sphinxhowto.cls81
-rw-r--r--doc/_build/latex/sphinxmanual.cls122
-rw-r--r--doc/_build/latex/tabulary.sty452
-rw-r--r--doc/_build/latex/update_metadata.pngbin51140 -> 0 bytes
-rw-r--r--doc/_build/latex/update_metadata_done.pngbin44530 -> 0 bytes
-rw-r--r--doc/_build/latex/user_profile_source.pngbin23727 -> 0 bytes
-rw-r--r--doc/_build/latex/user_profile_source_saved.pngbin29596 -> 0 bytes
149 files changed, 0 insertions, 12943 deletions
diff --git a/doc/_build/doctrees/README.doctree b/doc/_build/doctrees/README.doctree
deleted file mode 100644
index 34175ab..0000000
--- a/doc/_build/doctrees/README.doctree
+++ /dev/null
Binary files differ
diff --git a/doc/_build/doctrees/administration_with_policies.doctree b/doc/_build/doctrees/administration_with_policies.doctree
deleted file mode 100644
index 6db85fb..0000000
--- a/doc/_build/doctrees/administration_with_policies.doctree
+++ /dev/null
Binary files differ
diff --git a/doc/_build/doctrees/attribute_management.doctree b/doc/_build/doctrees/attribute_management.doctree
deleted file mode 100644
index 8c03063..0000000
--- a/doc/_build/doctrees/attribute_management.doctree
+++ /dev/null
Binary files differ
diff --git a/doc/_build/doctrees/auth_ldap.doctree b/doc/_build/doctrees/auth_ldap.doctree
deleted file mode 100644
index ecea2d3..0000000
--- a/doc/_build/doctrees/auth_ldap.doctree
+++ /dev/null
Binary files differ
diff --git a/doc/_build/doctrees/auth_pam.doctree b/doc/_build/doctrees/auth_pam.doctree
deleted file mode 100644
index dbceaca..0000000
--- a/doc/_build/doctrees/auth_pam.doctree
+++ /dev/null
Binary files differ
diff --git a/doc/_build/doctrees/config_cas_idp.doctree b/doc/_build/doctrees/config_cas_idp.doctree
deleted file mode 100644
index 9bebb09..0000000
--- a/doc/_build/doctrees/config_cas_idp.doctree
+++ /dev/null
Binary files differ
diff --git a/doc/_build/doctrees/config_cas_sp.doctree b/doc/_build/doctrees/config_cas_sp.doctree
deleted file mode 100644
index 0711a4b..0000000
--- a/doc/_build/doctrees/config_cas_sp.doctree
+++ /dev/null
Binary files differ
diff --git a/doc/_build/doctrees/config_saml2_idp.doctree b/doc/_build/doctrees/config_saml2_idp.doctree
deleted file mode 100644
index 5bbe63f..0000000
--- a/doc/_build/doctrees/config_saml2_idp.doctree
+++ /dev/null
Binary files differ
diff --git a/doc/_build/doctrees/config_saml2_sp.doctree b/doc/_build/doctrees/config_saml2_sp.doctree
deleted file mode 100644
index 8ac02c6..0000000
--- a/doc/_build/doctrees/config_saml2_sp.doctree
+++ /dev/null
Binary files differ
diff --git a/doc/_build/doctrees/download.doctree b/doc/_build/doctrees/download.doctree
deleted file mode 100644
index 4241ba5..0000000
--- a/doc/_build/doctrees/download.doctree
+++ /dev/null
Binary files differ
diff --git a/doc/_build/doctrees/environment.pickle b/doc/_build/doctrees/environment.pickle
deleted file mode 100644
index 1946105..0000000
--- a/doc/_build/doctrees/environment.pickle
+++ /dev/null
Binary files differ
diff --git a/doc/_build/doctrees/features.doctree b/doc/_build/doctrees/features.doctree
deleted file mode 100644
index ba5c062..0000000
--- a/doc/_build/doctrees/features.doctree
+++ /dev/null
Binary files differ
diff --git a/doc/_build/doctrees/index.doctree b/doc/_build/doctrees/index.doctree
deleted file mode 100644
index 47fcf58..0000000
--- a/doc/_build/doctrees/index.doctree
+++ /dev/null
Binary files differ
diff --git a/doc/_build/doctrees/installation.doctree b/doc/_build/doctrees/installation.doctree
deleted file mode 100644
index 8e2e239..0000000
--- a/doc/_build/doctrees/installation.doctree
+++ /dev/null
Binary files differ
diff --git a/doc/_build/doctrees/sync-metadata_script.doctree b/doc/_build/doctrees/sync-metadata_script.doctree
deleted file mode 100644
index 8e9bc78..0000000
--- a/doc/_build/doctrees/sync-metadata_script.doctree
+++ /dev/null
Binary files differ
diff --git a/doc/_build/doctrees/where_metadata.doctree b/doc/_build/doctrees/where_metadata.doctree
deleted file mode 100644
index 3ba286a..0000000
--- a/doc/_build/doctrees/where_metadata.doctree
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/.buildinfo b/doc/_build/html/.buildinfo
deleted file mode 100644
index 42b92d4..0000000
--- a/doc/_build/html/.buildinfo
+++ /dev/null
@@ -1,4 +0,0 @@
-# Sphinx build info version 1
-# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: 9a63a4e352955e4e1c10b0bedfb3135a
-tags: fbb0d17656682115ca4d033fb2f83ba1
diff --git a/doc/_build/html/README.html b/doc/_build/html/README.html
deleted file mode 100644
index f04e1b1..0000000
--- a/doc/_build/html/README.html
+++ /dev/null
@@ -1,421 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Authentic2 - Versatile Identity Server &mdash; Authentic2 1.9.2 documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '1.9.2',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="Authentic2 1.9.2 documentation" href="index.html" />
- <link rel="prev" title="Welcome to Authentic2’s documentation!" href="index.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="index.html" title="Welcome to Authentic2’s documentation!"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <div class="section" id="authentic2-versatile-identity-server">
-<span id="readme"></span><h1>Authentic2 - Versatile Identity Server<a class="headerlink" href="#authentic2-versatile-identity-server" title="Permalink to this headline">¶</a></h1>
-<p>Authentic2 is a versatile identity provider aiming to address a broad
-range of needs, from simple to complex setups; it has support for many
-protocols and can bridge between them.</p>
-<p>Authentic2 is under the GNU AGPL version 3 licence.</p>
-<p>It has support for SAMLv2 thanks to Lasso, a free (GNU GPL)
-implementation of the Liberty Alliance specifications.</p>
-<div class="section" id="features">
-<h2>Features<a class="headerlink" href="#features" title="Permalink to this headline">¶</a></h2>
-<p>Authentic can authenticate users against:
-- an LDAP directory,
-- a SAML 2.0 identity provider,
-- an OpenID identity provider,
-- with an X509 certificate.</p>
-<p>Authentic can provide authentication to web applications using the following
-protocols:
-- OpenID,
-- SAML 2.0,
-- CAS 1.0 &amp; CAS 2.0.</p>
-<p>Authentic can proxy authentication between any two different protocols it
-support.</p>
-</div>
-<div class="section" id="installation">
-<h2>Installation<a class="headerlink" href="#installation" title="Permalink to this headline">¶</a></h2>
-<div class="section" id="dependencies">
-<h3>Dependencies<a class="headerlink" href="#dependencies" title="Permalink to this headline">¶</a></h3>
-<p>You must install the following packages to use Authentic</p>
-<ul>
-<li><p class="first">Python Lasso binding 2.3.5:</p>
-<blockquote>
-<div><p>From sources: <a class="reference external" href="http://lasso.entrouvert.org/download">http://lasso.entrouvert.org/download</a>
-Debian based distribution: apt-get install python-lasso</p>
-</div></blockquote>
-</li>
-<li><p class="first">Django 1.3:</p>
-<blockquote>
-<div><p>From sources: <a class="reference external" href="http://www.djangoproject.com/download/1.3/tarball/">http://www.djangoproject.com/download/1.3/tarball/</a></p>
-</div></blockquote>
-</li>
-<li><p class="first">Django-registration 0.8-alpha-1:</p>
-<blockquote>
-<div><p>From sources: <a class="reference external" href="http://bitbucket.org/ubernostrum/django-registration/downloads">http://bitbucket.org/ubernostrum/django-registration/downloads</a>
-Debian based distribution: apt-get install python-django-registration</p>
-</div></blockquote>
-</li>
-<li><p class="first">Django-authopenid 0.9.6:</p>
-<blockquote>
-<div><p>From sources: <a class="reference external" href="http://bitbucket.org/benoitc/django-authopenid/downloads">http://bitbucket.org/benoitc/django-authopenid/downloads</a></p>
-</div></blockquote>
-</li>
-<li><p class="first">Django-south 0.7.3:</p>
-<blockquote>
-<div><p>From sources:: <a class="reference external" href="http://south.aeracode.org/docs/installation.html">http://south.aeracode.org/docs/installation.html</a></p>
-</div></blockquote>
-</li>
-<li><p class="first">Django-profiles 0.2:</p>
-<blockquote>
-<div><p>From sources:: <a class="reference external" href="http://pypi.python.org/pypi/django-profiles">http://pypi.python.org/pypi/django-profiles</a></p>
-</div></blockquote>
-</li>
-</ul>
-<p>You install all the django libraries quickly using pip:</p>
-<div class="highlight-python"><pre>pip install django django-profiles django-registration \
- django-debug-toolbar django-authopenid south</pre>
-</div>
-<p>or easy_install:</p>
-<div class="highlight-python"><pre>easy_install django django-profiles django-registration \
- django-debug-toolbar django-authopenid south</pre>
-</div>
-</div>
-<div class="section" id="quick-start">
-<h3>Quick Start<a class="headerlink" href="#quick-start" title="Permalink to this headline">¶</a></h3>
-<p>Then launch the following commands:</p>
-<div class="highlight-python"><pre>python manage.py syncdb --migrate
-python manage.py runserver</pre>
-</div>
-<p>You should see the following output:</p>
-<div class="highlight-python"><pre>Validating models...
-0 errors found
-
-Django version 1.2, using settings 'authentic.settings'
-Development server is running at http://127.0.0.1:8000/
-Quit the server with CONTROL-C.
-
-You can access the running application on http://127.0.0.1:8000/</pre>
-</div>
-</div>
-<div class="section" id="specifying-a-different-database">
-<h3>Specifying a different database<a class="headerlink" href="#specifying-a-different-database" title="Permalink to this headline">¶</a></h3>
-<p>This is done by modifying the DATABASES dictionary in your local_settings.py file
-(create it in Authentic project directory); for example:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="n">DATABASES</span><span class="p">[</span><span class="s">&#39;default&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
- <span class="s">&#39;ENGINE&#39;</span><span class="p">:</span> <span class="s">&#39;django.db.backends.postgresql&#39;</span><span class="p">,</span>
- <span class="s">&#39;NAME&#39;</span><span class="p">:</span> <span class="s">&#39;authentic&#39;</span><span class="p">,</span>
- <span class="s">&#39;USER&#39;</span><span class="p">:</span> <span class="s">&#39;admindb&#39;</span><span class="p">,</span>
- <span class="s">&#39;PASSWORD&#39;</span><span class="p">:</span> <span class="s">&#39;foobar&#39;</span><span class="p">,</span>
- <span class="s">&#39;HOST&#39;</span><span class="p">:</span> <span class="s">&#39;db.example.com&#39;</span><span class="p">,</span>
- <span class="s">&#39;PORT&#39;</span><span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span> <span class="c"># empty string means default value</span>
-<span class="p">}</span>
-</pre></div>
-</div>
-<p>You should refer to the Django documentation on databases settings at
-<a class="reference external" href="http://docs.djangoproject.com/en/dev/ref/settings/#databases">http://docs.djangoproject.com/en/dev/ref/settings/#databases</a> for all
-the details.</p>
-</div>
-<div class="section" id="how-to-upgrade-to-a-new-version-of-authentic">
-<h3>How to upgrade to a new version of authentic ?<a class="headerlink" href="#how-to-upgrade-to-a-new-version-of-authentic" title="Permalink to this headline">¶</a></h3>
-<p>Authentic store all its data in a relational database as specified in its
-settings.py or local_settings.py file. So in order to upgrade to a new version
-of authentic you have to update your database schema using the
-migration command — you will need to have installed the dependency django-south,
-see the beginning of this README file.:</p>
-<div class="highlight-python"><pre>python ./manage.py migrate</pre>
-</div>
-<p>Then you will need to create new tables if there are.:</p>
-<div class="highlight-python"><pre>python ./manage.py syncdb</pre>
-</div>
-</div>
-</div>
-<div class="section" id="using-authentic-with-an-ldap-directory">
-<h2>Using Authentic with an LDAP directory<a class="headerlink" href="#using-authentic-with-an-ldap-directory" title="Permalink to this headline">¶</a></h2>
-<p>Authentic use the module django_auth_ldap to synchronize the Django user tables
-with an LDAP. For complex use case, we will refer you to the django_auth_ldap
-documentation, see <a class="reference external" href="http://packages.python.org/django-auth-ldap/">http://packages.python.org/django-auth-ldap/</a>.</p>
-<div class="section" id="how-to-authenticate-users-against-an-ldap-server-with-anonymous-binding">
-<h3>How to authenticate users against an LDAP server with anonymous binding ?<a class="headerlink" href="#how-to-authenticate-users-against-an-ldap-server-with-anonymous-binding" title="Permalink to this headline">¶</a></h3>
-<ol class="arabic">
-<li><p class="first">Install the django_auth_ldap module for Django:</p>
-<div class="highlight-python"><pre>pip install django_auth_ldap</pre>
-</div>
-</li>
-<li><p class="first">Configure your local_settings.py file for authenticating against LDAP.</p>
-</li>
-</ol>
-<p>The next lines must be added:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="n">AUTHENTICATION_BACKENDS</span> <span class="o">+=</span> <span class="p">(</span> <span class="s">&#39;django_auth_ldap.backend.LDAPBackend&#39;</span><span class="p">,</span> <span class="p">)</span>
-
-<span class="kn">import</span> <span class="nn">ldap</span>
-<span class="kn">from</span> <span class="nn">django_auth_ldap.config</span> <span class="kn">import</span> <span class="n">LDAPSearch</span>
-
-<span class="c"># Here put the LDAP URL of your server</span>
-<span class="n">AUTH_LDAP_SERVER_URI</span> <span class="o">=</span> <span class="s">&#39;ldap://ldap.example.com&#39;</span>
-<span class="c"># Let the bind DN and bind password blank for anonymous binding</span>
-<span class="n">AUTH_LDAP_BIND_DN</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
-<span class="n">AUTH_LDAP_BIND_PASSWORD</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
-<span class="c"># Lookup user under the branch o=base and by mathcing their uid against the</span>
-<span class="c"># received login name</span>
-<span class="n">AUTH_LDAP_USER_SEARCH</span> <span class="o">=</span> <span class="n">LDAPSearch</span><span class="p">(</span><span class="s">&quot;o=base&quot;</span><span class="p">,</span>
- <span class="n">ldap</span><span class="o">.</span><span class="n">SCOPE_SUBTREE</span><span class="p">,</span> <span class="s">&quot;(uid=</span><span class="si">%(user)s</span><span class="s">)&quot;</span><span class="p">)</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="how-to-allow-members-of-an-ldap-group-to-manage-authentic">
-<h3>How to allow members of an LDAP group to manage Authentic ?<a class="headerlink" href="#how-to-allow-members-of-an-ldap-group-to-manage-authentic" title="Permalink to this headline">¶</a></h3>
-<ol class="arabic">
-<li><p class="first">First you must know the objectClass of groups in your LDAP schema, this FAQ
-will show you the configuration for two usual classes: groupOfNames and
-groupOfUniqueNames.</p>
-</li>
-<li><p class="first">Find the relevant groupname. We will say it is: cn=admin,o=mycompany</p>
-</li>
-<li><p class="first">Add the following lines:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">django_auth_ldap.config</span> <span class="kn">import</span> <span class="n">GroupOfNamesType</span>
-<span class="n">AUTH_LDAP_GROUP_TYPE</span> <span class="o">=</span> <span class="n">GroupOfNamesType</span><span class="p">()</span>
-<span class="n">AUTH_LDAP_GROUP_SEARCH</span> <span class="o">=</span> <span class="n">LDAPSearch</span><span class="p">(</span><span class="s">&quot;o=mycompany&quot;</span><span class="p">,</span>
- <span class="n">ldap</span><span class="o">.</span><span class="n">SCOPE_SUBTREE</span><span class="p">,</span> <span class="s">&quot;(objectClass=groupOfNames)&quot;</span><span class="p">)</span>
-<span class="n">AUTH_LDAP_USER_FLAGS_BY_GROUP</span> <span class="o">=</span> <span class="p">{</span>
- <span class="s">&quot;is_staff&quot;</span><span class="p">:</span> <span class="s">&quot;cn=admin,o=mycompany&quot;</span>
-<span class="p">}</span>
-</pre></div>
-</div>
-</li>
-</ol>
-<p>For an objectClass of groupOfUniqueNames you would change the string
-GroupOfNamesType to GroupOfUniqueNamesType and grouOfNames to
-groupOfUniqueNames. For more complex cases see the django_auth_ldap
-documentation.</p>
-</div>
-</div>
-<div class="section" id="saml-2-0">
-<h2>SAML 2.0<a class="headerlink" href="#saml-2-0" title="Permalink to this headline">¶</a></h2>
-<div class="section" id="how-to-i-authenticate-against-authentic2-with-a-samlv2-service-provider">
-<h3>How to I authenticate against Authentic2 with a SAMLv2 service provider ?<a class="headerlink" href="#how-to-i-authenticate-against-authentic2-with-a-samlv2-service-provider" title="Permalink to this headline">¶</a></h3>
-<ol class="arabic">
-<li><p class="first">Grab the SAML2 IdP metadata:</p>
-<blockquote>
-<div><p>http[s]://your.domain.com/idp/saml2/metadata</p>
-</div></blockquote>
-</li>
-<li><p class="first">And configure your service provider with it.</p>
-</li>
-</ol>
-<p>Go to the providers admin panel on:</p>
-<blockquote>
-<div>http[s]://your.domain.com/admin/saml/libertyprovider/add/</div></blockquote>
-<p>There create a new provider using the service provider metadata and enable it
-as a service provider, you can customize some behaviours like the preferred
-assertion consumer or encryption for the NameID or the Assertion element.</p>
-</div>
-</div>
-<div class="section" id="cas">
-<h2>CAS<a class="headerlink" href="#cas" title="Permalink to this headline">¶</a></h2>
-<div class="section" id="how-to-use-authentic2-as-a-cas-1-0-or-cas-2-0-identity-provider">
-<h3>How to use Authentic2 as a CAS 1.0 or CAS 2.0 identity provider ?<a class="headerlink" href="#how-to-use-authentic2-as-a-cas-1-0-or-cas-2-0-identity-provider" title="Permalink to this headline">¶</a></h3>
-<ol class="arabic">
-<li><p class="first">Activate CAS IdP support in settings.py:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="n">IDP_CAS</span> <span class="o">=</span> <span class="bp">True</span>
-</pre></div>
-</div>
-</li>
-<li><p class="first">Then create the database table to hold CAS service tickets:</p>
-<div class="highlight-python"><pre>python authentic2/manage.py syncdb --migrate</pre>
-</div>
-</li>
-<li><p class="first">Also configure authentic2 to authenticate against your LDAP directory (see
-above) if your want your user attributes to be accessible from your service,
-if it is not necessary you can use the normal relational database storage
-for you users.</p>
-</li>
-<li><p class="first">Finally configure your service to point to the CAS endpoint at:</p>
-<blockquote>
-<div><p>http[s]://your.domain.com/idp/cas/</p>
-</div></blockquote>
-</li>
-<li><p class="first">If needed configure your service to resolve authenticated user with your
-LDAP directory (if user attributes are needed for your service)</p>
-</li>
-</ol>
-</div>
-</div>
-<div class="section" id="pam-authentication">
-<h2>PAM authentication<a class="headerlink" href="#pam-authentication" title="Permalink to this headline">¶</a></h2>
-<p>This module is copied from <a class="reference external" href="https://bitbucket.org/wnielson/django-pam/">https://bitbucket.org/wnielson/django-pam/</a> by Weston
-Nielson and the pam ctype module by Chris Atlee <a class="reference external" href="http://atlee.ca/software/pam/">http://atlee.ca/software/pam/</a>.</p>
-<p>Add &#8216;authentic2.vendor.dpam.backends.PAMBackend&#8217; to your
-<tt class="docutils literal"><span class="pre">settings.py</span></tt>:</p>
-<div class="highlight-python"><pre>AUTHENTICATION_BACKENDS = (
- ...
- 'authentic2.vendor.dpam.backends.PAMBackend',
- ...
-)</pre>
-</div>
-<p>Now you can login via the system-login credentials. If the user is
-successfully authenticated but has never logged-in before, a new <tt class="docutils literal"><span class="pre">User</span></tt>
-object is created. By default this new <tt class="docutils literal"><span class="pre">User</span></tt> has both <tt class="docutils literal"><span class="pre">is_staff</span></tt> and
-<tt class="docutils literal"><span class="pre">is_superuser</span></tt> set to <tt class="docutils literal"><span class="pre">False</span></tt>. You can change this behavior by adding
-<tt class="docutils literal"><span class="pre">PAM_IS_STAFF=True</span></tt> and <tt class="docutils literal"><span class="pre">PAM_IS_SUPERUSER</span></tt> in your <tt class="docutils literal"><span class="pre">settings.py</span></tt> file.</p>
-<p>The default PAM service used is <tt class="docutils literal"><span class="pre">login</span></tt> but you can change it by setting the
-<tt class="docutils literal"><span class="pre">PAM_SERVICE</span></tt> variable in your <tt class="docutils literal"><span class="pre">settings.py</span></tt> file.</p>
-</div>
-<div class="section" id="attribute-management-in-authentic2">
-<h2>Attribute Management in Authentic2<a class="headerlink" href="#attribute-management-in-authentic2" title="Permalink to this headline">¶</a></h2>
-<p>See <a class="reference external" href="attribute_management.html">attribute management</a> page.</p>
-</div>
-<div class="section" id="roadmap">
-<h2>Roadmap<a class="headerlink" href="#roadmap" title="Permalink to this headline">¶</a></h2>
-<blockquote>
-<div><ul class="simple">
-<li>All (or nearly) settings will be configurable from the /admin panels</li>
-<li>Login page will remember user choices for authentication and authenticate
-the user passively using hidden iframes</li>
-<li>After a logout no passive login will be done</li>
-<li>CAS IdP will allow to whitelist service URL and proxy granting ticket URLs,
-and to refuse request from unkown URLs. It will also allow to use patterns
-as URLs.</li>
-<li>Extended CAS 2.0, with SAML attribute inside the CAS 2.0 validated ticket.</li>
-<li>A virtual LDAP directory based on the OpenLDAP socket backend would remove
-the need for a real LDAP directory to pass user attributes to CAS relying
-parties.</li>
-<li>WS-Trust token service endpoint</li>
-<li>Email forwarder, so that relying parties never get the real user email.</li>
-<li>Support slo in the CAS logout endpoint</li>
-</ul>
-</div></blockquote>
-<div class="section" id="copyright">
-<h3>Copyright<a class="headerlink" href="#copyright" title="Permalink to this headline">¶</a></h3>
-<p>Authentic is copyrighted by Entr&#8217;ouvert and is licensed through the GNU General
-Public Licence, version 2 or later. A copy of the whole license text is
-available in the COPYING file.</p>
-<p>The OpenID IdP originates in the project django_openid_provider by Roman
-Barczy¿ski, which is under the Apache 2.0 licence. This imply that you must
-distribute authentic2 under the AGPL3 licence when distributing this part of the
-project which is the only AGPL licence version compatible with the Apache 2.0
-licence.</p>
-</div>
-</div>
-</div>
-
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
- <h3><a href="index.html">Table Of Contents</a></h3>
- <ul>
-<li><a class="reference internal" href="#">Authentic2 - Versatile Identity Server</a><ul>
-<li><a class="reference internal" href="#features">Features</a></li>
-<li><a class="reference internal" href="#installation">Installation</a><ul>
-<li><a class="reference internal" href="#dependencies">Dependencies</a></li>
-<li><a class="reference internal" href="#quick-start">Quick Start</a></li>
-<li><a class="reference internal" href="#specifying-a-different-database">Specifying a different database</a></li>
-<li><a class="reference internal" href="#how-to-upgrade-to-a-new-version-of-authentic">How to upgrade to a new version of authentic ?</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#using-authentic-with-an-ldap-directory">Using Authentic with an LDAP directory</a><ul>
-<li><a class="reference internal" href="#how-to-authenticate-users-against-an-ldap-server-with-anonymous-binding">How to authenticate users against an LDAP server with anonymous binding ?</a></li>
-<li><a class="reference internal" href="#how-to-allow-members-of-an-ldap-group-to-manage-authentic">How to allow members of an LDAP group to manage Authentic ?</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#saml-2-0">SAML 2.0</a><ul>
-<li><a class="reference internal" href="#how-to-i-authenticate-against-authentic2-with-a-samlv2-service-provider">How to I authenticate against Authentic2 with a SAMLv2 service provider ?</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#cas">CAS</a><ul>
-<li><a class="reference internal" href="#how-to-use-authentic2-as-a-cas-1-0-or-cas-2-0-identity-provider">How to use Authentic2 as a CAS 1.0 or CAS 2.0 identity provider ?</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#pam-authentication">PAM authentication</a></li>
-<li><a class="reference internal" href="#attribute-management-in-authentic2">Attribute Management in Authentic2</a></li>
-<li><a class="reference internal" href="#roadmap">Roadmap</a><ul>
-<li><a class="reference internal" href="#copyright">Copyright</a></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-
- <h4>Previous topic</h4>
- <p class="topless"><a href="index.html"
- title="previous chapter">Welcome to Authentic2&#8217;s documentation!</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/README.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="index.html" title="Welcome to Authentic2’s documentation!"
- >previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2011, Mikaël Ates.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/_build/html/_images/alias_in_source.png b/doc/_build/html/_images/alias_in_source.png
deleted file mode 100644
index 448b718..0000000
--- a/doc/_build/html/_images/alias_in_source.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/alias_in_source_saved.png b/doc/_build/html/_images/alias_in_source_saved.png
deleted file mode 100644
index 7fbff27..0000000
--- a/doc/_build/html/_images/alias_in_source_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/attribute_item.png b/doc/_build/html/_images/attribute_item.png
deleted file mode 100644
index 2061a6f..0000000
--- a/doc/_build/html/_images/attribute_item.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/attribute_item_saved.png b/doc/_build/html/_images/attribute_item_saved.png
deleted file mode 100644
index 059e95b..0000000
--- a/doc/_build/html/_images/attribute_item_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/attribute_list.png b/doc/_build/html/_images/attribute_list.png
deleted file mode 100644
index 4263215..0000000
--- a/doc/_build/html/_images/attribute_list.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/attribute_list_saved.png b/doc/_build/html/_images/attribute_list_saved.png
deleted file mode 100644
index e1f533f..0000000
--- a/doc/_build/html/_images/attribute_list_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/error_no_idp_options.png b/doc/_build/html/_images/error_no_idp_options.png
deleted file mode 100644
index 3e0b18d..0000000
--- a/doc/_build/html/_images/error_no_idp_options.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/error_no_sp_options.png b/doc/_build/html/_images/error_no_sp_options.png
deleted file mode 100644
index 31ac513..0000000
--- a/doc/_build/html/_images/error_no_sp_options.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/ldapsource.png b/doc/_build/html/_images/ldapsource.png
deleted file mode 100644
index e0726ea..0000000
--- a/doc/_build/html/_images/ldapsource.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/ldapsource_saved.png b/doc/_build/html/_images/ldapsource_saved.png
deleted file mode 100644
index 5a84f29..0000000
--- a/doc/_build/html/_images/ldapsource_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/new_saml2_idp_1.png b/doc/_build/html/_images/new_saml2_idp_1.png
deleted file mode 100644
index 541c078..0000000
--- a/doc/_build/html/_images/new_saml2_idp_1.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/new_saml2_idp_2.png b/doc/_build/html/_images/new_saml2_idp_2.png
deleted file mode 100644
index 92448f9..0000000
--- a/doc/_build/html/_images/new_saml2_idp_2.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/new_saml2_idp_saved.png b/doc/_build/html/_images/new_saml2_idp_saved.png
deleted file mode 100644
index 47a9f2f..0000000
--- a/doc/_build/html/_images/new_saml2_idp_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/new_saml2_sp_1.png b/doc/_build/html/_images/new_saml2_sp_1.png
deleted file mode 100644
index d85d56b..0000000
--- a/doc/_build/html/_images/new_saml2_sp_1.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/new_saml2_sp_2.png b/doc/_build/html/_images/new_saml2_sp_2.png
deleted file mode 100644
index 2013c5e..0000000
--- a/doc/_build/html/_images/new_saml2_sp_2.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/new_saml2_sp_saved.png b/doc/_build/html/_images/new_saml2_sp_saved.png
deleted file mode 100644
index d95a2f3..0000000
--- a/doc/_build/html/_images/new_saml2_sp_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/policy_pull.png b/doc/_build/html/_images/policy_pull.png
deleted file mode 100644
index 67ae162..0000000
--- a/doc/_build/html/_images/policy_pull.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/policy_pull_renamed.png b/doc/_build/html/_images/policy_pull_renamed.png
deleted file mode 100644
index 61c7895..0000000
--- a/doc/_build/html/_images/policy_pull_renamed.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/policy_pull_saved.png b/doc/_build/html/_images/policy_pull_saved.png
deleted file mode 100644
index bafaea7..0000000
--- a/doc/_build/html/_images/policy_pull_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/sp_options_all.png b/doc/_build/html/_images/sp_options_all.png
deleted file mode 100644
index bb2b69c..0000000
--- a/doc/_build/html/_images/sp_options_all.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/sp_options_default.png b/doc/_build/html/_images/sp_options_default.png
deleted file mode 100644
index a0eb512..0000000
--- a/doc/_build/html/_images/sp_options_default.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/sp_options_default_saved.png b/doc/_build/html/_images/sp_options_default_saved.png
deleted file mode 100644
index de69c1e..0000000
--- a/doc/_build/html/_images/sp_options_default_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/sp_options_regular.png b/doc/_build/html/_images/sp_options_regular.png
deleted file mode 100644
index e78b9e1..0000000
--- a/doc/_build/html/_images/sp_options_regular.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/sp_options_regular_modify_sp.png b/doc/_build/html/_images/sp_options_regular_modify_sp.png
deleted file mode 100644
index d00a1d8..0000000
--- a/doc/_build/html/_images/sp_options_regular_modify_sp.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/sp_options_regular_saved.png b/doc/_build/html/_images/sp_options_regular_saved.png
deleted file mode 100644
index f177a93..0000000
--- a/doc/_build/html/_images/sp_options_regular_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/sp_policy_pull.png b/doc/_build/html/_images/sp_policy_pull.png
deleted file mode 100644
index b361d06..0000000
--- a/doc/_build/html/_images/sp_policy_pull.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/sp_policy_pull_saved.png b/doc/_build/html/_images/sp_policy_pull_saved.png
deleted file mode 100644
index cf933b9..0000000
--- a/doc/_build/html/_images/sp_policy_pull_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/update_metadata.png b/doc/_build/html/_images/update_metadata.png
deleted file mode 100644
index a53b35e..0000000
--- a/doc/_build/html/_images/update_metadata.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/update_metadata_done.png b/doc/_build/html/_images/update_metadata_done.png
deleted file mode 100644
index a94cc29..0000000
--- a/doc/_build/html/_images/update_metadata_done.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/user_profile_source.png b/doc/_build/html/_images/user_profile_source.png
deleted file mode 100644
index f1ba162..0000000
--- a/doc/_build/html/_images/user_profile_source.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_images/user_profile_source_saved.png b/doc/_build/html/_images/user_profile_source_saved.png
deleted file mode 100644
index 3cc93a7..0000000
--- a/doc/_build/html/_images/user_profile_source_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_sources/README.txt b/doc/_build/html/_sources/README.txt
deleted file mode 100644
index 16c008c..0000000
--- a/doc/_build/html/_sources/README.txt
+++ /dev/null
@@ -1,295 +0,0 @@
-.. _README:
-
-======================================
-Authentic2 - Versatile Identity Server
-======================================
-
-Authentic2 is a versatile identity provider aiming to address a broad
-range of needs, from simple to complex setups; it has support for many
-protocols and can bridge between them.
-
-Authentic2 is under the GNU AGPL version 3 licence.
-
-It has support for SAMLv2 thanks to Lasso, a free (GNU GPL)
-implementation of the Liberty Alliance specifications.
-
-Features
-========
-
-Authentic can authenticate users against:
-- an LDAP directory,
-- a SAML 2.0 identity provider,
-- an OpenID identity provider,
-- with an X509 certificate.
-
-Authentic can provide authentication to web applications using the following
-protocols:
-- OpenID,
-- SAML 2.0,
-- CAS 1.0 & CAS 2.0.
-
-Authentic can proxy authentication between any two different protocols it
-support.
-
-Installation
-============
-
-Dependencies
-------------
-
-You must install the following packages to use Authentic
-
-- Python Lasso binding 2.3.5:
-
- From sources: http://lasso.entrouvert.org/download
- Debian based distribution: apt-get install python-lasso
-
-- Django 1.3:
-
- From sources: http://www.djangoproject.com/download/1.3/tarball/
-
-- Django-registration 0.8-alpha-1:
-
- From sources: http://bitbucket.org/ubernostrum/django-registration/downloads
- Debian based distribution: apt-get install python-django-registration
-
-- Django-authopenid 0.9.6:
-
- From sources: http://bitbucket.org/benoitc/django-authopenid/downloads
-
-- Django-south 0.7.3:
-
- From sources:: http://south.aeracode.org/docs/installation.html
-
-- Django-profiles 0.2:
-
- From sources:: http://pypi.python.org/pypi/django-profiles
-
-You install all the django libraries quickly using pip::
-
- pip install django django-profiles django-registration \
- django-debug-toolbar django-authopenid south
-
-or easy_install::
-
- easy_install django django-profiles django-registration \
- django-debug-toolbar django-authopenid south
-
-Quick Start
------------
-
-Then launch the following commands::
-
- python manage.py syncdb --migrate
- python manage.py runserver
-
-You should see the following output::
-
- Validating models...
- 0 errors found
-
- Django version 1.2, using settings 'authentic.settings'
- Development server is running at http://127.0.0.1:8000/
- Quit the server with CONTROL-C.
-
- You can access the running application on http://127.0.0.1:8000/
-
-
-Specifying a different database
--------------------------------
-
-This is done by modifying the DATABASES dictionary in your local_settings.py file
-(create it in Authentic project directory); for example::
-
- DATABASES['default'] = {
- 'ENGINE': 'django.db.backends.postgresql',
- 'NAME': 'authentic',
- 'USER': 'admindb',
- 'PASSWORD': 'foobar',
- 'HOST': 'db.example.com',
- 'PORT': '', # empty string means default value
- }
-
-You should refer to the Django documentation on databases settings at
-http://docs.djangoproject.com/en/dev/ref/settings/#databases for all
-the details.
-
-How to upgrade to a new version of authentic ?
-----------------------------------------------
-
-Authentic store all its data in a relational database as specified in its
-settings.py or local_settings.py file. So in order to upgrade to a new version
-of authentic you have to update your database schema using the
-migration command — you will need to have installed the dependency django-south,
-see the beginning of this README file.::
-
- python ./manage.py migrate
-
-Then you will need to create new tables if there are.::
-
- python ./manage.py syncdb
-
-Using Authentic with an LDAP directory
-======================================
-
-Authentic use the module django_auth_ldap to synchronize the Django user tables
-with an LDAP. For complex use case, we will refer you to the django_auth_ldap
-documentation, see http://packages.python.org/django-auth-ldap/.
-
-How to authenticate users against an LDAP server with anonymous binding ?
--------------------------------------------------------------------------
-
-1. Install the django_auth_ldap module for Django::
-
- pip install django_auth_ldap
-
-
-2. Configure your local_settings.py file for authenticating against LDAP.
-
-The next lines must be added::
-
- AUTHENTICATION_BACKENDS += ( 'django_auth_ldap.backend.LDAPBackend', )
-
- import ldap
- from django_auth_ldap.config import LDAPSearch
-
- # Here put the LDAP URL of your server
- AUTH_LDAP_SERVER_URI = 'ldap://ldap.example.com'
- # Let the bind DN and bind password blank for anonymous binding
- AUTH_LDAP_BIND_DN = ""
- AUTH_LDAP_BIND_PASSWORD = ""
- # Lookup user under the branch o=base and by mathcing their uid against the
- # received login name
- AUTH_LDAP_USER_SEARCH = LDAPSearch("o=base",
- ldap.SCOPE_SUBTREE, "(uid=%(user)s)")
-
-How to allow members of an LDAP group to manage Authentic ?
------------------------------------------------------------
-
-1. First you must know the objectClass of groups in your LDAP schema, this FAQ
- will show you the configuration for two usual classes: groupOfNames and
- groupOfUniqueNames.
-
-2. Find the relevant groupname. We will say it is: cn=admin,o=mycompany
-
-3. Add the following lines::
-
- from django_auth_ldap.config import GroupOfNamesType
- AUTH_LDAP_GROUP_TYPE = GroupOfNamesType()
- AUTH_LDAP_GROUP_SEARCH = LDAPSearch("o=mycompany",
- ldap.SCOPE_SUBTREE, "(objectClass=groupOfNames)")
- AUTH_LDAP_USER_FLAGS_BY_GROUP = {
- "is_staff": "cn=admin,o=mycompany"
- }
-
-For an objectClass of groupOfUniqueNames you would change the string
-GroupOfNamesType to GroupOfUniqueNamesType and grouOfNames to
-groupOfUniqueNames. For more complex cases see the django_auth_ldap
-documentation.
-
-SAML 2.0
-========
-
-How to I authenticate against Authentic2 with a SAMLv2 service provider ?
--------------------------------------------------------------------------
-
-1. Grab the SAML2 IdP metadata:
-
- http[s]://your.domain.com/idp/saml2/metadata
-
-2. And configure your service provider with it.
-
-Go to the providers admin panel on:
-
- http[s]://your.domain.com/admin/saml/libertyprovider/add/
-
-There create a new provider using the service provider metadata and enable it
-as a service provider, you can customize some behaviours like the preferred
-assertion consumer or encryption for the NameID or the Assertion element.
-
-CAS
-===
-
-How to use Authentic2 as a CAS 1.0 or CAS 2.0 identity provider ?
------------------------------------------------------------------
-
-1. Activate CAS IdP support in settings.py::
-
- IDP_CAS = True
-
-2. Then create the database table to hold CAS service tickets::
-
- python authentic2/manage.py syncdb --migrate
-
-3. Also configure authentic2 to authenticate against your LDAP directory (see
- above) if your want your user attributes to be accessible from your service,
- if it is not necessary you can use the normal relational database storage
- for you users.
-
-4. Finally configure your service to point to the CAS endpoint at:
-
- http[s]://your.domain.com/idp/cas/
-
-5. If needed configure your service to resolve authenticated user with your
- LDAP directory (if user attributes are needed for your service)
-
-
-PAM authentication
-==================
-
-This module is copied from https://bitbucket.org/wnielson/django-pam/ by Weston
-Nielson and the pam ctype module by Chris Atlee http://atlee.ca/software/pam/.
-
-Add 'authentic2.vendor.dpam.backends.PAMBackend' to your
-``settings.py``::
-
- AUTHENTICATION_BACKENDS = (
- ...
- 'authentic2.vendor.dpam.backends.PAMBackend',
- ...
- )
-
-Now you can login via the system-login credentials. If the user is
-successfully authenticated but has never logged-in before, a new ``User``
-object is created. By default this new ``User`` has both ``is_staff`` and
-``is_superuser`` set to ``False``. You can change this behavior by adding
-``PAM_IS_STAFF=True`` and ``PAM_IS_SUPERUSER`` in your ``settings.py`` file.
-
-The default PAM service used is ``login`` but you can change it by setting the
-``PAM_SERVICE`` variable in your ``settings.py`` file.
-
-Attribute Management in Authentic2
-==================================
-
-See `attribute management <attribute_management.html>`_ page.
-
-Roadmap
-=======
-
- - All (or nearly) settings will be configurable from the /admin panels
- - Login page will remember user choices for authentication and authenticate
- the user passively using hidden iframes
- - After a logout no passive login will be done
- - CAS IdP will allow to whitelist service URL and proxy granting ticket URLs,
- and to refuse request from unkown URLs. It will also allow to use patterns
- as URLs.
- - Extended CAS 2.0, with SAML attribute inside the CAS 2.0 validated ticket.
- - A virtual LDAP directory based on the OpenLDAP socket backend would remove
- the need for a real LDAP directory to pass user attributes to CAS relying
- parties.
- - WS-Trust token service endpoint
- - Email forwarder, so that relying parties never get the real user email.
- - Support slo in the CAS logout endpoint
-
-Copyright
----------
-
-Authentic is copyrighted by Entr'ouvert and is licensed through the GNU General
-Public Licence, version 2 or later. A copy of the whole license text is
-available in the COPYING file.
-
-The OpenID IdP originates in the project django_openid_provider by Roman
-Barczy¿ski, which is under the Apache 2.0 licence. This imply that you must
-distribute authentic2 under the AGPL3 licence when distributing this part of the
-project which is the only AGPL licence version compatible with the Apache 2.0
-licence.
diff --git a/doc/_build/html/_sources/administration_with_policies.txt b/doc/_build/html/_sources/administration_with_policies.txt
deleted file mode 100644
index b800153..0000000
--- a/doc/_build/html/_sources/administration_with_policies.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-.. _administration_with_policies:
-
-=========================================================
-How global policies are used in Authentic2 administration
-=========================================================
-
-The policy management with global policies is nearly used for any kind of
-policy in Authentic2.
-
-For each kind of these policies, the system takes in account two special
-global policies named 'Default' and 'All':
-
- * If no other policy applies, the policy 'Default' will apply.
-
- * A policy can be created and attached to any related object. This policy is authoritative on policy 'Default'.
-
- * If the policy 'All' exists, it is authoritative on any other policy.
-
- * The global policies must be created by the administrator if necessary.
-
-**A policy is taken in account only if it is enabled.**
-
-::
-
- def get_sample_policy(any_object):
- try:
- return SamplePolicy.objects.get(name='All', enabled=True)
- except SamplePolicy.DoesNotExist:
- pass
- if any_object.enable_following_sample_policy:
- if any_object.sample_policy:
- return any_object.sample_policy
- try:
- return SamplePolicy.objects.get(name='Default', enabled=True)
- except SamplePolicy.DoesNotExist:
- pass
- return None
-
-*It is advised to add a 'Default' global policy when it is expected to apply a
-policy to all related objects. Add e regular policy to some objects are then
-used to handle particular configurations.*
-
-*A 'Default' global policy should be defined to avoid misonfiguration.*
-
-*A 'All' global policy should be used to enforce a global configuration for
-all related objects or for testing purposes.*
diff --git a/doc/_build/html/_sources/attribute_management.txt b/doc/_build/html/_sources/attribute_management.txt
deleted file mode 100644
index 9ed846a..0000000
--- a/doc/_build/html/_sources/attribute_management.txt
+++ /dev/null
@@ -1,663 +0,0 @@
-.. _attribute_management:
-
-==================================
-Attribute Management in Authentic2
-==================================
-
-Summary
-=======
-
-Attribute management currently allows to configure attribute policies
-associated with SAML2 service providers to define attributes that are
-pushed in SAML2 successful authentication response delivered by Authentic2.
-
-User attributes can be taken from LDAP directories, the user Django
-profile or taken from the user Django session if Authentic2 is also configured
-as a SAML2 service provider.
-
-Indeed, when Authentic2 acts also as a SAML2 service provider,
-attributes contained in the SAML2 assertion received from third IdP are put in
-the user session.
-
-Attributes can thus be proxyfied during SSO with Authentic2
-configured as a SAML2 proxy.
-
-The namespace of attributes received from another SAML2 IdP or pushed in the
-assertion given in to service providers can be configured per attribute or per
-service provider.
-
-By default, the namespace and format of attributes in assertion is conformant
-to the SAMLV2.0 X500/LDAP Attribute profile::
-
- <saml:Attribute
- xmlns:x500="urn:oasis:names:tc:SAML:2.0:profiles:attribute:X500"
- NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
- Name="urn:oid:2.5.4.42" FriendlyName="givenName">
- <saml:AttributeValue xsi:type="xs:string"
- x500:Encoding="LDAP">Mikaël</saml:AttributeValue>
- </saml:Attribute>
-
-But the http://schemas.xmlsoap.org/ws/2005/05/identity/claims from the ISI
-profile can also be used, for instance::
-
- <saml:Attribute
- NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
- Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"
- FriendlyName="First Name">
- <saml:AttributeValue>Mikaël</saml:AttributeValue>
- </saml:Attribute>
-
-Configuration
-=============
-
-Configure sources of attributes
--------------------------------
-
-The source of attributes for authentic2 are of two kinds. The LDAP sources and
-the user django profile.
-
-Declare the Django profile source
-_________________________________
-
-Add an attribute source named USER_PROFILE with namespace 'Default'.
-
-1. Go to http[s]://your.domain.com/admin/attribute_aggregator/attributesource/add/
-
-2. Write 'USER_PROFILE' in name field
-
-.. image:: pictures/user_profile_source.png
- :width: 800 px
-
-3. Save
-
-.. image:: pictures/user_profile_source_saved.png
- :width: 800 px
-
-Add an LDAP Source
-__________________
-
-For LDAP sources, objects of type 'LDAPSource' must be created.
-
-**Even if the authentication is based on LDAP authentification, thus that a
-server is configured in settings.py, it is
-necessary to create a corresponding 'LDAPSource' to use it as a source of
-attribute.**
-
-1. Go to http[s]://your.domain.com/admin/attribute_aggregator/ldapsource/add/
-
-2. Fill form fields
-
-Only the field Name, Server, User, Password, Base and Port are used for now.
-**The namespace of LDAP source must be kept to 'Default', since the system
-namespace is based on LDAP.**
-
-.. image:: pictures/ldapsource.png
- :width: 800 px
-
-3. Save
-
-.. image:: pictures/ldapsource_saved.png
- :width: 800 px
-
-Manage user distinguished names in LDAP directories
-___________________________________________________
-
-To find the user in a LDAP directory, authentic2 must know its distinguished
-name (DN). If this LDAP has been used when the user has authenticated,
-Authentic2 learn the user DN. Nothing has to be done from this point of view.
-
-However, if it is expected that user attributes be taken in a directory that
-is not used by the user for authentication, it is necessary to manually
-indicate to Authentic2 what is the user DN in the directory. For this, a
-user alias in source is created for the user:
-
-1. Go to http[s]://your.domain.com/admin/attribute_aggregator/useraliasinsource/add/
-
-2. Fill form fields
-
-.. image:: pictures/alias_in_source.png
- :width: 800 px
-
-3. Save
-
-.. image:: pictures/alias_in_source_saved.png
- :width: 800 px
-
-Configure attributes pushed to SAML2 service providers in SSO response
-----------------------------------------------------------------------
-
-Reminder:
-
-- The default name format in SAML2 assertions is URI
-- The default namespace called 'Default' is LDAP
-
-In summary:
-
-1. Create attribute items indicating an attribute name, a source, the name format expected and the namespace expected for the attribute name and friendly name if any.
-
-2. Create a named list of attribute items.
-
-3. Create an attribute policy and associate the previous list or associate the previous list to a existing attribute policy.
-
-4. Associate the policy to a service provider.
-
-Create attribute items
-______________________
-
-1. Go to http[s]://your.domain.com/admin/idp/attributeitem/add/
-
-2. Fill form fields
-
-.. image:: pictures/attribute_item.png
- :width: 800 px
-
-3. Save
-
-.. image:: pictures/attribute_item_saved.png
- :width: 800 px
-
-Create a named list of attribute items
-______________________________________
-
-1. Go to http[s]://your.domain.com/admin/idp/attributelist/add/
-
-2. Name the list and add items to list
-
-.. image:: pictures/attribute_list.png
- :width: 800 px
-
-3. Save
-
-.. image:: pictures/attribute_list_saved.png
- :width: 800 px
-
-Create or modify an attribute policy
-____________________________________
-
-1. Go to http[s]://your.domain.com/admin/idp/attributepolicy/add/
-
-2. Add list to the policy
-
-.. image:: pictures/policy_pull.png
- :width: 800 px
-
-3. Save
-
-.. image:: pictures/policy_pull_saved.png
- :width: 800 px
-
-Associate the policy to a service provider
-__________________________________________
-
-1. Go to http[s]://your.domain.com/admin/saml/libertyprovider/1/
-
-2. Add policy to the service provider
-
-.. image:: pictures/sp_policy_pull.png
- :width: 800 px
-
-3. Save
-
-.. image:: pictures/sp_policy_pull_saved.png
- :width: 800 px
-
-4. The display name of the policy has changed
-
-.. image:: pictures/policy_pull_renamed.png
- :width: 800 px
-
-Handle attributes provided by other Identity providers, proxy attributes
-------------------------------------------------------------------------
-
-Link to configure first Authentic as a sp to have attributes in session
-
-Add a source if mapping set to true
-
-Modifying supported namespaces and attribute name mappings
-==========================================================
-
-TBD
-
-Explanation (Draft)
-===================
-
-Attribute aggegrator module
----------------------------
-
-The core attribute management is based on the attribute aggregator module.
-
-Intro
-_____
-
-Attribute aggregator provides a main Model class called UserAttributeProfile,
-functions to load attributes and extract attributes.
-
-The mapping between attribute namespaces is built-in and depends on a unique
-file (mapping.py).
-
-A main schema is defined and is based on LDAP/X500 for naming. The support
-of http://schemas.xmlsoap.org/ws/2005/05/identity/claims is partly complete.
-
-Source of attributes are connected with attribute loading functions using
-signals.
-
-FAQ
-___
-
-Why not use the Django User profile?
-
-The django user profile needs to define attributes as class attributes and
-then support form filling or mapping with LDAP.
-
-That is useful and may be used, especially because the profile can be used as
-a source of attribute to load in the attribute_aggregator profile.
-
-The attribute_aggregator profile allow to load multivalued attributes from any
-source supported (LDAP, Django profile and attributes in Django session for
-now) from any namespace defined in mapping.py (LDAP/X500 and claims for now).
-
-The profile can be loaded giving a source or a list of attribute, or can be
-from any known source, or with a dictionnary.
-
-Attributes can be extracted with many functions in any namespace supported.
-
-Quick explanation
-_________________
-
-The schema is defined in mapping.py and is made of definitions like this::
-
- "sn": {
- "oid": "2.5.4.4",
- "display_name": _("sn surname"),
- "alias": ['surname'],
- "profile_field_name": 'last_name',
- "type": "http://www.w3.org/2001/XMLSchema#string",
- "namespaces": {
- "http://schemas.xmlsoap.org/ws/2005/05/identity/claims": {
- "identifiers":
- [
- "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname",
- ],
- "friendly_names":
- [
- "Last Name",
- ],
- }
- }
- },
-
-The profile store all the data in a text field taht contains a cPickle list of
-instances of the class AttributeData.
-
-The profile is attached to a user and then can be created or loaded with::
-
- profile = load_or_create_user_profile(user=user)
-
-User may be None to create a temporary profile for an anonymous user. But
-that need a DB cleaning function not implemented.
-
-The model *UserAttributeProfile*
-________________________________
-
-The model 'UserAttributeProfile' can be attached to a user and then persist
-(as a Model).
-
-When the profile is loaded, all data stored are removed expect if the
-the data has an expiration date later.
-
-The profile provide several methods to store and extract attributes.
-
-All the methods to add attributes are based on a main one accepting a
-dictionnary of attribute is parameters 'load_by_dic()'. The other methods
-('load_listed_attributes()', 'load_greedy()') send a signal with a list of
-attributes (listed_attributes_call) or not (any_attributes_call) to grab a
-dictionnary. The list is given with the definition name, oid or friendly name
-of the attribute in the system namespace.
-
-Into the dictionnary, attributes are given with their name, oid or friendly
-name in the default namespace or with their name in a namepsace. An expiration
-date can also be given (ISO8601 format), if none, attribute will be deleted at
-next profile loading. The dictionnary format is as follows::
-
- attributes = dict()
- data_from_source = list()
- a1 = dict()
- a1['oid'] = definition_name
- Or
- a1['definition'] = definition_name
- definition may be the definition name like 'gn'
- or an alias like 'givenName'
- Or
- a1['name'] = attribute_name_in_ns
- a1['namespace'] = ns_name
- a1['expiration_date'] = date
- a1['values'] = list_of_values
- data_from_source.append(a1)
- ...
- data_from_source.append(a2)
- attributes[source_name] = data_from_source
-
-Getters are defined to extract data from a profile. Only AttributeData
-instances are extracted that assume that any attribute namespace can be used.
-
-* get_data_of_definition(definition)
-
-Return a list of AttributeData instances corresponding to the definition
-given.
-
-* get_freshest_data_of_definition(definition)
-
-Return the freshest AttributeData instance. If multiple with no or same exp
-date, random. Should use the creation date soon.
-
-* get_data_of_source
-
-Return a list of AttributeData instances corresponding to the source given.
-
-* get_data_of_source_by_name
-
-Idem but source name is given, not a Source instance.
-
-* get_data_of_definition_and_source
-
-Return a list of AttributeData instances corresponding to the definition and
-source given.
-
-* get_data_of_definition_and_source_by_name
-
-Idem but source name is given, not a Source instance.
-
-SAML2 attribute representation in assertions
---------------------------------------------
-
-SAML2 attribute profile (saml-profiles-2.0-os - Section 8) defines two kind of
-attribute element syntax in the attribute statement of assertions, also
-called *name format*:
-
-- BASIC::
-
- NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
-
-- URI::
-
- NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
-
-*URI should be used when attributes have "universally" known unique names
-like OID.*
-
-Example::
-
- <saml:Attribute NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
- Name="FirstName">
- <saml:AttributeValue xsi:type="xs:string">By-Tor</saml:AttributeValue>
- </saml:Attribute>
-
- <saml:Attribute
- xmlns:x500="urn:oasis:names:tc:SAML:2.0:profiles:attribute:X500"
- NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
- Name="urn:oid:2.5.4.42" FriendlyName="givenName">
- <saml:AttributeValue xsi:type="xs:string"
- x500:Encoding="LDAP">Steven</saml:AttributeValue>
- </saml:Attribute>
-
-
-BASIC
-_____
-
-
-Two <Attribute> elements refer to the same SAML attribute if and only if the
-values of their Name XML attributes are equal in the sense of Section 3.3.6 of
-[Schema2].
-
-No additional XML attributes are defined for use with the <Attribute> element.
-
-The schema type of the contents of the <AttributeValue> element MUST be drawn
-from one of the types defined in Section 3.3 of [Schema2]. The xsi:type
-attribute MUST be present and be given the appropriate value.
-
-X.500/LDAP Attribute Profile (URI)
-__________________________________
-
-**Extracted from the SAML2 core specifications**
-
-Two <Attribute> elements refer to the same SAML attribute if and only if their
-Name XML attribute values are equal in the sense of [RFC3061]. The
-FriendlyName attribute plays no role in the comparison.
-
-Directory attribute type definitions for use in native X.500 directories
-specify the syntax of the attribute using ASN.1 [ASN.1]. For use in LDAP,
-directory attribute definitions additionally include an LDAP syntax which
-specifies how attribute or assertion values conforming to the syntax are to be
-represented when transferred in the LDAP protocol (known as an LDAP-specific
-encoding). The LDAP-specific encoding commonly produces Unicode characters in
-UTF-8 form. This SAML attribute profile specifies the form of SAML attribute
-values only for those directory attributes which have LDAP syntaxes. Future
-extensions to this profile may define attribute value formats for directory
-attributes whose syntaxes specify other encodings.
-
-To represent the encoding rules in use for a particular attribute value, the
-<AttributeValue> element MUST contain an XML attribute named Encoding defined
-in the XML namespace urn:oasis:names:tc:SAML:2.0:profiles:attribute:X500.
-
-For any directory attribute with a syntax whose LDAP-specific encoding
-exclusively produces UTF-8 character strings as values, the SAML attribute
-value is encoded as simply the UTF-8 string itself, as the content of the
-<AttributeValue> element, with no additional whitespace.
-In such cases, the xsi:type XML attribute MUST be set to xs:string.
-The profile-specific Encoding XML attribute is provided, with a value of LDAP.
-
-The AttributeData instances have a field expiration_data. It the profile
-exists, obsolete data are removed at loading.
-
-
-When authentic 2 deals with attributes and needs mapping?
----------------------------------------------------------
-
-Authentic2 behaves as an attribute provider:
-* At the SSO login
-* When an attribute request is received
-
-Authentic requests (e.g. by soap) are not yet supported.
-
-When Authentic2 behaves as an attribute provider at SSO login
-_____________________________________________________________
-
-At a SSO request, just before responding to the service provider, the saml2
-idp module sends the signal 'add_attributes_to_response' giving the SP entity
-ID.
-
-The signal is connected to the function 'provide_attributes_at_sso()' in
-charge of providing the attributes at the SSO for this SP.
-
-**Attributes sources are of two kinds. The first ones are the sources that can
-be requested by the IdP with a syncrhonous binding without user intercations.
-These sources are called pull sources. They are for now limited to LDAP
-sources. The other ones are sources are asyncrhonous bindings, usually
-requiring user interactions. These sources are called push sources. They are
-now limited to the attributes provided at SSO requests when the IdP acts as a
-SAML2 SP. There attributes are put/found in the Django session.**
-
-Each source in the system is declared with an instance of the AttributeSource
-model. We'll see later that to forward attributes of push sources it is not
-necessary that a source is declared in some circumstances.
-
-To manage these sources an attribute policy is attached to services providers.
-Then the service provider model must be extended with a attribute
-attributes_at_sso_policy. The service provider must send the signal
-'add_attributes_to_response'.
-
-The implementation is actually done for SAML2 providers.
-
-**In such a policy attributes from pull and push sources are treated
-differently.**
-
-**For pull sources, a list of attributes is indicated. Either an attribute is
-searched in all the pull sources and whatever attribute value found is
-returned. Or each attribute is indicated with a source. With each attribute is
-indicated the output format and namespace.**
-
-**The policy may also indicate that all the attributes in the Django session
-must be forwarded. Then, no AttributeSource instance is required. All the
-attributes are then forwarded without treating input namespace considerations.
-When an AttributeSource instance is found, the input namespace of this source
-is considered. An option can then be set to tell that the output format and
-namespace must be taken. A list of attribute can also be given.
-This list can be use to filter attributes to forward without or without taking
-care of the source. The output namespace and format can also be trated per
-attribute.**
-
-If the namespace is default, the attribute names will be taken from the
-system namespace. In BASIC the name will be the definition name. In URI, the
-Name will be the OID in urn format and the friendly name will be the
-definition name. If a namespace is given, the first identifier of this
-attribute is taken as Name in BASIC. In URI, the same and the first friendly
-name is taken.
-
-::
-
- class LibertyServiceProvider(models.Model):
- ...
- attribute_policy = models.ForeignKey(AttributePolicy,
- verbose_name=_("Attribute policy"), null=True, blank=True)
-
- class AttributePolicy(models.Model):
- # List of attributes to provide from pull sources at SSO Login.
- # If an attribute is indicate without a source, from any source.
- # The output format and namespace is given by each attribute.
- attribute_list_for_sso_from_pull_sources = \
- models.ForeignKey(LibertyAttributeMap,
- related_name = "attributes of pull sources",
- blank = True, null = True)
-
- # Set to true for proxying attributes from pull sources at SSO Login.
- # Attributes are in session.
- # All attributes are forwarded as is except if the parameter
- # 'attribute_list_for_sso_from_push_sources' is initialized
- forward_attributes_from_pull_sources = models.BooleanField(default=False)
-
- # Map attributes in session
- # forward_attributes_in_session must be true
- # At False, all attributes are forwarded as is
- # At true, look for the namespace of the source for input, If not found,
- # system namespace. Look for the options attribute_name_format and
- # output_namespace of the attribute policy for output.
- map_attributes_from_pull_sources = models.BooleanField(default=False)
-
- # ATTRIBUTE_VALUE_FORMATS[0] =>
- # (lasso.SAML2_ATTRIBUTE_NAME_FORMAT_BASIC, 'SAMLv2 BASIC')
- output_name_format = models.CharField(max_length = 100,
- choices = ATTRIBUTE_VALUE_FORMATS,
- default = ATTRIBUTE_VALUE_FORMATS[0])
-
- #ATTRIBUTES_NS[0] => ('Default', 'Default')
- output_namespace = models.CharField(max_length = 100,
- choices = ATTRIBUTES_NS, default = ATTRIBUTES_NS[0])
-
- # Filter attributes pushed from source.
- source_filter_for_sso_from_push_sources = \
- models.ManyToManyField(AttributeSource,
- related_name = "attributes of pull sources",
- blank = True, null = True)
-
- # List of attributes to filter from pull sources at SSO Login.
- attribute_filter_for_sso_from_push_sources = \
- models.ForeignKey(LibertyAttributeMap,
- related_name = "attributes of pull sources",
- blank = True, null = True)
-
- # The sources of attributes of the previous list are considered.
- # May be used conjointly with 'source_filter_for_sso_from_push_sources'
- filter_source_of_filtered_attributes = models.BooleanField(default=False)
-
- # To map the attributes of forwarded attributes with the defaut output
- # format and namespace, use 'map_attributes_from_pull_sources'
- # Use the following option to use the output format and namespace
- # indicated for each attribute.
- map_attributes_of_filtered_attributes = models.BooleanField(default=False)
-
-
- # Set to true to take in account missing required attributes
- send_error_and_no_attrs_if_missing_required_attrs = \
- models.BooleanField(default=False)
-
- class Meta:
- verbose_name = _('attribute options policy')
- verbose_name_plural = _('attribute options policies')
-
-
- class AttributeList(models.Model):
- name = models.CharField(max_length = 40, unique = True)
- attributes = models.ManyToManyField(AttributeItem,
- related_name = "attributes of the list",
- blank = True, null = True)
-
-
- class AttributeItem(models.Model):
- attribute_name = models.CharField(max_length = 100, choices = ATTRIBUTES,
- default = ATTRIBUTES[0])
- # ATTRIBUTE_VALUE_FORMATS[0] =>
- # (lasso.SAML2_ATTRIBUTE_NAME_FORMAT_BASIC, 'SAMLv2 BASIC')
- output_attribute_name_format = models.CharField(max_length = 100,
- choices = ATTRIBUTE_VALUE_FORMATS,
- default = ATTRIBUTE_VALUE_FORMATS[0])
- #ATTRIBUTES_NS[0] => ('Default', 'Default')
- output_namespace = models.CharField(max_length = 100,
- choices = ATTRIBUTES_NS, default = ATTRIBUTES_NS[0])
- required = models.BooleanField(default=False)
- source = models.ForeignKey(AttributeSource, blank = True, null = True)
-
-
-A list of attributes can also be taken from the service provider metadata and
-added to 'attribute_list_for_sso_from_pull_sources'. The namespace may be
-extracted from the metadata. This namespace is then used to look for the
-corresponding definition and then to provide the attribute in the right
-namespace. Read attributes from metadata is not yet supported.
-
-For the attributes of pull sources, once the list of attributes is defined,
-They are loaded in the user profile.
-
-As explained before the attribute_aggregator loading function send signals to
-grab dictionnary of attributes. Up to know, only the ldap loading function are
-connected to these signals. The namespace of LDAP sources is assumed to be
-the same as the system namespace. There is here then no mapping needed. Other
-kind of sources than LDAP can be defined in attribute aggregator.
-
-To grab attributes from a LDAP the user dn in the LDAP or at least a local
-identifier in the LDAP is required. For this purpose, each user has alias
-associated with LDAP source. These aliases must their DN in the LDAP. When
-the authentication LDAP backend will be taken in account, the dn will be taken
-direclty from the user Model instance.
-
-Each LDAP sources are declared with the binding parameters. The LDAP namespace
-is always 'Default'.
-
-If an attribute to load is not found and is required the answer should report
-an error (Not yet implemented).
-
-Attributes in response can also be provided with other means than from an LDAP
-source. Attributes can be put in the user Django session and then loaded in
-the profile. An option of the service provier indicate if attributes in the
-session must be provided to the service provider.
-
-To have the attribute loaded from the session, they must be provided in the
-session as follows:
-request.session['attributes'][source_name] = list()
-
-The source_name must be the name of an existing instance of an
-'AttributeSource'. Such an instance contains a field namespace indicating the
-namespace of attributes.
-
-This is currently implemented only for the SAML2 service provider module of
-authentic2. Authsaml2, the SP module, parse the assertion and put the
-attributes in the session.
-
-::
-
- if not 'multisource_attributes' in request.session:
- request.session['attributes'] = dict{}
- request.session['multisource_attributes'] \
- [login.assertion.issuer.content] = attributes
-
-Then, Authentic2 can be used as a SAML2 proxy forwarding attributes in
-assertion, eventually doing a namespace mapping. For this, the option
-forward attributes in sesion must be set (by default False).
diff --git a/doc/_build/html/_sources/auth_ldap.txt b/doc/_build/html/_sources/auth_ldap.txt
deleted file mode 100644
index edf6dec..0000000
--- a/doc/_build/html/_sources/auth_ldap.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-.. _auth_ldap:
-
-==============================================
-Authentication with an existing LDAP directory
-==============================================
-
-Authentic use the module django_auth_ldap to synchronize the Django user tables
-with an LDAP. For complex use case, we will refer you to the django_auth_ldap
-documentation, see http://packages.python.org/django-auth-ldap/.
-
-How to authenticate users against an LDAP server with anonymous binding ?
--------------------------------------------------------------------------
-
-1. Install the django_auth_ldap module for Django::
-
- pip install django_auth_ldap
-
-
-2. Configure your local_settings.py file for authenticating against LDAP.
-
-The next lines must be added::
-
- AUTHENTICATION_BACKENDS += ( 'django_auth_ldap.backend.LDAPBackend', )
-
- import ldap
- from django_auth_ldap.config import LDAPSearch
-
- # Here put the LDAP URL of your server
- AUTH_LDAP_SERVER_URI = 'ldap://ldap.example.com'
- # Let the bind DN and bind password blank for anonymous binding
- AUTH_LDAP_BIND_DN = ""
- AUTH_LDAP_BIND_PASSWORD = ""
- # Lookup user under the branch o=base and by mathcing their uid against the
- # received login name
- AUTH_LDAP_USER_SEARCH = LDAPSearch("o=base",
- ldap.SCOPE_SUBTREE, "(uid=%(user)s)")
-
-How to allow members of an LDAP group to manage Authentic ?
------------------------------------------------------------
-
-1. First you must know the objectClass of groups in your LDAP schema, this FAQ
- will show you the configuration for two usual classes: groupOfNames and
- groupOfUniqueNames.
-
-2. Find the relevant groupname. We will say it is: cn=admin,o=mycompany
-
-3. Add the following lines::
-
- from django_auth_ldap.config import GroupOfNamesType
- AUTH_LDAP_GROUP_TYPE = GroupOfNamesType()
- AUTH_LDAP_GROUP_SEARCH = LDAPSearch("o=mycompany",
- ldap.SCOPE_SUBTREE, "(objectClass=groupOfNames)")
- AUTH_LDAP_USER_FLAGS_BY_GROUP = {
- "is_staff": "cn=admin,o=mycompany"
- }
-
-For an objectClass of groupOfUniqueNames you would change the string
-GroupOfNamesType to GroupOfUniqueNamesType and grouOfNames to
-groupOfUniqueNames. For more complex cases see the django_auth_ldap
-documentation.
-
diff --git a/doc/_build/html/_sources/auth_pam.txt b/doc/_build/html/_sources/auth_pam.txt
deleted file mode 100644
index 5ecb397..0000000
--- a/doc/_build/html/_sources/auth_pam.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-.. _auth_pam:
-
-=====================================
-Authentication on Authentic2 with PAM
-=====================================
-
-This module is copied from https://bitbucket.org/wnielson/django-pam/ by Weston
-Nielson and the pam ctype module by Chris Atlee http://atlee.ca/software/pam/.
-
-Add 'authentic2.vendor.dpam.backends.PAMBackend' to your
-``settings.py``::
-
- AUTHENTICATION_BACKENDS = (
- ...
- 'authentic2.vendor.dpam.backends.PAMBackend',
- ...
- )
-
-Now you can login via the system-login credentials. If the user is
-successfully authenticated but has never logged-in before, a new ``User``
-object is created. By default this new ``User`` has both ``is_staff`` and
-``is_superuser`` set to ``False``. You can change this behavior by adding
-``PAM_IS_STAFF=True`` and ``PAM_IS_SUPERUSER`` in your ``settings.py`` file.
-
-The default PAM service used is ``login`` but you can change it by setting the
-``PAM_SERVICE`` variable in your ``settings.py`` file.
diff --git a/doc/_build/html/_sources/config_cas_idp.txt b/doc/_build/html/_sources/config_cas_idp.txt
deleted file mode 100644
index dfcc34f..0000000
--- a/doc/_build/html/_sources/config_cas_idp.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-.. _config_cas_idp:
-
-====================================
-Configure Authentic2 as a CAS client
-====================================
diff --git a/doc/_build/html/_sources/config_cas_sp.txt b/doc/_build/html/_sources/config_cas_sp.txt
deleted file mode 100644
index 7dffdd9..0000000
--- a/doc/_build/html/_sources/config_cas_sp.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-.. _config_cas_sp:
-
-====================================
-Configure Authentic2 as a CAS server
-====================================
-
-How to use Authentic2 as a CAS 1.0 or CAS 2.0 identity provider ?
------------------------------------------------------------------
-
-1. Activate CAS IdP support in settings.py::
-
- IDP_CAS = True
-
-2. Then create the database table to hold CAS service tickets::
-
- python authentic2/manage.py syncdb --migrate
-
-3. Also configure authentic2 to authenticate against your LDAP directory (see
- above) if your want your user attributes to be accessible from your service,
- if it is not necessary you can use the normal relational database storage
- for you users.
-
-4. Finally configure your service to point to the CAS endpoint at:
-
- http[s]://your.domain.com/idp/cas/
-
-5. If needed configure your service to resolve authenticated user with your
- LDAP directory (if user attributes are needed for your service)
diff --git a/doc/_build/html/_sources/config_saml2_idp.txt b/doc/_build/html/_sources/config_saml2_idp.txt
deleted file mode 100644
index 8fbdeee..0000000
--- a/doc/_build/html/_sources/config_saml2_idp.txt
+++ /dev/null
@@ -1,118 +0,0 @@
-.. _config_saml2_idp:
-
-=================================================================
-Configure Authentic2 as a SAML2 service provider or a SAML2 proxy
-=================================================================
-
-**The configuration to make Authentic2 a SAML2 service provider or a SAML2
-proxy is the same. The difference comes from that Authentic2 is may be
-configured or not as a SAML2 identity provider.**
-
-How do I authenticate against a third SAML2 identity provider?
-==============================================================
-
-1. Declare Authentic2 as a SAML2 service provider on your SAML2 identity provider using the SAML2 service provider metadata of Authentic2.
-
-Go to http[s]://your.domain.com/authsaml2/metadata
-
-2. Add and configure a SAML2 identity provider entry in Authentic2 using the metadata of the identity provider.
-
-How do I add and configure a SAML2 identity provider in Authentic2?
-===================================================================
-
-You first need to create a SAML2 identity provider entry with the SAML2
-metadata of the identity provider. Then, you configure it.
-
-If your identity provider is Authentic2, the metadata are available at:
-
- http[s]://your.domain.com/idp/saml2/metadata
-
-See :ref:`where_metadata` for more information.
-
-Create a SAML2 identity provider entry
---------------------------------------
-
-You first need to create a new SAML2 identity provider entry. This requires
-the SAML2 metadata of the identity provider.
-
-1. Go to
-
- http[s]://your.domain.com/admin/saml/libertyprovider/add/
-
-2. Fill the form fields
-
-.. image:: pictures/new_saml2_idp_1.png
- :width: 800 px
-
-.. image:: pictures/new_saml2_idp_2.png
- :width: 800 px
-
-**The identity provider must be enabled.**
-
-See below about configuring the identity provider with policies:
-
-* options of the identity provider
-
-3. Save
-
-.. image:: pictures/new_saml2_idp_saved.png
- :width: 800 px
-
-Configure the SAML2 identity provider options
----------------------------------------------
-
-The SAML2 options of the service provider are configured using sp options
-policies.
-
-See the *administration with policy principle* page :ref:`administration_with_policies`.
-
-You may create a regular policy and configure your service provider to use it.
-
-Go to:
-
- http[s]://your.domain.com/admin/saml/idpoptionssppolicy/add/
-
-.. image:: pictures/sp_options_regular.png
- :width: 800 px
-
-.. image:: pictures/sp_options_regular_saved.png
- :width: 800 px
-
-.. image:: pictures/sp_options_regular_modify_sp.png
- :width: 800 px
-
-Exemple with a policy 'Default':
-
-.. image:: pictures/sp_options_default.png
- :width: 800 px
-
-Exemple with a policy 'All':
-
-.. image:: pictures/sp_options_all.png
- :width: 800 px
-
-If no policy is found for the configuration of the SAML2 options of an identity
-provider, the following error is displayed when a SSO request is initiated.
-
-.. image:: pictures/error_no_idp_options.png
- :width: 800 px
-
-How to refresh metadata of an identity provider hosted at a Well-Known Location?
---------------------------------------------------------------------------------
-
-The Well-Known Location (WKL) means that the entity Id of the provider is a
-URL at which the provider metadata are hosted.
-
-To refresh them, select the provider on the list of provider, then select in
-the menu 'Update metadata', then click on 'Go'.
-
-.. image:: pictures/update_metadata.png
- :width: 800 px
-
-.. image:: pictures/update_metadata_done.png
- :width: 800 px
-
-How to create in bulk identity providers with the sync-metadata script?
------------------------------------------------------------------------
-
-See the page explaining the use of the script sync-metadata :ref:`sync-metadata_script`.
diff --git a/doc/_build/html/_sources/config_saml2_sp.txt b/doc/_build/html/_sources/config_saml2_sp.txt
deleted file mode 100644
index 2ff5349..0000000
--- a/doc/_build/html/_sources/config_saml2_sp.txt
+++ /dev/null
@@ -1,126 +0,0 @@
-.. _config_saml2_sp:
-
-====================================
-Configure SAML 2.0 service providers
-====================================
-
-How do I authenticate against Authentic2 with a SAML2 service provider?
-=======================================================================
-
-1. Declare Authentic2 as a SAML2 identity provider on your SAML2 service provider using the SAML2 identity provider metadata of Authentic2.
-
-Go to http[s]://your.domain.com/idp/saml2/metadata
-
-2. Add and configure a SAML2 service provider in Authentic2 using the metadata of the service provider.
-
-How do I add and configure a SAML2 service provider in Authentic2?
-==================================================================
-
-You first need to create a new SAML2 service provider entry. This requires the
-SAML2 metadata of the service provider.
-
-If your service provider is Authentic2, the metadata are available at:
-
- http[s]://your.domain.com/authsaml2/metadata
-
-See :ref:`where_metadata` for more information.
-
-Create a SAML2 service provider entry
--------------------------------------
-
-1. Go to
-
- http[s]://your.domain.com/admin/saml/libertyprovider/add/
-
-2. Fill the form fields
-
-.. image:: pictures/new_saml2_sp_1.png
- :width: 800 px
-
-.. image:: pictures/new_saml2_sp_2.png
- :width: 800 px
-
-**The service provider must be enabled.**
-
-See below about configuring the service provider with policies:
-
-* options of the service provider
-
-* protocol policy
-
-* attribute policy
-
-
-3. Save
-
-.. image:: pictures/new_saml2_sp_saved.png
- :width: 800 px
-
-Configure the SAML2 service provider options
---------------------------------------------
-
-The SAML2 options of the service provider are configured using sp options
-policies.
-
-See the *administration with policy principle* page :ref:`administration_with_policies`.
-
-You may create a regular policy and configure your service provider to use it.
-
-Go to:
-
- http[s]://your.domain.com/admin/saml/spoptionsidppolicy/add/
-
-.. image:: pictures/sp_options_regular.png
- :width: 800 px
-
-.. image:: pictures/sp_options_regular_modify_sp.png
- :width: 800 px
-
-Exemple with a policy 'Default':
-
-.. image:: pictures/sp_options_default.png
- :width: 800 px
-
-.. image:: pictures/sp_options_default_saved.png
- :width: 800 px
-
-Exemple with a policy 'All':
-
-.. image:: pictures/sp_options_all.png
- :width: 800 px
-
-If no policy is found for the configuration of the SAML2 options of a service
-provider, the following error is displayed when a SSO request is received.
-
-.. image:: pictures/error_no_sp_options.png
- :width: 800 px
-
-Configure the SAML2 service provider protocol options
------------------------------------------------------
-
-This kind of policy does not use the policy management using global policies.
-
-You should use the default option except if your service provider is a
-Shibboleth service provider.
-
-Configure the attribute policy of the service provider
-------------------------------------------------------
-
-See the attribute management page :ref:`attribute_management`.
-
-How to refresh metadata of an identity provider hosted at a Well-Known Location?
---------------------------------------------------------------------------------
-
-The Well-Known Location (WKL) means that the entity Id of the provider is a
-URL at which the provider metadata are hosted.
-
-To refresh them, select the provider on the list of provider, then select in
-the menu 'Update metadata', then click on 'Go'.
-
-.. image:: pictures/update_metadata.png
- :width: 800 px
-
-How to create in bulk service providers with the sync-metadata script?
-----------------------------------------------------------------------
-
-See the page explaining the use of the script sync-metadata :ref:`sync-metadata_script`.
diff --git a/doc/_build/html/_sources/download.txt b/doc/_build/html/_sources/download.txt
deleted file mode 100644
index 7c1215d..0000000
--- a/doc/_build/html/_sources/download.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-.. _download:
-
-========
-Download
-========
-
-1. Pypi: http://pypi.python.org/pypi/authentic2/1.9.0
-
-2. Git repository: http://repos.entrouvert.org/authentic.git
-
-3. `Browse source <http://dev.entrouvert.org/projects/authentic/repository>`_
-
-
diff --git a/doc/_build/html/_sources/features.txt b/doc/_build/html/_sources/features.txt
deleted file mode 100644
index 51eabf0..0000000
--- a/doc/_build/html/_sources/features.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-.. _features:
-
-========
-Features
-========
-
-Authentic can authenticate users against:
-
-- an LDAP directory,
-- a SAML 2.0 identity provider,
-- an OpenID identity provider,
-- with an X509 certificate.
-
-Authentic can provide authentication to web applications using the following
-protocols:
-
-- OpenID,
-- SAML 2.0,
-- CAS 1.0 & CAS 2.0.
-
-Authentic can proxy authentication between any two different protocols it
-support.
-
diff --git a/doc/_build/html/_sources/index.txt b/doc/_build/html/_sources/index.txt
deleted file mode 100644
index 4e9ea14..0000000
--- a/doc/_build/html/_sources/index.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-.. Authentic2 documentation master file, created by
- sphinx-quickstart on Thu Oct 13 09:53:03 2011.
- You can adapt this file completely to your liking, but it should at least
- contain the root `toctree` directive.
-
-==========================
-Authentic2's documentation
-==========================
-
-Authentic2 is a versatile identity provider addressing a broad
-range of needs, from simple to advanced setups, around web authentication,
-attribute sharing, namespace mapping and authorization management.
-
-Authentic2 supports many protocols and standards, including SAML2, CAS, OpenID,
-LDAP, X509, OATH, and can bridge between them.
-
-Authentic2 is under the GNU AGPL version 3 licence.
-
-It has support for SAMLv2 thanks to `Lasso <http://lasso.entrouvert.org>`_,
-a free (GNU GPL) implementation of the Liberty Alliance and OASIS
-specifications of SAML2, ID-FF1.2 and ID-WSF2.
-
-- `Authentic2 project site <http://dev.entrouvert.org/projects/authentic>`_
-- `Authentic2 roadmap <http://dev.entrouvert.org/projects/authentic/roadmap>`_
-
-Documentation content
-=====================
-
-.. toctree::
- :maxdepth: 2
-
- features
-
- download
-
- installation
-
- auth_ldap
-
- auth_pam
-
- administration_with_policies
-
- where_metadata
-
- config_saml2_sp
-
- config_saml2_idp
-
- sync-metadata_script
-
- config_cas_sp
-
- config_cas_idp
-
- attribute_management
-
-Copyright
-=========
-
-Authentic and Authentic2 are copyrighted by Entr'ouvert and are licensed through the GNU General
-Public Licence, version 2 or later. A copy of the whole license text is available in the COPYING file.
-
-The OpenID IdP originates in the project django_openid_provider by Roman
-Barczy¿ski, which is under the Apache 2.0 licence. This imply that you must
-distribute authentic2 under the AGPL3 licence when distributing this part of the
-project which is the only AGPL licence version compatible with the Apache 2.0
-licence.
-
-.. Indices and tables
-.. ==================
-
-.. * :ref:`genindex`
-.. * :ref:`modindex`
-.. * :ref:`search`
diff --git a/doc/_build/html/_sources/installation.txt b/doc/_build/html/_sources/installation.txt
deleted file mode 100644
index 1a1af70..0000000
--- a/doc/_build/html/_sources/installation.txt
+++ /dev/null
@@ -1,100 +0,0 @@
-.. _installation:
-
-============
-Installation
-============
-
-Dependencies
-------------
-
-You must install the following packages to use Authentic
-
-- Python Lasso binding 2.3.5:
-
- From sources: http://lasso.entrouvert.org/download
- Debian based distribution: apt-get install python-lasso
-
-- Django 1.3:
-
- From sources: http://www.djangoproject.com/download/1.3/tarball/
-
-- Django-registration 0.8-alpha-1:
-
- From sources: http://bitbucket.org/ubernostrum/django-registration/downloads
- Debian based distribution: apt-get install python-django-registration
-
-- Django-authopenid 0.9.6:
-
- From sources: http://bitbucket.org/benoitc/django-authopenid/downloads
-
-- Django-south 0.7.3:
-
- From sources:: http://south.aeracode.org/docs/installation.html
-
-- Django-profiles 0.2:
-
- From sources:: http://pypi.python.org/pypi/django-profiles
-
-You install all the django libraries quickly using pip::
-
- pip install django django-profiles django-registration \
- django-debug-toolbar django-authopenid south
-
-or easy_install::
-
- easy_install django django-profiles django-registration \
- django-debug-toolbar django-authopenid south
-
-Quick Start
------------
-
-Then launch the following commands::
-
- python manage.py syncdb --migrate
- python manage.py runserver
-
-You should see the following output::
-
- Validating models...
- 0 errors found
-
- Django version 1.2, using settings 'authentic.settings'
- Development server is running at http://127.0.0.1:8000/
- Quit the server with CONTROL-C.
-
- You can access the running application on http://127.0.0.1:8000/
-
-
-Specifying a different database
--------------------------------
-
-This is done by modifying the DATABASES dictionary in your local_settings.py file
-(create it in Authentic project directory); for example::
-
- DATABASES['default'] = {
- 'ENGINE': 'django.db.backends.postgresql',
- 'NAME': 'authentic',
- 'USER': 'admindb',
- 'PASSWORD': 'foobar',
- 'HOST': 'db.example.com',
- 'PORT': '', # empty string means default value
- }
-
-You should refer to the Django documentation on databases settings at
-http://docs.djangoproject.com/en/dev/ref/settings/#databases for all
-the details.
-
-How to upgrade to a new version of authentic ?
-----------------------------------------------
-
-Authentic store all its data in a relational database as specified in its
-settings.py or local_settings.py file. So in order to upgrade to a new version
-of authentic you have to update your database schema using the
-migration command — you will need to have installed the dependency django-south,
-see the beginning of this README file.::
-
- python ./manage.py migrate
-
-Then you will need to create new tables if there are.::
-
- python ./manage.py syncdb
diff --git a/doc/_build/html/_sources/sync-metadata_script.txt b/doc/_build/html/_sources/sync-metadata_script.txt
deleted file mode 100644
index f2ab103..0000000
--- a/doc/_build/html/_sources/sync-metadata_script.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-.. _sync-metadata_script:
-
-===========================================================================================================
-How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?
-===========================================================================================================
-
-This section explains hot to use the script sync-metadata.
-
-Presentation
-============
-
-This script allows to create/import and deleted in bulk SAML2 identity and
-service providers using standard SAML2 metadata files containing entity
-descriptors.
-
-An example of such a file used in production is the global metadata file of
-the identity federation of French universities that can be found at http://...
-
-Use the following command::
-
- path_to_project/authentic2$ python manage.py sync-metadata file_name [options]
-
-Options
-=======
-
-* idp
-
- Load only identity providers of the metadata file.
-
-* sp
-
- Load only service providers of the metadata file.
-
-* source
-
- Used to tag all imported providers with a label. This option is used to
- metadata reloading and deletion in bulk.
-
- Reloading a metadata file, when a provider with same entity is found, it is
- updated. If a provider in the metadata file does not exist it is created.
- If a provider exists in the system but not in the metadata file, it is
- removed.
-
- **For reloading, a source can only be associated with a unique metadata
- file. This is due to the fact that all providers of a source not found in
- the metadata file are removed.**
-
-::
-
- path_to_project/authentic2$ python manage.py sync-metadata file_name --source=french_federation
-
-* sp-policy
-
- To configure the SAML2 parameters of service providers imported with the
- script, a policy of type SPOptionsIdPPolicy must be created in the
- the administration interface.
- Either it is a global policy 'Default' or 'All' or it is a regular policy.
- If it is a regular policy, the policy name can be specified in parameter
- of the script with this option.
- The policy is then associated to all service providers created.
-
-::
-
- path_to_project/authentic2$ python manage.py sync-metadata file_name --sp-policy=sp_policy_name
-
-* idp-policy
-
- To configure the SAML2 parameters of identity providers imported with the
- script, a policy of type IdPOptionsSPPolicy must be created in the
- the administration interface.
- Either it is a global policy 'Default' or 'All' or it is a regular policy.
- If it is a regular policy, the policy name can be specified in parameter
- of the script with this option.
- The policy is then associated to all service providers created.
-
-::
-
- path_to_project/authentic2$ python manage.py sync-metadata file_name --idp-policy=idp_policy_name
-
-* delete
-
- With no options, all providers are deleted.
-
- With the source option, only providers with the source name given are deleted.
-
- **This option can not be combined with options idp and sp.**
-
-* ignore-errors
-
- If loading of one EntityDescriptor fails, continue loading
diff --git a/doc/_build/html/_sources/where_metadata.txt b/doc/_build/html/_sources/where_metadata.txt
deleted file mode 100644
index 18260d0..0000000
--- a/doc/_build/html/_sources/where_metadata.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-.. _where_metadata:
-
-==============================================
-Where do I find the Authentic2 SAML2 metadata?
-==============================================
-
-The SAML2 metadata are automatically generated.
-
-**Authentic2 will infer from environment variables the host and port to
-generate the URLs contained in the medatada.**
-
-The metadata of Authentic2 SAML2 identity provider are available at:
-
- http[s]://your.domain.com/idp/saml2/metadata
-
-The metadata of Authentic2 SAML2 service provider are available at:
-
- http[s]://your.domain.com/authsaml2/metadata
diff --git a/doc/_build/html/_static/ajax-loader.gif b/doc/_build/html/_static/ajax-loader.gif
deleted file mode 100644
index 61faf8c..0000000
--- a/doc/_build/html/_static/ajax-loader.gif
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_static/basic.css b/doc/_build/html/_static/basic.css
deleted file mode 100644
index f0379f3..0000000
--- a/doc/_build/html/_static/basic.css
+++ /dev/null
@@ -1,540 +0,0 @@
-/*
- * basic.css
- * ~~~~~~~~~
- *
- * Sphinx stylesheet -- basic theme.
- *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-/* -- main layout ----------------------------------------------------------- */
-
-div.clearer {
- clear: both;
-}
-
-/* -- relbar ---------------------------------------------------------------- */
-
-div.related {
- width: 100%;
- font-size: 90%;
-}
-
-div.related h3 {
- display: none;
-}
-
-div.related ul {
- margin: 0;
- padding: 0 0 0 10px;
- list-style: none;
-}
-
-div.related li {
- display: inline;
-}
-
-div.related li.right {
- float: right;
- margin-right: 5px;
-}
-
-/* -- sidebar --------------------------------------------------------------- */
-
-div.sphinxsidebarwrapper {
- padding: 10px 5px 0 10px;
-}
-
-div.sphinxsidebar {
- float: left;
- width: 230px;
- margin-left: -100%;
- font-size: 90%;
-}
-
-div.sphinxsidebar ul {
- list-style: none;
-}
-
-div.sphinxsidebar ul ul,
-div.sphinxsidebar ul.want-points {
- margin-left: 20px;
- list-style: square;
-}
-
-div.sphinxsidebar ul ul {
- margin-top: 0;
- margin-bottom: 0;
-}
-
-div.sphinxsidebar form {
- margin-top: 10px;
-}
-
-div.sphinxsidebar input {
- border: 1px solid #98dbcc;
- font-family: sans-serif;
- font-size: 1em;
-}
-
-div.sphinxsidebar input[type="text"] {
- width: 170px;
-}
-
-div.sphinxsidebar input[type="submit"] {
- width: 30px;
-}
-
-img {
- border: 0;
-}
-
-/* -- search page ----------------------------------------------------------- */
-
-ul.search {
- margin: 10px 0 0 20px;
- padding: 0;
-}
-
-ul.search li {
- padding: 5px 0 5px 20px;
- background-image: url(file.png);
- background-repeat: no-repeat;
- background-position: 0 7px;
-}
-
-ul.search li a {
- font-weight: bold;
-}
-
-ul.search li div.context {
- color: #888;
- margin: 2px 0 0 30px;
- text-align: left;
-}
-
-ul.keywordmatches li.goodmatch a {
- font-weight: bold;
-}
-
-/* -- index page ------------------------------------------------------------ */
-
-table.contentstable {
- width: 90%;
-}
-
-table.contentstable p.biglink {
- line-height: 150%;
-}
-
-a.biglink {
- font-size: 1.3em;
-}
-
-span.linkdescr {
- font-style: italic;
- padding-top: 5px;
- font-size: 90%;
-}
-
-/* -- general index --------------------------------------------------------- */
-
-table.indextable {
- width: 100%;
-}
-
-table.indextable td {
- text-align: left;
- vertical-align: top;
-}
-
-table.indextable dl, table.indextable dd {
- margin-top: 0;
- margin-bottom: 0;
-}
-
-table.indextable tr.pcap {
- height: 10px;
-}
-
-table.indextable tr.cap {
- margin-top: 10px;
- background-color: #f2f2f2;
-}
-
-img.toggler {
- margin-right: 3px;
- margin-top: 3px;
- cursor: pointer;
-}
-
-div.modindex-jumpbox {
- border-top: 1px solid #ddd;
- border-bottom: 1px solid #ddd;
- margin: 1em 0 1em 0;
- padding: 0.4em;
-}
-
-div.genindex-jumpbox {
- border-top: 1px solid #ddd;
- border-bottom: 1px solid #ddd;
- margin: 1em 0 1em 0;
- padding: 0.4em;
-}
-
-/* -- general body styles --------------------------------------------------- */
-
-a.headerlink {
- visibility: hidden;
-}
-
-h1:hover > a.headerlink,
-h2:hover > a.headerlink,
-h3:hover > a.headerlink,
-h4:hover > a.headerlink,
-h5:hover > a.headerlink,
-h6:hover > a.headerlink,
-dt:hover > a.headerlink {
- visibility: visible;
-}
-
-div.body p.caption {
- text-align: inherit;
-}
-
-div.body td {
- text-align: left;
-}
-
-.field-list ul {
- padding-left: 1em;
-}
-
-.first {
- margin-top: 0 !important;
-}
-
-p.rubric {
- margin-top: 30px;
- font-weight: bold;
-}
-
-img.align-left, .figure.align-left, object.align-left {
- clear: left;
- float: left;
- margin-right: 1em;
-}
-
-img.align-right, .figure.align-right, object.align-right {
- clear: right;
- float: right;
- margin-left: 1em;
-}
-
-img.align-center, .figure.align-center, object.align-center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-.align-left {
- text-align: left;
-}
-
-.align-center {
- text-align: center;
-}
-
-.align-right {
- text-align: right;
-}
-
-/* -- sidebars -------------------------------------------------------------- */
-
-div.sidebar {
- margin: 0 0 0.5em 1em;
- border: 1px solid #ddb;
- padding: 7px 7px 0 7px;
- background-color: #ffe;
- width: 40%;
- float: right;
-}
-
-p.sidebar-title {
- font-weight: bold;
-}
-
-/* -- topics ---------------------------------------------------------------- */
-
-div.topic {
- border: 1px solid #ccc;
- padding: 7px 7px 0 7px;
- margin: 10px 0 10px 0;
-}
-
-p.topic-title {
- font-size: 1.1em;
- font-weight: bold;
- margin-top: 10px;
-}
-
-/* -- admonitions ----------------------------------------------------------- */
-
-div.admonition {
- margin-top: 10px;
- margin-bottom: 10px;
- padding: 7px;
-}
-
-div.admonition dt {
- font-weight: bold;
-}
-
-div.admonition dl {
- margin-bottom: 0;
-}
-
-p.admonition-title {
- margin: 0px 10px 5px 0px;
- font-weight: bold;
-}
-
-div.body p.centered {
- text-align: center;
- margin-top: 25px;
-}
-
-/* -- tables ---------------------------------------------------------------- */
-
-table.docutils {
- border: 0;
- border-collapse: collapse;
-}
-
-table.docutils td, table.docutils th {
- padding: 1px 8px 1px 5px;
- border-top: 0;
- border-left: 0;
- border-right: 0;
- border-bottom: 1px solid #aaa;
-}
-
-table.field-list td, table.field-list th {
- border: 0 !important;
-}
-
-table.footnote td, table.footnote th {
- border: 0 !important;
-}
-
-th {
- text-align: left;
- padding-right: 5px;
-}
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px;
-}
-
-table.citation td {
- border-bottom: none;
-}
-
-/* -- other body styles ----------------------------------------------------- */
-
-ol.arabic {
- list-style: decimal;
-}
-
-ol.loweralpha {
- list-style: lower-alpha;
-}
-
-ol.upperalpha {
- list-style: upper-alpha;
-}
-
-ol.lowerroman {
- list-style: lower-roman;
-}
-
-ol.upperroman {
- list-style: upper-roman;
-}
-
-dl {
- margin-bottom: 15px;
-}
-
-dd p {
- margin-top: 0px;
-}
-
-dd ul, dd table {
- margin-bottom: 10px;
-}
-
-dd {
- margin-top: 3px;
- margin-bottom: 10px;
- margin-left: 30px;
-}
-
-dt:target, .highlighted {
- background-color: #fbe54e;
-}
-
-dl.glossary dt {
- font-weight: bold;
- font-size: 1.1em;
-}
-
-.field-list ul {
- margin: 0;
- padding-left: 1em;
-}
-
-.field-list p {
- margin: 0;
-}
-
-.refcount {
- color: #060;
-}
-
-.optional {
- font-size: 1.3em;
-}
-
-.versionmodified {
- font-style: italic;
-}
-
-.system-message {
- background-color: #fda;
- padding: 5px;
- border: 3px solid red;
-}
-
-.footnote:target {
- background-color: #ffa;
-}
-
-.line-block {
- display: block;
- margin-top: 1em;
- margin-bottom: 1em;
-}
-
-.line-block .line-block {
- margin-top: 0;
- margin-bottom: 0;
- margin-left: 1.5em;
-}
-
-.guilabel, .menuselection {
- font-family: sans-serif;
-}
-
-.accelerator {
- text-decoration: underline;
-}
-
-.classifier {
- font-style: oblique;
-}
-
-abbr, acronym {
- border-bottom: dotted 1px;
- cursor: help;
-}
-
-/* -- code displays --------------------------------------------------------- */
-
-pre {
- overflow: auto;
- overflow-y: hidden; /* fixes display issues on Chrome browsers */
-}
-
-td.linenos pre {
- padding: 5px 0px;
- border: 0;
- background-color: transparent;
- color: #aaa;
-}
-
-table.highlighttable {
- margin-left: 0.5em;
-}
-
-table.highlighttable td {
- padding: 0 0.5em 0 0.5em;
-}
-
-tt.descname {
- background-color: transparent;
- font-weight: bold;
- font-size: 1.2em;
-}
-
-tt.descclassname {
- background-color: transparent;
-}
-
-tt.xref, a tt {
- background-color: transparent;
- font-weight: bold;
-}
-
-h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
- background-color: transparent;
-}
-
-.viewcode-link {
- float: right;
-}
-
-.viewcode-back {
- float: right;
- font-family: sans-serif;
-}
-
-div.viewcode-block:target {
- margin: -1px -10px;
- padding: 0 10px;
-}
-
-/* -- math display ---------------------------------------------------------- */
-
-img.math {
- vertical-align: middle;
-}
-
-div.body div.math p {
- text-align: center;
-}
-
-span.eqno {
- float: right;
-}
-
-/* -- printout stylesheet --------------------------------------------------- */
-
-@media print {
- div.document,
- div.documentwrapper,
- div.bodywrapper {
- margin: 0 !important;
- width: 100%;
- }
-
- div.sphinxsidebar,
- div.related,
- div.footer,
- #top-link {
- display: none;
- }
-} \ No newline at end of file
diff --git a/doc/_build/html/_static/comment-bright.png b/doc/_build/html/_static/comment-bright.png
deleted file mode 100644
index 551517b..0000000
--- a/doc/_build/html/_static/comment-bright.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_static/comment-close.png b/doc/_build/html/_static/comment-close.png
deleted file mode 100644
index 09b54be..0000000
--- a/doc/_build/html/_static/comment-close.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_static/comment.png b/doc/_build/html/_static/comment.png
deleted file mode 100644
index 92feb52..0000000
--- a/doc/_build/html/_static/comment.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_static/default.css b/doc/_build/html/_static/default.css
deleted file mode 100644
index 21f3f50..0000000
--- a/doc/_build/html/_static/default.css
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * default.css_t
- * ~~~~~~~~~~~~~
- *
- * Sphinx stylesheet -- default theme.
- *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-@import url("basic.css");
-
-/* -- page layout ----------------------------------------------------------- */
-
-body {
- font-family: sans-serif;
- font-size: 100%;
- background-color: #11303d;
- color: #000;
- margin: 0;
- padding: 0;
-}
-
-div.document {
- background-color: #1c4e63;
-}
-
-div.documentwrapper {
- float: left;
- width: 100%;
-}
-
-div.bodywrapper {
- margin: 0 0 0 230px;
-}
-
-div.body {
- background-color: #ffffff;
- color: #000000;
- padding: 0 20px 30px 20px;
-}
-
-div.footer {
- color: #ffffff;
- width: 100%;
- padding: 9px 0 9px 0;
- text-align: center;
- font-size: 75%;
-}
-
-div.footer a {
- color: #ffffff;
- text-decoration: underline;
-}
-
-div.related {
- background-color: #133f52;
- line-height: 30px;
- color: #ffffff;
-}
-
-div.related a {
- color: #ffffff;
-}
-
-div.sphinxsidebar {
-}
-
-div.sphinxsidebar h3 {
- font-family: 'Trebuchet MS', sans-serif;
- color: #ffffff;
- font-size: 1.4em;
- font-weight: normal;
- margin: 0;
- padding: 0;
-}
-
-div.sphinxsidebar h3 a {
- color: #ffffff;
-}
-
-div.sphinxsidebar h4 {
- font-family: 'Trebuchet MS', sans-serif;
- color: #ffffff;
- font-size: 1.3em;
- font-weight: normal;
- margin: 5px 0 0 0;
- padding: 0;
-}
-
-div.sphinxsidebar p {
- color: #ffffff;
-}
-
-div.sphinxsidebar p.topless {
- margin: 5px 10px 10px 10px;
-}
-
-div.sphinxsidebar ul {
- margin: 10px;
- padding: 0;
- color: #ffffff;
-}
-
-div.sphinxsidebar a {
- color: #98dbcc;
-}
-
-div.sphinxsidebar input {
- border: 1px solid #98dbcc;
- font-family: sans-serif;
- font-size: 1em;
-}
-
-
-
-/* -- hyperlink styles ------------------------------------------------------ */
-
-a {
- color: #355f7c;
- text-decoration: none;
-}
-
-a:visited {
- color: #355f7c;
- text-decoration: none;
-}
-
-a:hover {
- text-decoration: underline;
-}
-
-
-
-/* -- body styles ----------------------------------------------------------- */
-
-div.body h1,
-div.body h2,
-div.body h3,
-div.body h4,
-div.body h5,
-div.body h6 {
- font-family: 'Trebuchet MS', sans-serif;
- background-color: #f2f2f2;
- font-weight: normal;
- color: #20435c;
- border-bottom: 1px solid #ccc;
- margin: 20px -20px 10px -20px;
- padding: 3px 0 3px 10px;
-}
-
-div.body h1 { margin-top: 0; font-size: 200%; }
-div.body h2 { font-size: 160%; }
-div.body h3 { font-size: 140%; }
-div.body h4 { font-size: 120%; }
-div.body h5 { font-size: 110%; }
-div.body h6 { font-size: 100%; }
-
-a.headerlink {
- color: #c60f0f;
- font-size: 0.8em;
- padding: 0 4px 0 4px;
- text-decoration: none;
-}
-
-a.headerlink:hover {
- background-color: #c60f0f;
- color: white;
-}
-
-div.body p, div.body dd, div.body li {
- text-align: justify;
- line-height: 130%;
-}
-
-div.admonition p.admonition-title + p {
- display: inline;
-}
-
-div.admonition p {
- margin-bottom: 5px;
-}
-
-div.admonition pre {
- margin-bottom: 5px;
-}
-
-div.admonition ul, div.admonition ol {
- margin-bottom: 5px;
-}
-
-div.note {
- background-color: #eee;
- border: 1px solid #ccc;
-}
-
-div.seealso {
- background-color: #ffc;
- border: 1px solid #ff6;
-}
-
-div.topic {
- background-color: #eee;
-}
-
-div.warning {
- background-color: #ffe4e4;
- border: 1px solid #f66;
-}
-
-p.admonition-title {
- display: inline;
-}
-
-p.admonition-title:after {
- content: ":";
-}
-
-pre {
- padding: 5px;
- background-color: #eeffcc;
- color: #333333;
- line-height: 120%;
- border: 1px solid #ac9;
- border-left: none;
- border-right: none;
-}
-
-tt {
- background-color: #ecf0f3;
- padding: 0 1px 0 1px;
- font-size: 0.95em;
-}
-
-th {
- background-color: #ede;
-}
-
-.warning tt {
- background: #efc2c2;
-}
-
-.note tt {
- background: #d6d6d6;
-}
-
-.viewcode-back {
- font-family: sans-serif;
-}
-
-div.viewcode-block:target {
- background-color: #f4debf;
- border-top: 1px solid #ac9;
- border-bottom: 1px solid #ac9;
-} \ No newline at end of file
diff --git a/doc/_build/html/_static/doctools.js b/doc/_build/html/_static/doctools.js
deleted file mode 100644
index bd1b44e..0000000
--- a/doc/_build/html/_static/doctools.js
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * doctools.js
- * ~~~~~~~~~~~
- *
- * Sphinx JavaScript utilties for all documentation.
- *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-/**
- * select a different prefix for underscore
- */
-$u = _.noConflict();
-
-/**
- * make the code below compatible with browsers without
- * an installed firebug like debugger
-if (!window.console || !console.firebug) {
- var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
- "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
- "profile", "profileEnd"];
- window.console = {};
- for (var i = 0; i < names.length; ++i)
- window.console[names[i]] = function() {};
-}
- */
-
-/**
- * small helper function to urldecode strings
- */
-jQuery.urldecode = function(x) {
- return decodeURIComponent(x).replace(/\+/g, ' ');
-}
-
-/**
- * small helper function to urlencode strings
- */
-jQuery.urlencode = encodeURIComponent;
-
-/**
- * This function returns the parsed url parameters of the
- * current request. Multiple values per key are supported,
- * it will always return arrays of strings for the value parts.
- */
-jQuery.getQueryParameters = function(s) {
- if (typeof s == 'undefined')
- s = document.location.search;
- var parts = s.substr(s.indexOf('?') + 1).split('&');
- var result = {};
- for (var i = 0; i < parts.length; i++) {
- var tmp = parts[i].split('=', 2);
- var key = jQuery.urldecode(tmp[0]);
- var value = jQuery.urldecode(tmp[1]);
- if (key in result)
- result[key].push(value);
- else
- result[key] = [value];
- }
- return result;
-};
-
-/**
- * small function to check if an array contains
- * a given item.
- */
-jQuery.contains = function(arr, item) {
- for (var i = 0; i < arr.length; i++) {
- if (arr[i] == item)
- return true;
- }
- return false;
-};
-
-/**
- * highlight a given string on a jquery object by wrapping it in
- * span elements with the given class name.
- */
-jQuery.fn.highlightText = function(text, className) {
- function highlight(node) {
- if (node.nodeType == 3) {
- var val = node.nodeValue;
- var pos = val.toLowerCase().indexOf(text);
- if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
- var span = document.createElement("span");
- span.className = className;
- span.appendChild(document.createTextNode(val.substr(pos, text.length)));
- node.parentNode.insertBefore(span, node.parentNode.insertBefore(
- document.createTextNode(val.substr(pos + text.length)),
- node.nextSibling));
- node.nodeValue = val.substr(0, pos);
- }
- }
- else if (!jQuery(node).is("button, select, textarea")) {
- jQuery.each(node.childNodes, function() {
- highlight(this);
- });
- }
- }
- return this.each(function() {
- highlight(this);
- });
-};
-
-/**
- * Small JavaScript module for the documentation.
- */
-var Documentation = {
-
- init : function() {
- this.fixFirefoxAnchorBug();
- this.highlightSearchWords();
- this.initIndexTable();
- },
-
- /**
- * i18n support
- */
- TRANSLATIONS : {},
- PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
- LOCALE : 'unknown',
-
- // gettext and ngettext don't access this so that the functions
- // can safely bound to a different name (_ = Documentation.gettext)
- gettext : function(string) {
- var translated = Documentation.TRANSLATIONS[string];
- if (typeof translated == 'undefined')
- return string;
- return (typeof translated == 'string') ? translated : translated[0];
- },
-
- ngettext : function(singular, plural, n) {
- var translated = Documentation.TRANSLATIONS[singular];
- if (typeof translated == 'undefined')
- return (n == 1) ? singular : plural;
- return translated[Documentation.PLURALEXPR(n)];
- },
-
- addTranslations : function(catalog) {
- for (var key in catalog.messages)
- this.TRANSLATIONS[key] = catalog.messages[key];
- this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
- this.LOCALE = catalog.locale;
- },
-
- /**
- * add context elements like header anchor links
- */
- addContextElements : function() {
- $('div[id] > :header:first').each(function() {
- $('<a class="headerlink">\u00B6</a>').
- attr('href', '#' + this.id).
- attr('title', _('Permalink to this headline')).
- appendTo(this);
- });
- $('dt[id]').each(function() {
- $('<a class="headerlink">\u00B6</a>').
- attr('href', '#' + this.id).
- attr('title', _('Permalink to this definition')).
- appendTo(this);
- });
- },
-
- /**
- * workaround a firefox stupidity
- */
- fixFirefoxAnchorBug : function() {
- if (document.location.hash && $.browser.mozilla)
- window.setTimeout(function() {
- document.location.href += '';
- }, 10);
- },
-
- /**
- * highlight the search words provided in the url in the text
- */
- highlightSearchWords : function() {
- var params = $.getQueryParameters();
- var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
- if (terms.length) {
- var body = $('div.body');
- window.setTimeout(function() {
- $.each(terms, function() {
- body.highlightText(this.toLowerCase(), 'highlighted');
- });
- }, 10);
- $('<p class="highlight-link"><a href="javascript:Documentation.' +
- 'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
- .appendTo($('#searchbox'));
- }
- },
-
- /**
- * init the domain index toggle buttons
- */
- initIndexTable : function() {
- var togglers = $('img.toggler').click(function() {
- var src = $(this).attr('src');
- var idnum = $(this).attr('id').substr(7);
- $('tr.cg-' + idnum).toggle();
- if (src.substr(-9) == 'minus.png')
- $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
- else
- $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
- }).css('display', '');
- if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
- togglers.click();
- }
- },
-
- /**
- * helper function to hide the search marks again
- */
- hideSearchWords : function() {
- $('#searchbox .highlight-link').fadeOut(300);
- $('span.highlighted').removeClass('highlighted');
- },
-
- /**
- * make the url absolute
- */
- makeURL : function(relativeURL) {
- return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
- },
-
- /**
- * get the current relative url
- */
- getCurrentURL : function() {
- var path = document.location.pathname;
- var parts = path.split(/\//);
- $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
- if (this == '..')
- parts.pop();
- });
- var url = parts.join('/');
- return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
- }
-};
-
-// quick alias for translations
-_ = Documentation.gettext;
-
-$(document).ready(function() {
- Documentation.init();
-});
diff --git a/doc/_build/html/_static/down-pressed.png b/doc/_build/html/_static/down-pressed.png
deleted file mode 100644
index 6f7ad78..0000000
--- a/doc/_build/html/_static/down-pressed.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_static/down.png b/doc/_build/html/_static/down.png
deleted file mode 100644
index 3003a88..0000000
--- a/doc/_build/html/_static/down.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_static/file.png b/doc/_build/html/_static/file.png
deleted file mode 100644
index d18082e..0000000
--- a/doc/_build/html/_static/file.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_static/jquery.js b/doc/_build/html/_static/jquery.js
deleted file mode 100644
index 7c24308..0000000
--- a/doc/_build/html/_static/jquery.js
+++ /dev/null
@@ -1,154 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.4.2
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Sat Feb 13 22:33:48 2010 -0500
- */
-(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
-e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
-j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
-"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
-true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
-Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
-(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
-a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
-"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
-function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
-c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
-L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
-"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
-a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
-d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
-a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
-!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
-true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
-parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
-false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
-s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
-applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
-else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
-a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
-w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
-cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
-i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
-" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
-this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
-e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
-c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
-a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
-function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
-k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
-C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
-null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
-e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
-f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
-if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
-d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
-"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
-a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
-isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
-{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
-if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
-e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
-"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
-d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
-!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
-toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
-u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.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".split(" "),
-function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
-if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
-e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
-t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
-g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
-for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
-1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
-CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
-relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
-l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
-h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
-CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
-g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
-text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
-setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
-h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
-m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
-"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
-h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
-!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
-h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
-q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
-if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
-(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
-function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
-gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
-c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
-{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
-"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
-d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
-a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
-1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
-a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
-c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
-wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
-prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
-this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
-return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
-""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
-this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
-u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
-1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
-return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
-""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
-c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
-c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
-function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
-Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
-"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
-a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
-a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
-"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
-serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
-function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
-global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
-e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
-"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
-false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
-false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
-c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
-d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
-g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
-1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
-"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
-if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
-this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
-"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
-animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
-j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
-this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
-"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
-c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
-this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
-this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
-e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
-c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
-function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
-this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
-k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
-f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
-a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
-c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
-d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
-"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
-e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
diff --git a/doc/_build/html/_static/minus.png b/doc/_build/html/_static/minus.png
deleted file mode 100644
index da1c562..0000000
--- a/doc/_build/html/_static/minus.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_static/plus.png b/doc/_build/html/_static/plus.png
deleted file mode 100644
index b3cb374..0000000
--- a/doc/_build/html/_static/plus.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_static/pygments.css b/doc/_build/html/_static/pygments.css
deleted file mode 100644
index 1a14f2a..0000000
--- a/doc/_build/html/_static/pygments.css
+++ /dev/null
@@ -1,62 +0,0 @@
-.highlight .hll { background-color: #ffffcc }
-.highlight { background: #eeffcc; }
-.highlight .c { color: #408090; font-style: italic } /* Comment */
-.highlight .err { border: 1px solid #FF0000 } /* Error */
-.highlight .k { color: #007020; font-weight: bold } /* Keyword */
-.highlight .o { color: #666666 } /* Operator */
-.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
-.highlight .cp { color: #007020 } /* Comment.Preproc */
-.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
-.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
-.highlight .gd { color: #A00000 } /* Generic.Deleted */
-.highlight .ge { font-style: italic } /* Generic.Emph */
-.highlight .gr { color: #FF0000 } /* Generic.Error */
-.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #303030 } /* Generic.Output */
-.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
-.highlight .gs { font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #0040D0 } /* Generic.Traceback */
-.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
-.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
-.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
-.highlight .kp { color: #007020 } /* Keyword.Pseudo */
-.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #902000 } /* Keyword.Type */
-.highlight .m { color: #208050 } /* Literal.Number */
-.highlight .s { color: #4070a0 } /* Literal.String */
-.highlight .na { color: #4070a0 } /* Name.Attribute */
-.highlight .nb { color: #007020 } /* Name.Builtin */
-.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
-.highlight .no { color: #60add5 } /* Name.Constant */
-.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
-.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
-.highlight .ne { color: #007020 } /* Name.Exception */
-.highlight .nf { color: #06287e } /* Name.Function */
-.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
-.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
-.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
-.highlight .nv { color: #bb60d5 } /* Name.Variable */
-.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
-.highlight .w { color: #bbbbbb } /* Text.Whitespace */
-.highlight .mf { color: #208050 } /* Literal.Number.Float */
-.highlight .mh { color: #208050 } /* Literal.Number.Hex */
-.highlight .mi { color: #208050 } /* Literal.Number.Integer */
-.highlight .mo { color: #208050 } /* Literal.Number.Oct */
-.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
-.highlight .sc { color: #4070a0 } /* Literal.String.Char */
-.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
-.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
-.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
-.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
-.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
-.highlight .sx { color: #c65d09 } /* Literal.String.Other */
-.highlight .sr { color: #235388 } /* Literal.String.Regex */
-.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
-.highlight .ss { color: #517918 } /* Literal.String.Symbol */
-.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
-.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
-.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
-.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
-.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file
diff --git a/doc/_build/html/_static/searchtools.js b/doc/_build/html/_static/searchtools.js
deleted file mode 100644
index 663be4c..0000000
--- a/doc/_build/html/_static/searchtools.js
+++ /dev/null
@@ -1,560 +0,0 @@
-/*
- * searchtools.js_t
- * ~~~~~~~~~~~~~~~~
- *
- * Sphinx JavaScript utilties for the full-text search.
- *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-/**
- * helper function to return a node containing the
- * search summary for a given text. keywords is a list
- * of stemmed words, hlwords is the list of normal, unstemmed
- * words. the first one is used to find the occurance, the
- * latter for highlighting it.
- */
-
-jQuery.makeSearchSummary = function(text, keywords, hlwords) {
- var textLower = text.toLowerCase();
- var start = 0;
- $.each(keywords, function() {
- var i = textLower.indexOf(this.toLowerCase());
- if (i > -1)
- start = i;
- });
- start = Math.max(start - 120, 0);
- var excerpt = ((start > 0) ? '...' : '') +
- $.trim(text.substr(start, 240)) +
- ((start + 240 - text.length) ? '...' : '');
- var rv = $('<div class="context"></div>').text(excerpt);
- $.each(hlwords, function() {
- rv = rv.highlightText(this, 'highlighted');
- });
- return rv;
-}
-
-
-/**
- * Porter Stemmer
- */
-var Stemmer = function() {
-
- var step2list = {
- ational: 'ate',
- tional: 'tion',
- enci: 'ence',
- anci: 'ance',
- izer: 'ize',
- bli: 'ble',
- alli: 'al',
- entli: 'ent',
- eli: 'e',
- ousli: 'ous',
- ization: 'ize',
- ation: 'ate',
- ator: 'ate',
- alism: 'al',
- iveness: 'ive',
- fulness: 'ful',
- ousness: 'ous',
- aliti: 'al',
- iviti: 'ive',
- biliti: 'ble',
- logi: 'log'
- };
-
- var step3list = {
- icate: 'ic',
- ative: '',
- alize: 'al',
- iciti: 'ic',
- ical: 'ic',
- ful: '',
- ness: ''
- };
-
- var c = "[^aeiou]"; // consonant
- var v = "[aeiouy]"; // vowel
- var C = c + "[^aeiouy]*"; // consonant sequence
- var V = v + "[aeiou]*"; // vowel sequence
-
- var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
- var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
- var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
- var s_v = "^(" + C + ")?" + v; // vowel in stem
-
- this.stemWord = function (w) {
- var stem;
- var suffix;
- var firstch;
- var origword = w;
-
- if (w.length < 3)
- return w;
-
- var re;
- var re2;
- var re3;
- var re4;
-
- firstch = w.substr(0,1);
- if (firstch == "y")
- w = firstch.toUpperCase() + w.substr(1);
-
- // Step 1a
- re = /^(.+?)(ss|i)es$/;
- re2 = /^(.+?)([^s])s$/;
-
- if (re.test(w))
- w = w.replace(re,"$1$2");
- else if (re2.test(w))
- w = w.replace(re2,"$1$2");
-
- // Step 1b
- re = /^(.+?)eed$/;
- re2 = /^(.+?)(ed|ing)$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- re = new RegExp(mgr0);
- if (re.test(fp[1])) {
- re = /.$/;
- w = w.replace(re,"");
- }
- }
- else if (re2.test(w)) {
- var fp = re2.exec(w);
- stem = fp[1];
- re2 = new RegExp(s_v);
- if (re2.test(stem)) {
- w = stem;
- re2 = /(at|bl|iz)$/;
- re3 = new RegExp("([^aeiouylsz])\\1$");
- re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
- if (re2.test(w))
- w = w + "e";
- else if (re3.test(w)) {
- re = /.$/;
- w = w.replace(re,"");
- }
- else if (re4.test(w))
- w = w + "e";
- }
- }
-
- // Step 1c
- re = /^(.+?)y$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- re = new RegExp(s_v);
- if (re.test(stem))
- w = stem + "i";
- }
-
- // Step 2
- re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- suffix = fp[2];
- re = new RegExp(mgr0);
- if (re.test(stem))
- w = stem + step2list[suffix];
- }
-
- // Step 3
- re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- suffix = fp[2];
- re = new RegExp(mgr0);
- if (re.test(stem))
- w = stem + step3list[suffix];
- }
-
- // Step 4
- re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
- re2 = /^(.+?)(s|t)(ion)$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- re = new RegExp(mgr1);
- if (re.test(stem))
- w = stem;
- }
- else if (re2.test(w)) {
- var fp = re2.exec(w);
- stem = fp[1] + fp[2];
- re2 = new RegExp(mgr1);
- if (re2.test(stem))
- w = stem;
- }
-
- // Step 5
- re = /^(.+?)e$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- re = new RegExp(mgr1);
- re2 = new RegExp(meq1);
- re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
- if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
- w = stem;
- }
- re = /ll$/;
- re2 = new RegExp(mgr1);
- if (re.test(w) && re2.test(w)) {
- re = /.$/;
- w = w.replace(re,"");
- }
-
- // and turn initial Y back to y
- if (firstch == "y")
- w = firstch.toLowerCase() + w.substr(1);
- return w;
- }
-}
-
-
-/**
- * Search Module
- */
-var Search = {
-
- _index : null,
- _queued_query : null,
- _pulse_status : -1,
-
- init : function() {
- var params = $.getQueryParameters();
- if (params.q) {
- var query = params.q[0];
- $('input[name="q"]')[0].value = query;
- this.performSearch(query);
- }
- },
-
- loadIndex : function(url) {
- $.ajax({type: "GET", url: url, data: null, success: null,
- dataType: "script", cache: true});
- },
-
- setIndex : function(index) {
- var q;
- this._index = index;
- if ((q = this._queued_query) !== null) {
- this._queued_query = null;
- Search.query(q);
- }
- },
-
- hasIndex : function() {
- return this._index !== null;
- },
-
- deferQuery : function(query) {
- this._queued_query = query;
- },
-
- stopPulse : function() {
- this._pulse_status = 0;
- },
-
- startPulse : function() {
- if (this._pulse_status >= 0)
- return;
- function pulse() {
- Search._pulse_status = (Search._pulse_status + 1) % 4;
- var dotString = '';
- for (var i = 0; i < Search._pulse_status; i++)
- dotString += '.';
- Search.dots.text(dotString);
- if (Search._pulse_status > -1)
- window.setTimeout(pulse, 500);
- };
- pulse();
- },
-
- /**
- * perform a search for something
- */
- performSearch : function(query) {
- // create the required interface elements
- this.out = $('#search-results');
- this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
- this.dots = $('<span></span>').appendTo(this.title);
- this.status = $('<p style="display: none"></p>').appendTo(this.out);
- this.output = $('<ul class="search"/>').appendTo(this.out);
-
- $('#search-progress').text(_('Preparing search...'));
- this.startPulse();
-
- // index already loaded, the browser was quick!
- if (this.hasIndex())
- this.query(query);
- else
- this.deferQuery(query);
- },
-
- query : function(query) {
- var stopwords = ["and","then","into","it","as","are","in","if","for","no","there","their","was","is","be","to","that","but","they","not","such","with","by","a","on","these","of","will","this","near","the","or","at"];
-
- // Stem the searchterms and add them to the correct list
- var stemmer = new Stemmer();
- var searchterms = [];
- var excluded = [];
- var hlterms = [];
- var tmp = query.split(/\s+/);
- var objectterms = [];
- for (var i = 0; i < tmp.length; i++) {
- if (tmp[i] != "") {
- objectterms.push(tmp[i].toLowerCase());
- }
-
- if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
- tmp[i] == "") {
- // skip this "word"
- continue;
- }
- // stem the word
- var word = stemmer.stemWord(tmp[i]).toLowerCase();
- // select the correct list
- if (word[0] == '-') {
- var toAppend = excluded;
- word = word.substr(1);
- }
- else {
- var toAppend = searchterms;
- hlterms.push(tmp[i].toLowerCase());
- }
- // only add if not already in the list
- if (!$.contains(toAppend, word))
- toAppend.push(word);
- };
- var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
-
- // console.debug('SEARCH: searching for:');
- // console.info('required: ', searchterms);
- // console.info('excluded: ', excluded);
-
- // prepare search
- var filenames = this._index.filenames;
- var titles = this._index.titles;
- var terms = this._index.terms;
- var fileMap = {};
- var files = null;
- // different result priorities
- var importantResults = [];
- var objectResults = [];
- var regularResults = [];
- var unimportantResults = [];
- $('#search-progress').empty();
-
- // lookup as object
- for (var i = 0; i < objectterms.length; i++) {
- var others = [].concat(objectterms.slice(0,i),
- objectterms.slice(i+1, objectterms.length))
- var results = this.performObjectSearch(objectterms[i], others);
- // Assume first word is most likely to be the object,
- // other words more likely to be in description.
- // Therefore put matches for earlier words first.
- // (Results are eventually used in reverse order).
- objectResults = results[0].concat(objectResults);
- importantResults = results[1].concat(importantResults);
- unimportantResults = results[2].concat(unimportantResults);
- }
-
- // perform the search on the required terms
- for (var i = 0; i < searchterms.length; i++) {
- var word = searchterms[i];
- // no match but word was a required one
- if ((files = terms[word]) == null)
- break;
- if (files.length == undefined) {
- files = [files];
- }
- // create the mapping
- for (var j = 0; j < files.length; j++) {
- var file = files[j];
- if (file in fileMap)
- fileMap[file].push(word);
- else
- fileMap[file] = [word];
- }
- }
-
- // now check if the files don't contain excluded terms
- for (var file in fileMap) {
- var valid = true;
-
- // check if all requirements are matched
- if (fileMap[file].length != searchterms.length)
- continue;
-
- // ensure that none of the excluded terms is in the
- // search result.
- for (var i = 0; i < excluded.length; i++) {
- if (terms[excluded[i]] == file ||
- $.contains(terms[excluded[i]] || [], file)) {
- valid = false;
- break;
- }
- }
-
- // if we have still a valid result we can add it
- // to the result list
- if (valid)
- regularResults.push([filenames[file], titles[file], '', null]);
- }
-
- // delete unused variables in order to not waste
- // memory until list is retrieved completely
- delete filenames, titles, terms;
-
- // now sort the regular results descending by title
- regularResults.sort(function(a, b) {
- var left = a[1].toLowerCase();
- var right = b[1].toLowerCase();
- return (left > right) ? -1 : ((left < right) ? 1 : 0);
- });
-
- // combine all results
- var results = unimportantResults.concat(regularResults)
- .concat(objectResults).concat(importantResults);
-
- // print the results
- var resultCount = results.length;
- function displayNextItem() {
- // results left, load the summary and display it
- if (results.length) {
- var item = results.pop();
- var listItem = $('<li style="display:none"></li>');
- if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
- // dirhtml builder
- var dirname = item[0] + '/';
- if (dirname.match(/\/index\/$/)) {
- dirname = dirname.substring(0, dirname.length-6);
- } else if (dirname == 'index/') {
- dirname = '';
- }
- listItem.append($('<a/>').attr('href',
- DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
- highlightstring + item[2]).html(item[1]));
- } else {
- // normal html builders
- listItem.append($('<a/>').attr('href',
- item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
- highlightstring + item[2]).html(item[1]));
- }
- if (item[3]) {
- listItem.append($('<span> (' + item[3] + ')</span>'));
- Search.output.append(listItem);
- listItem.slideDown(5, function() {
- displayNextItem();
- });
- } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
- $.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
- item[0] + '.txt', function(data) {
- if (data != '') {
- listItem.append($.makeSearchSummary(data, searchterms, hlterms));
- Search.output.append(listItem);
- }
- listItem.slideDown(5, function() {
- displayNextItem();
- });
- }, "text");
- } else {
- // no source available, just display title
- Search.output.append(listItem);
- listItem.slideDown(5, function() {
- displayNextItem();
- });
- }
- }
- // search finished, update title and status message
- else {
- Search.stopPulse();
- Search.title.text(_('Search Results'));
- if (!resultCount)
- Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
- else
- Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
- Search.status.fadeIn(500);
- }
- }
- displayNextItem();
- },
-
- performObjectSearch : function(object, otherterms) {
- var filenames = this._index.filenames;
- var objects = this._index.objects;
- var objnames = this._index.objnames;
- var titles = this._index.titles;
-
- var importantResults = [];
- var objectResults = [];
- var unimportantResults = [];
-
- for (var prefix in objects) {
- for (var name in objects[prefix]) {
- var fullname = (prefix ? prefix + '.' : '') + name;
- if (fullname.toLowerCase().indexOf(object) > -1) {
- var match = objects[prefix][name];
- var objname = objnames[match[1]][2];
- var title = titles[match[0]];
- // If more than one term searched for, we require other words to be
- // found in the name/title/description
- if (otherterms.length > 0) {
- var haystack = (prefix + ' ' + name + ' ' +
- objname + ' ' + title).toLowerCase();
- var allfound = true;
- for (var i = 0; i < otherterms.length; i++) {
- if (haystack.indexOf(otherterms[i]) == -1) {
- allfound = false;
- break;
- }
- }
- if (!allfound) {
- continue;
- }
- }
- var descr = objname + _(', in ') + title;
- anchor = match[3];
- if (anchor == '')
- anchor = fullname;
- else if (anchor == '-')
- anchor = objnames[match[1]][1] + '-' + fullname;
- result = [filenames[match[0]], fullname, '#'+anchor, descr];
- switch (match[2]) {
- case 1: objectResults.push(result); break;
- case 0: importantResults.push(result); break;
- case 2: unimportantResults.push(result); break;
- }
- }
- }
- }
-
- // sort results descending
- objectResults.sort(function(a, b) {
- return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
- });
-
- importantResults.sort(function(a, b) {
- return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
- });
-
- unimportantResults.sort(function(a, b) {
- return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
- });
-
- return [importantResults, objectResults, unimportantResults]
- }
-}
-
-$(document).ready(function() {
- Search.init();
-}); \ No newline at end of file
diff --git a/doc/_build/html/_static/sidebar.js b/doc/_build/html/_static/sidebar.js
deleted file mode 100644
index a45e192..0000000
--- a/doc/_build/html/_static/sidebar.js
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * sidebar.js
- * ~~~~~~~~~~
- *
- * This script makes the Sphinx sidebar collapsible.
- *
- * .sphinxsidebar contains .sphinxsidebarwrapper. This script adds
- * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton
- * used to collapse and expand the sidebar.
- *
- * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden
- * and the width of the sidebar and the margin-left of the document
- * are decreased. When the sidebar is expanded the opposite happens.
- * This script saves a per-browser/per-session cookie used to
- * remember the position of the sidebar among the pages.
- * Once the browser is closed the cookie is deleted and the position
- * reset to the default (expanded).
- *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-$(function() {
- // global elements used by the functions.
- // the 'sidebarbutton' element is defined as global after its
- // creation, in the add_sidebar_button function
- var bodywrapper = $('.bodywrapper');
- var sidebar = $('.sphinxsidebar');
- var sidebarwrapper = $('.sphinxsidebarwrapper');
-
- // for some reason, the document has no sidebar; do not run into errors
- if (!sidebar.length) return;
-
- // original margin-left of the bodywrapper and width of the sidebar
- // with the sidebar expanded
- var bw_margin_expanded = bodywrapper.css('margin-left');
- var ssb_width_expanded = sidebar.width();
-
- // margin-left of the bodywrapper and width of the sidebar
- // with the sidebar collapsed
- var bw_margin_collapsed = '.8em';
- var ssb_width_collapsed = '.8em';
-
- // colors used by the current theme
- var dark_color = $('.related').css('background-color');
- var light_color = $('.document').css('background-color');
-
- function sidebar_is_collapsed() {
- return sidebarwrapper.is(':not(:visible)');
- }
-
- function toggle_sidebar() {
- if (sidebar_is_collapsed())
- expand_sidebar();
- else
- collapse_sidebar();
- }
-
- function collapse_sidebar() {
- sidebarwrapper.hide();
- sidebar.css('width', ssb_width_collapsed);
- bodywrapper.css('margin-left', bw_margin_collapsed);
- sidebarbutton.css({
- 'margin-left': '0',
- 'height': bodywrapper.height()
- });
- sidebarbutton.find('span').text('»');
- sidebarbutton.attr('title', _('Expand sidebar'));
- document.cookie = 'sidebar=collapsed';
- }
-
- function expand_sidebar() {
- bodywrapper.css('margin-left', bw_margin_expanded);
- sidebar.css('width', ssb_width_expanded);
- sidebarwrapper.show();
- sidebarbutton.css({
- 'margin-left': ssb_width_expanded-12,
- 'height': bodywrapper.height()
- });
- sidebarbutton.find('span').text('«');
- sidebarbutton.attr('title', _('Collapse sidebar'));
- document.cookie = 'sidebar=expanded';
- }
-
- function add_sidebar_button() {
- sidebarwrapper.css({
- 'float': 'left',
- 'margin-right': '0',
- 'width': ssb_width_expanded - 28
- });
- // create the button
- sidebar.append(
- '<div id="sidebarbutton"><span>&laquo;</span></div>'
- );
- var sidebarbutton = $('#sidebarbutton');
- light_color = sidebarbutton.css('background-color');
- // find the height of the viewport to center the '<<' in the page
- var viewport_height;
- if (window.innerHeight)
- viewport_height = window.innerHeight;
- else
- viewport_height = $(window).height();
- sidebarbutton.find('span').css({
- 'display': 'block',
- 'margin-top': (viewport_height - sidebar.position().top - 20) / 2
- });
-
- sidebarbutton.click(toggle_sidebar);
- sidebarbutton.attr('title', _('Collapse sidebar'));
- sidebarbutton.css({
- 'color': '#FFFFFF',
- 'border-left': '1px solid ' + dark_color,
- 'font-size': '1.2em',
- 'cursor': 'pointer',
- 'height': bodywrapper.height(),
- 'padding-top': '1px',
- 'margin-left': ssb_width_expanded - 12
- });
-
- sidebarbutton.hover(
- function () {
- $(this).css('background-color', dark_color);
- },
- function () {
- $(this).css('background-color', light_color);
- }
- );
- }
-
- function set_position_from_cookie() {
- if (!document.cookie)
- return;
- var items = document.cookie.split(';');
- for(var k=0; k<items.length; k++) {
- var key_val = items[k].split('=');
- var key = key_val[0];
- if (key == 'sidebar') {
- var value = key_val[1];
- if ((value == 'collapsed') && (!sidebar_is_collapsed()))
- collapse_sidebar();
- else if ((value == 'expanded') && (sidebar_is_collapsed()))
- expand_sidebar();
- }
- }
- }
-
- add_sidebar_button();
- var sidebarbutton = $('#sidebarbutton');
- set_position_from_cookie();
-});
diff --git a/doc/_build/html/_static/underscore.js b/doc/_build/html/_static/underscore.js
deleted file mode 100644
index 5d89914..0000000
--- a/doc/_build/html/_static/underscore.js
+++ /dev/null
@@ -1,23 +0,0 @@
-// Underscore.js 0.5.5
-// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc.
-// Underscore is freely distributable under the terms of the MIT license.
-// Portions of Underscore are inspired by or borrowed from Prototype.js,
-// Oliver Steele's Functional, and John Resig's Micro-Templating.
-// For all details and documentation:
-// http://documentcloud.github.com/underscore/
-(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e<f;e++)c.call(d,
-a[e],e,a);else{var g=b.keys(a);f=g.length;for(e=0;e<f;e++)c.call(d,a[g[e]],g[e],a)}}catch(h){if(h!=m)throw h;}return a};b.map=function(a,c,d){if(a&&b.isFunction(a.map))return a.map(c,d);var e=[];b.each(a,function(f,g,h){e.push(c.call(d,f,g,h))});return e};b.reduce=function(a,c,d,e){if(a&&b.isFunction(a.reduce))return a.reduce(b.bind(d,e),c);b.each(a,function(f,g,h){c=d.call(e,c,f,g,h)});return c};b.reduceRight=function(a,c,d,e){if(a&&b.isFunction(a.reduceRight))return a.reduceRight(b.bind(d,e),c);
-var f=b.clone(b.toArray(a)).reverse();b.each(f,function(g,h){c=d.call(e,c,g,h,a)});return c};b.detect=function(a,c,d){var e;b.each(a,function(f,g,h){if(c.call(d,f,g,h)){e=f;b.breakLoop()}});return e};b.select=function(a,c,d){if(a&&b.isFunction(a.filter))return a.filter(c,d);var e=[];b.each(a,function(f,g,h){c.call(d,f,g,h)&&e.push(f)});return e};b.reject=function(a,c,d){var e=[];b.each(a,function(f,g,h){!c.call(d,f,g,h)&&e.push(f)});return e};b.all=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.every))return a.every(c,
-d);var e=true;b.each(a,function(f,g,h){(e=e&&c.call(d,f,g,h))||b.breakLoop()});return e};b.any=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.some))return a.some(c,d);var e=false;b.each(a,function(f,g,h){if(e=c.call(d,f,g,h))b.breakLoop()});return e};b.include=function(a,c){if(b.isArray(a))return b.indexOf(a,c)!=-1;var d=false;b.each(a,function(e){if(d=e===c)b.breakLoop()});return d};b.invoke=function(a,c){var d=b.rest(arguments,2);return b.map(a,function(e){return(c?e[c]:e).apply(e,d)})};b.pluck=
-function(a,c){return b.map(a,function(d){return d[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);var e={computed:-Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g>=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g<e.computed&&(e={value:f,computed:g})});return e.value};b.sortBy=function(a,c,d){return b.pluck(b.map(a,
-function(e,f,g){return{value:e,criteria:c.call(d,e,f,g)}}).sort(function(e,f){e=e.criteria;f=f.criteria;return e<f?-1:e>f?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?(e=g+1):(f=g)}return e};b.toArray=function(a){if(!a)return[];if(a.toArray)return a.toArray();if(b.isArray(a))return a;if(b.isArguments(a))return k.call(a);return b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=function(a,c,d){return c&&!d?k.call(a,
-0,c):a[0]};b.rest=function(a,c,d){return k.call(a,b.isUndefined(c)||d?1:c)};b.last=function(a){return a[a.length-1]};b.compact=function(a){return b.select(a,function(c){return!!c})};b.flatten=function(a){return b.reduce(a,[],function(c,d){if(b.isArray(d))return c.concat(b.flatten(d));c.push(d);return c})};b.without=function(a){var c=b.rest(arguments);return b.select(a,function(d){return!b.include(c,d)})};b.uniq=function(a,c){return b.reduce(a,[],function(d,e,f){if(0==f||(c===true?b.last(d)!=e:!b.include(d,
-e)))d.push(e);return d})};b.intersect=function(a){var c=b.rest(arguments);return b.select(b.uniq(a),function(d){return b.all(c,function(e){return b.indexOf(e,d)>=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e<c;e++)d[e]=b.pluck(a,String(e));return d};b.indexOf=function(a,c){if(a.indexOf)return a.indexOf(c);for(var d=0,e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,c){if(a.lastIndexOf)return a.lastIndexOf(c);for(var d=
-a.length;d--;)if(a[d]===c)return d;return-1};b.range=function(a,c,d){var e=b.toArray(arguments),f=e.length<=1;a=f?0:e[0];c=f?e[0]:e[1];d=e[2]||1;e=Math.ceil((c-a)/d);if(e<=0)return[];e=new Array(e);f=a;for(var g=0;1;f+=d){if((d>0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)});
-return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length);
-var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false;
-if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length==
-0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&&
-a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g,
-" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments);
-o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})();
diff --git a/doc/_build/html/_static/up-pressed.png b/doc/_build/html/_static/up-pressed.png
deleted file mode 100644
index 8bd587a..0000000
--- a/doc/_build/html/_static/up-pressed.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_static/up.png b/doc/_build/html/_static/up.png
deleted file mode 100644
index b946256..0000000
--- a/doc/_build/html/_static/up.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/_static/websupport.js b/doc/_build/html/_static/websupport.js
deleted file mode 100644
index e9bd1b8..0000000
--- a/doc/_build/html/_static/websupport.js
+++ /dev/null
@@ -1,808 +0,0 @@
-/*
- * websupport.js
- * ~~~~~~~~~~~~~
- *
- * sphinx.websupport utilties for all documentation.
- *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-(function($) {
- $.fn.autogrow = function() {
- return this.each(function() {
- var textarea = this;
-
- $.fn.autogrow.resize(textarea);
-
- $(textarea)
- .focus(function() {
- textarea.interval = setInterval(function() {
- $.fn.autogrow.resize(textarea);
- }, 500);
- })
- .blur(function() {
- clearInterval(textarea.interval);
- });
- });
- };
-
- $.fn.autogrow.resize = function(textarea) {
- var lineHeight = parseInt($(textarea).css('line-height'), 10);
- var lines = textarea.value.split('\n');
- var columns = textarea.cols;
- var lineCount = 0;
- $.each(lines, function() {
- lineCount += Math.ceil(this.length / columns) || 1;
- });
- var height = lineHeight * (lineCount + 1);
- $(textarea).css('height', height);
- };
-})(jQuery);
-
-(function($) {
- var comp, by;
-
- function init() {
- initEvents();
- initComparator();
- }
-
- function initEvents() {
- $('a.comment-close').live("click", function(event) {
- event.preventDefault();
- hide($(this).attr('id').substring(2));
- });
- $('a.vote').live("click", function(event) {
- event.preventDefault();
- handleVote($(this));
- });
- $('a.reply').live("click", function(event) {
- event.preventDefault();
- openReply($(this).attr('id').substring(2));
- });
- $('a.close-reply').live("click", function(event) {
- event.preventDefault();
- closeReply($(this).attr('id').substring(2));
- });
- $('a.sort-option').live("click", function(event) {
- event.preventDefault();
- handleReSort($(this));
- });
- $('a.show-proposal').live("click", function(event) {
- event.preventDefault();
- showProposal($(this).attr('id').substring(2));
- });
- $('a.hide-proposal').live("click", function(event) {
- event.preventDefault();
- hideProposal($(this).attr('id').substring(2));
- });
- $('a.show-propose-change').live("click", function(event) {
- event.preventDefault();
- showProposeChange($(this).attr('id').substring(2));
- });
- $('a.hide-propose-change').live("click", function(event) {
- event.preventDefault();
- hideProposeChange($(this).attr('id').substring(2));
- });
- $('a.accept-comment').live("click", function(event) {
- event.preventDefault();
- acceptComment($(this).attr('id').substring(2));
- });
- $('a.delete-comment').live("click", function(event) {
- event.preventDefault();
- deleteComment($(this).attr('id').substring(2));
- });
- $('a.comment-markup').live("click", function(event) {
- event.preventDefault();
- toggleCommentMarkupBox($(this).attr('id').substring(2));
- });
- }
-
- /**
- * Set comp, which is a comparator function used for sorting and
- * inserting comments into the list.
- */
- function setComparator() {
- // If the first three letters are "asc", sort in ascending order
- // and remove the prefix.
- if (by.substring(0,3) == 'asc') {
- var i = by.substring(3);
- comp = function(a, b) { return a[i] - b[i]; };
- } else {
- // Otherwise sort in descending order.
- comp = function(a, b) { return b[by] - a[by]; };
- }
-
- // Reset link styles and format the selected sort option.
- $('a.sel').attr('href', '#').removeClass('sel');
- $('a.by' + by).removeAttr('href').addClass('sel');
- }
-
- /**
- * Create a comp function. If the user has preferences stored in
- * the sortBy cookie, use those, otherwise use the default.
- */
- function initComparator() {
- by = 'rating'; // Default to sort by rating.
- // If the sortBy cookie is set, use that instead.
- if (document.cookie.length > 0) {
- var start = document.cookie.indexOf('sortBy=');
- if (start != -1) {
- start = start + 7;
- var end = document.cookie.indexOf(";", start);
- if (end == -1) {
- end = document.cookie.length;
- by = unescape(document.cookie.substring(start, end));
- }
- }
- }
- setComparator();
- }
-
- /**
- * Show a comment div.
- */
- function show(id) {
- $('#ao' + id).hide();
- $('#ah' + id).show();
- var context = $.extend({id: id}, opts);
- var popup = $(renderTemplate(popupTemplate, context)).hide();
- popup.find('textarea[name="proposal"]').hide();
- popup.find('a.by' + by).addClass('sel');
- var form = popup.find('#cf' + id);
- form.submit(function(event) {
- event.preventDefault();
- addComment(form);
- });
- $('#s' + id).after(popup);
- popup.slideDown('fast', function() {
- getComments(id);
- });
- }
-
- /**
- * Hide a comment div.
- */
- function hide(id) {
- $('#ah' + id).hide();
- $('#ao' + id).show();
- var div = $('#sc' + id);
- div.slideUp('fast', function() {
- div.remove();
- });
- }
-
- /**
- * Perform an ajax request to get comments for a node
- * and insert the comments into the comments tree.
- */
- function getComments(id) {
- $.ajax({
- type: 'GET',
- url: opts.getCommentsURL,
- data: {node: id},
- success: function(data, textStatus, request) {
- var ul = $('#cl' + id);
- var speed = 100;
- $('#cf' + id)
- .find('textarea[name="proposal"]')
- .data('source', data.source);
-
- if (data.comments.length === 0) {
- ul.html('<li>No comments yet.</li>');
- ul.data('empty', true);
- } else {
- // If there are comments, sort them and put them in the list.
- var comments = sortComments(data.comments);
- speed = data.comments.length * 100;
- appendComments(comments, ul);
- ul.data('empty', false);
- }
- $('#cn' + id).slideUp(speed + 200);
- ul.slideDown(speed);
- },
- error: function(request, textStatus, error) {
- showError('Oops, there was a problem retrieving the comments.');
- },
- dataType: 'json'
- });
- }
-
- /**
- * Add a comment via ajax and insert the comment into the comment tree.
- */
- function addComment(form) {
- var node_id = form.find('input[name="node"]').val();
- var parent_id = form.find('input[name="parent"]').val();
- var text = form.find('textarea[name="comment"]').val();
- var proposal = form.find('textarea[name="proposal"]').val();
-
- if (text == '') {
- showError('Please enter a comment.');
- return;
- }
-
- // Disable the form that is being submitted.
- form.find('textarea,input').attr('disabled', 'disabled');
-
- // Send the comment to the server.
- $.ajax({
- type: "POST",
- url: opts.addCommentURL,
- dataType: 'json',
- data: {
- node: node_id,
- parent: parent_id,
- text: text,
- proposal: proposal
- },
- success: function(data, textStatus, error) {
- // Reset the form.
- if (node_id) {
- hideProposeChange(node_id);
- }
- form.find('textarea')
- .val('')
- .add(form.find('input'))
- .removeAttr('disabled');
- var ul = $('#cl' + (node_id || parent_id));
- if (ul.data('empty')) {
- $(ul).empty();
- ul.data('empty', false);
- }
- insertComment(data.comment);
- var ao = $('#ao' + node_id);
- ao.find('img').attr({'src': opts.commentBrightImage});
- if (node_id) {
- // if this was a "root" comment, remove the commenting box
- // (the user can get it back by reopening the comment popup)
- $('#ca' + node_id).slideUp();
- }
- },
- error: function(request, textStatus, error) {
- form.find('textarea,input').removeAttr('disabled');
- showError('Oops, there was a problem adding the comment.');
- }
- });
- }
-
- /**
- * Recursively append comments to the main comment list and children
- * lists, creating the comment tree.
- */
- function appendComments(comments, ul) {
- $.each(comments, function() {
- var div = createCommentDiv(this);
- ul.append($(document.createElement('li')).html(div));
- appendComments(this.children, div.find('ul.comment-children'));
- // To avoid stagnating data, don't store the comments children in data.
- this.children = null;
- div.data('comment', this);
- });
- }
-
- /**
- * After adding a new comment, it must be inserted in the correct
- * location in the comment tree.
- */
- function insertComment(comment) {
- var div = createCommentDiv(comment);
-
- // To avoid stagnating data, don't store the comments children in data.
- comment.children = null;
- div.data('comment', comment);
-
- var ul = $('#cl' + (comment.node || comment.parent));
- var siblings = getChildren(ul);
-
- var li = $(document.createElement('li'));
- li.hide();
-
- // Determine where in the parents children list to insert this comment.
- for(i=0; i < siblings.length; i++) {
- if (comp(comment, siblings[i]) <= 0) {
- $('#cd' + siblings[i].id)
- .parent()
- .before(li.html(div));
- li.slideDown('fast');
- return;
- }
- }
-
- // If we get here, this comment rates lower than all the others,
- // or it is the only comment in the list.
- ul.append(li.html(div));
- li.slideDown('fast');
- }
-
- function acceptComment(id) {
- $.ajax({
- type: 'POST',
- url: opts.acceptCommentURL,
- data: {id: id},
- success: function(data, textStatus, request) {
- $('#cm' + id).fadeOut('fast');
- $('#cd' + id).removeClass('moderate');
- },
- error: function(request, textStatus, error) {
- showError('Oops, there was a problem accepting the comment.');
- }
- });
- }
-
- function deleteComment(id) {
- $.ajax({
- type: 'POST',
- url: opts.deleteCommentURL,
- data: {id: id},
- success: function(data, textStatus, request) {
- var div = $('#cd' + id);
- if (data == 'delete') {
- // Moderator mode: remove the comment and all children immediately
- div.slideUp('fast', function() {
- div.remove();
- });
- return;
- }
- // User mode: only mark the comment as deleted
- div
- .find('span.user-id:first')
- .text('[deleted]').end()
- .find('div.comment-text:first')
- .text('[deleted]').end()
- .find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id +
- ', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id)
- .remove();
- var comment = div.data('comment');
- comment.username = '[deleted]';
- comment.text = '[deleted]';
- div.data('comment', comment);
- },
- error: function(request, textStatus, error) {
- showError('Oops, there was a problem deleting the comment.');
- }
- });
- }
-
- function showProposal(id) {
- $('#sp' + id).hide();
- $('#hp' + id).show();
- $('#pr' + id).slideDown('fast');
- }
-
- function hideProposal(id) {
- $('#hp' + id).hide();
- $('#sp' + id).show();
- $('#pr' + id).slideUp('fast');
- }
-
- function showProposeChange(id) {
- $('#pc' + id).hide();
- $('#hc' + id).show();
- var textarea = $('#pt' + id);
- textarea.val(textarea.data('source'));
- $.fn.autogrow.resize(textarea[0]);
- textarea.slideDown('fast');
- }
-
- function hideProposeChange(id) {
- $('#hc' + id).hide();
- $('#pc' + id).show();
- var textarea = $('#pt' + id);
- textarea.val('').removeAttr('disabled');
- textarea.slideUp('fast');
- }
-
- function toggleCommentMarkupBox(id) {
- $('#mb' + id).toggle();
- }
-
- /** Handle when the user clicks on a sort by link. */
- function handleReSort(link) {
- var classes = link.attr('class').split(/\s+/);
- for (var i=0; i<classes.length; i++) {
- if (classes[i] != 'sort-option') {
- by = classes[i].substring(2);
- }
- }
- setComparator();
- // Save/update the sortBy cookie.
- var expiration = new Date();
- expiration.setDate(expiration.getDate() + 365);
- document.cookie= 'sortBy=' + escape(by) +
- ';expires=' + expiration.toUTCString();
- $('ul.comment-ul').each(function(index, ul) {
- var comments = getChildren($(ul), true);
- comments = sortComments(comments);
- appendComments(comments, $(ul).empty());
- });
- }
-
- /**
- * Function to process a vote when a user clicks an arrow.
- */
- function handleVote(link) {
- if (!opts.voting) {
- showError("You'll need to login to vote.");
- return;
- }
-
- var id = link.attr('id');
- if (!id) {
- // Didn't click on one of the voting arrows.
- return;
- }
- // If it is an unvote, the new vote value is 0,
- // Otherwise it's 1 for an upvote, or -1 for a downvote.
- var value = 0;
- if (id.charAt(1) != 'u') {
- value = id.charAt(0) == 'u' ? 1 : -1;
- }
- // The data to be sent to the server.
- var d = {
- comment_id: id.substring(2),
- value: value
- };
-
- // Swap the vote and unvote links.
- link.hide();
- $('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id)
- .show();
-
- // The div the comment is displayed in.
- var div = $('div#cd' + d.comment_id);
- var data = div.data('comment');
-
- // If this is not an unvote, and the other vote arrow has
- // already been pressed, unpress it.
- if ((d.value !== 0) && (data.vote === d.value * -1)) {
- $('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide();
- $('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show();
- }
-
- // Update the comments rating in the local data.
- data.rating += (data.vote === 0) ? d.value : (d.value - data.vote);
- data.vote = d.value;
- div.data('comment', data);
-
- // Change the rating text.
- div.find('.rating:first')
- .text(data.rating + ' point' + (data.rating == 1 ? '' : 's'));
-
- // Send the vote information to the server.
- $.ajax({
- type: "POST",
- url: opts.processVoteURL,
- data: d,
- error: function(request, textStatus, error) {
- showError('Oops, there was a problem casting that vote.');
- }
- });
- }
-
- /**
- * Open a reply form used to reply to an existing comment.
- */
- function openReply(id) {
- // Swap out the reply link for the hide link
- $('#rl' + id).hide();
- $('#cr' + id).show();
-
- // Add the reply li to the children ul.
- var div = $(renderTemplate(replyTemplate, {id: id})).hide();
- $('#cl' + id)
- .prepend(div)
- // Setup the submit handler for the reply form.
- .find('#rf' + id)
- .submit(function(event) {
- event.preventDefault();
- addComment($('#rf' + id));
- closeReply(id);
- })
- .find('input[type=button]')
- .click(function() {
- closeReply(id);
- });
- div.slideDown('fast', function() {
- $('#rf' + id).find('textarea').focus();
- });
- }
-
- /**
- * Close the reply form opened with openReply.
- */
- function closeReply(id) {
- // Remove the reply div from the DOM.
- $('#rd' + id).slideUp('fast', function() {
- $(this).remove();
- });
-
- // Swap out the hide link for the reply link
- $('#cr' + id).hide();
- $('#rl' + id).show();
- }
-
- /**
- * Recursively sort a tree of comments using the comp comparator.
- */
- function sortComments(comments) {
- comments.sort(comp);
- $.each(comments, function() {
- this.children = sortComments(this.children);
- });
- return comments;
- }
-
- /**
- * Get the children comments from a ul. If recursive is true,
- * recursively include childrens' children.
- */
- function getChildren(ul, recursive) {
- var children = [];
- ul.children().children("[id^='cd']")
- .each(function() {
- var comment = $(this).data('comment');
- if (recursive)
- comment.children = getChildren($(this).find('#cl' + comment.id), true);
- children.push(comment);
- });
- return children;
- }
-
- /** Create a div to display a comment in. */
- function createCommentDiv(comment) {
- if (!comment.displayed && !opts.moderator) {
- return $('<div class="moderate">Thank you! Your comment will show up '
- + 'once it is has been approved by a moderator.</div>');
- }
- // Prettify the comment rating.
- comment.pretty_rating = comment.rating + ' point' +
- (comment.rating == 1 ? '' : 's');
- // Make a class (for displaying not yet moderated comments differently)
- comment.css_class = comment.displayed ? '' : ' moderate';
- // Create a div for this comment.
- var context = $.extend({}, opts, comment);
- var div = $(renderTemplate(commentTemplate, context));
-
- // If the user has voted on this comment, highlight the correct arrow.
- if (comment.vote) {
- var direction = (comment.vote == 1) ? 'u' : 'd';
- div.find('#' + direction + 'v' + comment.id).hide();
- div.find('#' + direction + 'u' + comment.id).show();
- }
-
- if (opts.moderator || comment.text != '[deleted]') {
- div.find('a.reply').show();
- if (comment.proposal_diff)
- div.find('#sp' + comment.id).show();
- if (opts.moderator && !comment.displayed)
- div.find('#cm' + comment.id).show();
- if (opts.moderator || (opts.username == comment.username))
- div.find('#dc' + comment.id).show();
- }
- return div;
- }
-
- /**
- * A simple template renderer. Placeholders such as <%id%> are replaced
- * by context['id'] with items being escaped. Placeholders such as <#id#>
- * are not escaped.
- */
- function renderTemplate(template, context) {
- var esc = $(document.createElement('div'));
-
- function handle(ph, escape) {
- var cur = context;
- $.each(ph.split('.'), function() {
- cur = cur[this];
- });
- return escape ? esc.text(cur || "").html() : cur;
- }
-
- return template.replace(/<([%#])([\w\.]*)\1>/g, function() {
- return handle(arguments[2], arguments[1] == '%' ? true : false);
- });
- }
-
- /** Flash an error message briefly. */
- function showError(message) {
- $(document.createElement('div')).attr({'class': 'popup-error'})
- .append($(document.createElement('div'))
- .attr({'class': 'error-message'}).text(message))
- .appendTo('body')
- .fadeIn("slow")
- .delay(2000)
- .fadeOut("slow");
- }
-
- /** Add a link the user uses to open the comments popup. */
- $.fn.comment = function() {
- return this.each(function() {
- var id = $(this).attr('id').substring(1);
- var count = COMMENT_METADATA[id];
- var title = count + ' comment' + (count == 1 ? '' : 's');
- var image = count > 0 ? opts.commentBrightImage : opts.commentImage;
- var addcls = count == 0 ? ' nocomment' : '';
- $(this)
- .append(
- $(document.createElement('a')).attr({
- href: '#',
- 'class': 'sphinx-comment-open' + addcls,
- id: 'ao' + id
- })
- .append($(document.createElement('img')).attr({
- src: image,
- alt: 'comment',
- title: title
- }))
- .click(function(event) {
- event.preventDefault();
- show($(this).attr('id').substring(2));
- })
- )
- .append(
- $(document.createElement('a')).attr({
- href: '#',
- 'class': 'sphinx-comment-close hidden',
- id: 'ah' + id
- })
- .append($(document.createElement('img')).attr({
- src: opts.closeCommentImage,
- alt: 'close',
- title: 'close'
- }))
- .click(function(event) {
- event.preventDefault();
- hide($(this).attr('id').substring(2));
- })
- );
- });
- };
-
- var opts = {
- processVoteURL: '/_process_vote',
- addCommentURL: '/_add_comment',
- getCommentsURL: '/_get_comments',
- acceptCommentURL: '/_accept_comment',
- deleteCommentURL: '/_delete_comment',
- commentImage: '/static/_static/comment.png',
- closeCommentImage: '/static/_static/comment-close.png',
- loadingImage: '/static/_static/ajax-loader.gif',
- commentBrightImage: '/static/_static/comment-bright.png',
- upArrow: '/static/_static/up.png',
- downArrow: '/static/_static/down.png',
- upArrowPressed: '/static/_static/up-pressed.png',
- downArrowPressed: '/static/_static/down-pressed.png',
- voting: false,
- moderator: false
- };
-
- if (typeof COMMENT_OPTIONS != "undefined") {
- opts = jQuery.extend(opts, COMMENT_OPTIONS);
- }
-
- var popupTemplate = '\
- <div class="sphinx-comments" id="sc<%id%>">\
- <p class="sort-options">\
- Sort by:\
- <a href="#" class="sort-option byrating">best rated</a>\
- <a href="#" class="sort-option byascage">newest</a>\
- <a href="#" class="sort-option byage">oldest</a>\
- </p>\
- <div class="comment-header">Comments</div>\
- <div class="comment-loading" id="cn<%id%>">\
- loading comments... <img src="<%loadingImage%>" alt="" /></div>\
- <ul id="cl<%id%>" class="comment-ul"></ul>\
- <div id="ca<%id%>">\
- <p class="add-a-comment">Add a comment\
- (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
- <div class="comment-markup-box" id="mb<%id%>">\
- reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
- <tt>``code``</tt>, \
- code blocks: <tt>::</tt> and an indented block after blank line</div>\
- <form method="post" id="cf<%id%>" class="comment-form" action="">\
- <textarea name="comment" cols="80"></textarea>\
- <p class="propose-button">\
- <a href="#" id="pc<%id%>" class="show-propose-change">\
- Propose a change &#9657;\
- </a>\
- <a href="#" id="hc<%id%>" class="hide-propose-change">\
- Propose a change &#9663;\
- </a>\
- </p>\
- <textarea name="proposal" id="pt<%id%>" cols="80"\
- spellcheck="false"></textarea>\
- <input type="submit" value="Add comment" />\
- <input type="hidden" name="node" value="<%id%>" />\
- <input type="hidden" name="parent" value="" />\
- </form>\
- </div>\
- </div>';
-
- var commentTemplate = '\
- <div id="cd<%id%>" class="sphinx-comment<%css_class%>">\
- <div class="vote">\
- <div class="arrow">\
- <a href="#" id="uv<%id%>" class="vote" title="vote up">\
- <img src="<%upArrow%>" />\
- </a>\
- <a href="#" id="uu<%id%>" class="un vote" title="vote up">\
- <img src="<%upArrowPressed%>" />\
- </a>\
- </div>\
- <div class="arrow">\
- <a href="#" id="dv<%id%>" class="vote" title="vote down">\
- <img src="<%downArrow%>" id="da<%id%>" />\
- </a>\
- <a href="#" id="du<%id%>" class="un vote" title="vote down">\
- <img src="<%downArrowPressed%>" />\
- </a>\
- </div>\
- </div>\
- <div class="comment-content">\
- <p class="tagline comment">\
- <span class="user-id"><%username%></span>\
- <span class="rating"><%pretty_rating%></span>\
- <span class="delta"><%time.delta%></span>\
- </p>\
- <div class="comment-text comment"><#text#></div>\
- <p class="comment-opts comment">\
- <a href="#" class="reply hidden" id="rl<%id%>">reply &#9657;</a>\
- <a href="#" class="close-reply" id="cr<%id%>">reply &#9663;</a>\
- <a href="#" id="sp<%id%>" class="show-proposal">proposal &#9657;</a>\
- <a href="#" id="hp<%id%>" class="hide-proposal">proposal &#9663;</a>\
- <a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\
- <span id="cm<%id%>" class="moderation hidden">\
- <a href="#" id="ac<%id%>" class="accept-comment">accept</a>\
- </span>\
- </p>\
- <pre class="proposal" id="pr<%id%>">\
-<#proposal_diff#>\
- </pre>\
- <ul class="comment-children" id="cl<%id%>"></ul>\
- </div>\
- <div class="clearleft"></div>\
- </div>\
- </div>';
-
- var replyTemplate = '\
- <li>\
- <div class="reply-div" id="rd<%id%>">\
- <form id="rf<%id%>">\
- <textarea name="comment" cols="80"></textarea>\
- <input type="submit" value="Add reply" />\
- <input type="button" value="Cancel" />\
- <input type="hidden" name="parent" value="<%id%>" />\
- <input type="hidden" name="node" value="" />\
- </form>\
- </div>\
- </li>';
-
- $(document).ready(function() {
- init();
- });
-})(jQuery);
-
-$(document).ready(function() {
- // add comment anchors for all paragraphs that are commentable
- $('.sphinx-has-comment').comment();
-
- // highlight search words in search results
- $("div.context").each(function() {
- var params = $.getQueryParameters();
- var terms = (params.q) ? params.q[0].split(/\s+/) : [];
- var result = $(this);
- $.each(terms, function() {
- result.highlightText(this.toLowerCase(), 'highlighted');
- });
- });
-
- // directly open comment window if requested
- var anchor = document.location.hash;
- if (anchor.substring(0, 9) == '#comment-') {
- $('#ao' + anchor.substring(9)).click();
- document.location.hash = '#s' + anchor.substring(9);
- }
-});
diff --git a/doc/_build/html/administration_with_policies.html b/doc/_build/html/administration_with_policies.html
deleted file mode 100644
index 56f4c8e..0000000
--- a/doc/_build/html/administration_with_policies.html
+++ /dev/null
@@ -1,146 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>How global policies are used in Authentic2 administration &mdash; Authentic2 1.9.2 documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '1.9.2',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="Authentic2 1.9.2 documentation" href="index.html" />
- <link rel="next" title="Where do I find the Authentic2 SAML2 metadata?" href="where_metadata.html" />
- <link rel="prev" title="Authentication on Authentic2 with PAM" href="auth_pam.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="where_metadata.html" title="Where do I find the Authentic2 SAML2 metadata?"
- accesskey="N">next</a> |</li>
- <li class="right" >
- <a href="auth_pam.html" title="Authentication on Authentic2 with PAM"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <div class="section" id="how-global-policies-are-used-in-authentic2-administration">
-<span id="administration-with-policies"></span><h1>How global policies are used in Authentic2 administration<a class="headerlink" href="#how-global-policies-are-used-in-authentic2-administration" title="Permalink to this headline">¶</a></h1>
-<p>The policy management with global policies is nearly used for any kind of
-policy in Authentic2.</p>
-<p>For each kind of these policies, the system takes in account two special
-global policies named &#8216;Default&#8217; and &#8216;All&#8217;:</p>
-<blockquote>
-<div><ul class="simple">
-<li>If no other policy applies, the policy &#8216;Default&#8217; will apply.</li>
-<li>A policy can be created and attached to any related object. This policy is authoritative on policy &#8216;Default&#8217;.</li>
-<li>If the policy &#8216;All&#8217; exists, it is authoritative on any other policy.</li>
-<li>The global policies must be created by the administrator if necessary.</li>
-</ul>
-</div></blockquote>
-<p><strong>A policy is taken in account only if it is enabled.</strong></p>
-<div class="highlight-python"><div class="highlight"><pre><span class="k">def</span> <span class="nf">get_sample_policy</span><span class="p">(</span><span class="n">any_object</span><span class="p">):</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">SamplePolicy</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s">&#39;All&#39;</span><span class="p">,</span> <span class="n">enabled</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
- <span class="k">except</span> <span class="n">SamplePolicy</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span>
- <span class="k">pass</span>
- <span class="k">if</span> <span class="n">any_object</span><span class="o">.</span><span class="n">enable_following_sample_policy</span><span class="p">:</span>
- <span class="k">if</span> <span class="n">any_object</span><span class="o">.</span><span class="n">sample_policy</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">any_object</span><span class="o">.</span><span class="n">sample_policy</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">SamplePolicy</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s">&#39;Default&#39;</span><span class="p">,</span> <span class="n">enabled</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
- <span class="k">except</span> <span class="n">SamplePolicy</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span>
- <span class="k">pass</span>
- <span class="k">return</span> <span class="bp">None</span>
-</pre></div>
-</div>
-<p><em>It is advised to add a &#8216;Default&#8217; global policy when it is expected to apply a
-policy to all related objects. Add e regular policy to some objects are then
-used to handle particular configurations.</em></p>
-<p><em>A &#8216;Default&#8217; global policy should be defined to avoid misonfiguration.</em></p>
-<p><em>A &#8216;All&#8217; global policy should be used to enforce a global configuration for
-all related objects or for testing purposes.</em></p>
-</div>
-
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
- <h4>Previous topic</h4>
- <p class="topless"><a href="auth_pam.html"
- title="previous chapter">Authentication on Authentic2 with PAM</a></p>
- <h4>Next topic</h4>
- <p class="topless"><a href="where_metadata.html"
- title="next chapter">Where do I find the Authentic2 SAML2 metadata?</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/administration_with_policies.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="where_metadata.html" title="Where do I find the Authentic2 SAML2 metadata?"
- >next</a> |</li>
- <li class="right" >
- <a href="auth_pam.html" title="Authentication on Authentic2 with PAM"
- >previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2011, Mikaël Ates.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/_build/html/attribute_management.html b/doc/_build/html/attribute_management.html
deleted file mode 100644
index 4294202..0000000
--- a/doc/_build/html/attribute_management.html
+++ /dev/null
@@ -1,705 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Attribute Management in Authentic2 &mdash; Authentic2 1.9.2 documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '1.9.2',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="Authentic2 1.9.2 documentation" href="index.html" />
- <link rel="prev" title="Configure Authentic2 as a CAS client" href="config_cas_idp.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="config_cas_idp.html" title="Configure Authentic2 as a CAS client"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <div class="section" id="attribute-management-in-authentic2">
-<span id="attribute-management"></span><h1>Attribute Management in Authentic2<a class="headerlink" href="#attribute-management-in-authentic2" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="summary">
-<h2>Summary<a class="headerlink" href="#summary" title="Permalink to this headline">¶</a></h2>
-<p>Attribute management currently allows to configure attribute policies
-associated with SAML2 service providers to define attributes that are
-pushed in SAML2 successful authentication response delivered by Authentic2.</p>
-<p>User attributes can be taken from LDAP directories, the user Django
-profile or taken from the user Django session if Authentic2 is also configured
-as a SAML2 service provider.</p>
-<p>Indeed, when Authentic2 acts also as a SAML2 service provider,
-attributes contained in the SAML2 assertion received from third IdP are put in
-the user session.</p>
-<p>Attributes can thus be proxyfied during SSO with Authentic2
-configured as a SAML2 proxy.</p>
-<p>The namespace of attributes received from another SAML2 IdP or pushed in the
-assertion given in to service providers can be configured per attribute or per
-service provider.</p>
-<p>By default, the namespace and format of attributes in assertion is conformant
-to the SAMLV2.0 X500/LDAP Attribute profile:</p>
-<div class="highlight-python"><pre>&lt;saml:Attribute
- xmlns:x500="urn:oasis:names:tc:SAML:2.0:profiles:attribute:X500"
- NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
- Name="urn:oid:2.5.4.42" FriendlyName="givenName"&gt;
- &lt;saml:AttributeValue xsi:type="xs:string"
- x500:Encoding="LDAP"&gt;Mikaël&lt;/saml:AttributeValue&gt;
-&lt;/saml:Attribute&gt;</pre>
-</div>
-<p>But the <a class="reference external" href="http://schemas.xmlsoap.org/ws/2005/05/identity/claims">http://schemas.xmlsoap.org/ws/2005/05/identity/claims</a> from the ISI
-profile can also be used, for instance:</p>
-<div class="highlight-python"><pre>&lt;saml:Attribute
- NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
- Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"
- FriendlyName="First Name"&gt;
- &lt;saml:AttributeValue&gt;Mikaël&lt;/saml:AttributeValue&gt;
-&lt;/saml:Attribute&gt;</pre>
-</div>
-</div>
-<div class="section" id="configuration">
-<h2>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline">¶</a></h2>
-<div class="section" id="configure-sources-of-attributes">
-<h3>Configure sources of attributes<a class="headerlink" href="#configure-sources-of-attributes" title="Permalink to this headline">¶</a></h3>
-<p>The source of attributes for authentic2 are of two kinds. The LDAP sources and
-the user django profile.</p>
-<div class="section" id="declare-the-django-profile-source">
-<h4>Declare the Django profile source<a class="headerlink" href="#declare-the-django-profile-source" title="Permalink to this headline">¶</a></h4>
-<p>Add an attribute source named USER_PROFILE with namespace &#8216;Default&#8217;.</p>
-<ol class="arabic simple">
-<li>Go to http[s]://your.domain.com/admin/attribute_aggregator/attributesource/add/</li>
-<li>Write &#8216;USER_PROFILE&#8217; in name field</li>
-</ol>
-<img alt="_images/user_profile_source.png" src="_images/user_profile_source.png" style="width: 800px;" />
-<ol class="arabic simple" start="3">
-<li>Save</li>
-</ol>
-<img alt="_images/user_profile_source_saved.png" src="_images/user_profile_source_saved.png" style="width: 800px;" />
-</div>
-<div class="section" id="add-an-ldap-source">
-<h4>Add an LDAP Source<a class="headerlink" href="#add-an-ldap-source" title="Permalink to this headline">¶</a></h4>
-<p>For LDAP sources, objects of type &#8216;LDAPSource&#8217; must be created.</p>
-<p><strong>Even if the authentication is based on LDAP authentification, thus that a
-server is configured in settings.py, it is
-necessary to create a corresponding &#8216;LDAPSource&#8217; to use it as a source of
-attribute.</strong></p>
-<ol class="arabic simple">
-<li>Go to http[s]://your.domain.com/admin/attribute_aggregator/ldapsource/add/</li>
-<li>Fill form fields</li>
-</ol>
-<p>Only the field Name, Server, User, Password, Base and Port are used for now.
-<strong>The namespace of LDAP source must be kept to &#8216;Default&#8217;, since the system
-namespace is based on LDAP.</strong></p>
-<img alt="_images/ldapsource.png" src="_images/ldapsource.png" style="width: 800px;" />
-<ol class="arabic simple" start="3">
-<li>Save</li>
-</ol>
-<img alt="_images/ldapsource_saved.png" src="_images/ldapsource_saved.png" style="width: 800px;" />
-</div>
-<div class="section" id="manage-user-distinguished-names-in-ldap-directories">
-<h4>Manage user distinguished names in LDAP directories<a class="headerlink" href="#manage-user-distinguished-names-in-ldap-directories" title="Permalink to this headline">¶</a></h4>
-<p>To find the user in a LDAP directory, authentic2 must know its distinguished
-name (DN). If this LDAP has been used when the user has authenticated,
-Authentic2 learn the user DN. Nothing has to be done from this point of view.</p>
-<p>However, if it is expected that user attributes be taken in a directory that
-is not used by the user for authentication, it is necessary to manually
-indicate to Authentic2 what is the user DN in the directory. For this, a
-user alias in source is created for the user:</p>
-<ol class="arabic simple">
-<li>Go to http[s]://your.domain.com/admin/attribute_aggregator/useraliasinsource/add/</li>
-<li>Fill form fields</li>
-</ol>
-<img alt="_images/alias_in_source.png" src="_images/alias_in_source.png" style="width: 800px;" />
-<ol class="arabic simple" start="3">
-<li>Save</li>
-</ol>
-<img alt="_images/alias_in_source_saved.png" src="_images/alias_in_source_saved.png" style="width: 800px;" />
-</div>
-</div>
-<div class="section" id="configure-attributes-pushed-to-saml2-service-providers-in-sso-response">
-<h3>Configure attributes pushed to SAML2 service providers in SSO response<a class="headerlink" href="#configure-attributes-pushed-to-saml2-service-providers-in-sso-response" title="Permalink to this headline">¶</a></h3>
-<p>Reminder:</p>
-<ul class="simple">
-<li>The default name format in SAML2 assertions is URI</li>
-<li>The default namespace called &#8216;Default&#8217; is LDAP</li>
-</ul>
-<p>In summary:</p>
-<ol class="arabic simple">
-<li>Create attribute items indicating an attribute name, a source, the name format expected and the namespace expected for the attribute name and friendly name if any.</li>
-<li>Create a named list of attribute items.</li>
-<li>Create an attribute policy and associate the previous list or associate the previous list to a existing attribute policy.</li>
-<li>Associate the policy to a service provider.</li>
-</ol>
-<div class="section" id="create-attribute-items">
-<h4>Create attribute items<a class="headerlink" href="#create-attribute-items" title="Permalink to this headline">¶</a></h4>
-<ol class="arabic simple">
-<li>Go to http[s]://your.domain.com/admin/idp/attributeitem/add/</li>
-<li>Fill form fields</li>
-</ol>
-<img alt="_images/attribute_item.png" src="_images/attribute_item.png" style="width: 800px;" />
-<ol class="arabic simple" start="3">
-<li>Save</li>
-</ol>
-<img alt="_images/attribute_item_saved.png" src="_images/attribute_item_saved.png" style="width: 800px;" />
-</div>
-<div class="section" id="create-a-named-list-of-attribute-items">
-<h4>Create a named list of attribute items<a class="headerlink" href="#create-a-named-list-of-attribute-items" title="Permalink to this headline">¶</a></h4>
-<ol class="arabic simple">
-<li>Go to http[s]://your.domain.com/admin/idp/attributelist/add/</li>
-<li>Name the list and add items to list</li>
-</ol>
-<img alt="_images/attribute_list.png" src="_images/attribute_list.png" style="width: 800px;" />
-<ol class="arabic simple" start="3">
-<li>Save</li>
-</ol>
-<img alt="_images/attribute_list_saved.png" src="_images/attribute_list_saved.png" style="width: 800px;" />
-</div>
-<div class="section" id="create-or-modify-an-attribute-policy">
-<h4>Create or modify an attribute policy<a class="headerlink" href="#create-or-modify-an-attribute-policy" title="Permalink to this headline">¶</a></h4>
-<ol class="arabic simple">
-<li>Go to http[s]://your.domain.com/admin/idp/attributepolicy/add/</li>
-<li>Add list to the policy</li>
-</ol>
-<img alt="_images/policy_pull.png" src="_images/policy_pull.png" style="width: 800px;" />
-<ol class="arabic simple" start="3">
-<li>Save</li>
-</ol>
-<img alt="_images/policy_pull_saved.png" src="_images/policy_pull_saved.png" style="width: 800px;" />
-</div>
-<div class="section" id="associate-the-policy-to-a-service-provider">
-<h4>Associate the policy to a service provider<a class="headerlink" href="#associate-the-policy-to-a-service-provider" title="Permalink to this headline">¶</a></h4>
-<ol class="arabic simple">
-<li>Go to http[s]://your.domain.com/admin/saml/libertyprovider/1/</li>
-<li>Add policy to the service provider</li>
-</ol>
-<img alt="_images/sp_policy_pull.png" src="_images/sp_policy_pull.png" style="width: 800px;" />
-<ol class="arabic simple" start="3">
-<li>Save</li>
-</ol>
-<img alt="_images/sp_policy_pull_saved.png" src="_images/sp_policy_pull_saved.png" style="width: 800px;" />
-<ol class="arabic simple" start="4">
-<li>The display name of the policy has changed</li>
-</ol>
-<img alt="_images/policy_pull_renamed.png" src="_images/policy_pull_renamed.png" style="width: 800px;" />
-</div>
-</div>
-<div class="section" id="handle-attributes-provided-by-other-identity-providers-proxy-attributes">
-<h3>Handle attributes provided by other Identity providers, proxy attributes<a class="headerlink" href="#handle-attributes-provided-by-other-identity-providers-proxy-attributes" title="Permalink to this headline">¶</a></h3>
-<p>Link to configure first Authentic as a sp to have attributes in session</p>
-<p>Add a source if mapping set to true</p>
-</div>
-</div>
-<div class="section" id="modifying-supported-namespaces-and-attribute-name-mappings">
-<h2>Modifying supported namespaces and attribute name mappings<a class="headerlink" href="#modifying-supported-namespaces-and-attribute-name-mappings" title="Permalink to this headline">¶</a></h2>
-<p>TBD</p>
-</div>
-<div class="section" id="explanation-draft">
-<h2>Explanation (Draft)<a class="headerlink" href="#explanation-draft" title="Permalink to this headline">¶</a></h2>
-<div class="section" id="attribute-aggegrator-module">
-<h3>Attribute aggegrator module<a class="headerlink" href="#attribute-aggegrator-module" title="Permalink to this headline">¶</a></h3>
-<p>The core attribute management is based on the attribute aggregator module.</p>
-<div class="section" id="intro">
-<h4>Intro<a class="headerlink" href="#intro" title="Permalink to this headline">¶</a></h4>
-<p>Attribute aggregator provides a main Model class called UserAttributeProfile,
-functions to load attributes and extract attributes.</p>
-<p>The mapping between attribute namespaces is built-in and depends on a unique
-file (mapping.py).</p>
-<p>A main schema is defined and is based on LDAP/X500 for naming. The support
-of <a class="reference external" href="http://schemas.xmlsoap.org/ws/2005/05/identity/claims">http://schemas.xmlsoap.org/ws/2005/05/identity/claims</a> is partly complete.</p>
-<p>Source of attributes are connected with attribute loading functions using
-signals.</p>
-</div>
-<div class="section" id="faq">
-<h4>FAQ<a class="headerlink" href="#faq" title="Permalink to this headline">¶</a></h4>
-<p>Why not use the Django User profile?</p>
-<p>The django user profile needs to define attributes as class attributes and
-then support form filling or mapping with LDAP.</p>
-<p>That is useful and may be used, especially because the profile can be used as
-a source of attribute to load in the attribute_aggregator profile.</p>
-<p>The attribute_aggregator profile allow to load multivalued attributes from any
-source supported (LDAP, Django profile and attributes in Django session for
-now) from any namespace defined in mapping.py (LDAP/X500 and claims for now).</p>
-<p>The profile can be loaded giving a source or a list of attribute, or can be
-from any known source, or with a dictionnary.</p>
-<p>Attributes can be extracted with many functions in any namespace supported.</p>
-</div>
-<div class="section" id="quick-explanation">
-<h4>Quick explanation<a class="headerlink" href="#quick-explanation" title="Permalink to this headline">¶</a></h4>
-<p>The schema is defined in mapping.py and is made of definitions like this:</p>
-<div class="highlight-python"><pre>"sn": {
- "oid": "2.5.4.4",
- "display_name": _("sn surname"),
- "alias": ['surname'],
- "profile_field_name": 'last_name',
- "type": "http://www.w3.org/2001/XMLSchema#string",
- "namespaces": {
- "http://schemas.xmlsoap.org/ws/2005/05/identity/claims": {
- "identifiers":
- [
- "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname",
- ],
- "friendly_names":
- [
- "Last Name",
- ],
- }
- }
-},</pre>
-</div>
-<p>The profile store all the data in a text field taht contains a cPickle list of
-instances of the class AttributeData.</p>
-<p>The profile is attached to a user and then can be created or loaded with:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="n">profile</span> <span class="o">=</span> <span class="n">load_or_create_user_profile</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">user</span><span class="p">)</span>
-</pre></div>
-</div>
-<p>User may be None to create a temporary profile for an anonymous user. But
-that need a DB cleaning function not implemented.</p>
-</div>
-<div class="section" id="the-model-userattributeprofile">
-<h4>The model <em>UserAttributeProfile</em><a class="headerlink" href="#the-model-userattributeprofile" title="Permalink to this headline">¶</a></h4>
-<p>The model &#8216;UserAttributeProfile&#8217; can be attached to a user and then persist
-(as a Model).</p>
-<p>When the profile is loaded, all data stored are removed expect if the
-the data has an expiration date later.</p>
-<p>The profile provide several methods to store and extract attributes.</p>
-<p>All the methods to add attributes are based on a main one accepting a
-dictionnary of attribute is parameters &#8216;load_by_dic()&#8217;. The other methods
-(&#8216;load_listed_attributes()&#8217;, &#8216;load_greedy()&#8217;) send a signal with a list of
-attributes (listed_attributes_call) or not (any_attributes_call) to grab a
-dictionnary. The list is given with the definition name, oid or friendly name
-of the attribute in the system namespace.</p>
-<p>Into the dictionnary, attributes are given with their name, oid or friendly
-name in the default namespace or with their name in a namepsace. An expiration
-date can also be given (ISO8601 format), if none, attribute will be deleted at
-next profile loading. The dictionnary format is as follows:</p>
-<div class="highlight-python"><pre>attributes = dict()
-data_from_source = list()
-a1 = dict()
- a1['oid'] = definition_name
-Or
- a1['definition'] = definition_name
- definition may be the definition name like 'gn'
- or an alias like 'givenName'
-Or
- a1['name'] = attribute_name_in_ns
- a1['namespace'] = ns_name
-a1['expiration_date'] = date
-a1['values'] = list_of_values
-data_from_source.append(a1)
-...
-data_from_source.append(a2)
-attributes[source_name] = data_from_source</pre>
-</div>
-<p>Getters are defined to extract data from a profile. Only AttributeData
-instances are extracted that assume that any attribute namespace can be used.</p>
-<ul class="simple">
-<li>get_data_of_definition(definition)</li>
-</ul>
-<p>Return a list of AttributeData instances corresponding to the definition
-given.</p>
-<ul class="simple">
-<li>get_freshest_data_of_definition(definition)</li>
-</ul>
-<p>Return the freshest AttributeData instance. If multiple with no or same exp
-date, random. Should use the creation date soon.</p>
-<ul class="simple">
-<li>get_data_of_source</li>
-</ul>
-<p>Return a list of AttributeData instances corresponding to the source given.</p>
-<ul class="simple">
-<li>get_data_of_source_by_name</li>
-</ul>
-<p>Idem but source name is given, not a Source instance.</p>
-<ul class="simple">
-<li>get_data_of_definition_and_source</li>
-</ul>
-<p>Return a list of AttributeData instances corresponding to the definition and
-source given.</p>
-<ul class="simple">
-<li>get_data_of_definition_and_source_by_name</li>
-</ul>
-<p>Idem but source name is given, not a Source instance.</p>
-</div>
-</div>
-<div class="section" id="saml2-attribute-representation-in-assertions">
-<h3>SAML2 attribute representation in assertions<a class="headerlink" href="#saml2-attribute-representation-in-assertions" title="Permalink to this headline">¶</a></h3>
-<p>SAML2 attribute profile (saml-profiles-2.0-os - Section 8) defines two kind of
-attribute element syntax in the attribute statement of assertions, also
-called <em>name format</em>:</p>
-<ul>
-<li><p class="first">BASIC:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="n">NameFormat</span><span class="o">=</span><span class="s">&quot;urn:oasis:names:tc:SAML:2.0:attrname-format:basic&quot;</span>
-</pre></div>
-</div>
-</li>
-<li><p class="first">URI:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="n">NameFormat</span><span class="o">=</span><span class="s">&quot;urn:oasis:names:tc:SAML:2.0:attrname-format:uri&quot;</span>
-</pre></div>
-</div>
-</li>
-</ul>
-<p><em>URI should be used when attributes have &#8220;universally&#8221; known unique names
-like OID.</em></p>
-<p>Example:</p>
-<div class="highlight-python"><pre>&lt;saml:Attribute NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
- Name="FirstName"&gt;
- &lt;saml:AttributeValue xsi:type="xs:string"&gt;By-Tor&lt;/saml:AttributeValue&gt;
-&lt;/saml:Attribute&gt;
-
-&lt;saml:Attribute
- xmlns:x500="urn:oasis:names:tc:SAML:2.0:profiles:attribute:X500"
- NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
- Name="urn:oid:2.5.4.42" FriendlyName="givenName"&gt;
- &lt;saml:AttributeValue xsi:type="xs:string"
- x500:Encoding="LDAP"&gt;Steven&lt;/saml:AttributeValue&gt;
-&lt;/saml:Attribute&gt;</pre>
-</div>
-<div class="section" id="basic">
-<h4>BASIC<a class="headerlink" href="#basic" title="Permalink to this headline">¶</a></h4>
-<p>Two &lt;Attribute&gt; elements refer to the same SAML attribute if and only if the
-values of their Name XML attributes are equal in the sense of Section 3.3.6 of
-[Schema2].</p>
-<p>No additional XML attributes are defined for use with the &lt;Attribute&gt; element.</p>
-<p>The schema type of the contents of the &lt;AttributeValue&gt; element MUST be drawn
-from one of the types defined in Section 3.3 of [Schema2]. The xsi:type
-attribute MUST be present and be given the appropriate value.</p>
-</div>
-<div class="section" id="x-500-ldap-attribute-profile-uri">
-<h4>X.500/LDAP Attribute Profile (URI)<a class="headerlink" href="#x-500-ldap-attribute-profile-uri" title="Permalink to this headline">¶</a></h4>
-<p><strong>Extracted from the SAML2 core specifications</strong></p>
-<p>Two &lt;Attribute&gt; elements refer to the same SAML attribute if and only if their
-Name XML attribute values are equal in the sense of [RFC3061]. The
-FriendlyName attribute plays no role in the comparison.</p>
-<p>Directory attribute type definitions for use in native X.500 directories
-specify the syntax of the attribute using ASN.1 [ASN.1]. For use in LDAP,
-directory attribute definitions additionally include an LDAP syntax which
-specifies how attribute or assertion values conforming to the syntax are to be
-represented when transferred in the LDAP protocol (known as an LDAP-specific
-encoding). The LDAP-specific encoding commonly produces Unicode characters in
-UTF-8 form. This SAML attribute profile specifies the form of SAML attribute
-values only for those directory attributes which have LDAP syntaxes. Future
-extensions to this profile may define attribute value formats for directory
-attributes whose syntaxes specify other encodings.</p>
-<p>To represent the encoding rules in use for a particular attribute value, the
-&lt;AttributeValue&gt; element MUST contain an XML attribute named Encoding defined
-in the XML namespace <a class="reference external" href="urn:oasis:names:tc:SAML:2.0:profiles:attribute:X500">urn:oasis:names:tc:SAML:2.0:profiles:attribute:X500</a>.</p>
-<p>For any directory attribute with a syntax whose LDAP-specific encoding
-exclusively produces UTF-8 character strings as values, the SAML attribute
-value is encoded as simply the UTF-8 string itself, as the content of the
-&lt;AttributeValue&gt; element, with no additional whitespace.
-In such cases, the xsi:type XML attribute MUST be set to xs:string.
-The profile-specific Encoding XML attribute is provided, with a value of LDAP.</p>
-<p>The AttributeData instances have a field expiration_data. It the profile
-exists, obsolete data are removed at loading.</p>
-</div>
-</div>
-<div class="section" id="when-authentic-2-deals-with-attributes-and-needs-mapping">
-<h3>When authentic 2 deals with attributes and needs mapping?<a class="headerlink" href="#when-authentic-2-deals-with-attributes-and-needs-mapping" title="Permalink to this headline">¶</a></h3>
-<p>Authentic2 behaves as an attribute provider:
-* At the SSO login
-* When an attribute request is received</p>
-<p>Authentic requests (e.g. by soap) are not yet supported.</p>
-<div class="section" id="when-authentic2-behaves-as-an-attribute-provider-at-sso-login">
-<h4>When Authentic2 behaves as an attribute provider at SSO login<a class="headerlink" href="#when-authentic2-behaves-as-an-attribute-provider-at-sso-login" title="Permalink to this headline">¶</a></h4>
-<p>At a SSO request, just before responding to the service provider, the saml2
-idp module sends the signal &#8216;add_attributes_to_response&#8217; giving the SP entity
-ID.</p>
-<p>The signal is connected to the function &#8216;provide_attributes_at_sso()&#8217; in
-charge of providing the attributes at the SSO for this SP.</p>
-<p><strong>Attributes sources are of two kinds. The first ones are the sources that can
-be requested by the IdP with a syncrhonous binding without user intercations.
-These sources are called pull sources. They are for now limited to LDAP
-sources. The other ones are sources are asyncrhonous bindings, usually
-requiring user interactions. These sources are called push sources. They are
-now limited to the attributes provided at SSO requests when the IdP acts as a
-SAML2 SP. There attributes are put/found in the Django session.</strong></p>
-<p>Each source in the system is declared with an instance of the AttributeSource
-model. We&#8217;ll see later that to forward attributes of push sources it is not
-necessary that a source is declared in some circumstances.</p>
-<p>To manage these sources an attribute policy is attached to services providers.
-Then the service provider model must be extended with a attribute
-attributes_at_sso_policy. The service provider must send the signal
-&#8216;add_attributes_to_response&#8217;.</p>
-<p>The implementation is actually done for SAML2 providers.</p>
-<p><strong>In such a policy attributes from pull and push sources are treated
-differently.</strong></p>
-<p><strong>For pull sources, a list of attributes is indicated. Either an attribute is
-searched in all the pull sources and whatever attribute value found is
-returned. Or each attribute is indicated with a source. With each attribute is
-indicated the output format and namespace.</strong></p>
-<p><strong>The policy may also indicate that all the attributes in the Django session
-must be forwarded. Then, no AttributeSource instance is required. All the
-attributes are then forwarded without treating input namespace considerations.
-When an AttributeSource instance is found, the input namespace of this source
-is considered. An option can then be set to tell that the output format and
-namespace must be taken. A list of attribute can also be given.
-This list can be use to filter attributes to forward without or without taking
-care of the source. The output namespace and format can also be trated per
-attribute.</strong></p>
-<p>If the namespace is default, the attribute names will be taken from the
-system namespace. In BASIC the name will be the definition name. In URI, the
-Name will be the OID in urn format and the friendly name will be the
-definition name. If a namespace is given, the first identifier of this
-attribute is taken as Name in BASIC. In URI, the same and the first friendly
-name is taken.</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="k">class</span> <span class="nc">LibertyServiceProvider</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
- <span class="o">...</span>
- <span class="n">attribute_policy</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">AttributePolicy</span><span class="p">,</span>
- <span class="n">verbose_name</span><span class="o">=</span><span class="n">_</span><span class="p">(</span><span class="s">&quot;Attribute policy&quot;</span><span class="p">),</span> <span class="n">null</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
-
-<span class="k">class</span> <span class="nc">AttributePolicy</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
- <span class="c"># List of attributes to provide from pull sources at SSO Login.</span>
- <span class="c"># If an attribute is indicate without a source, from any source.</span>
- <span class="c"># The output format and namespace is given by each attribute.</span>
- <span class="n">attribute_list_for_sso_from_pull_sources</span> <span class="o">=</span> \
- <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">LibertyAttributeMap</span><span class="p">,</span>
- <span class="n">related_name</span> <span class="o">=</span> <span class="s">&quot;attributes of pull sources&quot;</span><span class="p">,</span>
- <span class="n">blank</span> <span class="o">=</span> <span class="bp">True</span><span class="p">,</span> <span class="n">null</span> <span class="o">=</span> <span class="bp">True</span><span class="p">)</span>
-
- <span class="c"># Set to true for proxying attributes from pull sources at SSO Login.</span>
- <span class="c"># Attributes are in session.</span>
- <span class="c"># All attributes are forwarded as is except if the parameter</span>
- <span class="c"># &#39;attribute_list_for_sso_from_push_sources&#39; is initialized</span>
- <span class="n">forward_attributes_from_pull_sources</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
-
- <span class="c"># Map attributes in session</span>
- <span class="c"># forward_attributes_in_session must be true</span>
- <span class="c"># At False, all attributes are forwarded as is</span>
- <span class="c"># At true, look for the namespace of the source for input, If not found,</span>
- <span class="c"># system namespace. Look for the options attribute_name_format and</span>
- <span class="c"># output_namespace of the attribute policy for output.</span>
- <span class="n">map_attributes_from_pull_sources</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
-
- <span class="c"># ATTRIBUTE_VALUE_FORMATS[0] =&gt;</span>
- <span class="c"># (lasso.SAML2_ATTRIBUTE_NAME_FORMAT_BASIC, &#39;SAMLv2 BASIC&#39;)</span>
- <span class="n">output_name_format</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span>
- <span class="n">choices</span> <span class="o">=</span> <span class="n">ATTRIBUTE_VALUE_FORMATS</span><span class="p">,</span>
- <span class="n">default</span> <span class="o">=</span> <span class="n">ATTRIBUTE_VALUE_FORMATS</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
-
- <span class="c">#ATTRIBUTES_NS[0] =&gt; (&#39;Default&#39;, &#39;Default&#39;)</span>
- <span class="n">output_namespace</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span>
- <span class="n">choices</span> <span class="o">=</span> <span class="n">ATTRIBUTES_NS</span><span class="p">,</span> <span class="n">default</span> <span class="o">=</span> <span class="n">ATTRIBUTES_NS</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
-
- <span class="c"># Filter attributes pushed from source.</span>
- <span class="n">source_filter_for_sso_from_push_sources</span> <span class="o">=</span> \
- <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">AttributeSource</span><span class="p">,</span>
- <span class="n">related_name</span> <span class="o">=</span> <span class="s">&quot;attributes of pull sources&quot;</span><span class="p">,</span>
- <span class="n">blank</span> <span class="o">=</span> <span class="bp">True</span><span class="p">,</span> <span class="n">null</span> <span class="o">=</span> <span class="bp">True</span><span class="p">)</span>
-
- <span class="c"># List of attributes to filter from pull sources at SSO Login.</span>
- <span class="n">attribute_filter_for_sso_from_push_sources</span> <span class="o">=</span> \
- <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">LibertyAttributeMap</span><span class="p">,</span>
- <span class="n">related_name</span> <span class="o">=</span> <span class="s">&quot;attributes of pull sources&quot;</span><span class="p">,</span>
- <span class="n">blank</span> <span class="o">=</span> <span class="bp">True</span><span class="p">,</span> <span class="n">null</span> <span class="o">=</span> <span class="bp">True</span><span class="p">)</span>
-
- <span class="c"># The sources of attributes of the previous list are considered.</span>
- <span class="c"># May be used conjointly with &#39;source_filter_for_sso_from_push_sources&#39;</span>
- <span class="n">filter_source_of_filtered_attributes</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
-
- <span class="c"># To map the attributes of forwarded attributes with the defaut output</span>
- <span class="c"># format and namespace, use &#39;map_attributes_from_pull_sources&#39;</span>
- <span class="c"># Use the following option to use the output format and namespace</span>
- <span class="c"># indicated for each attribute.</span>
- <span class="n">map_attributes_of_filtered_attributes</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
-
-
- <span class="c"># Set to true to take in account missing required attributes</span>
- <span class="n">send_error_and_no_attrs_if_missing_required_attrs</span> <span class="o">=</span> \
- <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
-
- <span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span>
- <span class="n">verbose_name</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s">&#39;attribute options policy&#39;</span><span class="p">)</span>
- <span class="n">verbose_name_plural</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s">&#39;attribute options policies&#39;</span><span class="p">)</span>
-
-
-<span class="k">class</span> <span class="nc">AttributeList</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
- <span class="n">name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span> <span class="o">=</span> <span class="mi">40</span><span class="p">,</span> <span class="n">unique</span> <span class="o">=</span> <span class="bp">True</span><span class="p">)</span>
- <span class="n">attributes</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">AttributeItem</span><span class="p">,</span>
- <span class="n">related_name</span> <span class="o">=</span> <span class="s">&quot;attributes of the list&quot;</span><span class="p">,</span>
- <span class="n">blank</span> <span class="o">=</span> <span class="bp">True</span><span class="p">,</span> <span class="n">null</span> <span class="o">=</span> <span class="bp">True</span><span class="p">)</span>
-
-
-<span class="k">class</span> <span class="nc">AttributeItem</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
- <span class="n">attribute_name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span> <span class="n">choices</span> <span class="o">=</span> <span class="n">ATTRIBUTES</span><span class="p">,</span>
- <span class="n">default</span> <span class="o">=</span> <span class="n">ATTRIBUTES</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
- <span class="c"># ATTRIBUTE_VALUE_FORMATS[0] =&gt;</span>
- <span class="c"># (lasso.SAML2_ATTRIBUTE_NAME_FORMAT_BASIC, &#39;SAMLv2 BASIC&#39;)</span>
- <span class="n">output_attribute_name_format</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span>
- <span class="n">choices</span> <span class="o">=</span> <span class="n">ATTRIBUTE_VALUE_FORMATS</span><span class="p">,</span>
- <span class="n">default</span> <span class="o">=</span> <span class="n">ATTRIBUTE_VALUE_FORMATS</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
- <span class="c">#ATTRIBUTES_NS[0] =&gt; (&#39;Default&#39;, &#39;Default&#39;)</span>
- <span class="n">output_namespace</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span>
- <span class="n">choices</span> <span class="o">=</span> <span class="n">ATTRIBUTES_NS</span><span class="p">,</span> <span class="n">default</span> <span class="o">=</span> <span class="n">ATTRIBUTES_NS</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
- <span class="n">required</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
- <span class="n">source</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">AttributeSource</span><span class="p">,</span> <span class="n">blank</span> <span class="o">=</span> <span class="bp">True</span><span class="p">,</span> <span class="n">null</span> <span class="o">=</span> <span class="bp">True</span><span class="p">)</span>
-</pre></div>
-</div>
-<p>A list of attributes can also be taken from the service provider metadata and
-added to &#8216;attribute_list_for_sso_from_pull_sources&#8217;. The namespace may be
-extracted from the metadata. This namespace is then used to look for the
-corresponding definition and then to provide the attribute in the right
-namespace. Read attributes from metadata is not yet supported.</p>
-<p>For the attributes of pull sources, once the list of attributes is defined,
-They are loaded in the user profile.</p>
-<p>As explained before the attribute_aggregator loading function send signals to
-grab dictionnary of attributes. Up to know, only the ldap loading function are
-connected to these signals. The namespace of LDAP sources is assumed to be
-the same as the system namespace. There is here then no mapping needed. Other
-kind of sources than LDAP can be defined in attribute aggregator.</p>
-<p>To grab attributes from a LDAP the user dn in the LDAP or at least a local
-identifier in the LDAP is required. For this purpose, each user has alias
-associated with LDAP source. These aliases must their DN in the LDAP. When
-the authentication LDAP backend will be taken in account, the dn will be taken
-direclty from the user Model instance.</p>
-<p>Each LDAP sources are declared with the binding parameters. The LDAP namespace
-is always &#8216;Default&#8217;.</p>
-<p>If an attribute to load is not found and is required the answer should report
-an error (Not yet implemented).</p>
-<p>Attributes in response can also be provided with other means than from an LDAP
-source. Attributes can be put in the user Django session and then loaded in
-the profile. An option of the service provier indicate if attributes in the
-session must be provided to the service provider.</p>
-<p>To have the attribute loaded from the session, they must be provided in the
-session as follows:
-request.session[&#8216;attributes&#8217;][source_name] = list()</p>
-<p>The source_name must be the name of an existing instance of an
-&#8216;AttributeSource&#8217;. Such an instance contains a field namespace indicating the
-namespace of attributes.</p>
-<p>This is currently implemented only for the SAML2 service provider module of
-authentic2. Authsaml2, the SP module, parse the assertion and put the
-attributes in the session.</p>
-<div class="highlight-python"><pre>if not 'multisource_attributes' in request.session:
- request.session['attributes'] = dict{}
-request.session['multisource_attributes'] \
- [login.assertion.issuer.content] = attributes</pre>
-</div>
-<p>Then, Authentic2 can be used as a SAML2 proxy forwarding attributes in
-assertion, eventually doing a namespace mapping. For this, the option
-forward attributes in sesion must be set (by default False).</p>
-</div>
-</div>
-</div>
-</div>
-
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
- <h3><a href="index.html">Table Of Contents</a></h3>
- <ul>
-<li><a class="reference internal" href="#">Attribute Management in Authentic2</a><ul>
-<li><a class="reference internal" href="#summary">Summary</a></li>
-<li><a class="reference internal" href="#configuration">Configuration</a><ul>
-<li><a class="reference internal" href="#configure-sources-of-attributes">Configure sources of attributes</a><ul>
-<li><a class="reference internal" href="#declare-the-django-profile-source">Declare the Django profile source</a></li>
-<li><a class="reference internal" href="#add-an-ldap-source">Add an LDAP Source</a></li>
-<li><a class="reference internal" href="#manage-user-distinguished-names-in-ldap-directories">Manage user distinguished names in LDAP directories</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#configure-attributes-pushed-to-saml2-service-providers-in-sso-response">Configure attributes pushed to SAML2 service providers in SSO response</a><ul>
-<li><a class="reference internal" href="#create-attribute-items">Create attribute items</a></li>
-<li><a class="reference internal" href="#create-a-named-list-of-attribute-items">Create a named list of attribute items</a></li>
-<li><a class="reference internal" href="#create-or-modify-an-attribute-policy">Create or modify an attribute policy</a></li>
-<li><a class="reference internal" href="#associate-the-policy-to-a-service-provider">Associate the policy to a service provider</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#handle-attributes-provided-by-other-identity-providers-proxy-attributes">Handle attributes provided by other Identity providers, proxy attributes</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#modifying-supported-namespaces-and-attribute-name-mappings">Modifying supported namespaces and attribute name mappings</a></li>
-<li><a class="reference internal" href="#explanation-draft">Explanation (Draft)</a><ul>
-<li><a class="reference internal" href="#attribute-aggegrator-module">Attribute aggegrator module</a><ul>
-<li><a class="reference internal" href="#intro">Intro</a></li>
-<li><a class="reference internal" href="#faq">FAQ</a></li>
-<li><a class="reference internal" href="#quick-explanation">Quick explanation</a></li>
-<li><a class="reference internal" href="#the-model-userattributeprofile">The model <em>UserAttributeProfile</em></a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#saml2-attribute-representation-in-assertions">SAML2 attribute representation in assertions</a><ul>
-<li><a class="reference internal" href="#basic">BASIC</a></li>
-<li><a class="reference internal" href="#x-500-ldap-attribute-profile-uri">X.500/LDAP Attribute Profile (URI)</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#when-authentic-2-deals-with-attributes-and-needs-mapping">When authentic 2 deals with attributes and needs mapping?</a><ul>
-<li><a class="reference internal" href="#when-authentic2-behaves-as-an-attribute-provider-at-sso-login">When Authentic2 behaves as an attribute provider at SSO login</a></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-
- <h4>Previous topic</h4>
- <p class="topless"><a href="config_cas_idp.html"
- title="previous chapter">Configure Authentic2 as a CAS client</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/attribute_management.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="config_cas_idp.html" title="Configure Authentic2 as a CAS client"
- >previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2011, Mikaël Ates.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/_build/html/auth_ldap.html b/doc/_build/html/auth_ldap.html
deleted file mode 100644
index 6e414c3..0000000
--- a/doc/_build/html/auth_ldap.html
+++ /dev/null
@@ -1,178 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Authentication with an existing LDAP directory &mdash; Authentic2 1.9.2 documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '1.9.2',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="Authentic2 1.9.2 documentation" href="index.html" />
- <link rel="next" title="Authentication on Authentic2 with PAM" href="auth_pam.html" />
- <link rel="prev" title="Installation" href="installation.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="auth_pam.html" title="Authentication on Authentic2 with PAM"
- accesskey="N">next</a> |</li>
- <li class="right" >
- <a href="installation.html" title="Installation"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <div class="section" id="authentication-with-an-existing-ldap-directory">
-<span id="auth-ldap"></span><h1>Authentication with an existing LDAP directory<a class="headerlink" href="#authentication-with-an-existing-ldap-directory" title="Permalink to this headline">¶</a></h1>
-<p>Authentic use the module django_auth_ldap to synchronize the Django user tables
-with an LDAP. For complex use case, we will refer you to the django_auth_ldap
-documentation, see <a class="reference external" href="http://packages.python.org/django-auth-ldap/">http://packages.python.org/django-auth-ldap/</a>.</p>
-<div class="section" id="how-to-authenticate-users-against-an-ldap-server-with-anonymous-binding">
-<h2>How to authenticate users against an LDAP server with anonymous binding ?<a class="headerlink" href="#how-to-authenticate-users-against-an-ldap-server-with-anonymous-binding" title="Permalink to this headline">¶</a></h2>
-<ol class="arabic">
-<li><p class="first">Install the django_auth_ldap module for Django:</p>
-<div class="highlight-python"><pre>pip install django_auth_ldap</pre>
-</div>
-</li>
-<li><p class="first">Configure your local_settings.py file for authenticating against LDAP.</p>
-</li>
-</ol>
-<p>The next lines must be added:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="n">AUTHENTICATION_BACKENDS</span> <span class="o">+=</span> <span class="p">(</span> <span class="s">&#39;django_auth_ldap.backend.LDAPBackend&#39;</span><span class="p">,</span> <span class="p">)</span>
-
-<span class="kn">import</span> <span class="nn">ldap</span>
-<span class="kn">from</span> <span class="nn">django_auth_ldap.config</span> <span class="kn">import</span> <span class="n">LDAPSearch</span>
-
-<span class="c"># Here put the LDAP URL of your server</span>
-<span class="n">AUTH_LDAP_SERVER_URI</span> <span class="o">=</span> <span class="s">&#39;ldap://ldap.example.com&#39;</span>
-<span class="c"># Let the bind DN and bind password blank for anonymous binding</span>
-<span class="n">AUTH_LDAP_BIND_DN</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
-<span class="n">AUTH_LDAP_BIND_PASSWORD</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
-<span class="c"># Lookup user under the branch o=base and by mathcing their uid against the</span>
-<span class="c"># received login name</span>
-<span class="n">AUTH_LDAP_USER_SEARCH</span> <span class="o">=</span> <span class="n">LDAPSearch</span><span class="p">(</span><span class="s">&quot;o=base&quot;</span><span class="p">,</span>
- <span class="n">ldap</span><span class="o">.</span><span class="n">SCOPE_SUBTREE</span><span class="p">,</span> <span class="s">&quot;(uid=</span><span class="si">%(user)s</span><span class="s">)&quot;</span><span class="p">)</span>
-</pre></div>
-</div>
-</div>
-<div class="section" id="how-to-allow-members-of-an-ldap-group-to-manage-authentic">
-<h2>How to allow members of an LDAP group to manage Authentic ?<a class="headerlink" href="#how-to-allow-members-of-an-ldap-group-to-manage-authentic" title="Permalink to this headline">¶</a></h2>
-<ol class="arabic">
-<li><p class="first">First you must know the objectClass of groups in your LDAP schema, this FAQ
-will show you the configuration for two usual classes: groupOfNames and
-groupOfUniqueNames.</p>
-</li>
-<li><p class="first">Find the relevant groupname. We will say it is: cn=admin,o=mycompany</p>
-</li>
-<li><p class="first">Add the following lines:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">django_auth_ldap.config</span> <span class="kn">import</span> <span class="n">GroupOfNamesType</span>
-<span class="n">AUTH_LDAP_GROUP_TYPE</span> <span class="o">=</span> <span class="n">GroupOfNamesType</span><span class="p">()</span>
-<span class="n">AUTH_LDAP_GROUP_SEARCH</span> <span class="o">=</span> <span class="n">LDAPSearch</span><span class="p">(</span><span class="s">&quot;o=mycompany&quot;</span><span class="p">,</span>
- <span class="n">ldap</span><span class="o">.</span><span class="n">SCOPE_SUBTREE</span><span class="p">,</span> <span class="s">&quot;(objectClass=groupOfNames)&quot;</span><span class="p">)</span>
-<span class="n">AUTH_LDAP_USER_FLAGS_BY_GROUP</span> <span class="o">=</span> <span class="p">{</span>
- <span class="s">&quot;is_staff&quot;</span><span class="p">:</span> <span class="s">&quot;cn=admin,o=mycompany&quot;</span>
-<span class="p">}</span>
-</pre></div>
-</div>
-</li>
-</ol>
-<p>For an objectClass of groupOfUniqueNames you would change the string
-GroupOfNamesType to GroupOfUniqueNamesType and grouOfNames to
-groupOfUniqueNames. For more complex cases see the django_auth_ldap
-documentation.</p>
-</div>
-</div>
-
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
- <h3><a href="index.html">Table Of Contents</a></h3>
- <ul>
-<li><a class="reference internal" href="#">Authentication with an existing LDAP directory</a><ul>
-<li><a class="reference internal" href="#how-to-authenticate-users-against-an-ldap-server-with-anonymous-binding">How to authenticate users against an LDAP server with anonymous binding ?</a></li>
-<li><a class="reference internal" href="#how-to-allow-members-of-an-ldap-group-to-manage-authentic">How to allow members of an LDAP group to manage Authentic ?</a></li>
-</ul>
-</li>
-</ul>
-
- <h4>Previous topic</h4>
- <p class="topless"><a href="installation.html"
- title="previous chapter">Installation</a></p>
- <h4>Next topic</h4>
- <p class="topless"><a href="auth_pam.html"
- title="next chapter">Authentication on Authentic2 with PAM</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/auth_ldap.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="auth_pam.html" title="Authentication on Authentic2 with PAM"
- >next</a> |</li>
- <li class="right" >
- <a href="installation.html" title="Installation"
- >previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2011, Mikaël Ates.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/_build/html/auth_pam.html b/doc/_build/html/auth_pam.html
deleted file mode 100644
index 3f96090..0000000
--- a/doc/_build/html/auth_pam.html
+++ /dev/null
@@ -1,129 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Authentication on Authentic2 with PAM &mdash; Authentic2 1.9.2 documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '1.9.2',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="Authentic2 1.9.2 documentation" href="index.html" />
- <link rel="next" title="Configure SAML 2.0 service providers" href="config_saml2_sp.html" />
- <link rel="prev" title="Authentication with an existing LDAP directory" href="auth_ldap.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="config_saml2_sp.html" title="Configure SAML 2.0 service providers"
- accesskey="N">next</a> |</li>
- <li class="right" >
- <a href="auth_ldap.html" title="Authentication with an existing LDAP directory"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <div class="section" id="authentication-on-authentic2-with-pam">
-<span id="auth-pam"></span><h1>Authentication on Authentic2 with PAM<a class="headerlink" href="#authentication-on-authentic2-with-pam" title="Permalink to this headline">¶</a></h1>
-<p>This module is copied from <a class="reference external" href="https://bitbucket.org/wnielson/django-pam/">https://bitbucket.org/wnielson/django-pam/</a> by Weston
-Nielson and the pam ctype module by Chris Atlee <a class="reference external" href="http://atlee.ca/software/pam/">http://atlee.ca/software/pam/</a>.</p>
-<p>Add &#8216;authentic2.vendor.dpam.backends.PAMBackend&#8217; to your
-<tt class="docutils literal"><span class="pre">settings.py</span></tt>:</p>
-<div class="highlight-python"><pre>AUTHENTICATION_BACKENDS = (
- ...
- 'authentic2.vendor.dpam.backends.PAMBackend',
- ...
-)</pre>
-</div>
-<p>Now you can login via the system-login credentials. If the user is
-successfully authenticated but has never logged-in before, a new <tt class="docutils literal"><span class="pre">User</span></tt>
-object is created. By default this new <tt class="docutils literal"><span class="pre">User</span></tt> has both <tt class="docutils literal"><span class="pre">is_staff</span></tt> and
-<tt class="docutils literal"><span class="pre">is_superuser</span></tt> set to <tt class="docutils literal"><span class="pre">False</span></tt>. You can change this behavior by adding
-<tt class="docutils literal"><span class="pre">PAM_IS_STAFF=True</span></tt> and <tt class="docutils literal"><span class="pre">PAM_IS_SUPERUSER</span></tt> in your <tt class="docutils literal"><span class="pre">settings.py</span></tt> file.</p>
-<p>The default PAM service used is <tt class="docutils literal"><span class="pre">login</span></tt> but you can change it by setting the
-<tt class="docutils literal"><span class="pre">PAM_SERVICE</span></tt> variable in your <tt class="docutils literal"><span class="pre">settings.py</span></tt> file.</p>
-</div>
-
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
- <h4>Previous topic</h4>
- <p class="topless"><a href="auth_ldap.html"
- title="previous chapter">Authentication with an existing LDAP directory</a></p>
- <h4>Next topic</h4>
- <p class="topless"><a href="config_saml2_sp.html"
- title="next chapter">Configure SAML 2.0 service providers</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/auth_pam.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="config_saml2_sp.html" title="Configure SAML 2.0 service providers"
- >next</a> |</li>
- <li class="right" >
- <a href="auth_ldap.html" title="Authentication with an existing LDAP directory"
- >previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2011, Mikaël Ates.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/_build/html/config_cas_idp.html b/doc/_build/html/config_cas_idp.html
deleted file mode 100644
index e6262b0..0000000
--- a/doc/_build/html/config_cas_idp.html
+++ /dev/null
@@ -1,112 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Configure Authentic2 as a CAS client &mdash; Authentic2 1.9.2 documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '1.9.2',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="Authentic2 1.9.2 documentation" href="index.html" />
- <link rel="next" title="Attribute Management in Authentic2" href="attribute_management.html" />
- <link rel="prev" title="Configure Authentic2 as a CAS server" href="config_cas_sp.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="attribute_management.html" title="Attribute Management in Authentic2"
- accesskey="N">next</a> |</li>
- <li class="right" >
- <a href="config_cas_sp.html" title="Configure Authentic2 as a CAS server"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <div class="section" id="configure-authentic2-as-a-cas-client">
-<span id="config-cas-idp"></span><h1>Configure Authentic2 as a CAS client<a class="headerlink" href="#configure-authentic2-as-a-cas-client" title="Permalink to this headline">¶</a></h1>
-</div>
-
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
- <h4>Previous topic</h4>
- <p class="topless"><a href="config_cas_sp.html"
- title="previous chapter">Configure Authentic2 as a CAS server</a></p>
- <h4>Next topic</h4>
- <p class="topless"><a href="attribute_management.html"
- title="next chapter">Attribute Management in Authentic2</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/config_cas_idp.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="attribute_management.html" title="Attribute Management in Authentic2"
- >next</a> |</li>
- <li class="right" >
- <a href="config_cas_sp.html" title="Configure Authentic2 as a CAS server"
- >previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2011, Mikaël Ates.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/_build/html/config_cas_sp.html b/doc/_build/html/config_cas_sp.html
deleted file mode 100644
index 91923e8..0000000
--- a/doc/_build/html/config_cas_sp.html
+++ /dev/null
@@ -1,147 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Configure Authentic2 as a CAS server &mdash; Authentic2 1.9.2 documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '1.9.2',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="Authentic2 1.9.2 documentation" href="index.html" />
- <link rel="next" title="Configure Authentic2 as a CAS client" href="config_cas_idp.html" />
- <link rel="prev" title="Configure Authentic2 as a SAML2 service provider" href="config_saml2_idp.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="config_cas_idp.html" title="Configure Authentic2 as a CAS client"
- accesskey="N">next</a> |</li>
- <li class="right" >
- <a href="config_saml2_idp.html" title="Configure Authentic2 as a SAML2 service provider"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <div class="section" id="configure-authentic2-as-a-cas-server">
-<span id="config-cas-sp"></span><h1>Configure Authentic2 as a CAS server<a class="headerlink" href="#configure-authentic2-as-a-cas-server" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="how-to-use-authentic2-as-a-cas-1-0-or-cas-2-0-identity-provider">
-<h2>How to use Authentic2 as a CAS 1.0 or CAS 2.0 identity provider ?<a class="headerlink" href="#how-to-use-authentic2-as-a-cas-1-0-or-cas-2-0-identity-provider" title="Permalink to this headline">¶</a></h2>
-<ol class="arabic">
-<li><p class="first">Activate CAS IdP support in settings.py:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="n">IDP_CAS</span> <span class="o">=</span> <span class="bp">True</span>
-</pre></div>
-</div>
-</li>
-<li><p class="first">Then create the database table to hold CAS service tickets:</p>
-<div class="highlight-python"><pre>python authentic2/manage.py syncdb --migrate</pre>
-</div>
-</li>
-<li><p class="first">Also configure authentic2 to authenticate against your LDAP directory (see
-above) if your want your user attributes to be accessible from your service,
-if it is not necessary you can use the normal relational database storage
-for you users.</p>
-</li>
-<li><p class="first">Finally configure your service to point to the CAS endpoint at:</p>
-<blockquote>
-<div><p>http[s]://your.domain.com/idp/cas/</p>
-</div></blockquote>
-</li>
-<li><p class="first">If needed configure your service to resolve authenticated user with your
-LDAP directory (if user attributes are needed for your service)</p>
-</li>
-</ol>
-</div>
-</div>
-
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
- <h3><a href="index.html">Table Of Contents</a></h3>
- <ul>
-<li><a class="reference internal" href="#">Configure Authentic2 as a CAS server</a><ul>
-<li><a class="reference internal" href="#how-to-use-authentic2-as-a-cas-1-0-or-cas-2-0-identity-provider">How to use Authentic2 as a CAS 1.0 or CAS 2.0 identity provider ?</a></li>
-</ul>
-</li>
-</ul>
-
- <h4>Previous topic</h4>
- <p class="topless"><a href="config_saml2_idp.html"
- title="previous chapter">Configure Authentic2 as a SAML2 service provider</a></p>
- <h4>Next topic</h4>
- <p class="topless"><a href="config_cas_idp.html"
- title="next chapter">Configure Authentic2 as a CAS client</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/config_cas_sp.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="config_cas_idp.html" title="Configure Authentic2 as a CAS client"
- >next</a> |</li>
- <li class="right" >
- <a href="config_saml2_idp.html" title="Configure Authentic2 as a SAML2 service provider"
- >previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2011, Mikaël Ates.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/_build/html/config_saml2_idp.html b/doc/_build/html/config_saml2_idp.html
deleted file mode 100644
index fa1bba0..0000000
--- a/doc/_build/html/config_saml2_idp.html
+++ /dev/null
@@ -1,207 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Configure Authentic2 as a SAML2 service provider or a SAML2 proxy &mdash; Authentic2 1.9.2 documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '1.9.2',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="Authentic2 1.9.2 documentation" href="index.html" />
- <link rel="next" title="How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?" href="sync-metadata_script.html" />
- <link rel="prev" title="Configure SAML 2.0 service providers" href="config_saml2_sp.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="sync-metadata_script.html" title="How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?"
- accesskey="N">next</a> |</li>
- <li class="right" >
- <a href="config_saml2_sp.html" title="Configure SAML 2.0 service providers"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <div class="section" id="configure-authentic2-as-a-saml2-service-provider-or-a-saml2-proxy">
-<span id="config-saml2-idp"></span><h1>Configure Authentic2 as a SAML2 service provider or a SAML2 proxy<a class="headerlink" href="#configure-authentic2-as-a-saml2-service-provider-or-a-saml2-proxy" title="Permalink to this headline">¶</a></h1>
-<p><strong>The configuration to make Authentic2 a SAML2 service provider or a SAML2
-proxy is the same. The difference comes from that Authentic2 is may be
-configured or not as a SAML2 identity provider.</strong></p>
-<div class="section" id="how-do-i-authenticate-against-a-third-saml2-identity-provider">
-<h2>How do I authenticate against a third SAML2 identity provider?<a class="headerlink" href="#how-do-i-authenticate-against-a-third-saml2-identity-provider" title="Permalink to this headline">¶</a></h2>
-<ol class="arabic simple">
-<li>Declare Authentic2 as a SAML2 service provider on your SAML2 identity provider using the SAML2 service provider metadata of Authentic2.</li>
-</ol>
-<p>Go to http[s]://your.domain.com/authsaml2/metadata</p>
-<ol class="arabic simple" start="2">
-<li>Add and configure a SAML2 identity provider entry in Authentic2 using the metadata of the identity provider.</li>
-</ol>
-</div>
-<div class="section" id="how-do-i-add-and-configure-a-saml2-identity-provider-in-authentic2">
-<h2>How do I add and configure a SAML2 identity provider in Authentic2?<a class="headerlink" href="#how-do-i-add-and-configure-a-saml2-identity-provider-in-authentic2" title="Permalink to this headline">¶</a></h2>
-<p>You first need to create a SAML2 identity provider entry with the SAML2
-metadata of the identity provider. Then, you configure it.</p>
-<p>If your identity provider is Authentic2, the metadata are available at:</p>
-<blockquote>
-<div>http[s]://your.domain.com/idp/saml2/metadata</div></blockquote>
-<p>See <a class="reference internal" href="where_metadata.html#where-metadata"><em>Where do I find the Authentic2 SAML2 metadata?</em></a> for more information.</p>
-<div class="section" id="create-a-saml2-identity-provider-entry">
-<h3>Create a SAML2 identity provider entry<a class="headerlink" href="#create-a-saml2-identity-provider-entry" title="Permalink to this headline">¶</a></h3>
-<p>You first need to create a new SAML2 identity provider entry. This requires
-the SAML2 metadata of the identity provider.</p>
-<ol class="arabic">
-<li><p class="first">Go to</p>
-<blockquote>
-<div><p>http[s]://your.domain.com/admin/saml/libertyprovider/add/</p>
-</div></blockquote>
-</li>
-<li><p class="first">Fill the form fields</p>
-</li>
-</ol>
-<img alt="_images/new_saml2_idp_1.png" src="_images/new_saml2_idp_1.png" style="width: 800px;" />
-<img alt="_images/new_saml2_idp_2.png" src="_images/new_saml2_idp_2.png" style="width: 800px;" />
-<p><strong>The identity provider must be enabled.</strong></p>
-<p>See below about configuring the identity provider with policies:</p>
-<ul class="simple">
-<li>options of the identity provider</li>
-</ul>
-<ol class="arabic simple" start="3">
-<li>Save</li>
-</ol>
-<img alt="_images/new_saml2_idp_saved.png" src="_images/new_saml2_idp_saved.png" style="width: 800px;" />
-</div>
-<div class="section" id="configure-the-saml2-identity-provider-options">
-<h3>Configure the SAML2 identity provider options<a class="headerlink" href="#configure-the-saml2-identity-provider-options" title="Permalink to this headline">¶</a></h3>
-<p>The SAML2 options of the service provider are configured using sp options
-policies.</p>
-<p>See the <em>administration with policy principle</em> page <a class="reference internal" href="administration_with_policies.html#administration-with-policies"><em>How global policies are used in Authentic2 administration</em></a>.</p>
-<p>You may create a regular policy and configure your service provider to use it.</p>
-<p>Go to:</p>
-<blockquote>
-<div>http[s]://your.domain.com/admin/saml/idpoptionssppolicy/add/</div></blockquote>
-<img alt="_images/sp_options_regular.png" src="_images/sp_options_regular.png" style="width: 800px;" />
-<img alt="_images/sp_options_regular_saved.png" src="_images/sp_options_regular_saved.png" style="width: 800px;" />
-<img alt="_images/sp_options_regular_modify_sp.png" src="_images/sp_options_regular_modify_sp.png" style="width: 800px;" />
-<p>Exemple with a policy &#8216;Default&#8217;:</p>
-<img alt="_images/sp_options_default.png" src="_images/sp_options_default.png" style="width: 800px;" />
-<p>Exemple with a policy &#8216;All&#8217;:</p>
-<img alt="_images/sp_options_all.png" src="_images/sp_options_all.png" style="width: 800px;" />
-<p>If no policy is found for the configuration of the SAML2 options of an identity
-provider, the following error is displayed when a SSO request is initiated.</p>
-<img alt="_images/error_no_idp_options.png" src="_images/error_no_idp_options.png" style="width: 800px;" />
-</div>
-<div class="section" id="how-to-refresh-metadata-of-an-identity-provider-hosted-at-a-well-known-location">
-<h3>How to refresh metadata of an identity provider hosted at a Well-Known Location?<a class="headerlink" href="#how-to-refresh-metadata-of-an-identity-provider-hosted-at-a-well-known-location" title="Permalink to this headline">¶</a></h3>
-<p>The Well-Known Location (WKL) means that the entity Id of the provider is a
-URL at which the provider metadata are hosted.</p>
-<p>To refresh them, select the provider on the list of provider, then select in
-the menu &#8216;Update metadata&#8217;, then click on &#8216;Go&#8217;.</p>
-<img alt="_images/update_metadata.png" src="_images/update_metadata.png" style="width: 800px;" />
-<img alt="_images/update_metadata_done.png" src="_images/update_metadata_done.png" style="width: 800px;" />
-</div>
-<div class="section" id="how-to-create-in-bulk-identity-providers-with-the-sync-metadata-script">
-<h3>How to create in bulk identity providers with the sync-metadata script?<a class="headerlink" href="#how-to-create-in-bulk-identity-providers-with-the-sync-metadata-script" title="Permalink to this headline">¶</a></h3>
-<p>See the page explaining the use of the script sync-metadata <a class="reference internal" href="sync-metadata_script.html#sync-metadata-script"><em>How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?</em></a>.</p>
-</div>
-</div>
-</div>
-
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
- <h3><a href="index.html">Table Of Contents</a></h3>
- <ul>
-<li><a class="reference internal" href="#">Configure Authentic2 as a SAML2 service provider or a SAML2 proxy</a><ul>
-<li><a class="reference internal" href="#how-do-i-authenticate-against-a-third-saml2-identity-provider">How do I authenticate against a third SAML2 identity provider?</a></li>
-<li><a class="reference internal" href="#how-do-i-add-and-configure-a-saml2-identity-provider-in-authentic2">How do I add and configure a SAML2 identity provider in Authentic2?</a><ul>
-<li><a class="reference internal" href="#create-a-saml2-identity-provider-entry">Create a SAML2 identity provider entry</a></li>
-<li><a class="reference internal" href="#configure-the-saml2-identity-provider-options">Configure the SAML2 identity provider options</a></li>
-<li><a class="reference internal" href="#how-to-refresh-metadata-of-an-identity-provider-hosted-at-a-well-known-location">How to refresh metadata of an identity provider hosted at a Well-Known Location?</a></li>
-<li><a class="reference internal" href="#how-to-create-in-bulk-identity-providers-with-the-sync-metadata-script">How to create in bulk identity providers with the sync-metadata script?</a></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-
- <h4>Previous topic</h4>
- <p class="topless"><a href="config_saml2_sp.html"
- title="previous chapter">Configure SAML 2.0 service providers</a></p>
- <h4>Next topic</h4>
- <p class="topless"><a href="sync-metadata_script.html"
- title="next chapter">How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/config_saml2_idp.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="sync-metadata_script.html" title="How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?"
- >next</a> |</li>
- <li class="right" >
- <a href="config_saml2_sp.html" title="Configure SAML 2.0 service providers"
- >previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2011, Mikaël Ates.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/_build/html/config_saml2_sp.html b/doc/_build/html/config_saml2_sp.html
deleted file mode 100644
index a0ff948..0000000
--- a/doc/_build/html/config_saml2_sp.html
+++ /dev/null
@@ -1,215 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Configure SAML 2.0 service providers &mdash; Authentic2 1.9.2 documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '1.9.2',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="Authentic2 1.9.2 documentation" href="index.html" />
- <link rel="next" title="Configure Authentic2 as a SAML2 service provider or a SAML2 proxy" href="config_saml2_idp.html" />
- <link rel="prev" title="Where do I find the Authentic2 SAML2 metadata?" href="where_metadata.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="config_saml2_idp.html" title="Configure Authentic2 as a SAML2 service provider or a SAML2 proxy"
- accesskey="N">next</a> |</li>
- <li class="right" >
- <a href="where_metadata.html" title="Where do I find the Authentic2 SAML2 metadata?"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <div class="section" id="configure-saml-2-0-service-providers">
-<span id="config-saml2-sp"></span><h1>Configure SAML 2.0 service providers<a class="headerlink" href="#configure-saml-2-0-service-providers" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="how-do-i-authenticate-against-authentic2-with-a-saml2-service-provider">
-<h2>How do I authenticate against Authentic2 with a SAML2 service provider?<a class="headerlink" href="#how-do-i-authenticate-against-authentic2-with-a-saml2-service-provider" title="Permalink to this headline">¶</a></h2>
-<ol class="arabic simple">
-<li>Declare Authentic2 as a SAML2 identity provider on your SAML2 service provider using the SAML2 identity provider metadata of Authentic2.</li>
-</ol>
-<p>Go to http[s]://your.domain.com/idp/saml2/metadata</p>
-<ol class="arabic simple" start="2">
-<li>Add and configure a SAML2 service provider in Authentic2 using the metadata of the service provider.</li>
-</ol>
-</div>
-<div class="section" id="how-do-i-add-and-configure-a-saml2-service-provider-in-authentic2">
-<h2>How do I add and configure a SAML2 service provider in Authentic2?<a class="headerlink" href="#how-do-i-add-and-configure-a-saml2-service-provider-in-authentic2" title="Permalink to this headline">¶</a></h2>
-<p>You first need to create a new SAML2 service provider entry. This requires the
-SAML2 metadata of the service provider.</p>
-<p>If your service provider is Authentic2, the metadata are available at:</p>
-<blockquote>
-<div>http[s]://your.domain.com/authsaml2/metadata</div></blockquote>
-<p>See <a class="reference internal" href="where_metadata.html#where-metadata"><em>Where do I find the Authentic2 SAML2 metadata?</em></a> for more information.</p>
-<div class="section" id="create-a-saml2-service-provider-entry">
-<h3>Create a SAML2 service provider entry<a class="headerlink" href="#create-a-saml2-service-provider-entry" title="Permalink to this headline">¶</a></h3>
-<ol class="arabic">
-<li><p class="first">Go to</p>
-<blockquote>
-<div><p>http[s]://your.domain.com/admin/saml/libertyprovider/add/</p>
-</div></blockquote>
-</li>
-<li><p class="first">Fill the form fields</p>
-</li>
-</ol>
-<img alt="_images/new_saml2_sp_1.png" src="_images/new_saml2_sp_1.png" style="width: 800px;" />
-<img alt="_images/new_saml2_sp_2.png" src="_images/new_saml2_sp_2.png" style="width: 800px;" />
-<p><strong>The service provider must be enabled.</strong></p>
-<p>See below about configuring the service provider with policies:</p>
-<ul class="simple">
-<li>options of the service provider</li>
-<li>protocol policy</li>
-<li>attribute policy</li>
-</ul>
-<ol class="arabic simple" start="3">
-<li>Save</li>
-</ol>
-<img alt="_images/new_saml2_sp_saved.png" src="_images/new_saml2_sp_saved.png" style="width: 800px;" />
-</div>
-<div class="section" id="configure-the-saml2-service-provider-options">
-<h3>Configure the SAML2 service provider options<a class="headerlink" href="#configure-the-saml2-service-provider-options" title="Permalink to this headline">¶</a></h3>
-<p>The SAML2 options of the service provider are configured using sp options
-policies.</p>
-<p>See the <em>administration with policy principle</em> page <a class="reference internal" href="administration_with_policies.html#administration-with-policies"><em>How global policies are used in Authentic2 administration</em></a>.</p>
-<p>You may create a regular policy and configure your service provider to use it.</p>
-<p>Go to:</p>
-<blockquote>
-<div>http[s]://your.domain.com/admin/saml/spoptionsidppolicy/add/</div></blockquote>
-<img alt="_images/sp_options_regular.png" src="_images/sp_options_regular.png" style="width: 800px;" />
-<img alt="_images/sp_options_regular_modify_sp.png" src="_images/sp_options_regular_modify_sp.png" style="width: 800px;" />
-<p>Exemple with a policy &#8216;Default&#8217;:</p>
-<img alt="_images/sp_options_default.png" src="_images/sp_options_default.png" style="width: 800px;" />
-<img alt="_images/sp_options_default_saved.png" src="_images/sp_options_default_saved.png" style="width: 800px;" />
-<p>Exemple with a policy &#8216;All&#8217;:</p>
-<img alt="_images/sp_options_all.png" src="_images/sp_options_all.png" style="width: 800px;" />
-<p>If no policy is found for the configuration of the SAML2 options of a service
-provider, the following error is displayed when a SSO request is received.</p>
-<img alt="_images/error_no_sp_options.png" src="_images/error_no_sp_options.png" style="width: 800px;" />
-</div>
-<div class="section" id="configure-the-saml2-service-provider-protocol-options">
-<h3>Configure the SAML2 service provider protocol options<a class="headerlink" href="#configure-the-saml2-service-provider-protocol-options" title="Permalink to this headline">¶</a></h3>
-<p>This kind of policy does not use the policy management using global policies.</p>
-<p>You should use the default option except if your service provider is a
-Shibboleth service provider.</p>
-</div>
-<div class="section" id="configure-the-attribute-policy-of-the-service-provider">
-<h3>Configure the attribute policy of the service provider<a class="headerlink" href="#configure-the-attribute-policy-of-the-service-provider" title="Permalink to this headline">¶</a></h3>
-<p>See the attribute management page <a class="reference internal" href="attribute_management.html#attribute-management"><em>Attribute Management in Authentic2</em></a>.</p>
-</div>
-<div class="section" id="how-to-refresh-metadata-of-an-identity-provider-hosted-at-a-well-known-location">
-<h3>How to refresh metadata of an identity provider hosted at a Well-Known Location?<a class="headerlink" href="#how-to-refresh-metadata-of-an-identity-provider-hosted-at-a-well-known-location" title="Permalink to this headline">¶</a></h3>
-<p>The Well-Known Location (WKL) means that the entity Id of the provider is a
-URL at which the provider metadata are hosted.</p>
-<p>To refresh them, select the provider on the list of provider, then select in
-the menu &#8216;Update metadata&#8217;, then click on &#8216;Go&#8217;.</p>
-<img alt="_images/update_metadata.png" src="_images/update_metadata.png" style="width: 800px;" />
-</div>
-<div class="section" id="how-to-create-in-bulk-service-providers-with-the-sync-metadata-script">
-<h3>How to create in bulk service providers with the sync-metadata script?<a class="headerlink" href="#how-to-create-in-bulk-service-providers-with-the-sync-metadata-script" title="Permalink to this headline">¶</a></h3>
-<p>See the page explaining the use of the script sync-metadata <em class="xref std std-ref">sync-metadata_script</em>.</p>
-</div>
-</div>
-</div>
-
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
- <h3><a href="index.html">Table Of Contents</a></h3>
- <ul>
-<li><a class="reference internal" href="#">Configure SAML 2.0 service providers</a><ul>
-<li><a class="reference internal" href="#how-do-i-authenticate-against-authentic2-with-a-saml2-service-provider">How do I authenticate against Authentic2 with a SAML2 service provider?</a></li>
-<li><a class="reference internal" href="#how-do-i-add-and-configure-a-saml2-service-provider-in-authentic2">How do I add and configure a SAML2 service provider in Authentic2?</a><ul>
-<li><a class="reference internal" href="#create-a-saml2-service-provider-entry">Create a SAML2 service provider entry</a></li>
-<li><a class="reference internal" href="#configure-the-saml2-service-provider-options">Configure the SAML2 service provider options</a></li>
-<li><a class="reference internal" href="#configure-the-saml2-service-provider-protocol-options">Configure the SAML2 service provider protocol options</a></li>
-<li><a class="reference internal" href="#configure-the-attribute-policy-of-the-service-provider">Configure the attribute policy of the service provider</a></li>
-<li><a class="reference internal" href="#how-to-refresh-metadata-of-an-identity-provider-hosted-at-a-well-known-location">How to refresh metadata of an identity provider hosted at a Well-Known Location?</a></li>
-<li><a class="reference internal" href="#how-to-create-in-bulk-service-providers-with-the-sync-metadata-script">How to create in bulk service providers with the sync-metadata script?</a></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-
- <h4>Previous topic</h4>
- <p class="topless"><a href="where_metadata.html"
- title="previous chapter">Where do I find the Authentic2 SAML2 metadata?</a></p>
- <h4>Next topic</h4>
- <p class="topless"><a href="config_saml2_idp.html"
- title="next chapter">Configure Authentic2 as a SAML2 service provider or a SAML2 proxy</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/config_saml2_sp.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="config_saml2_idp.html" title="Configure Authentic2 as a SAML2 service provider or a SAML2 proxy"
- >next</a> |</li>
- <li class="right" >
- <a href="where_metadata.html" title="Where do I find the Authentic2 SAML2 metadata?"
- >previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2011, Mikaël Ates.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/_build/html/download.html b/doc/_build/html/download.html
deleted file mode 100644
index f191c74..0000000
--- a/doc/_build/html/download.html
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Download &mdash; Authentic2 1.9.2 documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '1.9.2',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="Authentic2 1.9.2 documentation" href="index.html" />
- <link rel="next" title="Installation" href="installation.html" />
- <link rel="prev" title="Features" href="features.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="installation.html" title="Installation"
- accesskey="N">next</a> |</li>
- <li class="right" >
- <a href="features.html" title="Features"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <div class="section" id="download">
-<span id="id1"></span><h1>Download<a class="headerlink" href="#download" title="Permalink to this headline">¶</a></h1>
-<ol class="arabic simple">
-<li>Pypi: <a class="reference external" href="http://pypi.python.org/pypi/authentic2/1.9.0">http://pypi.python.org/pypi/authentic2/1.9.0</a></li>
-<li>Git repository: <a class="reference external" href="http://repos.entrouvert.org/authentic.git">http://repos.entrouvert.org/authentic.git</a></li>
-<li><a class="reference external" href="http://dev.entrouvert.org/projects/authentic/repository">Browse source</a></li>
-</ol>
-</div>
-
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
- <h4>Previous topic</h4>
- <p class="topless"><a href="features.html"
- title="previous chapter">Features</a></p>
- <h4>Next topic</h4>
- <p class="topless"><a href="installation.html"
- title="next chapter">Installation</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/download.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="installation.html" title="Installation"
- >next</a> |</li>
- <li class="right" >
- <a href="features.html" title="Features"
- >previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2011, Mikaël Ates.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/_build/html/features.html b/doc/_build/html/features.html
deleted file mode 100644
index d309b82..0000000
--- a/doc/_build/html/features.html
+++ /dev/null
@@ -1,128 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Features &mdash; Authentic2 1.9.2 documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '1.9.2',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="Authentic2 1.9.2 documentation" href="index.html" />
- <link rel="next" title="Installation" href="installation.html" />
- <link rel="prev" title="Authentic2’s documentation" href="index.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="installation.html" title="Installation"
- accesskey="N">next</a> |</li>
- <li class="right" >
- <a href="index.html" title="Authentic2’s documentation"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <div class="section" id="features">
-<span id="id1"></span><h1>Features<a class="headerlink" href="#features" title="Permalink to this headline">¶</a></h1>
-<p>Authentic can authenticate users against:</p>
-<ul class="simple">
-<li>an LDAP directory,</li>
-<li>a SAML 2.0 identity provider,</li>
-<li>an OpenID identity provider,</li>
-<li>with an X509 certificate.</li>
-</ul>
-<p>Authentic can provide authentication to web applications using the following
-protocols:</p>
-<ul class="simple">
-<li>OpenID,</li>
-<li>SAML 2.0,</li>
-<li>CAS 1.0 &amp; CAS 2.0.</li>
-</ul>
-<p>Authentic can proxy authentication between any two different protocols it
-support.</p>
-</div>
-
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
- <h4>Previous topic</h4>
- <p class="topless"><a href="index.html"
- title="previous chapter">Authentic2&#8217;s documentation</a></p>
- <h4>Next topic</h4>
- <p class="topless"><a href="installation.html"
- title="next chapter">Installation</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/features.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="installation.html" title="Installation"
- >next</a> |</li>
- <li class="right" >
- <a href="index.html" title="Authentic2’s documentation"
- >previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2011, Mikaël Ates.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/_build/html/genindex.html b/doc/_build/html/genindex.html
deleted file mode 100644
index 1f56669..0000000
--- a/doc/_build/html/genindex.html
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Index &mdash; Authentic2 1.9.2 documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '1.9.2',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="Authentic2 1.9.2 documentation" href="index.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="#" title="General Index"
- accesskey="I">index</a></li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
-
-<h1 id="index">Index</h1>
-
-<div class="genindex-jumpbox">
-
-</div>
-
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-
-
-
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="#" title="General Index"
- >index</a></li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2011, Mikaël Ates.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/_build/html/index.html b/doc/_build/html/index.html
deleted file mode 100644
index f003557..0000000
--- a/doc/_build/html/index.html
+++ /dev/null
@@ -1,187 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Authentic2’s documentation &mdash; Authentic2 1.9.2 documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '1.9.2',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="Authentic2 1.9.2 documentation" href="#" />
- <link rel="next" title="Features" href="features.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="features.html" title="Features"
- accesskey="N">next</a> |</li>
- <li><a href="#">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <div class="section" id="authentic2-s-documentation">
-<h1>Authentic2&#8217;s documentation<a class="headerlink" href="#authentic2-s-documentation" title="Permalink to this headline">¶</a></h1>
-<p>Authentic2 is a versatile identity provider addressing a broad
-range of needs, from simple to advanced setups, around web authentication,
-attribute sharing, namespace mapping and authorization management.</p>
-<p>Authentic2 supports many protocols and standards, including SAML2, CAS, OpenID,
-LDAP, X509, OATH, and can bridge between them.</p>
-<p>Authentic2 is under the GNU AGPL version 3 licence.</p>
-<p>It has support for SAMLv2 thanks to <a class="reference external" href="http://lasso.entrouvert.org">Lasso</a>,
-a free (GNU GPL) implementation of the Liberty Alliance and OASIS
-specifications of SAML2, ID-FF1.2 and ID-WSF2.</p>
-<ul class="simple">
-<li><a class="reference external" href="http://dev.entrouvert.org/projects/authentic">Authentic2 project site</a></li>
-<li><a class="reference external" href="http://dev.entrouvert.org/projects/authentic/roadmap">Authentic2 roadmap</a></li>
-</ul>
-<div class="section" id="documentation-content">
-<h2>Documentation content<a class="headerlink" href="#documentation-content" title="Permalink to this headline">¶</a></h2>
-<div class="toctree-wrapper compound">
-<ul>
-<li class="toctree-l1"><a class="reference internal" href="features.html">Features</a></li>
-<li class="toctree-l1"><a class="reference internal" href="download.html">Download</a></li>
-<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="installation.html#dependencies">Dependencies</a></li>
-<li class="toctree-l2"><a class="reference internal" href="installation.html#quick-start">Quick Start</a></li>
-<li class="toctree-l2"><a class="reference internal" href="installation.html#specifying-a-different-database">Specifying a different database</a></li>
-<li class="toctree-l2"><a class="reference internal" href="installation.html#how-to-upgrade-to-a-new-version-of-authentic">How to upgrade to a new version of authentic ?</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="auth_ldap.html">Authentication with an existing LDAP directory</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="auth_ldap.html#how-to-authenticate-users-against-an-ldap-server-with-anonymous-binding">How to authenticate users against an LDAP server with anonymous binding ?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="auth_ldap.html#how-to-allow-members-of-an-ldap-group-to-manage-authentic">How to allow members of an LDAP group to manage Authentic ?</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="auth_pam.html">Authentication on Authentic2 with PAM</a></li>
-<li class="toctree-l1"><a class="reference internal" href="administration_with_policies.html">How global policies are used in Authentic2 administration</a></li>
-<li class="toctree-l1"><a class="reference internal" href="where_metadata.html">Where do I find the Authentic2 SAML2 metadata?</a></li>
-<li class="toctree-l1"><a class="reference internal" href="config_saml2_sp.html">Configure SAML 2.0 service providers</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="config_saml2_sp.html#how-do-i-authenticate-against-authentic2-with-a-saml2-service-provider">How do I authenticate against Authentic2 with a SAML2 service provider?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="config_saml2_sp.html#how-do-i-add-and-configure-a-saml2-service-provider-in-authentic2">How do I add and configure a SAML2 service provider in Authentic2?</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="config_saml2_idp.html">Configure Authentic2 as a SAML2 service provider or a SAML2 proxy</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="config_saml2_idp.html#how-do-i-authenticate-against-a-third-saml2-identity-provider">How do I authenticate against a third SAML2 identity provider?</a></li>
-<li class="toctree-l2"><a class="reference internal" href="config_saml2_idp.html#how-do-i-add-and-configure-a-saml2-identity-provider-in-authentic2">How do I add and configure a SAML2 identity provider in Authentic2?</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="sync-metadata_script.html">How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="sync-metadata_script.html#presentation">Presentation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="sync-metadata_script.html#options">Options</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="config_cas_sp.html">Configure Authentic2 as a CAS server</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="config_cas_sp.html#how-to-use-authentic2-as-a-cas-1-0-or-cas-2-0-identity-provider">How to use Authentic2 as a CAS 1.0 or CAS 2.0 identity provider ?</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="config_cas_idp.html">Configure Authentic2 as a CAS client</a></li>
-<li class="toctree-l1"><a class="reference internal" href="attribute_management.html">Attribute Management in Authentic2</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="attribute_management.html#summary">Summary</a></li>
-<li class="toctree-l2"><a class="reference internal" href="attribute_management.html#configuration">Configuration</a></li>
-<li class="toctree-l2"><a class="reference internal" href="attribute_management.html#modifying-supported-namespaces-and-attribute-name-mappings">Modifying supported namespaces and attribute name mappings</a></li>
-<li class="toctree-l2"><a class="reference internal" href="attribute_management.html#explanation-draft">Explanation (Draft)</a></li>
-</ul>
-</li>
-</ul>
-</div>
-</div>
-<div class="section" id="copyright">
-<h2>Copyright<a class="headerlink" href="#copyright" title="Permalink to this headline">¶</a></h2>
-<p>Authentic and Authentic2 are copyrighted by Entr&#8217;ouvert and are licensed through the GNU General
-Public Licence, version 2 or later. A copy of the whole license text is available in the COPYING file.</p>
-<p>The OpenID IdP originates in the project django_openid_provider by Roman
-Barczy¿ski, which is under the Apache 2.0 licence. This imply that you must
-distribute authentic2 under the AGPL3 licence when distributing this part of the
-project which is the only AGPL licence version compatible with the Apache 2.0
-licence.</p>
-</div>
-</div>
-
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
- <h3><a href="#">Table Of Contents</a></h3>
- <ul>
-<li><a class="reference internal" href="#">Authentic2&#8217;s documentation</a><ul>
-<li><a class="reference internal" href="#documentation-content">Documentation content</a><ul>
-</ul>
-</li>
-<li><a class="reference internal" href="#copyright">Copyright</a></li>
-</ul>
-</li>
-</ul>
-
- <h4>Next topic</h4>
- <p class="topless"><a href="features.html"
- title="next chapter">Features</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/index.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="features.html" title="Features"
- >next</a> |</li>
- <li><a href="#">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2011, Mikaël Ates.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/_build/html/installation.html b/doc/_build/html/installation.html
deleted file mode 100644
index 434153d..0000000
--- a/doc/_build/html/installation.html
+++ /dev/null
@@ -1,217 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Installation &mdash; Authentic2 1.9.2 documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '1.9.2',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="Authentic2 1.9.2 documentation" href="index.html" />
- <link rel="next" title="Attribute Management in Authentic2" href="attribute_management.html" />
- <link rel="prev" title="Features" href="features.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="attribute_management.html" title="Attribute Management in Authentic2"
- accesskey="N">next</a> |</li>
- <li class="right" >
- <a href="features.html" title="Features"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <div class="section" id="installation">
-<span id="id1"></span><h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="dependencies">
-<h2>Dependencies<a class="headerlink" href="#dependencies" title="Permalink to this headline">¶</a></h2>
-<p>You must install the following packages to use Authentic</p>
-<ul>
-<li><p class="first">Python Lasso binding 2.3.5:</p>
-<blockquote>
-<div><p>From sources: <a class="reference external" href="http://lasso.entrouvert.org/download">http://lasso.entrouvert.org/download</a>
-Debian based distribution: apt-get install python-lasso</p>
-</div></blockquote>
-</li>
-<li><p class="first">Django 1.3:</p>
-<blockquote>
-<div><p>From sources: <a class="reference external" href="http://www.djangoproject.com/download/1.3/tarball/">http://www.djangoproject.com/download/1.3/tarball/</a></p>
-</div></blockquote>
-</li>
-<li><p class="first">Django-registration 0.8-alpha-1:</p>
-<blockquote>
-<div><p>From sources: <a class="reference external" href="http://bitbucket.org/ubernostrum/django-registration/downloads">http://bitbucket.org/ubernostrum/django-registration/downloads</a>
-Debian based distribution: apt-get install python-django-registration</p>
-</div></blockquote>
-</li>
-<li><p class="first">Django-authopenid 0.9.6:</p>
-<blockquote>
-<div><p>From sources: <a class="reference external" href="http://bitbucket.org/benoitc/django-authopenid/downloads">http://bitbucket.org/benoitc/django-authopenid/downloads</a></p>
-</div></blockquote>
-</li>
-<li><p class="first">Django-south 0.7.3:</p>
-<blockquote>
-<div><p>From sources:: <a class="reference external" href="http://south.aeracode.org/docs/installation.html">http://south.aeracode.org/docs/installation.html</a></p>
-</div></blockquote>
-</li>
-<li><p class="first">Django-profiles 0.2:</p>
-<blockquote>
-<div><p>From sources:: <a class="reference external" href="http://pypi.python.org/pypi/django-profiles">http://pypi.python.org/pypi/django-profiles</a></p>
-</div></blockquote>
-</li>
-</ul>
-<p>You install all the django libraries quickly using pip:</p>
-<div class="highlight-python"><pre>pip install django django-profiles django-registration \
- django-debug-toolbar django-authopenid south</pre>
-</div>
-<p>or easy_install:</p>
-<div class="highlight-python"><pre>easy_install django django-profiles django-registration \
- django-debug-toolbar django-authopenid south</pre>
-</div>
-</div>
-<div class="section" id="quick-start">
-<h2>Quick Start<a class="headerlink" href="#quick-start" title="Permalink to this headline">¶</a></h2>
-<p>Then launch the following commands:</p>
-<div class="highlight-python"><pre>python manage.py syncdb --migrate
-python manage.py runserver</pre>
-</div>
-<p>You should see the following output:</p>
-<div class="highlight-python"><pre>Validating models...
-0 errors found
-
-Django version 1.2, using settings 'authentic.settings'
-Development server is running at http://127.0.0.1:8000/
-Quit the server with CONTROL-C.
-
-You can access the running application on http://127.0.0.1:8000/</pre>
-</div>
-</div>
-<div class="section" id="specifying-a-different-database">
-<h2>Specifying a different database<a class="headerlink" href="#specifying-a-different-database" title="Permalink to this headline">¶</a></h2>
-<p>This is done by modifying the DATABASES dictionary in your local_settings.py file
-(create it in Authentic project directory); for example:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="n">DATABASES</span><span class="p">[</span><span class="s">&#39;default&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
- <span class="s">&#39;ENGINE&#39;</span><span class="p">:</span> <span class="s">&#39;django.db.backends.postgresql&#39;</span><span class="p">,</span>
- <span class="s">&#39;NAME&#39;</span><span class="p">:</span> <span class="s">&#39;authentic&#39;</span><span class="p">,</span>
- <span class="s">&#39;USER&#39;</span><span class="p">:</span> <span class="s">&#39;admindb&#39;</span><span class="p">,</span>
- <span class="s">&#39;PASSWORD&#39;</span><span class="p">:</span> <span class="s">&#39;foobar&#39;</span><span class="p">,</span>
- <span class="s">&#39;HOST&#39;</span><span class="p">:</span> <span class="s">&#39;db.example.com&#39;</span><span class="p">,</span>
- <span class="s">&#39;PORT&#39;</span><span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span> <span class="c"># empty string means default value</span>
-<span class="p">}</span>
-</pre></div>
-</div>
-<p>You should refer to the Django documentation on databases settings at
-<a class="reference external" href="http://docs.djangoproject.com/en/dev/ref/settings/#databases">http://docs.djangoproject.com/en/dev/ref/settings/#databases</a> for all
-the details.</p>
-</div>
-<div class="section" id="how-to-upgrade-to-a-new-version-of-authentic">
-<h2>How to upgrade to a new version of authentic ?<a class="headerlink" href="#how-to-upgrade-to-a-new-version-of-authentic" title="Permalink to this headline">¶</a></h2>
-<p>Authentic store all its data in a relational database as specified in its
-settings.py or local_settings.py file. So in order to upgrade to a new version
-of authentic you have to update your database schema using the
-migration command — you will need to have installed the dependency django-south,
-see the beginning of this README file.:</p>
-<div class="highlight-python"><pre>python ./manage.py migrate</pre>
-</div>
-<p>Then you will need to create new tables if there are.:</p>
-<div class="highlight-python"><pre>python ./manage.py syncdb</pre>
-</div>
-</div>
-</div>
-
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
- <h3><a href="index.html">Table Of Contents</a></h3>
- <ul>
-<li><a class="reference internal" href="#">Installation</a><ul>
-<li><a class="reference internal" href="#dependencies">Dependencies</a></li>
-<li><a class="reference internal" href="#quick-start">Quick Start</a></li>
-<li><a class="reference internal" href="#specifying-a-different-database">Specifying a different database</a></li>
-<li><a class="reference internal" href="#how-to-upgrade-to-a-new-version-of-authentic">How to upgrade to a new version of authentic ?</a></li>
-</ul>
-</li>
-</ul>
-
- <h4>Previous topic</h4>
- <p class="topless"><a href="features.html"
- title="previous chapter">Features</a></p>
- <h4>Next topic</h4>
- <p class="topless"><a href="attribute_management.html"
- title="next chapter">Attribute Management in Authentic2</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/installation.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="attribute_management.html" title="Attribute Management in Authentic2"
- >next</a> |</li>
- <li class="right" >
- <a href="features.html" title="Features"
- >previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2011, Mikaël Ates.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/_build/html/objects.inv b/doc/_build/html/objects.inv
deleted file mode 100644
index b22b5b4..0000000
--- a/doc/_build/html/objects.inv
+++ /dev/null
Binary files differ
diff --git a/doc/_build/html/search.html b/doc/_build/html/search.html
deleted file mode 100644
index 92ae6ce..0000000
--- a/doc/_build/html/search.html
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Search &mdash; Authentic2 1.9.2 documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '1.9.2',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <script type="text/javascript" src="_static/searchtools.js"></script>
- <link rel="top" title="Authentic2 1.9.2 documentation" href="index.html" />
- <script type="text/javascript">
- jQuery(function() { Search.loadIndex("searchindex.js"); });
- </script>
-
-
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <h1 id="search-documentation">Search</h1>
- <div id="fallback" class="admonition warning">
- <script type="text/javascript">$('#fallback').hide();</script>
- <p>
- Please activate JavaScript to enable the search
- functionality.
- </p>
- </div>
- <p>
- From here you can search these documents. Enter your search
- words into the box below and click "search". Note that the search
- function will automatically search for all of the words. Pages
- containing fewer words won't appear in the result list.
- </p>
- <form action="" method="get">
- <input type="text" name="q" value="" />
- <input type="submit" value="search" />
- <span id="search-progress" style="padding-left: 10px"></span>
- </form>
-
- <div id="search-results">
-
- </div>
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2011, Mikaël Ates.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/_build/html/searchindex.js b/doc/_build/html/searchindex.js
deleted file mode 100644
index d3cf911..0000000
--- a/doc/_build/html/searchindex.js
+++ /dev/null
@@ -1 +0,0 @@
-Search.setIndex({objects:{},terms:{represent:8,all:[1,3,7,8,6,13],consider:8,whatev:8,consum:[],runserv:1,map_attributes_of_filtered_attribut:8,follow:[1,2,3,7,8,13,10],lookup:10,issuer:8,whose:8,authorit:6,allianc:0,depend:[0,1,8],source_filter_for_sso_from_push_sourc:8,ldapsearch:10,send:8,those:8,under:[0,10],sens:8,idp_policy_nam:7,passiv:[],sourc:[11,1,7,8],string:[1,8,10],attributesourc:8,faq:[8,10],django_openid_provid:0,account:[8,6],xmlschema:8,profile_field_nam:8,brows:11,relev:10,administr:[3,0,7,6,13],list:[3,13,8],last_nam:8,givennam:8,friendlynam:8,item:8,quick:[0,1,8],servic:[0,3,5,8,7,13,4,12],impli:0,useraliasinsourc:8,sync:[3,0,7,13],entr:0,aggreg:8,pass:6,download:[11,0,1],port:[1,12,8],append:8,even:8,index:[],what:8,"mika\u00ebl":8,section:[7,8],current:8,mathc:10,version:[0,1],sur:[],"new":[3,0,1,5,13],"public":0,liberti:0,metadata:[0,3,7,8,13,12],multisource_attribut:8,behavior:5,gener:[0,12],never:5,here:[8,10],behaviour:[],logout:[],address:0,asyncrhon:8,modifi:[0,1,8],sinc:8,toolbar:1,search:8,output_name_format:8,attribute_name_format:8,related_nam:8,behav:8,auth_ldap_server_uri:10,chang:[5,8,10],commonli:8,via:5,list_of_valu:8,direclti:8,activ:4,modul:[5,8,10],prefer:[],apt:1,friendli:8,instal:[0,1,10],select:[3,13],from:[0,1,3,4,5,8,10,12],would:10,univers:[7,8],upgrad:[0,1],next:[8,10],call:8,taken:[8,6],sesion:8,type:[7,8],tell:8,more:[3,13,10],saml:[3,0,2,8,13],source_nam:8,pam_is_superus:5,ctype:5,iso8601:8,attributedata:8,auth_ldap_group_search:10,known:[3,13,8],actual:8,sp_policy_nam:7,hold:4,auth_ldap_user_flags_by_group:10,must:[0,1,3,7,6,8,10,13],none:[8,6],endpoint:4,idp_ca:4,alia:8,setup:0,uniqu:[7,8],dev:1,send_error_and_no_attrs_if_missing_required_attr:8,descriptor:7,can:[0,1,2,7,6,5,8,4],learn:8,purpos:[8,6],def:6,auth_ldap_bind_password:10,control:1,claim:8,give:8,registr:1,share:0,indic:8,taht:8,manytomanyfield:8,tag:7,want:4,tarbal:1,alwai:8,multipl:8,anoth:8,groupofnam:10,write:8,how:[0,1,3,4,7,6,8,10,13],hot:7,attribute_value_format:8,answer:8,config:10,chri:5,updat:[3,1,7,13],x500:8,product:7,x509:[0,2],pam_is_staff:5,after:[],befor:[5,8],mai:[3,13,8],authentif:8,associ:[7,8],schema2:8,circumst:8,third:[3,0,8],bind:[0,1,8,10],author:0,credenti:5,correspond:8,element:8,inform:[3,13],environ:12,allow:[0,7,8,10],exclus:8,doesnotexist:6,nameid:[],order:1,agpl3:0,ubernostrum:1,grouofnam:10,becaus:8,through:0,wsf2:0,ticket:4,entitydescriptor:7,paramet:[7,8],group:[0,10],thank:0,polici:[0,3,7,8,6,13],byt:[],complex:10,whole:0,libertyprovid:[3,13,8],persist:8,hidden:[],main:8,them:[3,0,13],"return":[8,6],thei:8,python:[11,4,1,7,10],cpickl:8,auth:10,get_freshest_data_of_definit:8,now:[5,8],choic:8,eventu:8,syncrhon:8,name:[0,1,7,8,6,10],benoitc:1,simpl:0,authent:[0,1,2,3,4,5,8,13,10,11],pam:[0,5],token:[],each:[8,6],debug:1,found:[3,1,7,8,13],unicod:8,forward_attributes_from_pull_sourc:8,mean:[3,1,13,8],idem:8,domain:[3,13,12,8,4],map:[0,8],oasi:[0,8],continu:7,attribute_list_for_sso_from_pull_sourc:8,meta:8,get_data_of_definit:8,connect:8,extract:8,special:6,variabl:[5,12],"try":6,rfc3061:8,data_from_sourc:8,delcar:[],authnrespons:[],attributes_n:8,user_profil:8,com:[1,3,10,8,13,4,12],defualt:[],ref:1,file_nam:7,proxi:[3,0,2,8],insid:[],advanc:0,migrat:[1,4],authopenid:1,given:[7,8],free:0,standard:[0,7],base:[1,8,10],dictionari:1,put:[8,10],org:[11,1,5,8,10],asn:8,care:8,launch:1,synchron:10,expiration_data:8,refus:[],filter:8,isi:8,enforc:6,obsolet:8,charfield:8,principl:[3,13],wnielson:5,south:1,first:[3,13,8,10],origin:0,softwar:5,rang:0,add_attributes_to_respons:8,certif:2,onc:8,auth_ldap_group_typ:10,date:8,done:[1,8],blank:[8,10],custom:[],miss:8,gpl:0,differ:[3,0,1,2,8],script:[3,0,7,13],tor:8,data:[1,8],licens:0,system:[8,5,6,7],least:8,attach:[8,6],max_length:8,draft:[0,8],statement:8,licenc:0,"final":4,store:[1,8],schema:[1,8,10],xmln:8,option:[3,0,7,8,13],especi:8,namespac:[0,8],copi:[0,5],sample_polici:6,getter:8,pars:8,initi:[3,8],than:8,kind:[8,6,13],provid:[0,2,3,7,8,13,4,12],remov:[7,8],charact:8,project:[0,1],bridg:0,oath:0,sai:10,admindb:1,ani:[8,2,6],unkown:[],packag:[1,10],expir:8,have:[1,8],tabl:[4,1,10],need:[0,1,3,8,13,4],django:[1,5,8,10],engin:1,built:8,alias:8,dictionnari:8,click:[3,13],metadata_script:13,also:[8,4],without:8,take:[8,6],which:[3,0,13,8],combin:7,soap:8,compat:0,begin:1,distribut:[0,1],normal:4,attribute_nam:8,object:[8,5,6],plai:8,regular:[3,7,6,13],specifi:[0,1,7,8],alpha:1,"class":[8,10],charg:8,attributelist:8,objectclass:10,doc:1,urn:8,later:[0,8],request:[3,13,8],uri:8,doe:[7,13],inde:8,declar:[3,13,8],clean:8,databas:[0,1,4],fact:7,show:10,text:[0,8],whitelist:[],random:8,syntax:8,session:8,protocol:[0,2,8,13],shibboleth:13,find:[0,3,8,13,10,12],xml:8,fichier:[],onli:[0,8,7,6],locat:[3,13],just:8,copyright:0,delet:[3,0,7,8],forward_attributes_in_sess:8,menu:[3,13],explain:[3,7,8,13],configur:[0,3,4,7,8,6,9,10,13],apach:0,should:[1,8,6,13],dict:8,cpatur:[],ldap:[0,4,2,8,10],local:8,nearli:6,get:[1,6],groupnam:10,pypi:[11,1],soon:8,repo:11,nativ:8,sso:[3,13,8],aggegr:8,namepsac:8,any_attributes_cal:8,report:8,userattributeprofil:8,tbd:8,requir:[3,13,8],samplepolici:6,enabl:[3,13,6],pam_servic:5,method:8,reload:7,contain:[7,8,12],provier:8,grab:8,get_data_of_sourc:8,where:[3,0,12,13],summari:[0,8],respond:8,conform:8,set:[1,5,8,4],authentic2:[0,3,5,8,7,6,9,4,11,12,13],roadmap:0,see:[1,3,10,8,13,4],is_staff:[5,10],definition_nam:8,respons:8,fail:7,atle:5,misonfigur:6,nielson:5,authsaml2:[3,12,8,13],pattern:[],label:7,between:[0,2,8],"import":[3,0,7,10],entiti:[3,7,8,13],filter_source_of_filtered_attribut:8,any_object:6,attribut:[0,13,8,4],extend:8,enable_following_sample_polici:6,extens:8,french:7,distinguish:8,come:3,attributes_at_sso_polici:8,addit:8,both:5,last:8,admin:[3,13,8,10],howev:8,equal:8,against:[0,2,3,10,13,4],pambackend:5,roman:0,instanc:8,dpam:5,attrnam:8,let:10,login:[5,8,10],freshest:8,load:[7,8],simpli:8,point:[8,4],foobar:1,trust:[],assum:8,backend:[1,5,8,10],friendly_nam:8,quit:1,surnam:8,addition:8,is_superus:5,due:7,empti:1,accept:8,valu:[1,8],basic:8,quickli:1,idpoptionssppolici:[3,7],assert:8,partli:8,get_data_of_source_by_nam:8,modyf:[],present:[0,7,8],"case":[8,10],ident:[0,2,3,7,8,13,4,12],look:8,gnu:0,samlv2:[0,8],ldapbackend:10,aim:[],defin:[8,6],slo:[],get_data_of_definition_and_sourc:8,abov:4,error:[3,1,7,8,13],attributeitem:8,anonym:[0,8,10],authentication_backend:[5,10],wkl:[3,13],output_attribute_name_format:8,deliv:8,readm:1,site:0,attribute_polici:8,itself:8,sever:8,around:0,attribute_aggreg:8,libertyserviceprovid:8,"null":8,develop:1,welcom:[],grant:[],receiv:[13,8,10],parti:[],make:3,proxyfi:8,same:[3,7,8],member:[0,10],handl:[8,6],html:1,interact:8,success:8,document:[0,1,10],infer:12,complet:8,ifram:[],http:[1,3,4,7,8,5,13,10,11,12],oid:8,saml2_attribute_name_format_bas:8,openldap:[],temporari:8,user:[0,1,2,4,5,8,10],mani:[0,8],attribute_filter_for_sso_from_push_sourc:8,implement:[0,8],appropri:8,kept:8,entri:[3,13],thu:8,well:[3,13],versatil:0,exampl:[1,7,8,10],command:[1,7],thi:[0,1,3,5,6,7,8,10,13],model:[1,8],usual:[8,10],explan:[0,8],identifi:8,firstnam:8,get_data_of_definition_and_source_by_nam:8,verbose_nam:8,obtain:[],groupofnamestyp:10,yet:8,lasso:[0,1,8],web:[0,2],display_nam:8,spoptionsidppolici:[7,13],except:[8,6,13],exempl:[3,13],add:[0,3,5,8,6,10,13],valid:1,output_namespac:8,input:8,save:[3,13,8],ski:0,provide_attributes_at_sso:8,futur:8,real:[],applic:[1,2],vendor:5,advis:6,format:8,read:8,ldapsourc:8,howto:[],know:[8,10],defaut:8,load_by_d:8,part:0,password:[1,8,10],attribute_list_for_sso_from_push_sourc:8,like:8,specif:[0,8],whitespac:8,signal:8,manual:8,resolv:4,noth:8,map_attributes_from_pull_sourc:8,xmlsoap:8,necessari:[8,6,4],either:[7,8],output:[1,8],xsi:8,libertyattributemap:8,page:[3,13],www:[1,8],right:8,deal:8,groupofuniquenamestyp:10,creation:8,some:[8,6],global:[3,0,7,6,13],refresh:[3,13],syncdb:[1,4],server:[0,4,1,8,10],agpl:0,librari:1,ouvert:0,djangoproject:1,remind:8,broad:0,avoid:6,barczi:0,definit:8,per:8,load_greedi:8,content:[0,8],ff1:0,refer:[1,8,10],core:8,particular:[8,6],previou:8,run:1,groupofuniquenam:10,buro:[],view:8,scope_subtre:10,host:[3,1,12,13],expiration_d:8,repositori:11,drawn:8,appli:6,panel:[],comparison:8,about:[3,13],postgresql:1,socket:[],idp:[0,3,7,8,13,4,12],verbose_name_plur:8,mycompani:10,act:8,fals:[5,8],produc:8,trate:8,client:[0,9],thre:[],encod:8,easy_instal:1,automat:12,two:[8,2,6,10],attribute_name_in_n:8,been:8,steven:8,storag:4,your:[1,3,10,5,8,13,4,12],manag:[0,1,4,7,8,6,10,13],git:11,log:5,load_listed_attribut:8,transfer:8,support:[0,2,8,4],medatada:12,avail:[3,0,12,13],start:[0,1],reli:[],interfac:7,includ:[0,8],path_to_project:7,forward:8,load_or_create_user_profil:8,treat:8,"function":8,get_sample_polici:6,local_set:[1,10],form:[3,13,8],auth_ldap_bind_dn:10,bitbucket:[1,5],auth_ldap_user_search:10,link:8,attributevalu:8,line:10,"true":[8,5,6,4],pull:8,made:8,utf:8,"default":[1,3,5,8,7,6,13],access:[1,4],displai:[3,13,8],url:[3,12,13,10],below:[3,13],entrouvert:[11,1],limit:8,foreignkei:8,ns_name:8,booleanfield:8,email:[],expect:[8,6],featur:[0,2],uid:10,creat:[0,1,3,5,6,7,8,4,13],french_feder:7,dure:8,repres:8,weston:5,intro:8,exist:[0,8,7,6,10],nameformat:8,file:[0,1,7,8,5,10],pip:[1,10],saml2:[0,3,7,8,13,12],fill:[3,13,8],attributepolici:8,successfulli:5,encrypt:[],when:[0,3,7,8,6,13],detail:1,virtual:[],field:[3,13,8],other:[8,6],role:8,pour:[],branch:10,test:6,you:[0,1,3,10,5,13,4],interc:8,openid:[0,2],django_auth_ldap:10,relat:[1,6,4],exp:8,multivalu:8,why:8,aeracod:1,consid:8,debian:1,feder:7,bulk:[3,0,7,13],conjointli:8,directori:[0,1,2,10,8,4],rule:8,ignor:7,rememb:[],push:8,listed_attributes_cal:8,profil:[1,8]},objtypes:{},titles:["Authentic2&#8217;s documentation","Installation","Features","Configure Authentic2 as a SAML2 service provider or a SAML2 proxy","Configure Authentic2 as a CAS server","Authentication on Authentic2 with PAM","How global policies are used in Authentic2 administration","How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?","Attribute Management in Authentic2","Configure Authentic2 as a CAS client","Authentication with an existing LDAP directory","Download","Where do I find the Authentic2 SAML2 metadata?","Configure SAML 2.0 service providers"],objnames:{},filenames:["index","installation","features","config_saml2_idp","config_cas_sp","auth_pam","administration_with_policies","sync-metadata_script","attribute_management","config_cas_idp","auth_ldap","download","where_metadata","config_saml2_sp"]}) \ No newline at end of file
diff --git a/doc/_build/html/sync-metadata_script.html b/doc/_build/html/sync-metadata_script.html
deleted file mode 100644
index 6a31390..0000000
--- a/doc/_build/html/sync-metadata_script.html
+++ /dev/null
@@ -1,207 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script? &mdash; Authentic2 1.9.2 documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '1.9.2',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="Authentic2 1.9.2 documentation" href="index.html" />
- <link rel="next" title="Configure Authentic2 as a CAS server" href="config_cas_sp.html" />
- <link rel="prev" title="Configure Authentic2 as a SAML2 service provider or a SAML2 proxy" href="config_saml2_idp.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="config_cas_sp.html" title="Configure Authentic2 as a CAS server"
- accesskey="N">next</a> |</li>
- <li class="right" >
- <a href="config_saml2_idp.html" title="Configure Authentic2 as a SAML2 service provider or a SAML2 proxy"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <div class="section" id="how-to-create-import-and-delete-in-bulk-saml2-identity-and-service-providers-with-the-sync-metadata-script">
-<span id="sync-metadata-script"></span><h1>How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?<a class="headerlink" href="#how-to-create-import-and-delete-in-bulk-saml2-identity-and-service-providers-with-the-sync-metadata-script" title="Permalink to this headline">¶</a></h1>
-<p>This section explains hot to use the script sync-metadata.</p>
-<div class="section" id="presentation">
-<h2>Presentation<a class="headerlink" href="#presentation" title="Permalink to this headline">¶</a></h2>
-<p>This script allows to create/import and deleted in bulk SAML2 identity and
-service providers using standard SAML2 metadata files containing entity
-descriptors.</p>
-<p>An example of such a file used in production is the global metadata file of
-the identity federation of French universities that can be found at <a class="reference external" href="http://">http://</a>...</p>
-<p>Use the following command:</p>
-<div class="highlight-python"><pre>path_to_project/authentic2$ python manage.py sync-metadata file_name [options]</pre>
-</div>
-</div>
-<div class="section" id="options">
-<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
-<ul>
-<li><p class="first">idp</p>
-<blockquote>
-<div><p>Load only identity providers of the metadata file.</p>
-</div></blockquote>
-</li>
-<li><p class="first">sp</p>
-<blockquote>
-<div><p>Load only service providers of the metadata file.</p>
-</div></blockquote>
-</li>
-<li><p class="first">source</p>
-<blockquote>
-<div><p>Used to tag all imported providers with a label. This option is used to
-metadata reloading and deletion in bulk.</p>
-<p>Reloading a metadata file, when a provider with same entity is found, it is
-updated. If a provider in the metadata file does not exist it is created.
-If a provider exists in the system but not in the metadata file, it is
-removed.</p>
-<p><strong>For reloading, a source can only be associated with a unique metadata
-file. This is due to the fact that all providers of a source not found in
-the metadata file are removed.</strong></p>
-</div></blockquote>
-</li>
-</ul>
-<div class="highlight-python"><pre>path_to_project/authentic2$ python manage.py sync-metadata file_name --source=french_federation</pre>
-</div>
-<ul>
-<li><p class="first">sp-policy</p>
-<blockquote>
-<div><p>To configure the SAML2 parameters of service providers imported with the
-script, a policy of type SPOptionsIdPPolicy must be created in the
-the administration interface.
-Either it is a global policy &#8216;Default&#8217; or &#8216;All&#8217; or it is a regular policy.
-If it is a regular policy, the policy name can be specified in parameter
-of the script with this option.
-The policy is then associated to all service providers created.</p>
-</div></blockquote>
-</li>
-</ul>
-<div class="highlight-python"><pre>path_to_project/authentic2$ python manage.py sync-metadata file_name --sp-policy=sp_policy_name</pre>
-</div>
-<ul>
-<li><p class="first">idp-policy</p>
-<blockquote>
-<div><p>To configure the SAML2 parameters of identity providers imported with the
-script, a policy of type IdPOptionsSPPolicy must be created in the
-the administration interface.
-Either it is a global policy &#8216;Default&#8217; or &#8216;All&#8217; or it is a regular policy.
-If it is a regular policy, the policy name can be specified in parameter
-of the script with this option.
-The policy is then associated to all service providers created.</p>
-</div></blockquote>
-</li>
-</ul>
-<div class="highlight-python"><pre>path_to_project/authentic2$ python manage.py sync-metadata file_name --idp-policy=idp_policy_name</pre>
-</div>
-<ul>
-<li><p class="first">delete</p>
-<blockquote>
-<div><p>With no options, all providers are deleted.</p>
-<p>With the source option, only providers with the source name given are deleted.</p>
-<p><strong>This option can not be combined with options idp and sp.</strong></p>
-</div></blockquote>
-</li>
-<li><p class="first">ignore-errors</p>
-<blockquote>
-<div><p>If loading of one EntityDescriptor fails, continue loading</p>
-</div></blockquote>
-</li>
-</ul>
-</div>
-</div>
-
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
- <h3><a href="index.html">Table Of Contents</a></h3>
- <ul>
-<li><a class="reference internal" href="#">How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?</a><ul>
-<li><a class="reference internal" href="#presentation">Presentation</a></li>
-<li><a class="reference internal" href="#options">Options</a></li>
-</ul>
-</li>
-</ul>
-
- <h4>Previous topic</h4>
- <p class="topless"><a href="config_saml2_idp.html"
- title="previous chapter">Configure Authentic2 as a SAML2 service provider or a SAML2 proxy</a></p>
- <h4>Next topic</h4>
- <p class="topless"><a href="config_cas_sp.html"
- title="next chapter">Configure Authentic2 as a CAS server</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/sync-metadata_script.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="config_cas_sp.html" title="Configure Authentic2 as a CAS server"
- >next</a> |</li>
- <li class="right" >
- <a href="config_saml2_idp.html" title="Configure Authentic2 as a SAML2 service provider or a SAML2 proxy"
- >previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2011, Mikaël Ates.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/_build/html/where_metadata.html b/doc/_build/html/where_metadata.html
deleted file mode 100644
index 854d5cf..0000000
--- a/doc/_build/html/where_metadata.html
+++ /dev/null
@@ -1,121 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Where do I find the Authentic2 SAML2 metadata? &mdash; Authentic2 1.9.2 documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '1.9.2',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="Authentic2 1.9.2 documentation" href="index.html" />
- <link rel="next" title="Configure SAML 2.0 service providers" href="config_saml2_sp.html" />
- <link rel="prev" title="How global policies are used in Authentic2 administration" href="administration_with_policies.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="config_saml2_sp.html" title="Configure SAML 2.0 service providers"
- accesskey="N">next</a> |</li>
- <li class="right" >
- <a href="administration_with_policies.html" title="How global policies are used in Authentic2 administration"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <div class="section" id="where-do-i-find-the-authentic2-saml2-metadata">
-<span id="where-metadata"></span><h1>Where do I find the Authentic2 SAML2 metadata?<a class="headerlink" href="#where-do-i-find-the-authentic2-saml2-metadata" title="Permalink to this headline">¶</a></h1>
-<p>The SAML2 metadata are automatically generated.</p>
-<p><strong>Authentic2 will infer from environment variables the host and port to
-generate the URLs contained in the medatada.</strong></p>
-<p>The metadata of Authentic2 SAML2 identity provider are available at:</p>
-<blockquote>
-<div>http[s]://your.domain.com/idp/saml2/metadata</div></blockquote>
-<p>The metadata of Authentic2 SAML2 service provider are available at:</p>
-<blockquote>
-<div>http[s]://your.domain.com/authsaml2/metadata</div></blockquote>
-</div>
-
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
- <h4>Previous topic</h4>
- <p class="topless"><a href="administration_with_policies.html"
- title="previous chapter">How global policies are used in Authentic2 administration</a></p>
- <h4>Next topic</h4>
- <p class="topless"><a href="config_saml2_sp.html"
- title="next chapter">Configure SAML 2.0 service providers</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/where_metadata.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="config_saml2_sp.html" title="Configure SAML 2.0 service providers"
- >next</a> |</li>
- <li class="right" >
- <a href="administration_with_policies.html" title="How global policies are used in Authentic2 administration"
- >previous</a> |</li>
- <li><a href="index.html">Authentic2 1.9.2 documentation</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2011, Mikaël Ates.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/_build/latex/Authentic2.aux b/doc/_build/latex/Authentic2.aux
deleted file mode 100644
index 41e7b21..0000000
--- a/doc/_build/latex/Authentic2.aux
+++ /dev/null
@@ -1,173 +0,0 @@
-\relax
-\ifx\hyper@anchor\@undefined
-\global \let \oldcontentsline\contentsline
-\gdef \contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
-\global \let \oldnewlabel\newlabel
-\gdef \newlabel#1#2{\newlabelxx{#1}#2}
-\gdef \newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
-\AtEndDocument{\let \contentsline\oldcontentsline
-\let \newlabel\oldnewlabel}
-\else
-\global \let \hyper@last\relax
-\fi
-
-\select@language{english}
-\@writefile{toc}{\select@language{english}}
-\@writefile{lof}{\select@language{english}}
-\@writefile{lot}{\select@language{english}}
-\newlabel{index::doc}{{}{1}{\relax }{section*.2}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {1}Documentation content}{3}{chapter.1}}
-\@writefile{lof}{\addvspace {10\p@ }}
-\@writefile{lot}{\addvspace {10\p@ }}
-\newlabel{index:authentic2-s-documentation}{{1}{3}{Documentation content\relax }{chapter.1}{}}
-\newlabel{index:documentation-content}{{1}{3}{Documentation content\relax }{chapter.1}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {1.1}Features}{3}{section.1.1}}
-\newlabel{features::doc}{{1.1}{3}{Features\relax }{section.1.1}{}}
-\newlabel{features:features}{{1.1}{3}{Features\relax }{section.1.1}{}}
-\newlabel{features:id1}{{1.1}{3}{Features\relax }{section.1.1}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {1.2}Download}{3}{section.1.2}}
-\newlabel{download:download}{{1.2}{3}{Download\relax }{section.1.2}{}}
-\newlabel{download::doc}{{1.2}{3}{Download\relax }{section.1.2}{}}
-\newlabel{download:id1}{{1.2}{3}{Download\relax }{section.1.2}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {1.3}Installation}{3}{section.1.3}}
-\newlabel{installation:installation}{{1.3}{3}{Installation\relax }{section.1.3}{}}
-\newlabel{installation::doc}{{1.3}{3}{Installation\relax }{section.1.3}{}}
-\newlabel{installation:id1}{{1.3}{3}{Installation\relax }{section.1.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.1}Dependencies}{3}{subsection.1.3.1}}
-\newlabel{installation:dependencies}{{1.3.1}{3}{Dependencies\relax }{subsection.1.3.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.2}Quick Start}{4}{subsection.1.3.2}}
-\newlabel{installation:quick-start}{{1.3.2}{4}{Quick Start\relax }{subsection.1.3.2}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.3}Specifying a different database}{4}{subsection.1.3.3}}
-\newlabel{installation:specifying-a-different-database}{{1.3.3}{4}{Specifying a different database\relax }{subsection.1.3.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.4}How to upgrade to a new version of authentic ?}{5}{subsection.1.3.4}}
-\newlabel{installation:how-to-upgrade-to-a-new-version-of-authentic}{{1.3.4}{5}{How to upgrade to a new version of authentic ?\relax }{subsection.1.3.4}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {1.4}Authentication with an existing LDAP directory}{5}{section.1.4}}
-\newlabel{auth_ldap:auth-ldap}{{1.4}{5}{Authentication with an existing LDAP directory\relax }{section.1.4}{}}
-\newlabel{auth_ldap:authentication-with-an-existing-ldap-directory}{{1.4}{5}{Authentication with an existing LDAP directory\relax }{section.1.4}{}}
-\newlabel{auth_ldap::doc}{{1.4}{5}{Authentication with an existing LDAP directory\relax }{section.1.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.4.1}How to authenticate users against an LDAP server with anonymous binding ?}{5}{subsection.1.4.1}}
-\newlabel{auth_ldap:how-to-authenticate-users-against-an-ldap-server-with-anonymous-binding}{{1.4.1}{5}{How to authenticate users against an LDAP server with anonymous binding ?\relax }{subsection.1.4.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.4.2}How to allow members of an LDAP group to manage Authentic ?}{5}{subsection.1.4.2}}
-\newlabel{auth_ldap:how-to-allow-members-of-an-ldap-group-to-manage-authentic}{{1.4.2}{5}{How to allow members of an LDAP group to manage Authentic ?\relax }{subsection.1.4.2}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {1.5}Authentication on Authentic2 with PAM}{6}{section.1.5}}
-\newlabel{auth_pam:authentication-on-authentic2-with-pam}{{1.5}{6}{Authentication on Authentic2 with PAM\relax }{section.1.5}{}}
-\newlabel{auth_pam:auth-pam}{{1.5}{6}{Authentication on Authentic2 with PAM\relax }{section.1.5}{}}
-\newlabel{auth_pam::doc}{{1.5}{6}{Authentication on Authentic2 with PAM\relax }{section.1.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {1.6}How global policies are used in Authentic2 administration}{6}{section.1.6}}
-\newlabel{administration_with_policies:how-global-policies-are-used-in-authentic2-administration}{{1.6}{6}{How global policies are used in Authentic2 administration\relax }{section.1.6}{}}
-\newlabel{administration_with_policies:administration-with-policies}{{1.6}{6}{How global policies are used in Authentic2 administration\relax }{section.1.6}{}}
-\newlabel{administration_with_policies::doc}{{1.6}{6}{How global policies are used in Authentic2 administration\relax }{section.1.6}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {1.7}Where do I find the Authentic2 SAML2 metadata?}{7}{section.1.7}}
-\newlabel{where_metadata:where-do-i-find-the-authentic2-saml2-metadata}{{1.7}{7}{Where do I find the Authentic2 SAML2 metadata?\relax }{section.1.7}{}}
-\newlabel{where_metadata:where-metadata}{{1.7}{7}{Where do I find the Authentic2 SAML2 metadata?\relax }{section.1.7}{}}
-\newlabel{where_metadata::doc}{{1.7}{7}{Where do I find the Authentic2 SAML2 metadata?\relax }{section.1.7}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {1.8}Configure SAML 2.0 service providers}{7}{section.1.8}}
-\newlabel{config_saml2_sp:configure-saml-2-0-service-providers}{{1.8}{7}{Configure SAML 2.0 service providers\relax }{section.1.8}{}}
-\newlabel{config_saml2_sp::doc}{{1.8}{7}{Configure SAML 2.0 service providers\relax }{section.1.8}{}}
-\newlabel{config_saml2_sp:config-saml2-sp}{{1.8}{7}{Configure SAML 2.0 service providers\relax }{section.1.8}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.8.1}How do I authenticate against Authentic2 with a SAML2 service provider?}{7}{subsection.1.8.1}}
-\newlabel{config_saml2_sp:how-do-i-authenticate-against-authentic2-with-a-saml2-service-provider}{{1.8.1}{7}{How do I authenticate against Authentic2 with a SAML2 service provider?\relax }{subsection.1.8.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.8.2}How do I add and configure a SAML2 service provider in Authentic2?}{7}{subsection.1.8.2}}
-\newlabel{config_saml2_sp:how-do-i-add-and-configure-a-saml2-service-provider-in-authentic2}{{1.8.2}{7}{How do I add and configure a SAML2 service provider in Authentic2?\relax }{subsection.1.8.2}{}}
-\@writefile{toc}{\contentsline {subsubsection}{Create a SAML2 service provider entry}{8}{subsubsection*.3}}
-\newlabel{config_saml2_sp:create-a-saml2-service-provider-entry}{{1.8.2}{8}{Create a SAML2 service provider entry\relax }{subsubsection*.3}{}}
-\@writefile{toc}{\contentsline {subsubsection}{Configure the SAML2 service provider options}{9}{subsubsection*.4}}
-\newlabel{config_saml2_sp:configure-the-saml2-service-provider-options}{{1.8.2}{9}{Configure the SAML2 service provider options\relax }{subsubsection*.4}{}}
-\@writefile{toc}{\contentsline {subsubsection}{Configure the SAML2 service provider protocol options}{13}{subsubsection*.5}}
-\newlabel{config_saml2_sp:configure-the-saml2-service-provider-protocol-options}{{1.8.2}{13}{Configure the SAML2 service provider protocol options\relax }{subsubsection*.5}{}}
-\@writefile{toc}{\contentsline {subsubsection}{Configure the attribute policy of the service provider}{13}{subsubsection*.6}}
-\newlabel{config_saml2_sp:configure-the-attribute-policy-of-the-service-provider}{{1.8.2}{13}{Configure the attribute policy of the service provider\relax }{subsubsection*.6}{}}
-\@writefile{toc}{\contentsline {subsubsection}{How to refresh metadata of an identity provider hosted at a Well-Known Location?}{13}{subsubsection*.7}}
-\newlabel{config_saml2_sp:how-to-refresh-metadata-of-an-identity-provider-hosted-at-a-well-known-location}{{1.8.2}{13}{How to refresh metadata of an identity provider hosted at a Well-Known Location?\relax }{subsubsection*.7}{}}
-\@writefile{toc}{\contentsline {subsubsection}{How to create in bulk service providers with the sync-metadata script?}{14}{subsubsection*.8}}
-\newlabel{config_saml2_sp:how-to-create-in-bulk-service-providers-with-the-sync-metadata-script}{{1.8.2}{14}{How to create in bulk service providers with the sync-metadata script?\relax }{subsubsection*.8}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {1.9}Configure Authentic2 as a SAML2 service provider or a SAML2 proxy}{14}{section.1.9}}
-\newlabel{config_saml2_idp:config-saml2-idp}{{1.9}{14}{Configure Authentic2 as a SAML2 service provider or a SAML2 proxy\relax }{section.1.9}{}}
-\newlabel{config_saml2_idp::doc}{{1.9}{14}{Configure Authentic2 as a SAML2 service provider or a SAML2 proxy\relax }{section.1.9}{}}
-\newlabel{config_saml2_idp:configure-authentic2-as-a-saml2-service-provider-or-a-saml2-proxy}{{1.9}{14}{Configure Authentic2 as a SAML2 service provider or a SAML2 proxy\relax }{section.1.9}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.9.1}How do I authenticate against a third SAML2 identity provider?}{14}{subsection.1.9.1}}
-\newlabel{config_saml2_idp:how-do-i-authenticate-against-a-third-saml2-identity-provider}{{1.9.1}{14}{How do I authenticate against a third SAML2 identity provider?\relax }{subsection.1.9.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.9.2}How do I add and configure a SAML2 identity provider in Authentic2?}{14}{subsection.1.9.2}}
-\newlabel{config_saml2_idp:how-do-i-add-and-configure-a-saml2-identity-provider-in-authentic2}{{1.9.2}{14}{How do I add and configure a SAML2 identity provider in Authentic2?\relax }{subsection.1.9.2}{}}
-\@writefile{toc}{\contentsline {subsubsection}{Create a SAML2 identity provider entry}{14}{subsubsection*.9}}
-\newlabel{config_saml2_idp:create-a-saml2-identity-provider-entry}{{1.9.2}{14}{Create a SAML2 identity provider entry\relax }{subsubsection*.9}{}}
-\@writefile{toc}{\contentsline {subsubsection}{Configure the SAML2 identity provider options}{16}{subsubsection*.10}}
-\newlabel{config_saml2_idp:configure-the-saml2-identity-provider-options}{{1.9.2}{16}{Configure the SAML2 identity provider options\relax }{subsubsection*.10}{}}
-\@writefile{toc}{\contentsline {subsubsection}{How to refresh metadata of an identity provider hosted at a Well-Known Location?}{20}{subsubsection*.11}}
-\newlabel{config_saml2_idp:how-to-refresh-metadata-of-an-identity-provider-hosted-at-a-well-known-location}{{1.9.2}{20}{How to refresh metadata of an identity provider hosted at a Well-Known Location?\relax }{subsubsection*.11}{}}
-\@writefile{toc}{\contentsline {subsubsection}{How to create in bulk identity providers with the sync-metadata script?}{21}{subsubsection*.12}}
-\newlabel{config_saml2_idp:how-to-create-in-bulk-identity-providers-with-the-sync-metadata-script}{{1.9.2}{21}{How to create in bulk identity providers with the sync-metadata script?\relax }{subsubsection*.12}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {1.10}How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?}{21}{section.1.10}}
-\newlabel{sync-metadata_script:how-to-create-import-and-delete-in-bulk-saml2-identity-and-service-providers-with-the-sync-metadata-script}{{1.10}{21}{How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?\relax }{section.1.10}{}}
-\newlabel{sync-metadata_script:sync-metadata-script}{{1.10}{21}{How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?\relax }{section.1.10}{}}
-\newlabel{sync-metadata_script::doc}{{1.10}{21}{How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?\relax }{section.1.10}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.10.1}Presentation}{21}{subsection.1.10.1}}
-\newlabel{sync-metadata_script:presentation}{{1.10.1}{21}{Presentation\relax }{subsection.1.10.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.10.2}Options}{21}{subsection.1.10.2}}
-\newlabel{sync-metadata_script:options}{{1.10.2}{21}{Options\relax }{subsection.1.10.2}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {1.11}Configure Authentic2 as a CAS server}{22}{section.1.11}}
-\newlabel{config_cas_sp:configure-authentic2-as-a-cas-server}{{1.11}{22}{Configure Authentic2 as a CAS server\relax }{section.1.11}{}}
-\newlabel{config_cas_sp::doc}{{1.11}{22}{Configure Authentic2 as a CAS server\relax }{section.1.11}{}}
-\newlabel{config_cas_sp:config-cas-sp}{{1.11}{22}{Configure Authentic2 as a CAS server\relax }{section.1.11}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.11.1}How to use Authentic2 as a CAS 1.0 or CAS 2.0 identity provider ?}{22}{subsection.1.11.1}}
-\newlabel{config_cas_sp:how-to-use-authentic2-as-a-cas-1-0-or-cas-2-0-identity-provider}{{1.11.1}{22}{How to use Authentic2 as a CAS 1.0 or CAS 2.0 identity provider ?\relax }{subsection.1.11.1}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {1.12}Configure Authentic2 as a CAS client}{22}{section.1.12}}
-\newlabel{config_cas_idp::doc}{{1.12}{22}{Configure Authentic2 as a CAS client\relax }{section.1.12}{}}
-\newlabel{config_cas_idp:configure-authentic2-as-a-cas-client}{{1.12}{22}{Configure Authentic2 as a CAS client\relax }{section.1.12}{}}
-\newlabel{config_cas_idp:config-cas-idp}{{1.12}{22}{Configure Authentic2 as a CAS client\relax }{section.1.12}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {1.13}Attribute Management in Authentic2}{22}{section.1.13}}
-\newlabel{attribute_management:attribute-management}{{1.13}{22}{Attribute Management in Authentic2\relax }{section.1.13}{}}
-\newlabel{attribute_management:attribute-management-in-authentic2}{{1.13}{22}{Attribute Management in Authentic2\relax }{section.1.13}{}}
-\newlabel{attribute_management::doc}{{1.13}{22}{Attribute Management in Authentic2\relax }{section.1.13}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.13.1}Summary}{22}{subsection.1.13.1}}
-\newlabel{attribute_management:summary}{{1.13.1}{22}{Summary\relax }{subsection.1.13.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.13.2}Configuration}{23}{subsection.1.13.2}}
-\newlabel{attribute_management:configuration}{{1.13.2}{23}{Configuration\relax }{subsection.1.13.2}{}}
-\@writefile{toc}{\contentsline {subsubsection}{Configure sources of attributes}{23}{subsubsection*.13}}
-\newlabel{attribute_management:configure-sources-of-attributes}{{1.13.2}{23}{Configure sources of attributes\relax }{subsubsection*.13}{}}
-\@writefile{toc}{\contentsline {paragraph}{Declare the Django profile source}{23}{paragraph*.14}}
-\newlabel{attribute_management:declare-the-django-profile-source}{{1.13.2}{23}{Declare the Django profile source\relax }{paragraph*.14}{}}
-\@writefile{toc}{\contentsline {paragraph}{Add an LDAP Source}{24}{paragraph*.15}}
-\newlabel{attribute_management:add-an-ldap-source}{{1.13.2}{24}{Add an LDAP Source\relax }{paragraph*.15}{}}
-\@writefile{toc}{\contentsline {paragraph}{Manage user distinguished names in LDAP directories}{25}{paragraph*.16}}
-\newlabel{attribute_management:manage-user-distinguished-names-in-ldap-directories}{{1.13.2}{25}{Manage user distinguished names in LDAP directories\relax }{paragraph*.16}{}}
-\@writefile{toc}{\contentsline {subsubsection}{Configure attributes pushed to SAML2 service providers in SSO response}{25}{subsubsection*.17}}
-\newlabel{attribute_management:configure-attributes-pushed-to-saml2-service-providers-in-sso-response}{{1.13.2}{25}{Configure attributes pushed to SAML2 service providers in SSO response\relax }{subsubsection*.17}{}}
-\@writefile{toc}{\contentsline {paragraph}{Create attribute items}{26}{paragraph*.18}}
-\newlabel{attribute_management:create-attribute-items}{{1.13.2}{26}{Create attribute items\relax }{paragraph*.18}{}}
-\@writefile{toc}{\contentsline {paragraph}{Create a named list of attribute items}{26}{paragraph*.19}}
-\newlabel{attribute_management:create-a-named-list-of-attribute-items}{{1.13.2}{26}{Create a named list of attribute items\relax }{paragraph*.19}{}}
-\@writefile{toc}{\contentsline {paragraph}{Create or modify an attribute policy}{27}{paragraph*.20}}
-\newlabel{attribute_management:create-or-modify-an-attribute-policy}{{1.13.2}{27}{Create or modify an attribute policy\relax }{paragraph*.20}{}}
-\@writefile{toc}{\contentsline {paragraph}{Associate the policy to a service provider}{29}{paragraph*.21}}
-\newlabel{attribute_management:associate-the-policy-to-a-service-provider}{{1.13.2}{29}{Associate the policy to a service provider\relax }{paragraph*.21}{}}
-\@writefile{toc}{\contentsline {subsubsection}{Handle attributes provided by other Identity providers, proxy attributes}{30}{subsubsection*.22}}
-\newlabel{attribute_management:handle-attributes-provided-by-other-identity-providers-proxy-attributes}{{1.13.2}{30}{Handle attributes provided by other Identity providers, proxy attributes\relax }{subsubsection*.22}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.13.3}Modifying supported namespaces and attribute name mappings}{30}{subsection.1.13.3}}
-\newlabel{attribute_management:modifying-supported-namespaces-and-attribute-name-mappings}{{1.13.3}{30}{Modifying supported namespaces and attribute name mappings\relax }{subsection.1.13.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.13.4}Explanation (Draft)}{30}{subsection.1.13.4}}
-\newlabel{attribute_management:explanation-draft}{{1.13.4}{30}{Explanation (Draft)\relax }{subsection.1.13.4}{}}
-\@writefile{toc}{\contentsline {subsubsection}{Attribute aggegrator module}{30}{subsubsection*.23}}
-\newlabel{attribute_management:attribute-aggegrator-module}{{1.13.4}{30}{Attribute aggegrator module\relax }{subsubsection*.23}{}}
-\@writefile{toc}{\contentsline {paragraph}{Intro}{30}{paragraph*.24}}
-\newlabel{attribute_management:intro}{{1.13.4}{30}{Intro\relax }{paragraph*.24}{}}
-\@writefile{toc}{\contentsline {paragraph}{FAQ}{31}{paragraph*.25}}
-\newlabel{attribute_management:faq}{{1.13.4}{31}{FAQ\relax }{paragraph*.25}{}}
-\@writefile{toc}{\contentsline {paragraph}{Quick explanation}{31}{paragraph*.26}}
-\newlabel{attribute_management:quick-explanation}{{1.13.4}{31}{Quick explanation\relax }{paragraph*.26}{}}
-\@writefile{toc}{\contentsline {paragraph}{The model \emph {UserAttributeProfile}}{32}{paragraph*.27}}
-\newlabel{attribute_management:the-model-userattributeprofile}{{1.13.4}{32}{The model \emph {UserAttributeProfile}\relax }{paragraph*.27}{}}
-\@writefile{toc}{\contentsline {subsubsection}{SAML2 attribute representation in assertions}{33}{subsubsection*.28}}
-\newlabel{attribute_management:saml2-attribute-representation-in-assertions}{{1.13.4}{33}{SAML2 attribute representation in assertions\relax }{subsubsection*.28}{}}
-\@writefile{toc}{\contentsline {paragraph}{BASIC}{33}{paragraph*.29}}
-\newlabel{attribute_management:basic}{{1.13.4}{33}{BASIC\relax }{paragraph*.29}{}}
-\@writefile{toc}{\contentsline {paragraph}{X.500/LDAP Attribute Profile (URI)}{33}{paragraph*.30}}
-\newlabel{attribute_management:x-500-ldap-attribute-profile-uri}{{1.13.4}{33}{X.500/LDAP Attribute Profile (URI)\relax }{paragraph*.30}{}}
-\@writefile{toc}{\contentsline {subsubsection}{When authentic 2 deals with attributes and needs mapping?}{34}{subsubsection*.31}}
-\newlabel{attribute_management:when-authentic-2-deals-with-attributes-and-needs-mapping}{{1.13.4}{34}{When authentic 2 deals with attributes and needs mapping?\relax }{subsubsection*.31}{}}
-\@writefile{toc}{\contentsline {paragraph}{When Authentic2 behaves as an attribute provider at SSO login}{34}{paragraph*.32}}
-\newlabel{attribute_management:when-authentic2-behaves-as-an-attribute-provider-at-sso-login}{{1.13.4}{34}{When Authentic2 behaves as an attribute provider at SSO login\relax }{paragraph*.32}{}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {2}Copyright}{39}{chapter.2}}
-\@writefile{lof}{\addvspace {10\p@ }}
-\@writefile{lot}{\addvspace {10\p@ }}
-\newlabel{index:copyright}{{2}{39}{Copyright\relax }{chapter.2}{}}
diff --git a/doc/_build/latex/Authentic2.idx b/doc/_build/latex/Authentic2.idx
deleted file mode 100644
index e69de29..0000000
--- a/doc/_build/latex/Authentic2.idx
+++ /dev/null
diff --git a/doc/_build/latex/Authentic2.ilg b/doc/_build/latex/Authentic2.ilg
deleted file mode 100644
index c5f3bf8..0000000
--- a/doc/_build/latex/Authentic2.ilg
+++ /dev/null
@@ -1,5 +0,0 @@
-This is makeindex, version 2.15 [TeX Live 2009] (kpathsea + Thai support).
-Scanning style file ./python.ist......done (6 attributes redefined, 0 ignored).
-Scanning input file Authentic2.idx...done (0 entries accepted, 0 rejected).
-Nothing written in Authentic2.ind.
-Transcript written in Authentic2.ilg.
diff --git a/doc/_build/latex/Authentic2.ind b/doc/_build/latex/Authentic2.ind
deleted file mode 100644
index e69de29..0000000
--- a/doc/_build/latex/Authentic2.ind
+++ /dev/null
diff --git a/doc/_build/latex/Authentic2.log b/doc/_build/latex/Authentic2.log
deleted file mode 100644
index 44c9545..0000000
--- a/doc/_build/latex/Authentic2.log
+++ /dev/null
@@ -1,1181 +0,0 @@
-This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) (format=pdflatex 2011.10.17) 20 OCT 2011 10:01
-entering extended mode
- %&-line parsing enabled.
-**Authentic2.tex
-(./Authentic2.tex
-LaTeX2e <2009/09/24>
-Babel <v3.8l> and hyphenation patterns for english, usenglishmax, dumylang, noh
-yphenation, french, basque, loaded.
-(./sphinxmanual.cls
-Document Class: sphinxmanual 2009/06/02 Document class (Sphinx manual)
-(/usr/share/texmf-texlive/tex/latex/base/report.cls
-Document Class: report 2007/10/19 v1.4h Standard LaTeX document class
-(/usr/share/texmf-texlive/tex/latex/base/size10.clo
-File: size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
-)
-\c@part=\count79
-\c@chapter=\count80
-\c@section=\count81
-\c@subsection=\count82
-\c@subsubsection=\count83
-\c@paragraph=\count84
-\c@subparagraph=\count85
-\c@figure=\count86
-\c@table=\count87
-\abovecaptionskip=\skip41
-\belowcaptionskip=\skip42
-\bibindent=\dimen102
-))
-(/usr/share/texmf-texlive/tex/latex/base/inputenc.sty
-Package: inputenc 2008/03/30 v1.1d Input encoding file
-\inpenc@prehook=\toks14
-\inpenc@posthook=\toks15
-
-(/usr/share/texmf-texlive/tex/latex/base/utf8.def
-File: utf8.def 2008/04/05 v1.1m UTF-8 support for inputenc
-Now handling font encoding OML ...
-... no UTF-8 mapping file for font encoding OML
-Now handling font encoding T1 ...
-... processing UTF-8 mapping file for font encoding T1
-
-(/usr/share/texmf-texlive/tex/latex/base/t1enc.dfu
-File: t1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
- defining Unicode char U+00A1 (decimal 161)
- defining Unicode char U+00A3 (decimal 163)
- defining Unicode char U+00AB (decimal 171)
- defining Unicode char U+00BB (decimal 187)
- defining Unicode char U+00BF (decimal 191)
- defining Unicode char U+00C0 (decimal 192)
- defining Unicode char U+00C1 (decimal 193)
- defining Unicode char U+00C2 (decimal 194)
- defining Unicode char U+00C3 (decimal 195)
- defining Unicode char U+00C4 (decimal 196)
- defining Unicode char U+00C5 (decimal 197)
- defining Unicode char U+00C6 (decimal 198)
- defining Unicode char U+00C7 (decimal 199)
- defining Unicode char U+00C8 (decimal 200)
- defining Unicode char U+00C9 (decimal 201)
- defining Unicode char U+00CA (decimal 202)
- defining Unicode char U+00CB (decimal 203)
- defining Unicode char U+00CC (decimal 204)
- defining Unicode char U+00CD (decimal 205)
- defining Unicode char U+00CE (decimal 206)
- defining Unicode char U+00CF (decimal 207)
- defining Unicode char U+00D0 (decimal 208)
- defining Unicode char U+00D1 (decimal 209)
- defining Unicode char U+00D2 (decimal 210)
- defining Unicode char U+00D3 (decimal 211)
- defining Unicode char U+00D4 (decimal 212)
- defining Unicode char U+00D5 (decimal 213)
- defining Unicode char U+00D6 (decimal 214)
- defining Unicode char U+00D8 (decimal 216)
- defining Unicode char U+00D9 (decimal 217)
- defining Unicode char U+00DA (decimal 218)
- defining Unicode char U+00DB (decimal 219)
- defining Unicode char U+00DC (decimal 220)
- defining Unicode char U+00DD (decimal 221)
- defining Unicode char U+00DE (decimal 222)
- defining Unicode char U+00DF (decimal 223)
- defining Unicode char U+00E0 (decimal 224)
- defining Unicode char U+00E1 (decimal 225)
- defining Unicode char U+00E2 (decimal 226)
- defining Unicode char U+00E3 (decimal 227)
- defining Unicode char U+00E4 (decimal 228)
- defining Unicode char U+00E5 (decimal 229)
- defining Unicode char U+00E6 (decimal 230)
- defining Unicode char U+00E7 (decimal 231)
- defining Unicode char U+00E8 (decimal 232)
- defining Unicode char U+00E9 (decimal 233)
- defining Unicode char U+00EA (decimal 234)
- defining Unicode char U+00EB (decimal 235)
- defining Unicode char U+00EC (decimal 236)
- defining Unicode char U+00ED (decimal 237)
- defining Unicode char U+00EE (decimal 238)
- defining Unicode char U+00EF (decimal 239)
- defining Unicode char U+00F0 (decimal 240)
- defining Unicode char U+00F1 (decimal 241)
- defining Unicode char U+00F2 (decimal 242)
- defining Unicode char U+00F3 (decimal 243)
- defining Unicode char U+00F4 (decimal 244)
- defining Unicode char U+00F5 (decimal 245)
- defining Unicode char U+00F6 (decimal 246)
- defining Unicode char U+00F8 (decimal 248)
- defining Unicode char U+00F9 (decimal 249)
- defining Unicode char U+00FA (decimal 250)
- defining Unicode char U+00FB (decimal 251)
- defining Unicode char U+00FC (decimal 252)
- defining Unicode char U+00FD (decimal 253)
- defining Unicode char U+00FE (decimal 254)
- defining Unicode char U+00FF (decimal 255)
- defining Unicode char U+0102 (decimal 258)
- defining Unicode char U+0103 (decimal 259)
- defining Unicode char U+0104 (decimal 260)
- defining Unicode char U+0105 (decimal 261)
- defining Unicode char U+0106 (decimal 262)
- defining Unicode char U+0107 (decimal 263)
- defining Unicode char U+010C (decimal 268)
- defining Unicode char U+010D (decimal 269)
- defining Unicode char U+010E (decimal 270)
- defining Unicode char U+010F (decimal 271)
- defining Unicode char U+0110 (decimal 272)
- defining Unicode char U+0111 (decimal 273)
- defining Unicode char U+0118 (decimal 280)
- defining Unicode char U+0119 (decimal 281)
- defining Unicode char U+011A (decimal 282)
- defining Unicode char U+011B (decimal 283)
- defining Unicode char U+011E (decimal 286)
- defining Unicode char U+011F (decimal 287)
- defining Unicode char U+0130 (decimal 304)
- defining Unicode char U+0131 (decimal 305)
- defining Unicode char U+0132 (decimal 306)
- defining Unicode char U+0133 (decimal 307)
- defining Unicode char U+0139 (decimal 313)
- defining Unicode char U+013A (decimal 314)
- defining Unicode char U+013D (decimal 317)
- defining Unicode char U+013E (decimal 318)
- defining Unicode char U+0141 (decimal 321)
- defining Unicode char U+0142 (decimal 322)
- defining Unicode char U+0143 (decimal 323)
- defining Unicode char U+0144 (decimal 324)
- defining Unicode char U+0147 (decimal 327)
- defining Unicode char U+0148 (decimal 328)
- defining Unicode char U+014A (decimal 330)
- defining Unicode char U+014B (decimal 331)
- defining Unicode char U+0150 (decimal 336)
- defining Unicode char U+0151 (decimal 337)
- defining Unicode char U+0152 (decimal 338)
- defining Unicode char U+0153 (decimal 339)
- defining Unicode char U+0154 (decimal 340)
- defining Unicode char U+0155 (decimal 341)
- defining Unicode char U+0158 (decimal 344)
- defining Unicode char U+0159 (decimal 345)
- defining Unicode char U+015A (decimal 346)
- defining Unicode char U+015B (decimal 347)
- defining Unicode char U+015E (decimal 350)
- defining Unicode char U+015F (decimal 351)
- defining Unicode char U+0160 (decimal 352)
- defining Unicode char U+0161 (decimal 353)
- defining Unicode char U+0162 (decimal 354)
- defining Unicode char U+0163 (decimal 355)
- defining Unicode char U+0164 (decimal 356)
- defining Unicode char U+0165 (decimal 357)
- defining Unicode char U+016E (decimal 366)
- defining Unicode char U+016F (decimal 367)
- defining Unicode char U+0170 (decimal 368)
- defining Unicode char U+0171 (decimal 369)
- defining Unicode char U+0178 (decimal 376)
- defining Unicode char U+0179 (decimal 377)
- defining Unicode char U+017A (decimal 378)
- defining Unicode char U+017B (decimal 379)
- defining Unicode char U+017C (decimal 380)
- defining Unicode char U+017D (decimal 381)
- defining Unicode char U+017E (decimal 382)
- defining Unicode char U+200C (decimal 8204)
- defining Unicode char U+2013 (decimal 8211)
- defining Unicode char U+2014 (decimal 8212)
- defining Unicode char U+2018 (decimal 8216)
- defining Unicode char U+2019 (decimal 8217)
- defining Unicode char U+201A (decimal 8218)
- defining Unicode char U+201C (decimal 8220)
- defining Unicode char U+201D (decimal 8221)
- defining Unicode char U+201E (decimal 8222)
- defining Unicode char U+2030 (decimal 8240)
- defining Unicode char U+2031 (decimal 8241)
- defining Unicode char U+2039 (decimal 8249)
- defining Unicode char U+203A (decimal 8250)
- defining Unicode char U+2423 (decimal 9251)
-)
-Now handling font encoding OT1 ...
-... processing UTF-8 mapping file for font encoding OT1
-
-(/usr/share/texmf-texlive/tex/latex/base/ot1enc.dfu
-File: ot1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
- defining Unicode char U+00A1 (decimal 161)
- defining Unicode char U+00A3 (decimal 163)
- defining Unicode char U+00B8 (decimal 184)
- defining Unicode char U+00BF (decimal 191)
- defining Unicode char U+00C5 (decimal 197)
- defining Unicode char U+00C6 (decimal 198)
- defining Unicode char U+00D8 (decimal 216)
- defining Unicode char U+00DF (decimal 223)
- defining Unicode char U+00E6 (decimal 230)
- defining Unicode char U+00EC (decimal 236)
- defining Unicode char U+00ED (decimal 237)
- defining Unicode char U+00EE (decimal 238)
- defining Unicode char U+00EF (decimal 239)
- defining Unicode char U+00F8 (decimal 248)
- defining Unicode char U+0131 (decimal 305)
- defining Unicode char U+0141 (decimal 321)
- defining Unicode char U+0142 (decimal 322)
- defining Unicode char U+0152 (decimal 338)
- defining Unicode char U+0153 (decimal 339)
- defining Unicode char U+2013 (decimal 8211)
- defining Unicode char U+2014 (decimal 8212)
- defining Unicode char U+2018 (decimal 8216)
- defining Unicode char U+2019 (decimal 8217)
- defining Unicode char U+201C (decimal 8220)
- defining Unicode char U+201D (decimal 8221)
-)
-Now handling font encoding OMS ...
-... processing UTF-8 mapping file for font encoding OMS
-
-(/usr/share/texmf-texlive/tex/latex/base/omsenc.dfu
-File: omsenc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
- defining Unicode char U+00A7 (decimal 167)
- defining Unicode char U+00B6 (decimal 182)
- defining Unicode char U+00B7 (decimal 183)
- defining Unicode char U+2020 (decimal 8224)
- defining Unicode char U+2021 (decimal 8225)
- defining Unicode char U+2022 (decimal 8226)
-)
-Now handling font encoding OMX ...
-... no UTF-8 mapping file for font encoding OMX
-Now handling font encoding U ...
-... no UTF-8 mapping file for font encoding U
- defining Unicode char U+00A9 (decimal 169)
- defining Unicode char U+00AA (decimal 170)
- defining Unicode char U+00AE (decimal 174)
- defining Unicode char U+00BA (decimal 186)
- defining Unicode char U+02C6 (decimal 710)
- defining Unicode char U+02DC (decimal 732)
- defining Unicode char U+200C (decimal 8204)
- defining Unicode char U+2026 (decimal 8230)
- defining Unicode char U+2122 (decimal 8482)
- defining Unicode char U+2423 (decimal 9251)
-))
- defining Unicode char U+00A0 (decimal 160)
-
-(/usr/share/texmf-texlive/tex/latex/base/fontenc.sty
-Package: fontenc 2005/09/27 v1.99g Standard LaTeX package
-
-(/usr/share/texmf-texlive/tex/latex/base/t1enc.def
-File: t1enc.def 2005/09/27 v1.99g Standard LaTeX file
-LaTeX Font Info: Redeclaring font encoding T1 on input line 43.
-))
-(/usr/share/texmf-texlive/tex/generic/babel/babel.sty
-Package: babel 2008/07/06 v3.8l The Babel package
-
-(/usr/share/texmf-texlive/tex/generic/babel/english.ldf
-Language: english 2005/03/30 v3.3o English support from the babel system
-
-(/usr/share/texmf-texlive/tex/generic/babel/babel.def
-File: babel.def 2008/07/06 v3.8l Babel common definitions
-\babel@savecnt=\count88
-\U@D=\dimen103
-)
-\l@british = a dialect from \language\l@english
-\l@UKenglish = a dialect from \language\l@english
-\l@canadian = a dialect from \language\l@american
-\l@australian = a dialect from \language\l@british
-\l@newzealand = a dialect from \language\l@british
-))
-(/usr/share/texmf-texlive/tex/latex/psnfss/times.sty
-Package: times 2005/04/12 PSNFSS-v9.2a (SPQR)
-) (./fncychap.sty
-Package: fncychap 2007/07/30 v1.34 LaTeX package (Revised chapters)
-\RW=\skip43
-\mylen=\skip44
-\myhi=\skip45
-\px=\skip46
-\py=\skip47
-\pyy=\skip48
-\pxx=\skip49
-\c@AlphaCnt=\count89
-\c@AlphaDecCnt=\count90
-)
-(/usr/share/texmf-texlive/tex/latex/tools/longtable.sty
-Package: longtable 2004/02/01 v4.11 Multi-page Table package (DPC)
-\LTleft=\skip50
-\LTright=\skip51
-\LTpre=\skip52
-\LTpost=\skip53
-\LTchunksize=\count91
-\LTcapwidth=\dimen104
-\LT@head=\box26
-\LT@firsthead=\box27
-\LT@foot=\box28
-\LT@lastfoot=\box29
-\LT@cols=\count92
-\LT@rows=\count93
-\c@LT@tables=\count94
-\c@LT@chunks=\count95
-\LT@p@ftn=\toks16
-) (./sphinx.sty
-Package: sphinx 2010/01/15 LaTeX package (Sphinx markup)
-
-(/usr/share/texmf-texlive/tex/latex/base/textcomp.sty
-Package: textcomp 2005/09/27 v1.99g Standard LaTeX package
-Package textcomp Info: Sub-encoding information:
-(textcomp) 5 = only ISO-Adobe without \textcurrency
-(textcomp) 4 = 5 + \texteuro
-(textcomp) 3 = 4 + \textohm
-(textcomp) 2 = 3 + \textestimated + \textcurrency
-(textcomp) 1 = TS1 - \textcircled - \t
-(textcomp) 0 = TS1 (full)
-(textcomp) Font families with sub-encoding setting implement
-(textcomp) only a restricted character set as indicated.
-(textcomp) Family '?' is the default used for unknown fonts.
-(textcomp) See the documentation for details.
-Package textcomp Info: Setting ? sub-encoding to TS1/1 on input line 71.
-
-(/usr/share/texmf-texlive/tex/latex/base/ts1enc.def
-File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file
-Now handling font encoding TS1 ...
-... processing UTF-8 mapping file for font encoding TS1
-
-(/usr/share/texmf-texlive/tex/latex/base/ts1enc.dfu
-File: ts1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
- defining Unicode char U+00A2 (decimal 162)
- defining Unicode char U+00A3 (decimal 163)
- defining Unicode char U+00A4 (decimal 164)
- defining Unicode char U+00A5 (decimal 165)
- defining Unicode char U+00A6 (decimal 166)
- defining Unicode char U+00A7 (decimal 167)
- defining Unicode char U+00A8 (decimal 168)
- defining Unicode char U+00A9 (decimal 169)
- defining Unicode char U+00AA (decimal 170)
- defining Unicode char U+00AC (decimal 172)
- defining Unicode char U+00AE (decimal 174)
- defining Unicode char U+00AF (decimal 175)
- defining Unicode char U+00B0 (decimal 176)
- defining Unicode char U+00B1 (decimal 177)
- defining Unicode char U+00B2 (decimal 178)
- defining Unicode char U+00B3 (decimal 179)
- defining Unicode char U+00B4 (decimal 180)
- defining Unicode char U+00B5 (decimal 181)
- defining Unicode char U+00B6 (decimal 182)
- defining Unicode char U+00B7 (decimal 183)
- defining Unicode char U+00B9 (decimal 185)
- defining Unicode char U+00BA (decimal 186)
- defining Unicode char U+00BC (decimal 188)
- defining Unicode char U+00BD (decimal 189)
- defining Unicode char U+00BE (decimal 190)
- defining Unicode char U+00D7 (decimal 215)
- defining Unicode char U+00F7 (decimal 247)
- defining Unicode char U+0192 (decimal 402)
- defining Unicode char U+02C7 (decimal 711)
- defining Unicode char U+02D8 (decimal 728)
- defining Unicode char U+02DD (decimal 733)
- defining Unicode char U+0E3F (decimal 3647)
- defining Unicode char U+2016 (decimal 8214)
- defining Unicode char U+2020 (decimal 8224)
- defining Unicode char U+2021 (decimal 8225)
- defining Unicode char U+2022 (decimal 8226)
- defining Unicode char U+2030 (decimal 8240)
- defining Unicode char U+2031 (decimal 8241)
- defining Unicode char U+203B (decimal 8251)
- defining Unicode char U+203D (decimal 8253)
- defining Unicode char U+2044 (decimal 8260)
- defining Unicode char U+204E (decimal 8270)
- defining Unicode char U+2052 (decimal 8274)
- defining Unicode char U+20A1 (decimal 8353)
- defining Unicode char U+20A4 (decimal 8356)
- defining Unicode char U+20A6 (decimal 8358)
- defining Unicode char U+20A9 (decimal 8361)
- defining Unicode char U+20AB (decimal 8363)
- defining Unicode char U+20AC (decimal 8364)
- defining Unicode char U+20B1 (decimal 8369)
- defining Unicode char U+2103 (decimal 8451)
- defining Unicode char U+2116 (decimal 8470)
- defining Unicode char U+2117 (decimal 8471)
- defining Unicode char U+211E (decimal 8478)
- defining Unicode char U+2120 (decimal 8480)
- defining Unicode char U+2122 (decimal 8482)
- defining Unicode char U+2126 (decimal 8486)
- defining Unicode char U+2127 (decimal 8487)
- defining Unicode char U+212E (decimal 8494)
- defining Unicode char U+2190 (decimal 8592)
- defining Unicode char U+2191 (decimal 8593)
- defining Unicode char U+2192 (decimal 8594)
- defining Unicode char U+2193 (decimal 8595)
- defining Unicode char U+2329 (decimal 9001)
- defining Unicode char U+232A (decimal 9002)
- defining Unicode char U+2422 (decimal 9250)
- defining Unicode char U+25E6 (decimal 9702)
- defining Unicode char U+25EF (decimal 9711)
- defining Unicode char U+266A (decimal 9834)
-))
-LaTeX Info: Redefining \oldstylenums on input line 266.
-Package textcomp Info: Setting cmr sub-encoding to TS1/0 on input line 281.
-Package textcomp Info: Setting cmss sub-encoding to TS1/0 on input line 282.
-Package textcomp Info: Setting cmtt sub-encoding to TS1/0 on input line 283.
-Package textcomp Info: Setting cmvtt sub-encoding to TS1/0 on input line 284.
-Package textcomp Info: Setting cmbr sub-encoding to TS1/0 on input line 285.
-Package textcomp Info: Setting cmtl sub-encoding to TS1/0 on input line 286.
-Package textcomp Info: Setting ccr sub-encoding to TS1/0 on input line 287.
-Package textcomp Info: Setting ptm sub-encoding to TS1/4 on input line 288.
-Package textcomp Info: Setting pcr sub-encoding to TS1/4 on input line 289.
-Package textcomp Info: Setting phv sub-encoding to TS1/4 on input line 290.
-Package textcomp Info: Setting ppl sub-encoding to TS1/3 on input line 291.
-Package textcomp Info: Setting pag sub-encoding to TS1/4 on input line 292.
-Package textcomp Info: Setting pbk sub-encoding to TS1/4 on input line 293.
-Package textcomp Info: Setting pnc sub-encoding to TS1/4 on input line 294.
-Package textcomp Info: Setting pzc sub-encoding to TS1/4 on input line 295.
-Package textcomp Info: Setting bch sub-encoding to TS1/4 on input line 296.
-Package textcomp Info: Setting put sub-encoding to TS1/5 on input line 297.
-Package textcomp Info: Setting uag sub-encoding to TS1/5 on input line 298.
-Package textcomp Info: Setting ugq sub-encoding to TS1/5 on input line 299.
-Package textcomp Info: Setting ul8 sub-encoding to TS1/4 on input line 300.
-Package textcomp Info: Setting ul9 sub-encoding to TS1/4 on input line 301.
-Package textcomp Info: Setting augie sub-encoding to TS1/5 on input line 302.
-Package textcomp Info: Setting dayrom sub-encoding to TS1/3 on input line 303.
-Package textcomp Info: Setting dayroms sub-encoding to TS1/3 on input line 304.
-
-Package textcomp Info: Setting pxr sub-encoding to TS1/0 on input line 305.
-Package textcomp Info: Setting pxss sub-encoding to TS1/0 on input line 306.
-Package textcomp Info: Setting pxtt sub-encoding to TS1/0 on input line 307.
-Package textcomp Info: Setting txr sub-encoding to TS1/0 on input line 308.
-Package textcomp Info: Setting txss sub-encoding to TS1/0 on input line 309.
-Package textcomp Info: Setting txtt sub-encoding to TS1/0 on input line 310.
-Package textcomp Info: Setting futs sub-encoding to TS1/4 on input line 311.
-Package textcomp Info: Setting futx sub-encoding to TS1/4 on input line 312.
-Package textcomp Info: Setting futj sub-encoding to TS1/4 on input line 313.
-Package textcomp Info: Setting hlh sub-encoding to TS1/3 on input line 314.
-Package textcomp Info: Setting hls sub-encoding to TS1/3 on input line 315.
-Package textcomp Info: Setting hlst sub-encoding to TS1/3 on input line 316.
-Package textcomp Info: Setting hlct sub-encoding to TS1/5 on input line 317.
-Package textcomp Info: Setting hlx sub-encoding to TS1/5 on input line 318.
-Package textcomp Info: Setting hlce sub-encoding to TS1/5 on input line 319.
-Package textcomp Info: Setting hlcn sub-encoding to TS1/5 on input line 320.
-Package textcomp Info: Setting hlcw sub-encoding to TS1/5 on input line 321.
-Package textcomp Info: Setting hlcf sub-encoding to TS1/5 on input line 322.
-Package textcomp Info: Setting pplx sub-encoding to TS1/3 on input line 323.
-Package textcomp Info: Setting pplj sub-encoding to TS1/3 on input line 324.
-Package textcomp Info: Setting ptmx sub-encoding to TS1/4 on input line 325.
-Package textcomp Info: Setting ptmj sub-encoding to TS1/4 on input line 326.
-)
-(/usr/share/texmf-texlive/tex/latex/fancyhdr/fancyhdr.sty
-\fancy@headwidth=\skip54
-\f@ncyO@elh=\skip55
-\f@ncyO@erh=\skip56
-\f@ncyO@olh=\skip57
-\f@ncyO@orh=\skip58
-\f@ncyO@elf=\skip59
-\f@ncyO@erf=\skip60
-\f@ncyO@olf=\skip61
-\f@ncyO@orf=\skip62
-)
-(/usr/share/texmf-texlive/tex/latex/fancybox/fancybox.sty
-Package: fancybox 2000/09/19 1.3
-
-Style option: `fancybox' v1.3 <2000/09/19> (tvz)
-\@fancybox=\box30
-\shadowsize=\dimen105
-\@Sbox=\box31
-\do@VerbBox=\toks17
-\the@fancyput=\toks18
-\this@fancyput=\toks19
-\EndVerbatimTokens=\toks20
-\Verbatim@Outfile=\write3
-\Verbatim@Infile=\read1
-) (/usr/share/texmf-texlive/tex/latex/titlesec/titlesec.sty
-Package: titlesec 2007/08/12 v2.8 Sectioning titles
-\ttl@box=\box32
-\beforetitleunit=\skip63
-\aftertitleunit=\skip64
-\ttl@plus=\dimen106
-\ttl@minus=\dimen107
-\ttl@toksa=\toks21
-\titlewidth=\dimen108
-\titlewidthlast=\dimen109
-\titlewidthfirst=\dimen110
-) (./tabulary.sty
-Package: tabulary 2007/10/02 v0.9 tabulary package (DPC)
-
-(/usr/share/texmf-texlive/tex/latex/tools/array.sty
-Package: array 2008/09/09 v2.4c Tabular extension package (FMi)
-\col@sep=\dimen111
-\extrarowheight=\dimen112
-\NC@list=\toks22
-\extratabsurround=\skip65
-\backup@length=\skip66
-)
-\TY@count=\count96
-\TY@linewidth=\dimen113
-\tymin=\dimen114
-\tymax=\dimen115
-\TY@tablewidth=\dimen116
-)
-(/usr/share/texmf-texlive/tex/latex/amsmath/amsmath.sty
-Package: amsmath 2000/07/18 v2.13 AMS math features
-\@mathmargin=\skip67
-
-For additional information on amsmath, use the `?' option.
-(/usr/share/texmf-texlive/tex/latex/amsmath/amstext.sty
-Package: amstext 2000/06/29 v2.01
-
-(/usr/share/texmf-texlive/tex/latex/amsmath/amsgen.sty
-File: amsgen.sty 1999/11/30 v2.0
-\@emptytoks=\toks23
-\ex@=\dimen117
-))
-(/usr/share/texmf-texlive/tex/latex/amsmath/amsbsy.sty
-Package: amsbsy 1999/11/29 v1.2d
-\pmbraise@=\dimen118
-)
-(/usr/share/texmf-texlive/tex/latex/amsmath/amsopn.sty
-Package: amsopn 1999/12/14 v2.01 operator names
-)
-\inf@bad=\count97
-LaTeX Info: Redefining \frac on input line 211.
-\uproot@=\count98
-\leftroot@=\count99
-LaTeX Info: Redefining \overline on input line 307.
-\classnum@=\count100
-\DOTSCASE@=\count101
-LaTeX Info: Redefining \ldots on input line 379.
-LaTeX Info: Redefining \dots on input line 382.
-LaTeX Info: Redefining \cdots on input line 467.
-\Mathstrutbox@=\box33
-\strutbox@=\box34
-\big@size=\dimen119
-LaTeX Font Info: Redeclaring font encoding OML on input line 567.
-LaTeX Font Info: Redeclaring font encoding OMS on input line 568.
-\macc@depth=\count102
-\c@MaxMatrixCols=\count103
-\dotsspace@=\muskip10
-\c@parentequation=\count104
-\dspbrk@lvl=\count105
-\tag@help=\toks24
-\row@=\count106
-\column@=\count107
-\maxfields@=\count108
-\andhelp@=\toks25
-\eqnshift@=\dimen120
-\alignsep@=\dimen121
-\tagshift@=\dimen122
-\tagwidth@=\dimen123
-\totwidth@=\dimen124
-\lineht@=\dimen125
-\@envbody=\toks26
-\multlinegap=\skip68
-\multlinetaggap=\skip69
-\mathdisplay@stack=\toks27
-LaTeX Info: Redefining \[ on input line 2666.
-LaTeX Info: Redefining \] on input line 2667.
-)
-(/usr/share/texmf-texlive/tex/latex/base/makeidx.sty
-Package: makeidx 2000/03/29 v1.0m Standard LaTeX package
-)
-(/usr/share/texmf-texlive/tex/latex/ltxmisc/framed.sty
-Package: framed 2007/10/04 v 0.95: framed or shaded text with page breaks
-\fb@frw=\dimen126
-\fb@frh=\dimen127
-\FrameRule=\dimen128
-\FrameSep=\dimen129
-)
-(/usr/share/texmf-texlive/tex/latex/base/ifthen.sty
-Package: ifthen 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC)
-)
-(/usr/share/texmf-texlive/tex/latex/graphics/color.sty
-Package: color 2005/11/14 v1.0j Standard LaTeX Color (DPC)
-
-(/etc/texmf/tex/latex/config/color.cfg
-File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive
-)
-Package color Info: Driver file: pdftex.def on input line 130.
-
-(/usr/share/texmf-texlive/tex/latex/pdftex-def/pdftex.def
-File: pdftex.def 2010/03/12 v0.04p Graphics/color for pdfTeX
-\Gread@gobject=\count109
-))
-(/usr/share/texmf-texlive/tex/latex/fancyvrb/fancyvrb.sty
-Package: fancyvrb 2008/02/07
-
-Style option: `fancyvrb' v2.7a, with DG/SPQR fixes, and firstline=lastline fix
-<2008/02/07> (tvz) (/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty
-Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
-\KV@toks@=\toks28
-)
-\FV@CodeLineNo=\count110
-\FV@InFile=\read2
-\FV@TabBox=\box35
-\c@FancyVerbLine=\count111
-\FV@StepNumber=\count112
-\FV@OutFile=\write4
-)
-(/usr/share/texmf-texlive/tex/latex/ltxmisc/threeparttable.sty
-Package: threeparttable 2003/06/13 v 3.0
-\@tempboxb=\box36
-)
-(/usr/share/texmf-texlive/tex/latex/mdwtools/footnote.sty
-Package: footnote 1997/01/28 1.13 Save footnotes around boxes
-\fn@notes=\box37
-\fn@width=\dimen130
-)
-(/usr/share/texmf-texlive/tex/latex/wrapfig/wrapfig.sty
-\wrapoverhang=\dimen131
-\WF@size=\dimen132
-\c@WF@wrappedlines=\count113
-\WF@box=\box38
-\WF@everypar=\toks29
-Package: wrapfig 2003/01/31 v 3.6
-)
-(/usr/share/texmf-texlive/tex/latex/ltxmisc/parskip.sty
-Package: parskip 2001/04/09 non-zero parskip adjustments
-)
-(/usr/share/texmf-texlive/tex/latex/graphics/graphicx.sty
-Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
-
-(/usr/share/texmf-texlive/tex/latex/graphics/graphics.sty
-Package: graphics 2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR)
-
-(/usr/share/texmf-texlive/tex/latex/graphics/trig.sty
-Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
-)
-(/etc/texmf/tex/latex/config/graphics.cfg
-File: graphics.cfg 2009/08/28 v1.8 graphics configuration of TeX Live
-)
-Package graphics Info: Driver file: pdftex.def on input line 91.
-)
-\Gin@req@height=\dimen133
-\Gin@req@width=\dimen134
-)
-(/usr/share/texmf-texlive/tex/plain/misc/pdfcolor.tex)
-\distancetoright=\skip70
-\py@argswidth=\skip71
-\py@noticelength=\skip72
-\lineblockindentation=\skip73
-\image@box=\box39
-\image@width=\dimen135
-
-(/usr/share/texmf-texlive/tex/latex/hyperref/hyperref.sty
-Package: hyperref 2009/10/09 v6.79a Hypertext links for LaTeX
-
-(/usr/share/texmf-texlive/tex/generic/oberdiek/ifpdf.sty
-Package: ifpdf 2009/04/10 v2.0 Provides the ifpdf switch (HO)
-Package ifpdf Info: pdfTeX in pdf mode detected.
-)
-(/usr/share/texmf-texlive/tex/generic/oberdiek/ifvtex.sty
-Package: ifvtex 2008/11/04 v1.4 Switches for detecting VTeX and its modes (HO)
-Package ifvtex Info: VTeX not detected.
-)
-(/usr/share/texmf-texlive/tex/generic/ifxetex/ifxetex.sty
-Package: ifxetex 2009/01/23 v0.5 Provides ifxetex conditional
-)
-(/usr/share/texmf-texlive/tex/latex/oberdiek/hycolor.sty
-Package: hycolor 2009/10/02 v1.5 Code for color options of hyperref/bookmark (H
-O)
-
-(/usr/share/texmf-texlive/tex/latex/oberdiek/xcolor-patch.sty
-Package: xcolor-patch 2009/10/02 xcolor patch
-))
-\@linkdim=\dimen136
-\Hy@linkcounter=\count114
-\Hy@pagecounter=\count115
-
-(/usr/share/texmf-texlive/tex/latex/hyperref/pd1enc.def
-File: pd1enc.def 2009/10/09 v6.79a Hyperref: PDFDocEncoding definition (HO)
-Now handling font encoding PD1 ...
-... no UTF-8 mapping file for font encoding PD1
-)
-(/usr/share/texmf-texlive/tex/generic/oberdiek/etexcmds.sty
-Package: etexcmds 2007/12/12 v1.2 Prefix for e-TeX command names (HO)
-
-(/usr/share/texmf-texlive/tex/generic/oberdiek/infwarerr.sty
-Package: infwarerr 2007/09/09 v1.2 Providing info/warning/message (HO)
-)
-Package etexcmds Info: Could not find \expanded.
-(etexcmds) That can mean that you are not using pdfTeX 1.50 or
-(etexcmds) that some package has redefined \expanded.
-(etexcmds) In the latter case, load this package earlier.
-)
-(/usr/share/texmf-texlive/tex/latex/latexconfig/hyperref.cfg
-File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
-)
-(/usr/share/texmf-texlive/tex/latex/oberdiek/kvoptions.sty
-Package: kvoptions 2009/08/13 v3.4 Keyval support for LaTeX options (HO)
-
-(/usr/share/texmf-texlive/tex/generic/oberdiek/kvsetkeys.sty
-Package: kvsetkeys 2009/07/30 v1.5 Key value parser with default handler suppor
-t (HO)
-))
-Package hyperref Info: Option `colorlinks' set `true' on input line 2864.
-Package hyperref Info: Option `breaklinks' set `true' on input line 2864.
-Package hyperref Info: Hyper figures OFF on input line 2975.
-Package hyperref Info: Link nesting OFF on input line 2980.
-Package hyperref Info: Hyper index ON on input line 2983.
-Package hyperref Info: Plain pages OFF on input line 2990.
-Package hyperref Info: Backreferencing OFF on input line 2995.
-
-Implicit mode ON; LaTeX internals redefined
-Package hyperref Info: Bookmarks ON on input line 3191.
-(/usr/share/texmf-texlive/tex/latex/ltxmisc/url.sty
-\Urlmuskip=\muskip11
-Package: url 2006/04/12 ver 3.3 Verb mode for urls, etc.
-)
-LaTeX Info: Redefining \url on input line 3428.
-
-(/usr/share/texmf-texlive/tex/generic/oberdiek/bitset.sty
-Package: bitset 2007/09/28 v1.0 Data type bit set (HO)
-
-(/usr/share/texmf-texlive/tex/generic/oberdiek/intcalc.sty
-Package: intcalc 2007/09/27 v1.1 Expandable integer calculations (HO)
-)
-(/usr/share/texmf-texlive/tex/generic/oberdiek/bigintcalc.sty
-Package: bigintcalc 2007/11/11 v1.1 Expandable big integer calculations (HO)
-
-(/usr/share/texmf-texlive/tex/generic/oberdiek/pdftexcmds.sty
-Package: pdftexcmds 2009/09/23 v0.6 LuaTeX support for pdfTeX utility functions
- (HO)
-
-(/usr/share/texmf-texlive/tex/generic/oberdiek/ifluatex.sty
-Package: ifluatex 2009/04/17 v1.2 Provides the ifluatex switch (HO)
-Package ifluatex Info: LuaTeX not detected.
-)
-(/usr/share/texmf-texlive/tex/generic/oberdiek/ltxcmds.sty
-Package: ltxcmds 2009/08/05 v1.0 Some LaTeX kernel commands for general use (HO
-)
-)
-Package pdftexcmds Info: LuaTeX not detected.
-Package pdftexcmds Info: \pdf@primitive is available.
-Package pdftexcmds Info: \pdf@ifprimitive is available.
-)))
-\Fld@menulength=\count116
-\Field@Width=\dimen137
-\Fld@charsize=\dimen138
-\Field@toks=\toks30
-Package hyperref Info: Hyper figures OFF on input line 4377.
-Package hyperref Info: Link nesting OFF on input line 4382.
-Package hyperref Info: Hyper index ON on input line 4385.
-Package hyperref Info: backreferencing OFF on input line 4392.
-Package hyperref Info: Link coloring ON on input line 4395.
-Package hyperref Info: Link coloring with OCG OFF on input line 4402.
-Package hyperref Info: PDF/A mode OFF on input line 4407.
-
-(/usr/share/texmf-texlive/tex/generic/oberdiek/atbegshi.sty
-Package: atbegshi 2008/07/31 v1.9 At begin shipout hook (HO)
-)
-\Hy@abspage=\count117
-\c@Item=\count118
-\c@Hfootnote=\count119
-)
-*hyperref using default driver hpdftex*
-(/usr/share/texmf-texlive/tex/latex/hyperref/hpdftex.def
-File: hpdftex.def 2009/10/09 v6.79a Hyperref driver for pdfTeX
-\Fld@listcount=\count120
-)
-(/usr/share/texmf-texlive/tex/latex/oberdiek/hypcap.sty
-Package: hypcap 2008/09/08 v1.10 Adjusting anchors of captions (HO)
-)
-\DUlineblockindent=\skip74
-)
-(/usr/share/texmf-texlive/tex/latex/multirow/multirow.sty
-\bigstrutjot=\dimen139
-)
-\@indexfile=\write5
-\openout5 = `Authentic2.idx'.
-
-
-Writing index file Authentic2.idx
-(./Authentic2.aux)
-\openout1 = `Authentic2.aux'.
-
-LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 110.
-LaTeX Font Info: ... okay on input line 110.
-LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 110.
-LaTeX Font Info: ... okay on input line 110.
-LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 110.
-LaTeX Font Info: ... okay on input line 110.
-LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 110.
-LaTeX Font Info: ... okay on input line 110.
-LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 110.
-LaTeX Font Info: ... okay on input line 110.
-LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 110.
-LaTeX Font Info: ... okay on input line 110.
-LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 110.
-LaTeX Font Info: Try loading font information for TS1+cmr on input line 110.
-
- (/usr/share/texmf-texlive/tex/latex/base/ts1cmr.fd
-File: ts1cmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions
-)
-LaTeX Font Info: ... okay on input line 110.
-LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 110.
-LaTeX Font Info: ... okay on input line 110.
-LaTeX Font Info: Try loading font information for T1+ptm on input line 110.
-
-(/usr/share/texmf-texlive/tex/latex/psnfss/t1ptm.fd
-File: t1ptm.fd 2001/06/04 font definitions for T1/ptm.
-)
-(/usr/share/texmf-texlive/tex/context/base/supp-pdf.mkii
-[Loading MPS to PDF converter (version 2006.09.02).]
-\scratchcounter=\count121
-\scratchdimen=\dimen140
-\scratchbox=\box40
-\nofMPsegments=\count122
-\nofMParguments=\count123
-\everyMPshowfont=\toks31
-\MPscratchCnt=\count124
-\MPscratchDim=\dimen141
-\MPnumerator=\count125
-\everyMPtoPDFconversion=\toks32
-)
-Package hyperref Info: Link coloring ON on input line 110.
- (/usr/share/texmf-texlive/tex/latex/hyperref/nameref.sty
-Package: nameref 2007/05/29 v2.31 Cross-referencing by name of section
-
-(/usr/share/texmf-texlive/tex/latex/oberdiek/refcount.sty
-Package: refcount 2008/08/11 v3.1 Data extraction from references (HO)
-)
-\c@section@level=\count126
-)
-LaTeX Info: Redefining \ref on input line 110.
-LaTeX Info: Redefining \pageref on input line 110.
- (./Authentic2.out)
-(./Authentic2.out)
-\@outlinefile=\write6
-\openout6 = `Authentic2.out'.
-
-\AtBeginShipoutBox=\box41
-
-Underfull \hbox (badness 10000) in paragraph at lines 113--113
-
- []
-
-LaTeX Font Info: Try loading font information for T1+phv on input line 113.
-(/usr/share/texmf-texlive/tex/latex/psnfss/t1phv.fd
-File: t1phv.fd 2001/06/04 scalable font definitions for T1/phv.
-)
-LaTeX Font Info: Font shape `T1/phv/bx/n' in size <24.88> not available
-(Font) Font shape `T1/phv/b/n' tried instead on input line 113.
-LaTeX Font Info: Font shape `T1/phv/m/it' in size <17.28> not available
-(Font) Font shape `T1/phv/m/sl' tried instead on input line 113.
-LaTeX Font Info: Font shape `T1/phv/bx/it' in size <17.28> not available
-(Font) Font shape `T1/phv/b/it' tried instead on input line 113.
-LaTeX Font Info: Font shape `T1/phv/b/it' in size <17.28> not available
-(Font) Font shape `T1/phv/b/sl' tried instead on input line 113.
-LaTeX Font Info: Font shape `T1/phv/bx/n' in size <17.28> not available
-(Font) Font shape `T1/phv/b/n' tried instead on input line 113.
- [1
-
-{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2
-
-] (./Authentic2.toc
-LaTeX Font Info: Font shape `T1/ptm/bx/n' in size <10> not available
-(Font) Font shape `T1/ptm/b/n' tried instead on input line 2.
-)
-\tf@toc=\write7
-\openout7 = `Authentic2.toc'.
-
-
-Adding blank page after the table of contents.
-LaTeX Font Info: Font shape `T1/phv/bx/n' in size <10> not available
-(Font) Font shape `T1/phv/b/n' tried instead on input line 113.
-pdfTeX warning (ext4): destination with the same identifier (name{page.i}) has
-been already used, duplicate ignored
-<to be read again>
- \relax
-l.113 \tableofcontents
- [1
-
-]pdfTeX warning (ext4): destination with the same identifier (name{page.ii}) ha
-s been already used, duplicate ignored
-<to be read again>
- \relax
-l.113 \tableofcontents
- [2]
-LaTeX Font Info: Try loading font information for TS1+ptm on input line 130.
-
- (/usr/share/texmf-texlive/tex/latex/psnfss/ts1ptm.fd
-File: ts1ptm.fd 2001/06/04 font definitions for TS1/ptm.
-) [1
-
-] [2
-
-]
-Chapter 1.
-LaTeX Font Info: Font shape `T1/phv/bx/n' in size <14.4> not available
-(Font) Font shape `T1/phv/b/n' tried instead on input line 139.
-LaTeX Font Info: Font shape `T1/phv/bx/n' in size <12> not available
-(Font) Font shape `T1/phv/b/n' tried instead on input line 195.
-[3]
-LaTeX Font Info: Try loading font information for T1+pcr on input line 247.
- (/usr/share/texmf-texlive/tex/latex/psnfss/t1pcr.fd
-File: t1pcr.fd 2001/06/04 font definitions for T1/pcr.
-)
-LaTeX Font Info: Font shape `T1/pcr/m/it' in size <9> not available
-(Font) Font shape `T1/pcr/m/sl' tried instead on input line 295.
-
-Underfull \hbox (badness 10000) in paragraph at lines 299--302
-[]\T1/ptm/m/n/10 You should re-fer to the Django doc-u-men-ta-tion on databases
- set-tings at
- []
-
-[4]
-LaTeX Font Info: Font shape `T1/pcr/bx/n' in size <9> not available
-(Font) Font shape `T1/pcr/b/n' tried instead on input line 349.
- [5] [6] [7] <new_saml2_sp_1.png, id=168, 920.43875pt x 500.87125pt>
-File: new_saml2_sp_1.png Graphic file (type png)
-
-<use new_saml2_sp_1.png>
-File: new_saml2_sp_1.png Graphic file (type png)
- <use new_saml2_sp_1.png>
-<new_saml2_sp_2.png, id=170, 917.4275pt x 576.1525pt>
-File: new_saml2_sp_2.png Graphic file (type png)
- <use new_saml2_sp_2.png>
-File: new_saml2_sp_2.png Graphic file (type png)
-
-<use new_saml2_sp_2.png> [8 <./new_saml2_sp_1.png> <./new_saml2_sp_2.png>]
-<new_saml2_sp_saved.png, id=180, 933.4875pt x 306.14375pt>
-File: new_saml2_sp_saved.png Graphic file (type png)
-
-<use new_saml2_sp_saved.png>
-File: new_saml2_sp_saved.png Graphic file (type png)
- <use new_saml2_sp_saved.png>
-<sp_options_regular.png, id=182, 917.4275pt x 896.34875pt>
-File: sp_options_regular.png Graphic file (type png)
-
-<use sp_options_regular.png>
-File: sp_options_regular.png Graphic file (type png)
- <use sp_options_regular.png>
-<sp_options_regular_modify_sp.png, id=183, 919.435pt x 222.8325pt>
-File: sp_options_regular_modify_sp.png Graphic file (type png)
-
-<use sp_options_regular_modify_sp.png>
-File: sp_options_regular_modify_sp.png Graphic file (type png)
- <use sp_options_regular_modify_sp.png>
-[9 <./new_saml2_sp_saved.png>]
-<sp_options_default.png, id=192, 931.48pt x 898.35625pt>
-File: sp_options_default.png Graphic file (type png)
-
-<use sp_options_default.png>
-File: sp_options_default.png Graphic file (type png)
- <use sp_options_default.png>
-<sp_options_default_saved.png, id=193, 932.48375pt x 257.96375pt>
-File: sp_options_default_saved.png Graphic file (type png)
-
-<use sp_options_default_saved.png>
-File: sp_options_default_saved.png Graphic file (type png)
- <use sp_options_default_saved.png> [10 <./sp_options_regular.png> <./sp_option
-s_regular_modify_sp.png>]
-<sp_options_all.png, id=200, 933.4875pt x 896.34875pt>
-File: sp_options_all.png Graphic file (type png)
-
-<use sp_options_all.png>
-File: sp_options_all.png Graphic file (type png)
- <use sp_options_all.png> [11 <./sp_options_default.png> <./sp_options_default_
-saved.png>]
-<error_no_sp_options.png, id=207, 834.11626pt x 354.32375pt>
-File: error_no_sp_options.png Graphic file (type png)
-
-<use error_no_sp_options.png>
-File: error_no_sp_options.png Graphic file (type png)
- <use error_no_sp_options.png> [12 <./sp_options_all.png>] <update_metadata.png
-, id=214, 931.48pt x 337.26pt>
-File: update_metadata.png Graphic file (type png)
-
-<use update_metadata.png>
-File: update_metadata.png Graphic file (type png)
- <use update_metadata.png> [13 <./error_no_sp_options.png> <./update_metadata.p
-ng>]
-<new_saml2_idp_1.png, id=226, 919.435pt x 504.88625pt>
-File: new_saml2_idp_1.png Graphic file (type png)
-
-<use new_saml2_idp_1.png>
-File: new_saml2_idp_1.png Graphic file (type png)
- <use new_saml2_idp_1.png>
-<new_saml2_idp_2.png, id=227, 917.4275pt x 224.84pt>
-File: new_saml2_idp_2.png Graphic file (type png)
- <use new_saml2_idp_2.png>
-File: new_saml2_idp_2.png Graphic file (type png)
-
-<use new_saml2_idp_2.png> [14]
-<new_saml2_idp_saved.png, id=241, 933.4875pt x 339.2675pt>
-File: new_saml2_idp_saved.png Graphic file (type png)
-
-<use new_saml2_idp_saved.png>
-File: new_saml2_idp_saved.png Graphic file (type png)
- <use new_saml2_idp_saved.png> [15 <./new_saml2_idp_1.png> <./new_saml2_idp_2.p
-ng> <./new_saml2_idp_saved.png>]
-File: sp_options_regular.png Graphic file (type png)
-
-<use sp_options_regular.png>
-File: sp_options_regular.png Graphic file (type png)
- <use sp_options_regular.png>
-<sp_options_regular_saved.png, id=252, 931.48pt x 259.97125pt>
-File: sp_options_regular_saved.png Graphic file (type png)
-
-<use sp_options_regular_saved.png>
-File: sp_options_regular_saved.png Graphic file (type png)
- <use sp_options_regular_saved.png>
-File: sp_options_regular_modify_sp.png Graphic file (type png)
-
-<use sp_options_regular_modify_sp.png>
-File: sp_options_regular_modify_sp.png Graphic file (type png)
- <use sp_options_regular_modify_sp.png>
-[16]
-File: sp_options_default.png Graphic file (type png)
- <use sp_options_default.png>
-File: sp_options_default.png Graphic file (type png)
- <use sp_options_default.png> [17 <./sp_options_regular_saved.png>]
-File: sp_options_all.png Graphic file (type png)
- <use sp_options_all.png>
-File: sp_options_all.png Graphic file (type png)
- <use sp_options_all.png>
-[18] <error_no_idp_options.png, id=267, 769.87625pt x 333.245pt>
-File: error_no_idp_options.png Graphic file (type png)
-
-<use error_no_idp_options.png>
-File: error_no_idp_options.png Graphic file (type png)
- <use error_no_idp_options.png> [19]
-File: update_metadata.png Graphic file (type png)
-
-<use update_metadata.png>
-File: update_metadata.png Graphic file (type png)
- <use update_metadata.png>
-<update_metadata_done.png, id=272, 930.47626pt x 342.27875pt>
-File: update_metadata_done.png Graphic file (type png)
-
-<use update_metadata_done.png>
-File: update_metadata_done.png Graphic file (type png)
- <use update_metadata_done.png> [20 <./error_no_idp_options.png> <./update_meta
-data_done.png>] [21] [22]
-LaTeX Font Info: Font shape `T1/phv/bx/n' in size <9> not available
-(Font) Font shape `T1/phv/b/n' tried instead on input line 979.
-
-<user_profile_source.png, id=303, 933.4875pt x 233.87375pt>
-File: user_profile_source.png Graphic file (type png)
-
-<use user_profile_source.png>
-File: user_profile_source.png Graphic file (type png)
- <use user_profile_source.png>
-<user_profile_source_saved.png, id=304, 932.48375pt x 257.96375pt>
-File: user_profile_source_saved.png Graphic file (type png)
-
-<use user_profile_source_saved.png>
-File: user_profile_source_saved.png Graphic file (type png)
- <use user_profile_source_saved.png>
-[23 <./user_profile_source.png>]
-<ldapsource.png, id=316, 959.585pt x 705.63625pt>
-File: ldapsource.png Graphic file (type png)
- <use ldapsource.png>
-File: ldapsource.png Graphic file (type png)
-
-<use ldapsource.png> [24 <./user_profile_source_saved.png> <./ldapsource.png>]
-<ldapsource_saved.png, id=326, 959.585pt x 257.96375pt>
-File: ldapsource_saved.png Graphic file (type png)
-
-<use ldapsource_saved.png>
-File: ldapsource_saved.png Graphic file (type png)
- <use ldapsource_saved.png>
-<alias_in_source.png, id=327, 959.585pt x 284.06125pt>
-File: alias_in_source.png Graphic file (type png)
-
-<use alias_in_source.png>
-File: alias_in_source.png Graphic file (type png)
- <use alias_in_source.png>
-<alias_in_source_saved.png, id=328, 959.585pt x 257.96375pt>
-File: alias_in_source_saved.png Graphic file (type png)
-
-<use alias_in_source_saved.png>
-File: alias_in_source_saved.png Graphic file (type png)
- <use alias_in_source_saved.png> [25 <./ldapsource_saved.png> <./alias_in_sourc
-e.png> <./alias_in_source_saved.png>]
-<attribute_item.png, id=342, 870.25125pt x 376.40625pt>
-File: attribute_item.png Graphic file (type png)
-
-<use attribute_item.png>
-File: attribute_item.png Graphic file (type png)
- <use attribute_item.png>
-<attribute_item_saved.png, id=343, 870.25125pt x 286.06876pt>
-File: attribute_item_saved.png Graphic file (type png)
-
-<use attribute_item_saved.png>
-File: attribute_item_saved.png Graphic file (type png)
- <use attribute_item_saved.png> [26 <./attribute_item.png> <./attribute_item_sa
-ved.png>]
-<attribute_list.png, id=360, 871.255pt x 504.88625pt>
-File: attribute_list.png Graphic file (type png)
- <use attribute_list.png>
-File: attribute_list.png Graphic file (type png)
-
-<use attribute_list.png>
-<attribute_list_saved.png, id=361, 870.25125pt x 255.95625pt>
-File: attribute_list_saved.png Graphic file (type png)
-
-<use attribute_list_saved.png>
-File: attribute_list_saved.png Graphic file (type png)
- <use attribute_list_saved.png>
-<policy_pull.png, id=362, 870.25125pt x 926.46124pt>
-File: policy_pull.png Graphic file (type png)
- <use policy_pull.png>
-File: policy_pull.png Graphic file (type png)
-
-<use policy_pull.png> [27 <./attribute_list.png> <./attribute_list_saved.png>]
-<policy_pull_saved.png, id=375, 870.25125pt x 255.95625pt>
-File: policy_pull_saved.png Graphic file (type png)
-
-<use policy_pull_saved.png>
-File: policy_pull_saved.png Graphic file (type png)
- <use policy_pull_saved.png> [28 <./policy_pull.png>] <sp_policy_pull.png, id=3
-82, 837.1275pt x 597.23125pt>
-File: sp_policy_pull.png Graphic file (type png)
-
-<use sp_policy_pull.png>
-File: sp_policy_pull.png Graphic file (type png)
- <use sp_policy_pull.png>
-<sp_policy_pull_saved.png, id=383, 871.255pt x 338.26375pt>
-File: sp_policy_pull_saved.png Graphic file (type png)
-
-<use sp_policy_pull_saved.png>
-File: sp_policy_pull_saved.png Graphic file (type png)
- <use sp_policy_pull_saved.png> [29 <./policy_pull_saved.png> <./sp_policy_pull
-.png>]
-<policy_pull_renamed.png, id=394, 870.25125pt x 227.85126pt>
-File: policy_pull_renamed.png Graphic file (type png)
-
-<use policy_pull_renamed.png>
-File: policy_pull_renamed.png Graphic file (type png)
- <use policy_pull_renamed.png>
-Underfull \hbox (badness 10000) in paragraph at lines 1213--1215
-[]\T1/ptm/m/n/10 A main schema is de-fined and is based on LDAP/X500 for nam-in
-g. The sup-port of
- []
-
-[30 <./sp_policy_pull_saved.png> <./policy_pull_renamed.png>]
-LaTeX Font Info: Font shape `T1/phv/bx/it' in size <9> not available
-(Font) Font shape `T1/phv/b/it' tried instead on input line 1279.
-LaTeX Font Info: Font shape `T1/phv/b/it' in size <9> not available
-(Font) Font shape `T1/phv/b/sl' tried instead on input line 1279.
- [31] [32]
-[33] [34]
-Underfull \vbox (badness 10000) detected at line 1613
- []
-
-
-Underfull \vbox (badness 10000) detected at line 1613
- []
-
-[35]
-Underfull \hbox (badness 10000) in paragraph at lines 1615--1620
-[]\T1/ptm/m/n/10 A list of at-tributes can also be taken from the ser-vice prov
-ider meta-data and added to `at-
- []
-
-[36] [37] [38
-
-]
-Chapter 2.
-(./Authentic2.ind) [39] (./Authentic2.aux) )
-Here is how much of TeX's memory you used:
- 8326 strings out of 495028
- 116856 string characters out of 1181228
- 205128 words of memory out of 3000000
- 11127 multiletter control sequences out of 15000+50000
- 63736 words of font info for 70 fonts, out of 3000000 for 9000
- 29 hyphenation exceptions out of 8191
- 45i,12n,45p,446b,436s stack positions out of 5000i,500n,10000p,200000b,50000s
-{/usr/share/texmf-texlive/fonts/enc
-/dvips/base/8r.enc}</usr/share/texmf-texlive/fonts/type1/urw/courier/ucrb8a.pfb
-></usr/share/texmf-texlive/fonts/type1/urw/courier/ucrr8a.pfb></usr/share/texmf
--texlive/fonts/type1/urw/courier/ucrro8a.pfb></usr/share/texmf-texlive/fonts/ty
-pe1/urw/helvetic/uhvb8a.pfb></usr/share/texmf-texlive/fonts/type1/urw/helvetic/
-uhvbo8a.pfb></usr/share/texmf-texlive/fonts/type1/urw/times/utmb8a.pfb></usr/sh
-are/texmf-texlive/fonts/type1/urw/times/utmr8a.pfb></usr/share/texmf-texlive/fo
-nts/type1/urw/times/utmri8a.pfb>
-Output written on Authentic2.pdf (43 pages, 1449136 bytes).
-PDF statistics:
- 517 PDF objects out of 1000 (max. 8388607)
- 155 named destinations out of 1000 (max. 500000)
- 276 words of extra memory for PDF output out of 10000 (max. 10000000)
-
diff --git a/doc/_build/latex/Authentic2.out b/doc/_build/latex/Authentic2.out
deleted file mode 100644
index a72caf1..0000000
--- a/doc/_build/latex/Authentic2.out
+++ /dev/null
@@ -1,15 +0,0 @@
-\BOOKMARK [0][-]{chapter.1}{Documentation content}{}
-\BOOKMARK [1][-]{section.1.1}{Features}{chapter.1}
-\BOOKMARK [1][-]{section.1.2}{Download}{chapter.1}
-\BOOKMARK [1][-]{section.1.3}{Installation}{chapter.1}
-\BOOKMARK [1][-]{section.1.4}{Authentication with an existing LDAP directory}{chapter.1}
-\BOOKMARK [1][-]{section.1.5}{Authentication on Authentic2 with PAM}{chapter.1}
-\BOOKMARK [1][-]{section.1.6}{How global policies are used in Authentic2 administration}{chapter.1}
-\BOOKMARK [1][-]{section.1.7}{Where do I find the Authentic2 SAML2 metadata?}{chapter.1}
-\BOOKMARK [1][-]{section.1.8}{Configure SAML 2.0 service providers}{chapter.1}
-\BOOKMARK [1][-]{section.1.9}{Configure Authentic2 as a SAML2 service provider or a SAML2 proxy}{chapter.1}
-\BOOKMARK [1][-]{section.1.10}{How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?}{chapter.1}
-\BOOKMARK [1][-]{section.1.11}{Configure Authentic2 as a CAS server}{chapter.1}
-\BOOKMARK [1][-]{section.1.12}{Configure Authentic2 as a CAS client}{chapter.1}
-\BOOKMARK [1][-]{section.1.13}{Attribute Management in Authentic2}{chapter.1}
-\BOOKMARK [0][-]{chapter.2}{Copyright}{}
diff --git a/doc/_build/latex/Authentic2.pdf b/doc/_build/latex/Authentic2.pdf
deleted file mode 100644
index c633107..0000000
--- a/doc/_build/latex/Authentic2.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/Authentic2.tex b/doc/_build/latex/Authentic2.tex
deleted file mode 100644
index 1e8d19b..0000000
--- a/doc/_build/latex/Authentic2.tex
+++ /dev/null
@@ -1,1686 +0,0 @@
-% Generated by Sphinx.
-\def\sphinxdocclass{report}
-\documentclass[letterpaper,10pt,english]{sphinxmanual}
-\usepackage[utf8]{inputenc}
-\DeclareUnicodeCharacter{00A0}{\nobreakspace}
-\usepackage[T1]{fontenc}
-\usepackage{babel}
-\usepackage{times}
-\usepackage[Bjarne]{fncychap}
-\usepackage{longtable}
-\usepackage{sphinx}
-\usepackage{multirow}
-
-
-\title{Authentic2 Documentation}
-\date{October 20, 2011}
-\release{1.9.2}
-\author{Mikaël Ates}
-\newcommand{\sphinxlogo}{}
-\renewcommand{\releasename}{Release}
-\makeindex
-
-\makeatletter
-\def\PYG@reset{\let\PYG@it=\relax \let\PYG@bf=\relax%
- \let\PYG@ul=\relax \let\PYG@tc=\relax%
- \let\PYG@bc=\relax \let\PYG@ff=\relax}
-\def\PYG@tok#1{\csname PYG@tok@#1\endcsname}
-\def\PYG@toks#1+{\ifx\relax#1\empty\else%
- \PYG@tok{#1}\expandafter\PYG@toks\fi}
-\def\PYG@do#1{\PYG@bc{\PYG@tc{\PYG@ul{%
- \PYG@it{\PYG@bf{\PYG@ff{#1}}}}}}}
-\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+\PYG@do{#2}}
-
-\def\PYG@tok@gd{\def\PYG@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}}
-\def\PYG@tok@gu{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}}
-\def\PYG@tok@gt{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.25,0.82}{##1}}}
-\def\PYG@tok@gs{\let\PYG@bf=\textbf}
-\def\PYG@tok@gr{\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}}
-\def\PYG@tok@cm{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
-\def\PYG@tok@vg{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
-\def\PYG@tok@m{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
-\def\PYG@tok@mh{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
-\def\PYG@tok@cs{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}\def\PYG@bc##1{\colorbox[rgb]{1.00,0.94,0.94}{##1}}}
-\def\PYG@tok@ge{\let\PYG@it=\textit}
-\def\PYG@tok@vc{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
-\def\PYG@tok@il{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
-\def\PYG@tok@go{\def\PYG@tc##1{\textcolor[rgb]{0.19,0.19,0.19}{##1}}}
-\def\PYG@tok@cp{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\def\PYG@tok@gi{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}}
-\def\PYG@tok@gh{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
-\def\PYG@tok@ni{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.84,0.33,0.22}{##1}}}
-\def\PYG@tok@nl{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.13,0.44}{##1}}}
-\def\PYG@tok@nn{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}}
-\def\PYG@tok@no{\def\PYG@tc##1{\textcolor[rgb]{0.38,0.68,0.84}{##1}}}
-\def\PYG@tok@na{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-\def\PYG@tok@nb{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\def\PYG@tok@nc{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}}
-\def\PYG@tok@nd{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.33,0.33,0.33}{##1}}}
-\def\PYG@tok@ne{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\def\PYG@tok@nf{\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.49}{##1}}}
-\def\PYG@tok@si{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.44,0.63,0.82}{##1}}}
-\def\PYG@tok@s2{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-\def\PYG@tok@vi{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
-\def\PYG@tok@nt{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.45}{##1}}}
-\def\PYG@tok@nv{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
-\def\PYG@tok@s1{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-\def\PYG@tok@gp{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}}
-\def\PYG@tok@sh{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-\def\PYG@tok@ow{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\def\PYG@tok@sx{\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}}
-\def\PYG@tok@bp{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\def\PYG@tok@c1{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
-\def\PYG@tok@kc{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\def\PYG@tok@c{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
-\def\PYG@tok@mf{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
-\def\PYG@tok@err{\def\PYG@bc##1{\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{##1}}}
-\def\PYG@tok@kd{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\def\PYG@tok@ss{\def\PYG@tc##1{\textcolor[rgb]{0.32,0.47,0.09}{##1}}}
-\def\PYG@tok@sr{\def\PYG@tc##1{\textcolor[rgb]{0.14,0.33,0.53}{##1}}}
-\def\PYG@tok@mo{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
-\def\PYG@tok@mi{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
-\def\PYG@tok@kn{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\def\PYG@tok@o{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
-\def\PYG@tok@kr{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\def\PYG@tok@s{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-\def\PYG@tok@kp{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\def\PYG@tok@w{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}}
-\def\PYG@tok@kt{\def\PYG@tc##1{\textcolor[rgb]{0.56,0.13,0.00}{##1}}}
-\def\PYG@tok@sc{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-\def\PYG@tok@sb{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-\def\PYG@tok@k{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
-\def\PYG@tok@se{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-\def\PYG@tok@sd{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
-
-\def\PYGZbs{\char`\\}
-\def\PYGZus{\char`\_}
-\def\PYGZob{\char`\{}
-\def\PYGZcb{\char`\}}
-\def\PYGZca{\char`\^}
-\def\PYGZsh{\char`\#}
-\def\PYGZpc{\char`\%}
-\def\PYGZdl{\char`\$}
-\def\PYGZti{\char`\~}
-% for compatibility with earlier versions
-\def\PYGZat{@}
-\def\PYGZlb{[}
-\def\PYGZrb{]}
-\makeatother
-
-\begin{document}
-
-\maketitle
-\tableofcontents
-\phantomsection\label{index::doc}
-
-
-Authentic2 is a versatile identity provider addressing a broad
-range of needs, from simple to advanced setups, around web authentication,
-attribute sharing, namespace mapping and authorization management.
-
-Authentic2 supports many protocols and standards, including SAML2, CAS, OpenID,
-LDAP, X509, OATH, and can bridge between them.
-
-Authentic2 is under the GNU AGPL version 3 licence.
-
-It has support for SAMLv2 thanks to \href{http://lasso.entrouvert.org}{Lasso},
-a free (GNU GPL) implementation of the Liberty Alliance and OASIS
-specifications of SAML2, ID-FF1.2 and ID-WSF2.
-\begin{itemize}
-\item {}
-\href{http://dev.entrouvert.org/projects/authentic}{Authentic2 project site}
-
-\item {}
-\href{http://dev.entrouvert.org/projects/authentic/roadmap}{Authentic2 roadmap}
-
-\end{itemize}
-
-
-\chapter{Documentation content}
-\label{index:authentic2-s-documentation}\label{index:documentation-content}
-
-\section{Features}
-\label{features::doc}\label{features:features}\label{features:id1}
-Authentic can authenticate users against:
-\begin{itemize}
-\item {}
-an LDAP directory,
-
-\item {}
-a SAML 2.0 identity provider,
-
-\item {}
-an OpenID identity provider,
-
-\item {}
-with an X509 certificate.
-
-\end{itemize}
-
-Authentic can provide authentication to web applications using the following
-protocols:
-\begin{itemize}
-\item {}
-OpenID,
-
-\item {}
-SAML 2.0,
-
-\item {}
-CAS 1.0 \& CAS 2.0.
-
-\end{itemize}
-
-Authentic can proxy authentication between any two different protocols it
-support.
-
-
-\section{Download}
-\label{download:download}\label{download::doc}\label{download:id1}\begin{enumerate}
-\item {}
-Pypi: \href{http://pypi.python.org/pypi/authentic2/1.9.0}{http://pypi.python.org/pypi/authentic2/1.9.0}
-
-\item {}
-Git repository: \href{http://repos.entrouvert.org/authentic.git}{http://repos.entrouvert.org/authentic.git}
-
-\item {}
-\href{http://dev.entrouvert.org/projects/authentic/repository}{Browse source}
-
-\end{enumerate}
-
-
-\section{Installation}
-\label{installation:installation}\label{installation::doc}\label{installation:id1}
-
-\subsection{Dependencies}
-\label{installation:dependencies}
-You must install the following packages to use Authentic
-\begin{itemize}
-\item {}
-Python Lasso binding 2.3.5:
-\begin{quote}
-
-From sources: \href{http://lasso.entrouvert.org/download}{http://lasso.entrouvert.org/download}
-Debian based distribution: apt-get install python-lasso
-\end{quote}
-
-\item {}
-Django 1.3:
-\begin{quote}
-
-From sources: \href{http://www.djangoproject.com/download/1.3/tarball/}{http://www.djangoproject.com/download/1.3/tarball/}
-\end{quote}
-
-\item {}
-Django-registration 0.8-alpha-1:
-\begin{quote}
-
-From sources: \href{http://bitbucket.org/ubernostrum/django-registration/downloads}{http://bitbucket.org/ubernostrum/django-registration/downloads}
-Debian based distribution: apt-get install python-django-registration
-\end{quote}
-
-\item {}
-Django-authopenid 0.9.6:
-\begin{quote}
-
-From sources: \href{http://bitbucket.org/benoitc/django-authopenid/downloads}{http://bitbucket.org/benoitc/django-authopenid/downloads}
-\end{quote}
-
-\item {}
-Django-south 0.7.3:
-\begin{quote}
-
-From sources:: \href{http://south.aeracode.org/docs/installation.html}{http://south.aeracode.org/docs/installation.html}
-\end{quote}
-
-\item {}
-Django-profiles 0.2:
-\begin{quote}
-
-From sources:: \href{http://pypi.python.org/pypi/django-profiles}{http://pypi.python.org/pypi/django-profiles}
-\end{quote}
-
-\end{itemize}
-
-You install all the django libraries quickly using pip:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-pip install django django-profiles django-registration \PYGZbs{}
- django-debug-toolbar django-authopenid south
-\end{Verbatim}
-
-or easy\_install:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-easy\_install django django-profiles django-registration \PYGZbs{}
- django-debug-toolbar django-authopenid south
-\end{Verbatim}
-
-
-\subsection{Quick Start}
-\label{installation:quick-start}
-Then launch the following commands:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-python manage.py syncdb --migrate
-python manage.py runserver
-\end{Verbatim}
-
-You should see the following output:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-Validating models...
-0 errors found
-
-Django version 1.2, using settings 'authentic.settings'
-Development server is running at http://127.0.0.1:8000/
-Quit the server with CONTROL-C.
-
-You can access the running application on http://127.0.0.1:8000/
-\end{Verbatim}
-
-
-\subsection{Specifying a different database}
-\label{installation:specifying-a-different-database}
-This is done by modifying the DATABASES dictionary in your local\_settings.py file
-(create it in Authentic project directory); for example:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-\PYG{n}{DATABASES}\PYG{p}{[}\PYG{l+s}{'}\PYG{l+s}{default}\PYG{l+s}{'}\PYG{p}{]} \PYG{o}{=} \PYG{p}{\PYGZob{}}
- \PYG{l+s}{'}\PYG{l+s}{ENGINE}\PYG{l+s}{'}\PYG{p}{:} \PYG{l+s}{'}\PYG{l+s}{django.db.backends.postgresql}\PYG{l+s}{'}\PYG{p}{,}
- \PYG{l+s}{'}\PYG{l+s}{NAME}\PYG{l+s}{'}\PYG{p}{:} \PYG{l+s}{'}\PYG{l+s}{authentic}\PYG{l+s}{'}\PYG{p}{,}
- \PYG{l+s}{'}\PYG{l+s}{USER}\PYG{l+s}{'}\PYG{p}{:} \PYG{l+s}{'}\PYG{l+s}{admindb}\PYG{l+s}{'}\PYG{p}{,}
- \PYG{l+s}{'}\PYG{l+s}{PASSWORD}\PYG{l+s}{'}\PYG{p}{:} \PYG{l+s}{'}\PYG{l+s}{foobar}\PYG{l+s}{'}\PYG{p}{,}
- \PYG{l+s}{'}\PYG{l+s}{HOST}\PYG{l+s}{'}\PYG{p}{:} \PYG{l+s}{'}\PYG{l+s}{db.example.com}\PYG{l+s}{'}\PYG{p}{,}
- \PYG{l+s}{'}\PYG{l+s}{PORT}\PYG{l+s}{'}\PYG{p}{:} \PYG{l+s}{'}\PYG{l+s}{'}\PYG{p}{,} \PYG{c}{\PYGZsh{} empty string means default value}
-\PYG{p}{\PYGZcb{}}
-\end{Verbatim}
-
-You should refer to the Django documentation on databases settings at
-\href{http://docs.djangoproject.com/en/dev/ref/settings/\#databases}{http://docs.djangoproject.com/en/dev/ref/settings/\#databases} for all
-the details.
-
-
-\subsection{How to upgrade to a new version of authentic ?}
-\label{installation:how-to-upgrade-to-a-new-version-of-authentic}
-Authentic store all its data in a relational database as specified in its
-settings.py or local\_settings.py file. So in order to upgrade to a new version
-of authentic you have to update your database schema using the
-migration command — you will need to have installed the dependency django-south,
-see the beginning of this README file.:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-python ./manage.py migrate
-\end{Verbatim}
-
-Then you will need to create new tables if there are.:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-python ./manage.py syncdb
-\end{Verbatim}
-
-
-\section{Authentication with an existing LDAP directory}
-\label{auth_ldap:auth-ldap}\label{auth_ldap:authentication-with-an-existing-ldap-directory}\label{auth_ldap::doc}
-Authentic use the module django\_auth\_ldap to synchronize the Django user tables
-with an LDAP. For complex use case, we will refer you to the django\_auth\_ldap
-documentation, see \href{http://packages.python.org/django-auth-ldap/}{http://packages.python.org/django-auth-ldap/}.
-
-
-\subsection{How to authenticate users against an LDAP server with anonymous binding ?}
-\label{auth_ldap:how-to-authenticate-users-against-an-ldap-server-with-anonymous-binding}\begin{enumerate}
-\item {}
-Install the django\_auth\_ldap module for Django:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-pip install django\_auth\_ldap
-\end{Verbatim}
-
-\item {}
-Configure your local\_settings.py file for authenticating against LDAP.
-
-\end{enumerate}
-
-The next lines must be added:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-\PYG{n}{AUTHENTICATION\PYGZus{}BACKENDS} \PYG{o}{+}\PYG{o}{=} \PYG{p}{(} \PYG{l+s}{'}\PYG{l+s}{django\PYGZus{}auth\PYGZus{}ldap.backend.LDAPBackend}\PYG{l+s}{'}\PYG{p}{,} \PYG{p}{)}
-
-\PYG{k+kn}{import} \PYG{n+nn}{ldap}
-\PYG{k+kn}{from} \PYG{n+nn}{django\PYGZus{}auth\PYGZus{}ldap.config} \PYG{k+kn}{import} \PYG{n}{LDAPSearch}
-
-\PYG{c}{\PYGZsh{} Here put the LDAP URL of your server}
-\PYG{n}{AUTH\PYGZus{}LDAP\PYGZus{}SERVER\PYGZus{}URI} \PYG{o}{=} \PYG{l+s}{'}\PYG{l+s}{ldap://ldap.example.com}\PYG{l+s}{'}
-\PYG{c}{\PYGZsh{} Let the bind DN and bind password blank for anonymous binding}
-\PYG{n}{AUTH\PYGZus{}LDAP\PYGZus{}BIND\PYGZus{}DN} \PYG{o}{=} \PYG{l+s}{"}\PYG{l+s}{"}
-\PYG{n}{AUTH\PYGZus{}LDAP\PYGZus{}BIND\PYGZus{}PASSWORD} \PYG{o}{=} \PYG{l+s}{"}\PYG{l+s}{"}
-\PYG{c}{\PYGZsh{} Lookup user under the branch o=base and by mathcing their uid against the}
-\PYG{c}{\PYGZsh{} received login name}
-\PYG{n}{AUTH\PYGZus{}LDAP\PYGZus{}USER\PYGZus{}SEARCH} \PYG{o}{=} \PYG{n}{LDAPSearch}\PYG{p}{(}\PYG{l+s}{"}\PYG{l+s}{o=base}\PYG{l+s}{"}\PYG{p}{,}
- \PYG{n}{ldap}\PYG{o}{.}\PYG{n}{SCOPE\PYGZus{}SUBTREE}\PYG{p}{,} \PYG{l+s}{"}\PYG{l+s}{(uid=}\PYG{l+s+si}{\PYGZpc{}(user)s}\PYG{l+s}{)}\PYG{l+s}{"}\PYG{p}{)}
-\end{Verbatim}
-
-
-\subsection{How to allow members of an LDAP group to manage Authentic ?}
-\label{auth_ldap:how-to-allow-members-of-an-ldap-group-to-manage-authentic}\begin{enumerate}
-\item {}
-First you must know the objectClass of groups in your LDAP schema, this FAQ
-will show you the configuration for two usual classes: groupOfNames and
-groupOfUniqueNames.
-
-\item {}
-Find the relevant groupname. We will say it is: cn=admin,o=mycompany
-
-\item {}
-Add the following lines:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-\PYG{k+kn}{from} \PYG{n+nn}{django\PYGZus{}auth\PYGZus{}ldap.config} \PYG{k+kn}{import} \PYG{n}{GroupOfNamesType}
-\PYG{n}{AUTH\PYGZus{}LDAP\PYGZus{}GROUP\PYGZus{}TYPE} \PYG{o}{=} \PYG{n}{GroupOfNamesType}\PYG{p}{(}\PYG{p}{)}
-\PYG{n}{AUTH\PYGZus{}LDAP\PYGZus{}GROUP\PYGZus{}SEARCH} \PYG{o}{=} \PYG{n}{LDAPSearch}\PYG{p}{(}\PYG{l+s}{"}\PYG{l+s}{o=mycompany}\PYG{l+s}{"}\PYG{p}{,}
- \PYG{n}{ldap}\PYG{o}{.}\PYG{n}{SCOPE\PYGZus{}SUBTREE}\PYG{p}{,} \PYG{l+s}{"}\PYG{l+s}{(objectClass=groupOfNames)}\PYG{l+s}{"}\PYG{p}{)}
-\PYG{n}{AUTH\PYGZus{}LDAP\PYGZus{}USER\PYGZus{}FLAGS\PYGZus{}BY\PYGZus{}GROUP} \PYG{o}{=} \PYG{p}{\PYGZob{}}
- \PYG{l+s}{"}\PYG{l+s}{is\PYGZus{}staff}\PYG{l+s}{"}\PYG{p}{:} \PYG{l+s}{"}\PYG{l+s}{cn=admin,o=mycompany}\PYG{l+s}{"}
-\PYG{p}{\PYGZcb{}}
-\end{Verbatim}
-
-\end{enumerate}
-
-For an objectClass of groupOfUniqueNames you would change the string
-GroupOfNamesType to GroupOfUniqueNamesType and grouOfNames to
-groupOfUniqueNames. For more complex cases see the django\_auth\_ldap
-documentation.
-
-
-\section{Authentication on Authentic2 with PAM}
-\label{auth_pam:authentication-on-authentic2-with-pam}\label{auth_pam:auth-pam}\label{auth_pam::doc}
-This module is copied from \href{https://bitbucket.org/wnielson/django-pam/}{https://bitbucket.org/wnielson/django-pam/} by Weston
-Nielson and the pam ctype module by Chris Atlee \href{http://atlee.ca/software/pam/}{http://atlee.ca/software/pam/}.
-
-Add `authentic2.vendor.dpam.backends.PAMBackend' to your
-\code{settings.py}:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-AUTHENTICATION\_BACKENDS = (
- ...
- 'authentic2.vendor.dpam.backends.PAMBackend',
- ...
-)
-\end{Verbatim}
-
-Now you can login via the system-login credentials. If the user is
-successfully authenticated but has never logged-in before, a new \code{User}
-object is created. By default this new \code{User} has both \code{is\_staff} and
-\code{is\_superuser} set to \code{False}. You can change this behavior by adding
-\code{PAM\_IS\_STAFF=True} and \code{PAM\_IS\_SUPERUSER} in your \code{settings.py} file.
-
-The default PAM service used is \code{login} but you can change it by setting the
-\code{PAM\_SERVICE} variable in your \code{settings.py} file.
-
-
-\section{How global policies are used in Authentic2 administration}
-\label{administration_with_policies:how-global-policies-are-used-in-authentic2-administration}\label{administration_with_policies:administration-with-policies}\label{administration_with_policies::doc}
-The policy management with global policies is nearly used for any kind of
-policy in Authentic2.
-
-For each kind of these policies, the system takes in account two special
-global policies named `Default' and `All':
-\begin{itemize}
-\item {}
-If no other policy applies, the policy `Default' will apply.
-
-\item {}
-A policy can be created and attached to any related object. This policy is authoritative on policy `Default'.
-
-\item {}
-If the policy `All' exists, it is authoritative on any other policy.
-
-\item {}
-The global policies must be created by the administrator if necessary.
-
-\end{itemize}
-
-\textbf{A policy is taken in account only if it is enabled.}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-\PYG{k}{def} \PYG{n+nf}{get\PYGZus{}sample\PYGZus{}policy}\PYG{p}{(}\PYG{n}{any\PYGZus{}object}\PYG{p}{)}\PYG{p}{:}
- \PYG{k}{try}\PYG{p}{:}
- \PYG{k}{return} \PYG{n}{SamplePolicy}\PYG{o}{.}\PYG{n}{objects}\PYG{o}{.}\PYG{n}{get}\PYG{p}{(}\PYG{n}{name}\PYG{o}{=}\PYG{l+s}{'}\PYG{l+s}{All}\PYG{l+s}{'}\PYG{p}{,} \PYG{n}{enabled}\PYG{o}{=}\PYG{n+nb+bp}{True}\PYG{p}{)}
- \PYG{k}{except} \PYG{n}{SamplePolicy}\PYG{o}{.}\PYG{n}{DoesNotExist}\PYG{p}{:}
- \PYG{k}{pass}
- \PYG{k}{if} \PYG{n}{any\PYGZus{}object}\PYG{o}{.}\PYG{n}{enable\PYGZus{}following\PYGZus{}sample\PYGZus{}policy}\PYG{p}{:}
- \PYG{k}{if} \PYG{n}{any\PYGZus{}object}\PYG{o}{.}\PYG{n}{sample\PYGZus{}policy}\PYG{p}{:}
- \PYG{k}{return} \PYG{n}{any\PYGZus{}object}\PYG{o}{.}\PYG{n}{sample\PYGZus{}policy}
- \PYG{k}{try}\PYG{p}{:}
- \PYG{k}{return} \PYG{n}{SamplePolicy}\PYG{o}{.}\PYG{n}{objects}\PYG{o}{.}\PYG{n}{get}\PYG{p}{(}\PYG{n}{name}\PYG{o}{=}\PYG{l+s}{'}\PYG{l+s}{Default}\PYG{l+s}{'}\PYG{p}{,} \PYG{n}{enabled}\PYG{o}{=}\PYG{n+nb+bp}{True}\PYG{p}{)}
- \PYG{k}{except} \PYG{n}{SamplePolicy}\PYG{o}{.}\PYG{n}{DoesNotExist}\PYG{p}{:}
- \PYG{k}{pass}
- \PYG{k}{return} \PYG{n+nb+bp}{None}
-\end{Verbatim}
-
-\emph{It is advised to add a `Default' global policy when it is expected to apply a
-policy to all related objects. Add e regular policy to some objects are then
-used to handle particular configurations.}
-
-\emph{A `Default' global policy should be defined to avoid misonfiguration.}
-
-\emph{A `All' global policy should be used to enforce a global configuration for
-all related objects or for testing purposes.}
-
-
-\section{Where do I find the Authentic2 SAML2 metadata?}
-\label{where_metadata:where-do-i-find-the-authentic2-saml2-metadata}\label{where_metadata:where-metadata}\label{where_metadata::doc}
-The SAML2 metadata are automatically generated.
-
-\textbf{Authentic2 will infer from environment variables the host and port to
-generate the URLs contained in the medatada.}
-
-The metadata of Authentic2 SAML2 identity provider are available at:
-\begin{quote}
-
-http{[}s{]}://your.domain.com/idp/saml2/metadata
-\end{quote}
-
-The metadata of Authentic2 SAML2 service provider are available at:
-\begin{quote}
-
-http{[}s{]}://your.domain.com/authsaml2/metadata
-\end{quote}
-
-
-\section{Configure SAML 2.0 service providers}
-\label{config_saml2_sp:configure-saml-2-0-service-providers}\label{config_saml2_sp::doc}\label{config_saml2_sp:config-saml2-sp}
-
-\subsection{How do I authenticate against Authentic2 with a SAML2 service provider?}
-\label{config_saml2_sp:how-do-i-authenticate-against-authentic2-with-a-saml2-service-provider}\begin{enumerate}
-\item {}
-Declare Authentic2 as a SAML2 identity provider on your SAML2 service provider using the SAML2 identity provider metadata of Authentic2.
-
-\end{enumerate}
-
-Go to http{[}s{]}://your.domain.com/idp/saml2/metadata
-\begin{enumerate}
-\setcounter{enumi}{1}
-\item {}
-Add and configure a SAML2 service provider in Authentic2 using the metadata of the service provider.
-
-\end{enumerate}
-
-
-\subsection{How do I add and configure a SAML2 service provider in Authentic2?}
-\label{config_saml2_sp:how-do-i-add-and-configure-a-saml2-service-provider-in-authentic2}
-You first need to create a new SAML2 service provider entry. This requires the
-SAML2 metadata of the service provider.
-
-If your service provider is Authentic2, the metadata are available at:
-\begin{quote}
-
-http{[}s{]}://your.domain.com/authsaml2/metadata
-\end{quote}
-
-See {\hyperref[where_metadata:where-metadata]{\emph{Where do I find the Authentic2 SAML2 metadata?}}} for more information.
-
-
-\subsubsection{Create a SAML2 service provider entry}
-\label{config_saml2_sp:create-a-saml2-service-provider-entry}\begin{enumerate}
-\item {}
-Go to
-\begin{quote}
-
-http{[}s{]}://your.domain.com/admin/saml/libertyprovider/add/
-\end{quote}
-
-\item {}
-Fill the form fields
-
-\end{enumerate}
-
-\includegraphics{new_saml2_sp_1.png}
-
-\includegraphics{new_saml2_sp_2.png}
-
-\textbf{The service provider must be enabled.}
-
-See below about configuring the service provider with policies:
-\begin{itemize}
-\item {}
-options of the service provider
-
-\item {}
-protocol policy
-
-\item {}
-attribute policy
-
-\end{itemize}
-\begin{enumerate}
-\setcounter{enumi}{2}
-\item {}
-Save
-
-\end{enumerate}
-
-\includegraphics{new_saml2_sp_saved.png}
-
-
-\subsubsection{Configure the SAML2 service provider options}
-\label{config_saml2_sp:configure-the-saml2-service-provider-options}
-The SAML2 options of the service provider are configured using sp options
-policies.
-
-See the \emph{administration with policy principle} page {\hyperref[administration_with_policies:administration-with-policies]{\emph{How global policies are used in Authentic2 administration}}}.
-
-You may create a regular policy and configure your service provider to use it.
-
-Go to:
-\begin{quote}
-
-http{[}s{]}://your.domain.com/admin/saml/spoptionsidppolicy/add/
-\end{quote}
-
-\includegraphics{sp_options_regular.png}
-
-\includegraphics{sp_options_regular_modify_sp.png}
-
-Exemple with a policy `Default':
-
-\includegraphics{sp_options_default.png}
-
-\includegraphics{sp_options_default_saved.png}
-
-Exemple with a policy `All':
-
-\includegraphics{sp_options_all.png}
-
-If no policy is found for the configuration of the SAML2 options of a service
-provider, the following error is displayed when a SSO request is received.
-
-\includegraphics{error_no_sp_options.png}
-
-
-\subsubsection{Configure the SAML2 service provider protocol options}
-\label{config_saml2_sp:configure-the-saml2-service-provider-protocol-options}
-This kind of policy does not use the policy management using global policies.
-
-You should use the default option except if your service provider is a
-Shibboleth service provider.
-
-
-\subsubsection{Configure the attribute policy of the service provider}
-\label{config_saml2_sp:configure-the-attribute-policy-of-the-service-provider}
-See the attribute management page {\hyperref[attribute_management:attribute-management]{\emph{Attribute Management in Authentic2}}}.
-
-
-\subsubsection{How to refresh metadata of an identity provider hosted at a Well-Known Location?}
-\label{config_saml2_sp:how-to-refresh-metadata-of-an-identity-provider-hosted-at-a-well-known-location}
-The Well-Known Location (WKL) means that the entity Id of the provider is a
-URL at which the provider metadata are hosted.
-
-To refresh them, select the provider on the list of provider, then select in
-the menu `Update metadata', then click on `Go'.
-
-\includegraphics{update_metadata.png}
-
-
-\subsubsection{How to create in bulk service providers with the sync-metadata script?}
-\label{config_saml2_sp:how-to-create-in-bulk-service-providers-with-the-sync-metadata-script}
-See the page explaining the use of the script sync-metadata {\hyperref[sync-metadata_script:sync-metadata-script]{\emph{How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?}}}.
-
-
-\section{Configure Authentic2 as a SAML2 service provider or a SAML2 proxy}
-\label{config_saml2_idp:config-saml2-idp}\label{config_saml2_idp::doc}\label{config_saml2_idp:configure-authentic2-as-a-saml2-service-provider-or-a-saml2-proxy}
-\textbf{The configuration to make Authentic2 a SAML2 service provider or a SAML2
-proxy is the same. The difference comes from that Authentic2 is may be
-configured or not as a SAML2 identity provider.}
-
-
-\subsection{How do I authenticate against a third SAML2 identity provider?}
-\label{config_saml2_idp:how-do-i-authenticate-against-a-third-saml2-identity-provider}\begin{enumerate}
-\item {}
-Declare Authentic2 as a SAML2 service provider on your SAML2 identity provider using the SAML2 service provider metadata of Authentic2.
-
-\end{enumerate}
-
-Go to http{[}s{]}://your.domain.com/authsaml2/metadata
-\begin{enumerate}
-\setcounter{enumi}{1}
-\item {}
-Add and configure a SAML2 identity provider entry in Authentic2 using the metadata of the identity provider.
-
-\end{enumerate}
-
-
-\subsection{How do I add and configure a SAML2 identity provider in Authentic2?}
-\label{config_saml2_idp:how-do-i-add-and-configure-a-saml2-identity-provider-in-authentic2}
-You first need to create a SAML2 identity provider entry with the SAML2
-metadata of the identity provider. Then, you configure it.
-
-If your identity provider is Authentic2, the metadata are available at:
-\begin{quote}
-
-http{[}s{]}://your.domain.com/idp/saml2/metadata
-\end{quote}
-
-See {\hyperref[where_metadata:where-metadata]{\emph{Where do I find the Authentic2 SAML2 metadata?}}} for more information.
-
-
-\subsubsection{Create a SAML2 identity provider entry}
-\label{config_saml2_idp:create-a-saml2-identity-provider-entry}
-You first need to create a new SAML2 identity provider entry. This requires
-the SAML2 metadata of the identity provider.
-\begin{enumerate}
-\item {}
-Go to
-\begin{quote}
-
-http{[}s{]}://your.domain.com/admin/saml/libertyprovider/add/
-\end{quote}
-
-\item {}
-Fill the form fields
-
-\end{enumerate}
-
-\includegraphics{new_saml2_idp_1.png}
-
-\includegraphics{new_saml2_idp_2.png}
-
-\textbf{The identity provider must be enabled.}
-
-See below about configuring the identity provider with policies:
-\begin{itemize}
-\item {}
-options of the identity provider
-
-\end{itemize}
-\begin{enumerate}
-\setcounter{enumi}{2}
-\item {}
-Save
-
-\end{enumerate}
-
-\includegraphics{new_saml2_idp_saved.png}
-
-
-\subsubsection{Configure the SAML2 identity provider options}
-\label{config_saml2_idp:configure-the-saml2-identity-provider-options}
-The SAML2 options of the service provider are configured using sp options
-policies.
-
-See the \emph{administration with policy principle} page {\hyperref[administration_with_policies:administration-with-policies]{\emph{How global policies are used in Authentic2 administration}}}.
-
-You may create a regular policy and configure your service provider to use it.
-
-Go to:
-\begin{quote}
-
-http{[}s{]}://your.domain.com/admin/saml/idpoptionssppolicy/add/
-\end{quote}
-
-\includegraphics{sp_options_regular.png}
-
-\includegraphics{sp_options_regular_saved.png}
-
-\includegraphics{sp_options_regular_modify_sp.png}
-
-Exemple with a policy `Default':
-
-\includegraphics{sp_options_default.png}
-
-Exemple with a policy `All':
-
-\includegraphics{sp_options_all.png}
-
-If no policy is found for the configuration of the SAML2 options of an identity
-provider, the following error is displayed when a SSO request is initiated.
-
-\includegraphics{error_no_idp_options.png}
-
-
-\subsubsection{How to refresh metadata of an identity provider hosted at a Well-Known Location?}
-\label{config_saml2_idp:how-to-refresh-metadata-of-an-identity-provider-hosted-at-a-well-known-location}
-The Well-Known Location (WKL) means that the entity Id of the provider is a
-URL at which the provider metadata are hosted.
-
-To refresh them, select the provider on the list of provider, then select in
-the menu `Update metadata', then click on `Go'.
-
-\includegraphics{update_metadata.png}
-
-\includegraphics{update_metadata_done.png}
-
-
-\subsubsection{How to create in bulk identity providers with the sync-metadata script?}
-\label{config_saml2_idp:how-to-create-in-bulk-identity-providers-with-the-sync-metadata-script}
-See the page explaining the use of the script sync-metadata {\hyperref[sync-metadata_script:sync-metadata-script]{\emph{How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?}}}.
-
-
-\section{How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?}
-\label{sync-metadata_script:how-to-create-import-and-delete-in-bulk-saml2-identity-and-service-providers-with-the-sync-metadata-script}\label{sync-metadata_script:sync-metadata-script}\label{sync-metadata_script::doc}
-This section explains hot to use the script sync-metadata.
-
-
-\subsection{Presentation}
-\label{sync-metadata_script:presentation}
-This script allows to create/import and deleted in bulk SAML2 identity and
-service providers using standard SAML2 metadata files containing entity
-descriptors.
-
-An example of such a file used in production is the global metadata file of
-the identity federation of French universities that can be found at \href{http://}{http://}...
-
-Use the following command:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-path\_to\_project/authentic2\$ python manage.py sync-metadata file\_name [options]
-\end{Verbatim}
-
-
-\subsection{Options}
-\label{sync-metadata_script:options}\begin{itemize}
-\item {}
-idp
-\begin{quote}
-
-Load only identity providers of the metadata file.
-\end{quote}
-
-\item {}
-sp
-\begin{quote}
-
-Load only service providers of the metadata file.
-\end{quote}
-
-\item {}
-source
-\begin{quote}
-
-Used to tag all imported providers with a label. This option is used to
-metadata reloading and deletion in bulk.
-
-Reloading a metadata file, when a provider with same entity is found, it is
-updated. If a provider in the metadata file does not exist it is created.
-If a provider exists in the system but not in the metadata file, it is
-removed.
-
-\textbf{For reloading, a source can only be associated with a unique metadata
-file. This is due to the fact that all providers of a source not found in
-the metadata file are removed.}
-\end{quote}
-
-\end{itemize}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-path\_to\_project/authentic2\$ python manage.py sync-metadata file\_name --source=french\_federation
-\end{Verbatim}
-\begin{itemize}
-\item {}
-sp-policy
-\begin{quote}
-
-To configure the SAML2 parameters of service providers imported with the
-script, a policy of type SPOptionsIdPPolicy must be created in the
-the administration interface.
-Either it is a global policy `Default' or `All' or it is a regular policy.
-If it is a regular policy, the policy name can be specified in parameter
-of the script with this option.
-The policy is then associated to all service providers created.
-\end{quote}
-
-\end{itemize}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-path\_to\_project/authentic2\$ python manage.py sync-metadata file\_name --sp-policy=sp\_policy\_name
-\end{Verbatim}
-\begin{itemize}
-\item {}
-idp-policy
-\begin{quote}
-
-To configure the SAML2 parameters of identity providers imported with the
-script, a policy of type IdPOptionsSPPolicy must be created in the
-the administration interface.
-Either it is a global policy `Default' or `All' or it is a regular policy.
-If it is a regular policy, the policy name can be specified in parameter
-of the script with this option.
-The policy is then associated to all service providers created.
-\end{quote}
-
-\end{itemize}
-
-\begin{Verbatim}[commandchars=\\\{\}]
-path\_to\_project/authentic2\$ python manage.py sync-metadata file\_name --idp-policy=idp\_policy\_name
-\end{Verbatim}
-\begin{itemize}
-\item {}
-delete
-\begin{quote}
-
-With no options, all providers are deleted.
-
-With the source option, only providers with the source name given are deleted.
-
-\textbf{This option can not be combined with options idp and sp.}
-\end{quote}
-
-\item {}
-ignore-errors
-\begin{quote}
-
-If loading of one EntityDescriptor fails, continue loading
-\end{quote}
-
-\end{itemize}
-
-
-\section{Configure Authentic2 as a CAS server}
-\label{config_cas_sp:configure-authentic2-as-a-cas-server}\label{config_cas_sp::doc}\label{config_cas_sp:config-cas-sp}
-
-\subsection{How to use Authentic2 as a CAS 1.0 or CAS 2.0 identity provider ?}
-\label{config_cas_sp:how-to-use-authentic2-as-a-cas-1-0-or-cas-2-0-identity-provider}\begin{enumerate}
-\item {}
-Activate CAS IdP support in settings.py:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-\PYG{n}{IDP\PYGZus{}CAS} \PYG{o}{=} \PYG{n+nb+bp}{True}
-\end{Verbatim}
-
-\item {}
-Then create the database table to hold CAS service tickets:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-python authentic2/manage.py syncdb --migrate
-\end{Verbatim}
-
-\item {}
-Also configure authentic2 to authenticate against your LDAP directory (see
-above) if your want your user attributes to be accessible from your service,
-if it is not necessary you can use the normal relational database storage
-for you users.
-
-\item {}
-Finally configure your service to point to the CAS endpoint at:
-\begin{quote}
-
-http{[}s{]}://your.domain.com/idp/cas/
-\end{quote}
-
-\item {}
-If needed configure your service to resolve authenticated user with your
-LDAP directory (if user attributes are needed for your service)
-
-\end{enumerate}
-
-
-\section{Configure Authentic2 as a CAS client}
-\label{config_cas_idp::doc}\label{config_cas_idp:configure-authentic2-as-a-cas-client}\label{config_cas_idp:config-cas-idp}
-
-\section{Attribute Management in Authentic2}
-\label{attribute_management:attribute-management}\label{attribute_management:attribute-management-in-authentic2}\label{attribute_management::doc}
-
-\subsection{Summary}
-\label{attribute_management:summary}
-Attribute management currently allows to configure attribute policies
-associated with SAML2 service providers to define attributes that are
-pushed in SAML2 successful authentication response delivered by Authentic2.
-
-User attributes can be taken from LDAP directories, the user Django
-profile or taken from the user Django session if Authentic2 is also configured
-as a SAML2 service provider.
-
-Indeed, when Authentic2 acts also as a SAML2 service provider,
-attributes contained in the SAML2 assertion received from third IdP are put in
-the user session.
-
-Attributes can thus be proxyfied during SSO with Authentic2
-configured as a SAML2 proxy.
-
-The namespace of attributes received from another SAML2 IdP or pushed in the
-assertion given in to service providers can be configured per attribute or per
-service provider.
-
-By default, the namespace and format of attributes in assertion is conformant
-to the SAMLV2.0 X500/LDAP Attribute profile:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-\textless{}saml:Attribute
- xmlns:x500="urn:oasis:names:tc:SAML:2.0:profiles:attribute:X500"
- NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
- Name="urn:oid:2.5.4.42" FriendlyName="givenName"\textgreater{}
- \textless{}saml:AttributeValue xsi:type="xs:string"
- x500:Encoding="LDAP"\textgreater{}Mikaël\textless{}/saml:AttributeValue\textgreater{}
-\textless{}/saml:Attribute\textgreater{}
-\end{Verbatim}
-
-But the \href{http://schemas.xmlsoap.org/ws/2005/05/identity/claims}{http://schemas.xmlsoap.org/ws/2005/05/identity/claims} from the ISI
-profile can also be used, for instance:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-\textless{}saml:Attribute
- NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
- Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"
- FriendlyName="First Name"\textgreater{}
- \textless{}saml:AttributeValue\textgreater{}Mikaël\textless{}/saml:AttributeValue\textgreater{}
-\textless{}/saml:Attribute\textgreater{}
-\end{Verbatim}
-
-
-\subsection{Configuration}
-\label{attribute_management:configuration}
-
-\subsubsection{Configure sources of attributes}
-\label{attribute_management:configure-sources-of-attributes}
-The source of attributes for authentic2 are of two kinds. The LDAP sources and
-the user django profile.
-
-
-\paragraph{Declare the Django profile source}
-\label{attribute_management:declare-the-django-profile-source}
-Add an attribute source named USER\_PROFILE with namespace `Default'.
-\begin{enumerate}
-\item {}
-Go to http{[}s{]}://your.domain.com/admin/attribute\_aggregator/attributesource/add/
-
-\item {}
-Write `USER\_PROFILE' in name field
-
-\end{enumerate}
-
-\includegraphics{user_profile_source.png}
-\begin{enumerate}
-\setcounter{enumi}{2}
-\item {}
-Save
-
-\end{enumerate}
-
-\includegraphics{user_profile_source_saved.png}
-
-
-\paragraph{Add an LDAP Source}
-\label{attribute_management:add-an-ldap-source}
-For LDAP sources, objects of type `LDAPSource' must be created.
-
-\textbf{Even if the authentication is based on LDAP authentification, thus that a
-server is configured in settings.py, it is
-necessary to create a corresponding `LDAPSource' to use it as a source of
-attribute.}
-\begin{enumerate}
-\item {}
-Go to http{[}s{]}://your.domain.com/admin/attribute\_aggregator/ldapsource/add/
-
-\item {}
-Fill form fields
-
-\end{enumerate}
-
-Only the field Name, Server, User, Password, Base and Port are used for now.
-\textbf{The namespace of LDAP source must be kept to `Default', since the system
-namespace is based on LDAP.}
-
-\includegraphics{ldapsource.png}
-\begin{enumerate}
-\setcounter{enumi}{2}
-\item {}
-Save
-
-\end{enumerate}
-
-\includegraphics{ldapsource_saved.png}
-
-
-\paragraph{Manage user distinguished names in LDAP directories}
-\label{attribute_management:manage-user-distinguished-names-in-ldap-directories}
-To find the user in a LDAP directory, authentic2 must know its distinguished
-name (DN). If this LDAP has been used when the user has authenticated,
-Authentic2 learn the user DN. Nothing has to be done from this point of view.
-
-However, if it is expected that user attributes be taken in a directory that
-is not used by the user for authentication, it is necessary to manually
-indicate to Authentic2 what is the user DN in the directory. For this, a
-user alias in source is created for the user:
-\begin{enumerate}
-\item {}
-Go to http{[}s{]}://your.domain.com/admin/attribute\_aggregator/useraliasinsource/add/
-
-\item {}
-Fill form fields
-
-\end{enumerate}
-
-\includegraphics{alias_in_source.png}
-\begin{enumerate}
-\setcounter{enumi}{2}
-\item {}
-Save
-
-\end{enumerate}
-
-\includegraphics{alias_in_source_saved.png}
-
-
-\subsubsection{Configure attributes pushed to SAML2 service providers in SSO response}
-\label{attribute_management:configure-attributes-pushed-to-saml2-service-providers-in-sso-response}
-Reminder:
-\begin{itemize}
-\item {}
-The default name format in SAML2 assertions is URI
-
-\item {}
-The default namespace called `Default' is LDAP
-
-\end{itemize}
-
-In summary:
-\begin{enumerate}
-\item {}
-Create attribute items indicating an attribute name, a source, the name format expected and the namespace expected for the attribute name and friendly name if any.
-
-\item {}
-Create a named list of attribute items.
-
-\item {}
-Create an attribute policy and associate the previous list or associate the previous list to a existing attribute policy.
-
-\item {}
-Associate the policy to a service provider.
-
-\end{enumerate}
-
-
-\paragraph{Create attribute items}
-\label{attribute_management:create-attribute-items}\begin{enumerate}
-\item {}
-Go to http{[}s{]}://your.domain.com/admin/idp/attributeitem/add/
-
-\item {}
-Fill form fields
-
-\end{enumerate}
-
-\includegraphics{attribute_item.png}
-\begin{enumerate}
-\setcounter{enumi}{2}
-\item {}
-Save
-
-\end{enumerate}
-
-\includegraphics{attribute_item_saved.png}
-
-
-\paragraph{Create a named list of attribute items}
-\label{attribute_management:create-a-named-list-of-attribute-items}\begin{enumerate}
-\item {}
-Go to http{[}s{]}://your.domain.com/admin/idp/attributelist/add/
-
-\item {}
-Name the list and add items to list
-
-\end{enumerate}
-
-\includegraphics{attribute_list.png}
-\begin{enumerate}
-\setcounter{enumi}{2}
-\item {}
-Save
-
-\end{enumerate}
-
-\includegraphics{attribute_list_saved.png}
-
-
-\paragraph{Create or modify an attribute policy}
-\label{attribute_management:create-or-modify-an-attribute-policy}\begin{enumerate}
-\item {}
-Go to http{[}s{]}://your.domain.com/admin/idp/attributepolicy/add/
-
-\item {}
-Add list to the policy
-
-\end{enumerate}
-
-\includegraphics{policy_pull.png}
-\begin{enumerate}
-\setcounter{enumi}{2}
-\item {}
-Save
-
-\end{enumerate}
-
-\includegraphics{policy_pull_saved.png}
-
-
-\paragraph{Associate the policy to a service provider}
-\label{attribute_management:associate-the-policy-to-a-service-provider}\begin{enumerate}
-\item {}
-Go to http{[}s{]}://your.domain.com/admin/saml/libertyprovider/1/
-
-\item {}
-Add policy to the service provider
-
-\end{enumerate}
-
-\includegraphics{sp_policy_pull.png}
-\begin{enumerate}
-\setcounter{enumi}{2}
-\item {}
-Save
-
-\end{enumerate}
-
-\includegraphics{sp_policy_pull_saved.png}
-\begin{enumerate}
-\setcounter{enumi}{3}
-\item {}
-The display name of the policy has changed
-
-\end{enumerate}
-
-\includegraphics{policy_pull_renamed.png}
-
-
-\subsubsection{Handle attributes provided by other Identity providers, proxy attributes}
-\label{attribute_management:handle-attributes-provided-by-other-identity-providers-proxy-attributes}
-Link to configure first Authentic as a sp to have attributes in session
-
-Add a source if mapping set to true
-
-
-\subsection{Modifying supported namespaces and attribute name mappings}
-\label{attribute_management:modifying-supported-namespaces-and-attribute-name-mappings}
-TBD
-
-
-\subsection{Explanation (Draft)}
-\label{attribute_management:explanation-draft}
-
-\subsubsection{Attribute aggegrator module}
-\label{attribute_management:attribute-aggegrator-module}
-The core attribute management is based on the attribute aggregator module.
-
-
-\paragraph{Intro}
-\label{attribute_management:intro}
-Attribute aggregator provides a main Model class called UserAttributeProfile,
-functions to load attributes and extract attributes.
-
-The mapping between attribute namespaces is built-in and depends on a unique
-file (mapping.py).
-
-A main schema is defined and is based on LDAP/X500 for naming. The support
-of \href{http://schemas.xmlsoap.org/ws/2005/05/identity/claims}{http://schemas.xmlsoap.org/ws/2005/05/identity/claims} is partly complete.
-
-Source of attributes are connected with attribute loading functions using
-signals.
-
-
-\paragraph{FAQ}
-\label{attribute_management:faq}
-Why not use the Django User profile?
-
-The django user profile needs to define attributes as class attributes and
-then support form filling or mapping with LDAP.
-
-That is useful and may be used, especially because the profile can be used as
-a source of attribute to load in the attribute\_aggregator profile.
-
-The attribute\_aggregator profile allow to load multivalued attributes from any
-source supported (LDAP, Django profile and attributes in Django session for
-now) from any namespace defined in mapping.py (LDAP/X500 and claims for now).
-
-The profile can be loaded giving a source or a list of attribute, or can be
-from any known source, or with a dictionnary.
-
-Attributes can be extracted with many functions in any namespace supported.
-
-
-\paragraph{Quick explanation}
-\label{attribute_management:quick-explanation}
-The schema is defined in mapping.py and is made of definitions like this:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-"sn": \PYGZob{}
- "oid": "2.5.4.4",
- "display\_name": \_("sn surname"),
- "alias": ['surname'],
- "profile\_field\_name": 'last\_name',
- "type": "http://www.w3.org/2001/XMLSchema\#string",
- "namespaces": \PYGZob{}
- "http://schemas.xmlsoap.org/ws/2005/05/identity/claims": \PYGZob{}
- "identifiers":
- [
- "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname",
- ],
- "friendly\_names":
- [
- "Last Name",
- ],
- \PYGZcb{}
- \PYGZcb{}
-\PYGZcb{},
-\end{Verbatim}
-
-The profile store all the data in a text field taht contains a cPickle list of
-instances of the class AttributeData.
-
-The profile is attached to a user and then can be created or loaded with:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-\PYG{n}{profile} \PYG{o}{=} \PYG{n}{load\PYGZus{}or\PYGZus{}create\PYGZus{}user\PYGZus{}profile}\PYG{p}{(}\PYG{n}{user}\PYG{o}{=}\PYG{n}{user}\PYG{p}{)}
-\end{Verbatim}
-
-User may be None to create a temporary profile for an anonymous user. But
-that need a DB cleaning function not implemented.
-
-
-\paragraph{The model \emph{UserAttributeProfile}}
-\label{attribute_management:the-model-userattributeprofile}
-The model `UserAttributeProfile' can be attached to a user and then persist
-(as a Model).
-
-When the profile is loaded, all data stored are removed expect if the
-the data has an expiration date later.
-
-The profile provide several methods to store and extract attributes.
-
-All the methods to add attributes are based on a main one accepting a
-dictionnary of attribute is parameters `load\_by\_dic()'. The other methods
-(`load\_listed\_attributes()', `load\_greedy()') send a signal with a list of
-attributes (listed\_attributes\_call) or not (any\_attributes\_call) to grab a
-dictionnary. The list is given with the definition name, oid or friendly name
-of the attribute in the system namespace.
-
-Into the dictionnary, attributes are given with their name, oid or friendly
-name in the default namespace or with their name in a namepsace. An expiration
-date can also be given (ISO8601 format), if none, attribute will be deleted at
-next profile loading. The dictionnary format is as follows:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-attributes = dict()
-data\_from\_source = list()
-a1 = dict()
- a1['oid'] = definition\_name
-Or
- a1['definition'] = definition\_name
- definition may be the definition name like 'gn'
- or an alias like 'givenName'
-Or
- a1['name'] = attribute\_name\_in\_ns
- a1['namespace'] = ns\_name
-a1['expiration\_date'] = date
-a1['values'] = list\_of\_values
-data\_from\_source.append(a1)
-...
-data\_from\_source.append(a2)
-attributes[source\_name] = data\_from\_source
-\end{Verbatim}
-
-Getters are defined to extract data from a profile. Only AttributeData
-instances are extracted that assume that any attribute namespace can be used.
-\begin{itemize}
-\item {}
-get\_data\_of\_definition(definition)
-
-\end{itemize}
-
-Return a list of AttributeData instances corresponding to the definition
-given.
-\begin{itemize}
-\item {}
-get\_freshest\_data\_of\_definition(definition)
-
-\end{itemize}
-
-Return the freshest AttributeData instance. If multiple with no or same exp
-date, random. Should use the creation date soon.
-\begin{itemize}
-\item {}
-get\_data\_of\_source
-
-\end{itemize}
-
-Return a list of AttributeData instances corresponding to the source given.
-\begin{itemize}
-\item {}
-get\_data\_of\_source\_by\_name
-
-\end{itemize}
-
-Idem but source name is given, not a Source instance.
-\begin{itemize}
-\item {}
-get\_data\_of\_definition\_and\_source
-
-\end{itemize}
-
-Return a list of AttributeData instances corresponding to the definition and
-source given.
-\begin{itemize}
-\item {}
-get\_data\_of\_definition\_and\_source\_by\_name
-
-\end{itemize}
-
-Idem but source name is given, not a Source instance.
-
-
-\subsubsection{SAML2 attribute representation in assertions}
-\label{attribute_management:saml2-attribute-representation-in-assertions}
-SAML2 attribute profile (saml-profiles-2.0-os - Section 8) defines two kind of
-attribute element syntax in the attribute statement of assertions, also
-called \emph{name format}:
-\begin{itemize}
-\item {}
-BASIC:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-\PYG{n}{NameFormat}\PYG{o}{=}\PYG{l+s}{"}\PYG{l+s}{urn:oasis:names:tc:SAML:2.0:attrname-format:basic}\PYG{l+s}{"}
-\end{Verbatim}
-
-\item {}
-URI:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-\PYG{n}{NameFormat}\PYG{o}{=}\PYG{l+s}{"}\PYG{l+s}{urn:oasis:names:tc:SAML:2.0:attrname-format:uri}\PYG{l+s}{"}
-\end{Verbatim}
-
-\end{itemize}
-
-\emph{URI should be used when attributes have ``universally'' known unique names
-like OID.}
-
-Example:
-
-\begin{Verbatim}[commandchars=\\\{\}]
-\textless{}saml:Attribute NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
- Name="FirstName"\textgreater{}
- \textless{}saml:AttributeValue xsi:type="xs:string"\textgreater{}By-Tor\textless{}/saml:AttributeValue\textgreater{}
-\textless{}/saml:Attribute\textgreater{}
-
-\textless{}saml:Attribute
- xmlns:x500="urn:oasis:names:tc:SAML:2.0:profiles:attribute:X500"
- NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
- Name="urn:oid:2.5.4.42" FriendlyName="givenName"\textgreater{}
- \textless{}saml:AttributeValue xsi:type="xs:string"
- x500:Encoding="LDAP"\textgreater{}Steven\textless{}/saml:AttributeValue\textgreater{}
-\textless{}/saml:Attribute\textgreater{}
-\end{Verbatim}
-
-
-\paragraph{BASIC}
-\label{attribute_management:basic}
-Two \textless{}Attribute\textgreater{} elements refer to the same SAML attribute if and only if the
-values of their Name XML attributes are equal in the sense of Section 3.3.6 of
-{[}Schema2{]}.
-
-No additional XML attributes are defined for use with the \textless{}Attribute\textgreater{} element.
-
-The schema type of the contents of the \textless{}AttributeValue\textgreater{} element MUST be drawn
-from one of the types defined in Section 3.3 of {[}Schema2{]}. The xsi:type
-attribute MUST be present and be given the appropriate value.
-
-
-\paragraph{X.500/LDAP Attribute Profile (URI)}
-\label{attribute_management:x-500-ldap-attribute-profile-uri}
-\textbf{Extracted from the SAML2 core specifications}
-
-Two \textless{}Attribute\textgreater{} elements refer to the same SAML attribute if and only if their
-Name XML attribute values are equal in the sense of {[}RFC3061{]}. The
-FriendlyName attribute plays no role in the comparison.
-
-Directory attribute type definitions for use in native X.500 directories
-specify the syntax of the attribute using ASN.1 {[}ASN.1{]}. For use in LDAP,
-directory attribute definitions additionally include an LDAP syntax which
-specifies how attribute or assertion values conforming to the syntax are to be
-represented when transferred in the LDAP protocol (known as an LDAP-specific
-encoding). The LDAP-specific encoding commonly produces Unicode characters in
-UTF-8 form. This SAML attribute profile specifies the form of SAML attribute
-values only for those directory attributes which have LDAP syntaxes. Future
-extensions to this profile may define attribute value formats for directory
-attributes whose syntaxes specify other encodings.
-
-To represent the encoding rules in use for a particular attribute value, the
-\textless{}AttributeValue\textgreater{} element MUST contain an XML attribute named Encoding defined
-in the XML namespace urn:oasis:names:tc:SAML:2.0:profiles:attribute:X500.
-
-For any directory attribute with a syntax whose LDAP-specific encoding
-exclusively produces UTF-8 character strings as values, the SAML attribute
-value is encoded as simply the UTF-8 string itself, as the content of the
-\textless{}AttributeValue\textgreater{} element, with no additional whitespace.
-In such cases, the xsi:type XML attribute MUST be set to xs:string.
-The profile-specific Encoding XML attribute is provided, with a value of LDAP.
-
-The AttributeData instances have a field expiration\_data. It the profile
-exists, obsolete data are removed at loading.
-
-
-\subsubsection{When authentic 2 deals with attributes and needs mapping?}
-\label{attribute_management:when-authentic-2-deals-with-attributes-and-needs-mapping}
-Authentic2 behaves as an attribute provider:
-* At the SSO login
-* When an attribute request is received
-
-Authentic requests (e.g. by soap) are not yet supported.
-
-
-\paragraph{When Authentic2 behaves as an attribute provider at SSO login}
-\label{attribute_management:when-authentic2-behaves-as-an-attribute-provider-at-sso-login}
-At a SSO request, just before responding to the service provider, the saml2
-idp module sends the signal `add\_attributes\_to\_response' giving the SP entity
-ID.
-
-The signal is connected to the function `provide\_attributes\_at\_sso()' in
-charge of providing the attributes at the SSO for this SP.
-
-\textbf{Attributes sources are of two kinds. The first ones are the sources that can
-be requested by the IdP with a syncrhonous binding without user intercations.
-These sources are called pull sources. They are for now limited to LDAP
-sources. The other ones are sources are asyncrhonous bindings, usually
-requiring user interactions. These sources are called push sources. They are
-now limited to the attributes provided at SSO requests when the IdP acts as a
-SAML2 SP. There attributes are put/found in the Django session.}
-
-Each source in the system is declared with an instance of the AttributeSource
-model. We'll see later that to forward attributes of push sources it is not
-necessary that a source is declared in some circumstances.
-
-To manage these sources an attribute policy is attached to services providers.
-Then the service provider model must be extended with a attribute
-attributes\_at\_sso\_policy. The service provider must send the signal
-`add\_attributes\_to\_response'.
-
-The implementation is actually done for SAML2 providers.
-
-\textbf{In such a policy attributes from pull and push sources are treated
-differently.}
-
-\textbf{For pull sources, a list of attributes is indicated. Either an attribute is
-searched in all the pull sources and whatever attribute value found is
-returned. Or each attribute is indicated with a source. With each attribute is
-indicated the output format and namespace.}
-
-\textbf{The policy may also indicate that all the attributes in the Django session
-must be forwarded. Then, no AttributeSource instance is required. All the
-attributes are then forwarded without treating input namespace considerations.
-When an AttributeSource instance is found, the input namespace of this source
-is considered. An option can then be set to tell that the output format and
-namespace must be taken. A list of attribute can also be given.
-This list can be use to filter attributes to forward without or without taking
-care of the source. The output namespace and format can also be trated per
-attribute.}
-
-If the namespace is default, the attribute names will be taken from the
-system namespace. In BASIC the name will be the definition name. In URI, the
-Name will be the OID in urn format and the friendly name will be the
-definition name. If a namespace is given, the first identifier of this
-attribute is taken as Name in BASIC. In URI, the same and the first friendly
-name is taken.
-
-\begin{Verbatim}[commandchars=\\\{\}]
-\PYG{k}{class} \PYG{n+nc}{LibertyServiceProvider}\PYG{p}{(}\PYG{n}{models}\PYG{o}{.}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:}
- \PYG{o}{.}\PYG{o}{.}\PYG{o}{.}
- \PYG{n}{attribute\PYGZus{}policy} \PYG{o}{=} \PYG{n}{models}\PYG{o}{.}\PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{AttributePolicy}\PYG{p}{,}
- \PYG{n}{verbose\PYGZus{}name}\PYG{o}{=}\PYG{n}{\PYGZus{}}\PYG{p}{(}\PYG{l+s}{"}\PYG{l+s}{Attribute policy}\PYG{l+s}{"}\PYG{p}{)}\PYG{p}{,} \PYG{n}{null}\PYG{o}{=}\PYG{n+nb+bp}{True}\PYG{p}{,} \PYG{n}{blank}\PYG{o}{=}\PYG{n+nb+bp}{True}\PYG{p}{)}
-
-\PYG{k}{class} \PYG{n+nc}{AttributePolicy}\PYG{p}{(}\PYG{n}{models}\PYG{o}{.}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:}
- \PYG{c}{\PYGZsh{} List of attributes to provide from pull sources at SSO Login.}
- \PYG{c}{\PYGZsh{} If an attribute is indicate without a source, from any source.}
- \PYG{c}{\PYGZsh{} The output format and namespace is given by each attribute.}
- \PYG{n}{attribute\PYGZus{}list\PYGZus{}for\PYGZus{}sso\PYGZus{}from\PYGZus{}pull\PYGZus{}sources} \PYG{o}{=} \PYGZbs{}
- \PYG{n}{models}\PYG{o}{.}\PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{LibertyAttributeMap}\PYG{p}{,}
- \PYG{n}{related\PYGZus{}name} \PYG{o}{=} \PYG{l+s}{"}\PYG{l+s}{attributes of pull sources}\PYG{l+s}{"}\PYG{p}{,}
- \PYG{n}{blank} \PYG{o}{=} \PYG{n+nb+bp}{True}\PYG{p}{,} \PYG{n}{null} \PYG{o}{=} \PYG{n+nb+bp}{True}\PYG{p}{)}
-
- \PYG{c}{\PYGZsh{} Set to true for proxying attributes from pull sources at SSO Login.}
- \PYG{c}{\PYGZsh{} Attributes are in session.}
- \PYG{c}{\PYGZsh{} All attributes are forwarded as is except if the parameter}
- \PYG{c}{\PYGZsh{} 'attribute\PYGZus{}list\PYGZus{}for\PYGZus{}sso\PYGZus{}from\PYGZus{}push\PYGZus{}sources' is initialized}
- \PYG{n}{forward\PYGZus{}attributes\PYGZus{}from\PYGZus{}pull\PYGZus{}sources} \PYG{o}{=} \PYG{n}{models}\PYG{o}{.}\PYG{n}{BooleanField}\PYG{p}{(}\PYG{n}{default}\PYG{o}{=}\PYG{n+nb+bp}{False}\PYG{p}{)}
-
- \PYG{c}{\PYGZsh{} Map attributes in session}
- \PYG{c}{\PYGZsh{} forward\PYGZus{}attributes\PYGZus{}in\PYGZus{}session must be true}
- \PYG{c}{\PYGZsh{} At False, all attributes are forwarded as is}
- \PYG{c}{\PYGZsh{} At true, look for the namespace of the source for input, If not found,}
- \PYG{c}{\PYGZsh{} system namespace. Look for the options attribute\PYGZus{}name\PYGZus{}format and}
- \PYG{c}{\PYGZsh{} output\PYGZus{}namespace of the attribute policy for output.}
- \PYG{n}{map\PYGZus{}attributes\PYGZus{}from\PYGZus{}pull\PYGZus{}sources} \PYG{o}{=} \PYG{n}{models}\PYG{o}{.}\PYG{n}{BooleanField}\PYG{p}{(}\PYG{n}{default}\PYG{o}{=}\PYG{n+nb+bp}{False}\PYG{p}{)}
-
- \PYG{c}{\PYGZsh{} ATTRIBUTE\PYGZus{}VALUE\PYGZus{}FORMATS[0] =\textgreater{}}
- \PYG{c}{\PYGZsh{} (lasso.SAML2\PYGZus{}ATTRIBUTE\PYGZus{}NAME\PYGZus{}FORMAT\PYGZus{}BASIC, 'SAMLv2 BASIC')}
- \PYG{n}{output\PYGZus{}name\PYGZus{}format} \PYG{o}{=} \PYG{n}{models}\PYG{o}{.}\PYG{n}{CharField}\PYG{p}{(}\PYG{n}{max\PYGZus{}length} \PYG{o}{=} \PYG{l+m+mi}{100}\PYG{p}{,}
- \PYG{n}{choices} \PYG{o}{=} \PYG{n}{ATTRIBUTE\PYGZus{}VALUE\PYGZus{}FORMATS}\PYG{p}{,}
- \PYG{n}{default} \PYG{o}{=} \PYG{n}{ATTRIBUTE\PYGZus{}VALUE\PYGZus{}FORMATS}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{p}{)}
-
- \PYG{c}{\PYGZsh{}ATTRIBUTES\PYGZus{}NS[0] =\textgreater{} ('Default', 'Default')}
- \PYG{n}{output\PYGZus{}namespace} \PYG{o}{=} \PYG{n}{models}\PYG{o}{.}\PYG{n}{CharField}\PYG{p}{(}\PYG{n}{max\PYGZus{}length} \PYG{o}{=} \PYG{l+m+mi}{100}\PYG{p}{,}
- \PYG{n}{choices} \PYG{o}{=} \PYG{n}{ATTRIBUTES\PYGZus{}NS}\PYG{p}{,} \PYG{n}{default} \PYG{o}{=} \PYG{n}{ATTRIBUTES\PYGZus{}NS}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{p}{)}
-
- \PYG{c}{\PYGZsh{} Filter attributes pushed from source.}
- \PYG{n}{source\PYGZus{}filter\PYGZus{}for\PYGZus{}sso\PYGZus{}from\PYGZus{}push\PYGZus{}sources} \PYG{o}{=} \PYGZbs{}
- \PYG{n}{models}\PYG{o}{.}\PYG{n}{ManyToManyField}\PYG{p}{(}\PYG{n}{AttributeSource}\PYG{p}{,}
- \PYG{n}{related\PYGZus{}name} \PYG{o}{=} \PYG{l+s}{"}\PYG{l+s}{attributes of pull sources}\PYG{l+s}{"}\PYG{p}{,}
- \PYG{n}{blank} \PYG{o}{=} \PYG{n+nb+bp}{True}\PYG{p}{,} \PYG{n}{null} \PYG{o}{=} \PYG{n+nb+bp}{True}\PYG{p}{)}
-
- \PYG{c}{\PYGZsh{} List of attributes to filter from pull sources at SSO Login.}
- \PYG{n}{attribute\PYGZus{}filter\PYGZus{}for\PYGZus{}sso\PYGZus{}from\PYGZus{}push\PYGZus{}sources} \PYG{o}{=} \PYGZbs{}
- \PYG{n}{models}\PYG{o}{.}\PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{LibertyAttributeMap}\PYG{p}{,}
- \PYG{n}{related\PYGZus{}name} \PYG{o}{=} \PYG{l+s}{"}\PYG{l+s}{attributes of pull sources}\PYG{l+s}{"}\PYG{p}{,}
- \PYG{n}{blank} \PYG{o}{=} \PYG{n+nb+bp}{True}\PYG{p}{,} \PYG{n}{null} \PYG{o}{=} \PYG{n+nb+bp}{True}\PYG{p}{)}
-
- \PYG{c}{\PYGZsh{} The sources of attributes of the previous list are considered.}
- \PYG{c}{\PYGZsh{} May be used conjointly with 'source\PYGZus{}filter\PYGZus{}for\PYGZus{}sso\PYGZus{}from\PYGZus{}push\PYGZus{}sources'}
- \PYG{n}{filter\PYGZus{}source\PYGZus{}of\PYGZus{}filtered\PYGZus{}attributes} \PYG{o}{=} \PYG{n}{models}\PYG{o}{.}\PYG{n}{BooleanField}\PYG{p}{(}\PYG{n}{default}\PYG{o}{=}\PYG{n+nb+bp}{False}\PYG{p}{)}
-
- \PYG{c}{\PYGZsh{} To map the attributes of forwarded attributes with the defaut output}
- \PYG{c}{\PYGZsh{} format and namespace, use 'map\PYGZus{}attributes\PYGZus{}from\PYGZus{}pull\PYGZus{}sources'}
- \PYG{c}{\PYGZsh{} Use the following option to use the output format and namespace}
- \PYG{c}{\PYGZsh{} indicated for each attribute.}
- \PYG{n}{map\PYGZus{}attributes\PYGZus{}of\PYGZus{}filtered\PYGZus{}attributes} \PYG{o}{=} \PYG{n}{models}\PYG{o}{.}\PYG{n}{BooleanField}\PYG{p}{(}\PYG{n}{default}\PYG{o}{=}\PYG{n+nb+bp}{False}\PYG{p}{)}
-
-
- \PYG{c}{\PYGZsh{} Set to true to take in account missing required attributes}
- \PYG{n}{send\PYGZus{}error\PYGZus{}and\PYGZus{}no\PYGZus{}attrs\PYGZus{}if\PYGZus{}missing\PYGZus{}required\PYGZus{}attrs} \PYG{o}{=} \PYGZbs{}
- \PYG{n}{models}\PYG{o}{.}\PYG{n}{BooleanField}\PYG{p}{(}\PYG{n}{default}\PYG{o}{=}\PYG{n+nb+bp}{False}\PYG{p}{)}
-
- \PYG{k}{class} \PYG{n+nc}{Meta}\PYG{p}{:}
- \PYG{n}{verbose\PYGZus{}name} \PYG{o}{=} \PYG{n}{\PYGZus{}}\PYG{p}{(}\PYG{l+s}{'}\PYG{l+s}{attribute options policy}\PYG{l+s}{'}\PYG{p}{)}
- \PYG{n}{verbose\PYGZus{}name\PYGZus{}plural} \PYG{o}{=} \PYG{n}{\PYGZus{}}\PYG{p}{(}\PYG{l+s}{'}\PYG{l+s}{attribute options policies}\PYG{l+s}{'}\PYG{p}{)}
-
-
-\PYG{k}{class} \PYG{n+nc}{AttributeList}\PYG{p}{(}\PYG{n}{models}\PYG{o}{.}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:}
- \PYG{n}{name} \PYG{o}{=} \PYG{n}{models}\PYG{o}{.}\PYG{n}{CharField}\PYG{p}{(}\PYG{n}{max\PYGZus{}length} \PYG{o}{=} \PYG{l+m+mi}{40}\PYG{p}{,} \PYG{n}{unique} \PYG{o}{=} \PYG{n+nb+bp}{True}\PYG{p}{)}
- \PYG{n}{attributes} \PYG{o}{=} \PYG{n}{models}\PYG{o}{.}\PYG{n}{ManyToManyField}\PYG{p}{(}\PYG{n}{AttributeItem}\PYG{p}{,}
- \PYG{n}{related\PYGZus{}name} \PYG{o}{=} \PYG{l+s}{"}\PYG{l+s}{attributes of the list}\PYG{l+s}{"}\PYG{p}{,}
- \PYG{n}{blank} \PYG{o}{=} \PYG{n+nb+bp}{True}\PYG{p}{,} \PYG{n}{null} \PYG{o}{=} \PYG{n+nb+bp}{True}\PYG{p}{)}
-
-
-\PYG{k}{class} \PYG{n+nc}{AttributeItem}\PYG{p}{(}\PYG{n}{models}\PYG{o}{.}\PYG{n}{Model}\PYG{p}{)}\PYG{p}{:}
- \PYG{n}{attribute\PYGZus{}name} \PYG{o}{=} \PYG{n}{models}\PYG{o}{.}\PYG{n}{CharField}\PYG{p}{(}\PYG{n}{max\PYGZus{}length} \PYG{o}{=} \PYG{l+m+mi}{100}\PYG{p}{,} \PYG{n}{choices} \PYG{o}{=} \PYG{n}{ATTRIBUTES}\PYG{p}{,}
- \PYG{n}{default} \PYG{o}{=} \PYG{n}{ATTRIBUTES}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{p}{)}
- \PYG{c}{\PYGZsh{} ATTRIBUTE\PYGZus{}VALUE\PYGZus{}FORMATS[0] =\textgreater{}}
- \PYG{c}{\PYGZsh{} (lasso.SAML2\PYGZus{}ATTRIBUTE\PYGZus{}NAME\PYGZus{}FORMAT\PYGZus{}BASIC, 'SAMLv2 BASIC')}
- \PYG{n}{output\PYGZus{}attribute\PYGZus{}name\PYGZus{}format} \PYG{o}{=} \PYG{n}{models}\PYG{o}{.}\PYG{n}{CharField}\PYG{p}{(}\PYG{n}{max\PYGZus{}length} \PYG{o}{=} \PYG{l+m+mi}{100}\PYG{p}{,}
- \PYG{n}{choices} \PYG{o}{=} \PYG{n}{ATTRIBUTE\PYGZus{}VALUE\PYGZus{}FORMATS}\PYG{p}{,}
- \PYG{n}{default} \PYG{o}{=} \PYG{n}{ATTRIBUTE\PYGZus{}VALUE\PYGZus{}FORMATS}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{p}{)}
- \PYG{c}{\PYGZsh{}ATTRIBUTES\PYGZus{}NS[0] =\textgreater{} ('Default', 'Default')}
- \PYG{n}{output\PYGZus{}namespace} \PYG{o}{=} \PYG{n}{models}\PYG{o}{.}\PYG{n}{CharField}\PYG{p}{(}\PYG{n}{max\PYGZus{}length} \PYG{o}{=} \PYG{l+m+mi}{100}\PYG{p}{,}
- \PYG{n}{choices} \PYG{o}{=} \PYG{n}{ATTRIBUTES\PYGZus{}NS}\PYG{p}{,} \PYG{n}{default} \PYG{o}{=} \PYG{n}{ATTRIBUTES\PYGZus{}NS}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{p}{)}
- \PYG{n}{required} \PYG{o}{=} \PYG{n}{models}\PYG{o}{.}\PYG{n}{BooleanField}\PYG{p}{(}\PYG{n}{default}\PYG{o}{=}\PYG{n+nb+bp}{False}\PYG{p}{)}
- \PYG{n}{source} \PYG{o}{=} \PYG{n}{models}\PYG{o}{.}\PYG{n}{ForeignKey}\PYG{p}{(}\PYG{n}{AttributeSource}\PYG{p}{,} \PYG{n}{blank} \PYG{o}{=} \PYG{n+nb+bp}{True}\PYG{p}{,} \PYG{n}{null} \PYG{o}{=} \PYG{n+nb+bp}{True}\PYG{p}{)}
-\end{Verbatim}
-
-A list of attributes can also be taken from the service provider metadata and
-added to `attribute\_list\_for\_sso\_from\_pull\_sources'. The namespace may be
-extracted from the metadata. This namespace is then used to look for the
-corresponding definition and then to provide the attribute in the right
-namespace. Read attributes from metadata is not yet supported.
-
-For the attributes of pull sources, once the list of attributes is defined,
-They are loaded in the user profile.
-
-As explained before the attribute\_aggregator loading function send signals to
-grab dictionnary of attributes. Up to know, only the ldap loading function are
-connected to these signals. The namespace of LDAP sources is assumed to be
-the same as the system namespace. There is here then no mapping needed. Other
-kind of sources than LDAP can be defined in attribute aggregator.
-
-To grab attributes from a LDAP the user dn in the LDAP or at least a local
-identifier in the LDAP is required. For this purpose, each user has alias
-associated with LDAP source. These aliases must their DN in the LDAP. When
-the authentication LDAP backend will be taken in account, the dn will be taken
-direclty from the user Model instance.
-
-Each LDAP sources are declared with the binding parameters. The LDAP namespace
-is always `Default'.
-
-If an attribute to load is not found and is required the answer should report
-an error (Not yet implemented).
-
-Attributes in response can also be provided with other means than from an LDAP
-source. Attributes can be put in the user Django session and then loaded in
-the profile. An option of the service provier indicate if attributes in the
-session must be provided to the service provider.
-
-To have the attribute loaded from the session, they must be provided in the
-session as follows:
-request.session{[}'attributes'{]}{[}source\_name{]} = list()
-
-The source\_name must be the name of an existing instance of an
-`AttributeSource'. Such an instance contains a field namespace indicating the
-namespace of attributes.
-
-This is currently implemented only for the SAML2 service provider module of
-authentic2. Authsaml2, the SP module, parse the assertion and put the
-attributes in the session.
-
-\begin{Verbatim}[commandchars=\\\{\}]
-if not 'multisource\_attributes' in request.session:
- request.session['attributes'] = dict\PYGZob{}\PYGZcb{}
-request.session['multisource\_attributes'] \PYGZbs{}
- [login.assertion.issuer.content] = attributes
-\end{Verbatim}
-
-Then, Authentic2 can be used as a SAML2 proxy forwarding attributes in
-assertion, eventually doing a namespace mapping. For this, the option
-forward attributes in sesion must be set (by default False).
-
-
-\chapter{Copyright}
-\label{index:copyright}
-Authentic and Authentic2 are copyrighted by Entr'ouvert and are licensed through the GNU General
-Public Licence, version 2 or later. A copy of the whole license text is available in the COPYING file.
-
-The OpenID IdP originates in the project django\_openid\_provider by Roman
-Barczy¿ski, which is under the Apache 2.0 licence. This imply that you must
-distribute authentic2 under the AGPL3 licence when distributing this part of the
-project which is the only AGPL licence version compatible with the Apache 2.0
-licence.
-
-
-
-\renewcommand{\indexname}{Index}
-\printindex
-\end{document}
diff --git a/doc/_build/latex/Authentic2.toc b/doc/_build/latex/Authentic2.toc
deleted file mode 100644
index 3e3d447..0000000
--- a/doc/_build/latex/Authentic2.toc
+++ /dev/null
@@ -1,63 +0,0 @@
-\select@language {english}
-\contentsline {chapter}{\numberline {1}Documentation content}{3}{chapter.1}
-\contentsline {section}{\numberline {1.1}Features}{3}{section.1.1}
-\contentsline {section}{\numberline {1.2}Download}{3}{section.1.2}
-\contentsline {section}{\numberline {1.3}Installation}{3}{section.1.3}
-\contentsline {subsection}{\numberline {1.3.1}Dependencies}{3}{subsection.1.3.1}
-\contentsline {subsection}{\numberline {1.3.2}Quick Start}{4}{subsection.1.3.2}
-\contentsline {subsection}{\numberline {1.3.3}Specifying a different database}{4}{subsection.1.3.3}
-\contentsline {subsection}{\numberline {1.3.4}How to upgrade to a new version of authentic ?}{5}{subsection.1.3.4}
-\contentsline {section}{\numberline {1.4}Authentication with an existing LDAP directory}{5}{section.1.4}
-\contentsline {subsection}{\numberline {1.4.1}How to authenticate users against an LDAP server with anonymous binding ?}{5}{subsection.1.4.1}
-\contentsline {subsection}{\numberline {1.4.2}How to allow members of an LDAP group to manage Authentic ?}{5}{subsection.1.4.2}
-\contentsline {section}{\numberline {1.5}Authentication on Authentic2 with PAM}{6}{section.1.5}
-\contentsline {section}{\numberline {1.6}How global policies are used in Authentic2 administration}{6}{section.1.6}
-\contentsline {section}{\numberline {1.7}Where do I find the Authentic2 SAML2 metadata?}{7}{section.1.7}
-\contentsline {section}{\numberline {1.8}Configure SAML 2.0 service providers}{7}{section.1.8}
-\contentsline {subsection}{\numberline {1.8.1}How do I authenticate against Authentic2 with a SAML2 service provider?}{7}{subsection.1.8.1}
-\contentsline {subsection}{\numberline {1.8.2}How do I add and configure a SAML2 service provider in Authentic2?}{7}{subsection.1.8.2}
-\contentsline {subsubsection}{Create a SAML2 service provider entry}{8}{subsubsection*.3}
-\contentsline {subsubsection}{Configure the SAML2 service provider options}{9}{subsubsection*.4}
-\contentsline {subsubsection}{Configure the SAML2 service provider protocol options}{13}{subsubsection*.5}
-\contentsline {subsubsection}{Configure the attribute policy of the service provider}{13}{subsubsection*.6}
-\contentsline {subsubsection}{How to refresh metadata of an identity provider hosted at a Well-Known Location?}{13}{subsubsection*.7}
-\contentsline {subsubsection}{How to create in bulk service providers with the sync-metadata script?}{14}{subsubsection*.8}
-\contentsline {section}{\numberline {1.9}Configure Authentic2 as a SAML2 service provider or a SAML2 proxy}{14}{section.1.9}
-\contentsline {subsection}{\numberline {1.9.1}How do I authenticate against a third SAML2 identity provider?}{14}{subsection.1.9.1}
-\contentsline {subsection}{\numberline {1.9.2}How do I add and configure a SAML2 identity provider in Authentic2?}{14}{subsection.1.9.2}
-\contentsline {subsubsection}{Create a SAML2 identity provider entry}{14}{subsubsection*.9}
-\contentsline {subsubsection}{Configure the SAML2 identity provider options}{16}{subsubsection*.10}
-\contentsline {subsubsection}{How to refresh metadata of an identity provider hosted at a Well-Known Location?}{20}{subsubsection*.11}
-\contentsline {subsubsection}{How to create in bulk identity providers with the sync-metadata script?}{21}{subsubsection*.12}
-\contentsline {section}{\numberline {1.10}How to create/import and delete in bulk SAML2 identity and service providers with the sync-metadata script?}{21}{section.1.10}
-\contentsline {subsection}{\numberline {1.10.1}Presentation}{21}{subsection.1.10.1}
-\contentsline {subsection}{\numberline {1.10.2}Options}{21}{subsection.1.10.2}
-\contentsline {section}{\numberline {1.11}Configure Authentic2 as a CAS server}{22}{section.1.11}
-\contentsline {subsection}{\numberline {1.11.1}How to use Authentic2 as a CAS 1.0 or CAS 2.0 identity provider ?}{22}{subsection.1.11.1}
-\contentsline {section}{\numberline {1.12}Configure Authentic2 as a CAS client}{22}{section.1.12}
-\contentsline {section}{\numberline {1.13}Attribute Management in Authentic2}{22}{section.1.13}
-\contentsline {subsection}{\numberline {1.13.1}Summary}{22}{subsection.1.13.1}
-\contentsline {subsection}{\numberline {1.13.2}Configuration}{23}{subsection.1.13.2}
-\contentsline {subsubsection}{Configure sources of attributes}{23}{subsubsection*.13}
-\contentsline {paragraph}{Declare the Django profile source}{23}{paragraph*.14}
-\contentsline {paragraph}{Add an LDAP Source}{24}{paragraph*.15}
-\contentsline {paragraph}{Manage user distinguished names in LDAP directories}{25}{paragraph*.16}
-\contentsline {subsubsection}{Configure attributes pushed to SAML2 service providers in SSO response}{25}{subsubsection*.17}
-\contentsline {paragraph}{Create attribute items}{26}{paragraph*.18}
-\contentsline {paragraph}{Create a named list of attribute items}{26}{paragraph*.19}
-\contentsline {paragraph}{Create or modify an attribute policy}{27}{paragraph*.20}
-\contentsline {paragraph}{Associate the policy to a service provider}{29}{paragraph*.21}
-\contentsline {subsubsection}{Handle attributes provided by other Identity providers, proxy attributes}{30}{subsubsection*.22}
-\contentsline {subsection}{\numberline {1.13.3}Modifying supported namespaces and attribute name mappings}{30}{subsection.1.13.3}
-\contentsline {subsection}{\numberline {1.13.4}Explanation (Draft)}{30}{subsection.1.13.4}
-\contentsline {subsubsection}{Attribute aggegrator module}{30}{subsubsection*.23}
-\contentsline {paragraph}{Intro}{30}{paragraph*.24}
-\contentsline {paragraph}{FAQ}{31}{paragraph*.25}
-\contentsline {paragraph}{Quick explanation}{31}{paragraph*.26}
-\contentsline {paragraph}{The model \emph {UserAttributeProfile}}{32}{paragraph*.27}
-\contentsline {subsubsection}{SAML2 attribute representation in assertions}{33}{subsubsection*.28}
-\contentsline {paragraph}{BASIC}{33}{paragraph*.29}
-\contentsline {paragraph}{X.500/LDAP Attribute Profile (URI)}{33}{paragraph*.30}
-\contentsline {subsubsection}{When authentic 2 deals with attributes and needs mapping?}{34}{subsubsection*.31}
-\contentsline {paragraph}{When Authentic2 behaves as an attribute provider at SSO login}{34}{paragraph*.32}
-\contentsline {chapter}{\numberline {2}Copyright}{39}{chapter.2}
diff --git a/doc/_build/latex/Makefile b/doc/_build/latex/Makefile
deleted file mode 100644
index 76e7c3e..0000000
--- a/doc/_build/latex/Makefile
+++ /dev/null
@@ -1,66 +0,0 @@
-# Makefile for Sphinx LaTeX output
-
-ALLDOCS = $(basename $(wildcard *.tex))
-ALLPDF = $(addsuffix .pdf,$(ALLDOCS))
-ALLDVI = $(addsuffix .dvi,$(ALLDOCS))
-
-# Prefix for archive names
-ARCHIVEPRREFIX =
-# Additional LaTeX options
-LATEXOPTS =
-
-all: $(ALLPDF)
-all-pdf: $(ALLPDF)
-all-dvi: $(ALLDVI)
-all-ps: all-dvi
- for f in *.dvi; do dvips $$f; done
-
-all-pdf-ja:
- for f in *.pdf *.png *.gif *.jpg *.jpeg; do ebb $$f; done
- for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done
- for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done
- for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done
- for f in *.idx; do mendex -U -f -d "`basename $$f .idx`.dic" -s python.ist $$f; done
- for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done
- for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done
- for f in *.dvi; do dvipdfmx $$f; done
-
-zip: all-$(FMT)
- mkdir $(ARCHIVEPREFIX)docs-$(FMT)
- cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT)
- zip -q -r -9 $(ARCHIVEPREFIX)docs-$(FMT).zip $(ARCHIVEPREFIX)docs-$(FMT)
- rm -r $(ARCHIVEPREFIX)docs-$(FMT)
-
-tar: all-$(FMT)
- mkdir $(ARCHIVEPREFIX)docs-$(FMT)
- cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT)
- tar cf $(ARCHIVEPREFIX)docs-$(FMT).tar $(ARCHIVEPREFIX)docs-$(FMT)
- rm -r $(ARCHIVEPREFIX)docs-$(FMT)
-
-bz2: tar
- bzip2 -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar
-
-# The number of LaTeX runs is quite conservative, but I don't expect it
-# to get run often, so the little extra time won't hurt.
-%.dvi: %.tex
- latex $(LATEXOPTS) '$<'
- latex $(LATEXOPTS) '$<'
- latex $(LATEXOPTS) '$<'
- -makeindex -s python.ist '$(basename $<).idx'
- latex $(LATEXOPTS) '$<'
- latex $(LATEXOPTS) '$<'
-
-%.pdf: %.tex
- pdflatex $(LATEXOPTS) '$<'
- pdflatex $(LATEXOPTS) '$<'
- pdflatex $(LATEXOPTS) '$<'
- -makeindex -s python.ist '$(basename $<).idx'
- pdflatex $(LATEXOPTS) '$<'
- pdflatex $(LATEXOPTS) '$<'
-
-clean:
- rm -f *.dvi *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla
-
-.PHONY: all all-pdf all-dvi all-ps clean
-.PHONY: all-pdf-ja
-
diff --git a/doc/_build/latex/alias_in_source.png b/doc/_build/latex/alias_in_source.png
deleted file mode 100644
index 448b718..0000000
--- a/doc/_build/latex/alias_in_source.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/alias_in_source_saved.png b/doc/_build/latex/alias_in_source_saved.png
deleted file mode 100644
index 7fbff27..0000000
--- a/doc/_build/latex/alias_in_source_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/attribute_item.png b/doc/_build/latex/attribute_item.png
deleted file mode 100644
index 2061a6f..0000000
--- a/doc/_build/latex/attribute_item.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/attribute_item_saved.png b/doc/_build/latex/attribute_item_saved.png
deleted file mode 100644
index 059e95b..0000000
--- a/doc/_build/latex/attribute_item_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/attribute_list.png b/doc/_build/latex/attribute_list.png
deleted file mode 100644
index 4263215..0000000
--- a/doc/_build/latex/attribute_list.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/attribute_list_saved.png b/doc/_build/latex/attribute_list_saved.png
deleted file mode 100644
index e1f533f..0000000
--- a/doc/_build/latex/attribute_list_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/error_no_idp_options.png b/doc/_build/latex/error_no_idp_options.png
deleted file mode 100644
index 3e0b18d..0000000
--- a/doc/_build/latex/error_no_idp_options.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/error_no_sp_options.png b/doc/_build/latex/error_no_sp_options.png
deleted file mode 100644
index 31ac513..0000000
--- a/doc/_build/latex/error_no_sp_options.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/fncychap.sty b/doc/_build/latex/fncychap.sty
deleted file mode 100644
index 9a56c04..0000000
--- a/doc/_build/latex/fncychap.sty
+++ /dev/null
@@ -1,683 +0,0 @@
-%%% Copyright Ulf A. Lindgren
-%%%
-%%% Note Premission is granted to modify this file under
-%%% the condition that it is saved using another
-%%% file and package name.
-%%%
-%%% Revision 1.1 (1997)
-%%%
-%%% Jan. 8th Modified package name base date option
-%%% Jan. 22th Modified FmN and FmTi for error in book.cls
-%%% \MakeUppercase{#}->{\MakeUppercase#}
-%%% Apr. 6th Modified Lenny option to prevent undesired
-%%% skip of line.
-%%% Nov. 8th Fixed \@chapapp for AMS
-%%%
-%%% Revision 1.2 (1998)
-%%%
-%%% Feb. 11th Fixed appendix problem related to Bjarne
-%%% Aug. 11th Fixed problem related to 11pt and 12pt
-%%% suggested by Tomas Lundberg. THANKS!
-%%%
-%%% Revision 1.3 (2004)
-%%% Sep. 20th problem with frontmatter, mainmatter and
-%%% backmatter, pointed out by Lapo Mori
-%%%
-%%% Revision 1.31 (2004)
-%%% Sep. 21th problem with the Rejne definition streched text
-%%% caused ugly gaps in the vrule aligned with the title
-%%% text. Kindly pointed out to me by Hendri Adriaens
-%%%
-%%% Revision 1.32 (2005)
-%%% Jun. 23th compatibility problem with the KOMA class 'scrbook.cls'
-%%% a remedy is a redefinition of '\@schapter' in
-%%% line with that used in KOMA. The problem was pointed
-%%% out to me by Mikkel Holm Olsen
-%%%
-%%% Revision 1.33 (2005)
-%%% Aug. 9th misspelled ``TWELV'' corrected, the error was pointed
-%%% out to me by George Pearson
-%%%
-%%% Revision 1.34 (2007)
-%%% Added an alternative to Lenny provided by Peter
-%%% Osborne (2005-11-28)
-%%% Corrected front, main and back matter, based on input
-%%% from Bas van Gils (2006-04-24)
-%%% Jul. 30th Added Bjornstrup option provided by Jean-Marc
-%%% Francois (2007-01-05).
-%%% Reverted to \MakeUppercase{#} see rev 1.1, solved
-%%% problem with MakeUppercase and MakeLowercase pointed
-%%% out by Marco Feuerstein (2007-06-06)
-
-
-%%% Last modified Jul. 2007
-
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{fncychap}
- [2007/07/30 v1.34
- LaTeX package (Revised chapters)]
-
-%%%% For conditional inclusion of color
-\newif\ifusecolor
-\usecolorfalse
-
-
-
-%%%% DEFINITION OF Chapapp variables
-\newcommand{\CNV}{\huge\bfseries}
-\newcommand{\ChNameVar}[1]{\renewcommand{\CNV}{#1}}
-
-
-%%%% DEFINITION OF TheChapter variables
-\newcommand{\CNoV}{\huge\bfseries}
-\newcommand{\ChNumVar}[1]{\renewcommand{\CNoV}{#1}}
-
-\newif\ifUCN
-\UCNfalse
-\newif\ifLCN
-\LCNfalse
-\def\ChNameLowerCase{\LCNtrue\UCNfalse}
-\def\ChNameUpperCase{\UCNtrue\LCNfalse}
-\def\ChNameAsIs{\UCNfalse\LCNfalse}
-
-%%%%% Fix for AMSBook 971008
-
-\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}
-
-
-%%%%% Fix for Bjarne and appendix 980211
-
-\newif\ifinapp
-\inappfalse
-\renewcommand\appendix{\par
- \setcounter{chapter}{0}%
- \setcounter{section}{0}%
- \inapptrue%
- \renewcommand\@chapapp{\appendixname}%
- \renewcommand\thechapter{\@Alph\c@chapter}}
-
-%%%%% Fix for frontmatter, mainmatter, and backmatter 040920
-
-\@ifundefined{@mainmatter}{\newif\if@mainmatter \@mainmattertrue}{}
-
-%%%%%
-
-
-
-\newcommand{\FmN}[1]{%
-\ifUCN
- {\MakeUppercase{#1}}\LCNfalse
-\else
- \ifLCN
- {\MakeLowercase{#1}}\UCNfalse
- \else #1
- \fi
-\fi}
-
-
-%%%% DEFINITION OF Title variables
-\newcommand{\CTV}{\Huge\bfseries}
-\newcommand{\ChTitleVar}[1]{\renewcommand{\CTV}{#1}}
-
-%%%% DEFINITION OF the basic rule width
-\newlength{\RW}
-\setlength{\RW}{1pt}
-\newcommand{\ChRuleWidth}[1]{\setlength{\RW}{#1}}
-
-\newif\ifUCT
-\UCTfalse
-\newif\ifLCT
-\LCTfalse
-\def\ChTitleLowerCase{\LCTtrue\UCTfalse}
-\def\ChTitleUpperCase{\UCTtrue\LCTfalse}
-\def\ChTitleAsIs{\UCTfalse\LCTfalse}
-\newcommand{\FmTi}[1]{%
-\ifUCT
- {\MakeUppercase{#1}}\LCTfalse
-\else
- \ifLCT
- {\MakeLowercase{#1}}\UCTfalse
- \else {#1}
- \fi
-\fi}
-
-
-
-\newlength{\mylen}
-\newlength{\myhi}
-\newlength{\px}
-\newlength{\py}
-\newlength{\pyy}
-\newlength{\pxx}
-
-
-\def\mghrulefill#1{\leavevmode\leaders\hrule\@height #1\hfill\kern\z@}
-
-\newcommand{\DOCH}{%
- \CNV\FmN{\@chapapp}\space \CNoV\thechapter
- \par\nobreak
- \vskip 20\p@
- }
-\newcommand{\DOTI}[1]{%
- \CTV\FmTi{#1}\par\nobreak
- \vskip 40\p@
- }
-\newcommand{\DOTIS}[1]{%
- \CTV\FmTi{#1}\par\nobreak
- \vskip 40\p@
- }
-
-%%%%%% SONNY DEF
-
-\DeclareOption{Sonny}{%
- \ChNameVar{\Large\sf}
- \ChNumVar{\Huge}
- \ChTitleVar{\Large\sf}
- \ChRuleWidth{0.5pt}
- \ChNameUpperCase
- \renewcommand{\DOCH}{%
- \raggedleft
- \CNV\FmN{\@chapapp}\space \CNoV\thechapter
- \par\nobreak
- \vskip 40\p@}
- \renewcommand{\DOTI}[1]{%
- \CTV\raggedleft\mghrulefill{\RW}\par\nobreak
- \vskip 5\p@
- \CTV\FmTi{#1}\par\nobreak
- \mghrulefill{\RW}\par\nobreak
- \vskip 40\p@}
- \renewcommand{\DOTIS}[1]{%
- \CTV\raggedleft\mghrulefill{\RW}\par\nobreak
- \vskip 5\p@
- \CTV\FmTi{#1}\par\nobreak
- \mghrulefill{\RW}\par\nobreak
- \vskip 40\p@}
-}
-
-%%%%%% LENNY DEF
-
-\DeclareOption{Lenny}{%
-
- \ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont}
- \ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont}
- \ChTitleVar{\Huge\bfseries\rm}
- \ChRuleWidth{1pt}
- \renewcommand{\DOCH}{%
- \settowidth{\px}{\CNV\FmN{\@chapapp}}
- \addtolength{\px}{2pt}
- \settoheight{\py}{\CNV\FmN{\@chapapp}}
- \addtolength{\py}{1pt}
-
- \settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter}
- \addtolength{\mylen}{1pt}
- \settowidth{\pxx}{\CNoV\thechapter}
- \addtolength{\pxx}{-1pt}
-
- \settoheight{\pyy}{\CNoV\thechapter}
- \addtolength{\pyy}{-2pt}
- \setlength{\myhi}{\pyy}
- \addtolength{\myhi}{-1\py}
- \par
- \parbox[b]{\textwidth}{%
- \rule[\py]{\RW}{\myhi}%
- \hskip -\RW%
- \rule[\pyy]{\px}{\RW}%
- \hskip -\px%
- \raggedright%
- \CNV\FmN{\@chapapp}\space\CNoV\thechapter%
- \hskip1pt%
- \mghrulefill{\RW}%
- \rule{\RW}{\pyy}\par\nobreak%
- \vskip -\baselineskip%
- \vskip -\pyy%
- \hskip \mylen%
- \mghrulefill{\RW}\par\nobreak%
- \vskip \pyy}%
- \vskip 20\p@}
-
-
- \renewcommand{\DOTI}[1]{%
- \raggedright
- \CTV\FmTi{#1}\par\nobreak
- \vskip 40\p@}
-
- \renewcommand{\DOTIS}[1]{%
- \raggedright
- \CTV\FmTi{#1}\par\nobreak
- \vskip 40\p@}
- }
-
-%%%%%% Peter Osbornes' version of LENNY DEF
-
-\DeclareOption{PetersLenny}{%
-
-% five new lengths
-\newlength{\bl} % bottom left : orig \space
-\setlength{\bl}{6pt}
-\newcommand{\BL}[1]{\setlength{\bl}{#1}}
-\newlength{\br} % bottom right : orig 1pt
-\setlength{\br}{1pt}
-\newcommand{\BR}[1]{\setlength{\br}{#1}}
-\newlength{\tl} % top left : orig 2pt
-\setlength{\tl}{2pt}
-\newcommand{\TL}[1]{\setlength{\tl}{#1}}
-\newlength{\trr} % top right :orig 1pt
-\setlength{\trr}{1pt}
-\newcommand{\TR}[1]{\setlength{\trr}{#1}}
-\newlength{\blrule} % top right :orig 1pt
-\setlength{\trr}{0pt}
-\newcommand{\BLrule}[1]{\setlength{\blrule}{#1}}
-
-
- \ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont}
- \ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont}
- \ChTitleVar{\Huge\bfseries\rm}
- \ChRuleWidth{1pt}
-\renewcommand{\DOCH}{%
-
-
-%%%%%%% tweaks for 1--9 and A--Z
-\ifcase\c@chapter\relax%
-\or\BL{-3pt}\TL{-4pt}\BR{0pt}\TR{-6pt}%1
-\or\BL{0pt}\TL{-4pt}\BR{2pt}\TR{-4pt}%2
-\or\BL{0pt}\TL{-4pt}\BR{2pt}\TR{-4pt}%3
-\or\BL{0pt}\TL{5pt}\BR{2pt}\TR{-4pt}%4
-\or\BL{0pt}\TL{3pt}\BR{2pt}\TR{-4pt}%5
-\or\BL{-1pt}\TL{0pt}\BR{2pt}\TR{-2pt}%6
-\or\BL{0pt}\TL{-3pt}\BR{2pt}\TR{-2pt}%7
-\or\BL{0pt}\TL{-3pt}\BR{2pt}\TR{-2pt}%8
-\or\BL{0pt}\TL{-3pt}\BR{-4pt}\TR{-2pt}%9
-\or\BL{-3pt}\TL{-3pt}\BR{2pt}\TR{-7pt}%10
-\or\BL{-6pt}\TL{-6pt}\BR{0pt}\TR{-9pt}%11
-\or\BL{-6pt}\TL{-6pt}\BR{2pt}\TR{-7pt}%12
-\or\BL{-5pt}\TL{-5pt}\BR{0pt}\TR{-9pt}%13
-\or\BL{-6pt}\TL{-6pt}\BR{0pt}\TR{-9pt}%14
-\or\BL{-3pt}\TL{-3pt}\BR{3pt}\TR{-6pt}%15
-\or\BL{-3pt}\TL{-3pt}\BR{3pt}\TR{-6pt}%16
-\or\BL{-5pt}\TL{-3pt}\BR{-8pt}\TR{-6pt}%17
-\or\BL{-5pt}\TL{-5pt}\BR{0pt}\TR{-9pt}%18
-\or\BL{-3pt}\TL{-3pt}\BR{-6pt}\TR{-9pt}%19
-\or\BL{0pt}\TL{0pt}\BR{0pt}\TR{-5pt}%20
-\fi
-
-\ifinapp\ifcase\c@chapter\relax%
-\or\BL{0pt}\TL{14pt}\BR{5pt}\TR{-19pt}%A
-\or\BL{0pt}\TL{-5pt}\BR{-3pt}\TR{-8pt}%B
-\or\BL{-3pt}\TL{-2pt}\BR{1pt}\TR{-6pt}\BLrule{0pt}%C
-\or\BL{0pt}\TL{-5pt}\BR{-3pt}\TR{-8pt}\BLrule{0pt}%D
-\or\BL{0pt}\TL{-5pt}\BR{2pt}\TR{-3pt}%E
-\or\BL{0pt}\TL{-5pt}\BR{-10pt}\TR{-1pt}%F
-\or\BL{-3pt}\TL{0pt}\BR{0pt}\TR{-7pt}%G
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%H
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%I
-\or\BL{2pt}\TL{0pt}\BR{-3pt}\TR{1pt}%J
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%K
-\or\BL{0pt}\TL{-5pt}\BR{2pt}\TR{-19pt}%L
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%M
-\or\BL{0pt}\TL{-5pt}\BR{-2pt}\TR{-1pt}%N
-\or\BL{-3pt}\TL{-2pt}\BR{-3pt}\TR{-11pt}%O
-\or\BL{0pt}\TL{-5pt}\BR{-9pt}\TR{-3pt}%P
-\or\BL{-3pt}\TL{-2pt}\BR{-3pt}\TR{-11pt}%Q
-\or\BL{0pt}\TL{-5pt}\BR{4pt}\TR{-8pt}%R
-\or\BL{-2pt}\TL{-2pt}\BR{-2pt}\TR{-7pt}%S
-\or\BL{-3pt}\TL{0pt}\BR{-5pt}\TR{4pt}\BLrule{8pt}%T
-\or\BL{-7pt}\TL{-11pt}\BR{-5pt}\TR{-7pt}\BLrule{0pt}%U
-\or\BL{-14pt}\TL{-5pt}\BR{-14pt}\TR{-1pt}\BLrule{14pt}%V
-\or\BL{-10pt}\TL{-9pt}\BR{-13pt}\TR{-3pt}\BLrule{7pt}%W
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}\BLrule{0pt}%X
-\or\BL{-6pt}\TL{-4pt}\BR{-7pt}\TR{1pt}\BLrule{7pt}%Y
-\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}\BLrule{0pt}%Z
-\fi\fi
-%%%%%%%
- \settowidth{\px}{\CNV\FmN{\@chapapp}}
- \addtolength{\px}{\tl} %MOD change 2pt to \tl
- \settoheight{\py}{\CNV\FmN{\@chapapp}}
- \addtolength{\py}{1pt}
-
- \settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter}
- \addtolength{\mylen}{\trr}% MOD change 1pt to \tr
- \settowidth{\pxx}{\CNoV\thechapter}
- \addtolength{\pxx}{-1pt}
-
- \settoheight{\pyy}{\CNoV\thechapter}
- \addtolength{\pyy}{-2pt}
- \setlength{\myhi}{\pyy}
- \addtolength{\myhi}{-1\py}
- \par
- \parbox[b]{\textwidth}{%
- \rule[\py]{\RW}{\myhi}%
- \hskip -\RW%
- \rule[\pyy]{\px}{\RW}%
- \hskip -\px%
- \raggedright%
- \CNV\FmN{\@chapapp}\rule{\blrule}{\RW}\hskip\bl\CNoV\thechapter%MOD
-% \CNV\FmN{\@chapapp}\space\CNoV\thechapter %ORIGINAL
- \hskip\br% %MOD 1pt to \br
- \mghrulefill{\RW}%
- \rule{\RW}{\pyy}\par\nobreak%
- \vskip -\baselineskip%
- \vskip -\pyy%
- \hskip \mylen%
- \mghrulefill{\RW}\par\nobreak%
- \vskip \pyy}%
- \vskip 20\p@}
-
-
- \renewcommand{\DOTI}[1]{%
- \raggedright
- \CTV\FmTi{#1}\par\nobreak
- \vskip 40\p@}
-
- \renewcommand{\DOTIS}[1]{%
- \raggedright
- \CTV\FmTi{#1}\par\nobreak
- \vskip 40\p@}
- }
-
-
-%
-
-
-%%%%%% BJORNSTRUP DEF
-
-\DeclareOption{Bjornstrup}{%
- \usecolortrue
- % pzc (Zapf Chancelery) is nice. ppl (Palatino) is cool too.
- \ChNumVar{\fontsize{76}{80}\usefont{OT1}{pzc}{m}{n}\selectfont}
- \ChTitleVar{\raggedleft\Large\sffamily\bfseries}
-
- \setlength{\myhi}{10pt} % Space between grey box border and text
- \setlength{\mylen}{\textwidth}
- \addtolength{\mylen}{-2\myhi}
- \renewcommand{\DOCH}{%
- \settowidth{\py}{\CNoV\thechapter}
- \addtolength{\py}{-10pt} % Amount of space by which the
-% % number is shifted right
- \fboxsep=0pt%
- \colorbox[gray]{.85}{\rule{0pt}{40pt}\parbox[b]{\textwidth}{\hfill}}%
- \kern-\py\raise20pt%
- \hbox{\color[gray]{.5}\CNoV\thechapter}\\%
- }
-
- \renewcommand{\DOTI}[1]{%
- \nointerlineskip\raggedright%
- \fboxsep=\myhi%
- \vskip-1ex%
- \colorbox[gray]{.85}{\parbox[t]{\mylen}{\CTV\FmTi{#1}}}\par\nobreak%
- \vskip 40\p@%
- }
-
- \renewcommand{\DOTIS}[1]{%
- \fboxsep=0pt
- \colorbox[gray]{.85}{\rule{0pt}{40pt}\parbox[b]{\textwidth}{\hfill}}\\%
- \nointerlineskip\raggedright%
- \fboxsep=\myhi%
- \colorbox[gray]{.85}{\parbox[t]{\mylen}{\CTV\FmTi{#1}}}\par\nobreak%
- \vskip 40\p@%
- }
-}
-
-
-%%%%%%% GLENN DEF
-
-
-\DeclareOption{Glenn}{%
- \ChNameVar{\bfseries\Large\sf}
- \ChNumVar{\Huge}
- \ChTitleVar{\bfseries\Large\rm}
- \ChRuleWidth{1pt}
- \ChNameUpperCase
- \ChTitleUpperCase
- \renewcommand{\DOCH}{%
- \settoheight{\myhi}{\CTV\FmTi{Test}}
- \setlength{\py}{\baselineskip}
- \addtolength{\py}{\RW}
- \addtolength{\py}{\myhi}
- \setlength{\pyy}{\py}
- \addtolength{\pyy}{-1\RW}
-
- \raggedright
- \CNV\FmN{\@chapapp}\space\CNoV\thechapter
- \hskip 3pt\mghrulefill{\RW}\rule[-1\pyy]{2\RW}{\py}\par\nobreak}
-
- \renewcommand{\DOTI}[1]{%
- \addtolength{\pyy}{-4pt}
- \settoheight{\myhi}{\CTV\FmTi{#1}}
- \addtolength{\myhi}{\py}
- \addtolength{\myhi}{-1\RW}
- \vskip -1\pyy
- \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt
- \raggedleft\CTV\FmTi{#1}\par\nobreak
- \vskip 80\p@}
-
-\newlength{\backskip}
- \renewcommand{\DOTIS}[1]{%
-% \setlength{\py}{10pt}
-% \setlength{\pyy}{\py}
-% \addtolength{\pyy}{\RW}
-% \setlength{\myhi}{\baselineskip}
-% \addtolength{\myhi}{\pyy}
-% \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak
-% \addtolength{}{}
-%\vskip -1\baselineskip
-% \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt
-% \raggedleft\CTV\FmTi{#1}\par\nobreak
-% \vskip 60\p@}
-%% Fix suggested by Tomas Lundberg
- \setlength{\py}{25pt} % eller vad man vill
- \setlength{\pyy}{\py}
- \setlength{\backskip}{\py}
- \addtolength{\backskip}{2pt}
- \addtolength{\pyy}{\RW}
- \setlength{\myhi}{\baselineskip}
- \addtolength{\myhi}{\pyy}
- \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak
- \vskip -1\backskip
- \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 3pt %
- \raggedleft\CTV\FmTi{#1}\par\nobreak
- \vskip 40\p@}
- }
-
-%%%%%%% CONNY DEF
-
-\DeclareOption{Conny}{%
- \ChNameUpperCase
- \ChTitleUpperCase
- \ChNameVar{\centering\Huge\rm\bfseries}
- \ChNumVar{\Huge}
- \ChTitleVar{\centering\Huge\rm}
- \ChRuleWidth{2pt}
-
- \renewcommand{\DOCH}{%
- \mghrulefill{3\RW}\par\nobreak
- \vskip -0.5\baselineskip
- \mghrulefill{\RW}\par\nobreak
- \CNV\FmN{\@chapapp}\space \CNoV\thechapter
- \par\nobreak
- \vskip -0.5\baselineskip
- }
- \renewcommand{\DOTI}[1]{%
- \mghrulefill{\RW}\par\nobreak
- \CTV\FmTi{#1}\par\nobreak
- \vskip 60\p@
- }
- \renewcommand{\DOTIS}[1]{%
- \mghrulefill{\RW}\par\nobreak
- \CTV\FmTi{#1}\par\nobreak
- \vskip 60\p@
- }
- }
-
-%%%%%%% REJNE DEF
-
-\DeclareOption{Rejne}{%
-
- \ChNameUpperCase
- \ChTitleUpperCase
- \ChNameVar{\centering\Large\rm}
- \ChNumVar{\Huge}
- \ChTitleVar{\centering\Huge\rm}
- \ChRuleWidth{1pt}
- \renewcommand{\DOCH}{%
- \settoheight{\py}{\CNoV\thechapter}
- \parskip=0pt plus 1pt % Set parskip to default, just in case v1.31
- \addtolength{\py}{-1pt}
- \CNV\FmN{\@chapapp}\par\nobreak
- \vskip 20\p@
- \setlength{\myhi}{2\baselineskip}
- \setlength{\px}{\myhi}
- \addtolength{\px}{-1\RW}
- \rule[-1\px]{\RW}{\myhi}\mghrulefill{\RW}\hskip
- 10pt\raisebox{-0.5\py}{\CNoV\thechapter}\hskip 10pt\mghrulefill{\RW}\rule[-1\px]{\RW}{\myhi}\par\nobreak
- \vskip -3\p@% Added -2pt vskip to correct for streched text v1.31
- }
- \renewcommand{\DOTI}[1]{%
- \setlength{\mylen}{\textwidth}
- \parskip=0pt plus 1pt % Set parskip to default, just in case v1.31
- \addtolength{\mylen}{-2\RW}
- {\vrule width\RW}\parbox{\mylen}{\CTV\FmTi{#1}}{\vrule width\RW}\par\nobreak%
- \vskip -3pt\rule{\RW}{2\baselineskip}\mghrulefill{\RW}\rule{\RW}{2\baselineskip}%
- \vskip 60\p@% Added -2pt in vskip to correct for streched text v1.31
- }
- \renewcommand{\DOTIS}[1]{%
- \setlength{\py}{\fboxrule}
- \setlength{\fboxrule}{\RW}
- \setlength{\mylen}{\textwidth}
- \addtolength{\mylen}{-2\RW}
- \fbox{\parbox{\mylen}{\vskip 2\baselineskip\CTV\FmTi{#1}\par\nobreak\vskip \baselineskip}}
- \setlength{\fboxrule}{\py}
- \vskip 60\p@
- }
- }
-
-
-%%%%%%% BJARNE DEF
-
-\DeclareOption{Bjarne}{%
- \ChNameUpperCase
- \ChTitleUpperCase
- \ChNameVar{\raggedleft\normalsize\rm}
- \ChNumVar{\raggedleft \bfseries\Large}
- \ChTitleVar{\raggedleft \Large\rm}
- \ChRuleWidth{1pt}
-
-
-%% Note thechapter -> c@chapter fix appendix bug
-%% Fixed misspelled 12
-
- \newcounter{AlphaCnt}
- \newcounter{AlphaDecCnt}
- \newcommand{\AlphaNo}{%
- \ifcase\number\theAlphaCnt
- \ifnum\c@chapter=0
- ZERO\else{}\fi
- \or ONE\or TWO\or THREE\or FOUR\or FIVE
- \or SIX\or SEVEN\or EIGHT\or NINE\or TEN
- \or ELEVEN\or TWELVE\or THIRTEEN\or FOURTEEN\or FIFTEEN
- \or SIXTEEN\or SEVENTEEN\or EIGHTEEN\or NINETEEN\fi
-}
-
- \newcommand{\AlphaDecNo}{%
- \setcounter{AlphaDecCnt}{0}
- \@whilenum\number\theAlphaCnt>0\do
- {\addtocounter{AlphaCnt}{-10}
- \addtocounter{AlphaDecCnt}{1}}
- \ifnum\number\theAlphaCnt=0
- \else
- \addtocounter{AlphaDecCnt}{-1}
- \addtocounter{AlphaCnt}{10}
- \fi
-
-
- \ifcase\number\theAlphaDecCnt\or TEN\or TWENTY\or THIRTY\or
- FORTY\or FIFTY\or SIXTY\or SEVENTY\or EIGHTY\or NINETY\fi
- }
- \newcommand{\TheAlphaChapter}{%
-
- \ifinapp
- \thechapter
- \else
- \setcounter{AlphaCnt}{\c@chapter}
- \ifnum\c@chapter<20
- \AlphaNo
- \else
- \AlphaDecNo\AlphaNo
- \fi
- \fi
- }
- \renewcommand{\DOCH}{%
- \mghrulefill{\RW}\par\nobreak
- \CNV\FmN{\@chapapp}\par\nobreak
- \CNoV\TheAlphaChapter\par\nobreak
- \vskip -1\baselineskip\vskip 5pt\mghrulefill{\RW}\par\nobreak
- \vskip 20\p@
- }
- \renewcommand{\DOTI}[1]{%
- \CTV\FmTi{#1}\par\nobreak
- \vskip 40\p@
- }
- \renewcommand{\DOTIS}[1]{%
- \CTV\FmTi{#1}\par\nobreak
- \vskip 40\p@
- }
-}
-
-\DeclareOption*{%
- \PackageWarning{fancychapter}{unknown style option}
- }
-
-\ProcessOptions* \relax
-
-\ifusecolor
- \RequirePackage{color}
-\fi
-\def\@makechapterhead#1{%
- \vspace*{50\p@}%
- {\parindent \z@ \raggedright \normalfont
- \ifnum \c@secnumdepth >\m@ne
- \if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 040920
- \DOCH
- \fi
- \fi
- \interlinepenalty\@M
- \if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 060424
- \DOTI{#1}%
- \else%
- \DOTIS{#1}%
- \fi
- }}
-
-
-%%% Begin: To avoid problem with scrbook.cls (fncychap version 1.32)
-
-%%OUT:
-%\def\@schapter#1{\if@twocolumn
-% \@topnewpage[\@makeschapterhead{#1}]%
-% \else
-% \@makeschapterhead{#1}%
-% \@afterheading
-% \fi}
-
-%%IN:
-\def\@schapter#1{%
-\if@twocolumn%
- \@makeschapterhead{#1}%
-\else%
- \@makeschapterhead{#1}%
- \@afterheading%
-\fi}
-
-%%% End: To avoid problem with scrbook.cls (fncychap version 1.32)
-
-\def\@makeschapterhead#1{%
- \vspace*{50\p@}%
- {\parindent \z@ \raggedright
- \normalfont
- \interlinepenalty\@M
- \DOTIS{#1}
- \vskip 40\p@
- }}
-
-\endinput
-
-
diff --git a/doc/_build/latex/ldapsource.png b/doc/_build/latex/ldapsource.png
deleted file mode 100644
index e0726ea..0000000
--- a/doc/_build/latex/ldapsource.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/ldapsource_saved.png b/doc/_build/latex/ldapsource_saved.png
deleted file mode 100644
index 5a84f29..0000000
--- a/doc/_build/latex/ldapsource_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/new_saml2_idp_1.png b/doc/_build/latex/new_saml2_idp_1.png
deleted file mode 100644
index 541c078..0000000
--- a/doc/_build/latex/new_saml2_idp_1.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/new_saml2_idp_2.png b/doc/_build/latex/new_saml2_idp_2.png
deleted file mode 100644
index 92448f9..0000000
--- a/doc/_build/latex/new_saml2_idp_2.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/new_saml2_idp_saved.png b/doc/_build/latex/new_saml2_idp_saved.png
deleted file mode 100644
index 47a9f2f..0000000
--- a/doc/_build/latex/new_saml2_idp_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/new_saml2_sp_1.png b/doc/_build/latex/new_saml2_sp_1.png
deleted file mode 100644
index d85d56b..0000000
--- a/doc/_build/latex/new_saml2_sp_1.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/new_saml2_sp_2.png b/doc/_build/latex/new_saml2_sp_2.png
deleted file mode 100644
index 2013c5e..0000000
--- a/doc/_build/latex/new_saml2_sp_2.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/new_saml2_sp_saved.png b/doc/_build/latex/new_saml2_sp_saved.png
deleted file mode 100644
index d95a2f3..0000000
--- a/doc/_build/latex/new_saml2_sp_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/policy_pull.png b/doc/_build/latex/policy_pull.png
deleted file mode 100644
index 67ae162..0000000
--- a/doc/_build/latex/policy_pull.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/policy_pull_renamed.png b/doc/_build/latex/policy_pull_renamed.png
deleted file mode 100644
index 61c7895..0000000
--- a/doc/_build/latex/policy_pull_renamed.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/policy_pull_saved.png b/doc/_build/latex/policy_pull_saved.png
deleted file mode 100644
index bafaea7..0000000
--- a/doc/_build/latex/policy_pull_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/python.ist b/doc/_build/latex/python.ist
deleted file mode 100644
index 9ffa0f9..0000000
--- a/doc/_build/latex/python.ist
+++ /dev/null
@@ -1,11 +0,0 @@
-line_max 100
-headings_flag 1
-heading_prefix " \\bigletter "
-
-preamble "\\begin{theindex}
-\\def\\bigletter#1{{\\Large\\sffamily#1}\\nopagebreak\\vspace{1mm}}
-
-"
-
-symhead_positive "{Symbols}"
-numhead_positive "{Numbers}"
diff --git a/doc/_build/latex/sp_options_all.png b/doc/_build/latex/sp_options_all.png
deleted file mode 100644
index bb2b69c..0000000
--- a/doc/_build/latex/sp_options_all.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/sp_options_default.png b/doc/_build/latex/sp_options_default.png
deleted file mode 100644
index a0eb512..0000000
--- a/doc/_build/latex/sp_options_default.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/sp_options_default_saved.png b/doc/_build/latex/sp_options_default_saved.png
deleted file mode 100644
index de69c1e..0000000
--- a/doc/_build/latex/sp_options_default_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/sp_options_regular.png b/doc/_build/latex/sp_options_regular.png
deleted file mode 100644
index e78b9e1..0000000
--- a/doc/_build/latex/sp_options_regular.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/sp_options_regular_modify_sp.png b/doc/_build/latex/sp_options_regular_modify_sp.png
deleted file mode 100644
index d00a1d8..0000000
--- a/doc/_build/latex/sp_options_regular_modify_sp.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/sp_options_regular_saved.png b/doc/_build/latex/sp_options_regular_saved.png
deleted file mode 100644
index f177a93..0000000
--- a/doc/_build/latex/sp_options_regular_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/sp_policy_pull.png b/doc/_build/latex/sp_policy_pull.png
deleted file mode 100644
index b361d06..0000000
--- a/doc/_build/latex/sp_policy_pull.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/sp_policy_pull_saved.png b/doc/_build/latex/sp_policy_pull_saved.png
deleted file mode 100644
index cf933b9..0000000
--- a/doc/_build/latex/sp_policy_pull_saved.png
+++ /dev/null
Binary files differ
diff --git a/doc/_build/latex/sphinx.sty b/doc/_build/latex/sphinx.sty
deleted file mode 100644
index 84c1ca1..0000000
--- a/doc/_build/latex/sphinx.sty
+++ /dev/null
@@ -1,481 +0,0 @@
-%
-% sphinx.sty
-%
-% Adapted from the old python.sty, mostly written by Fred Drake,
-% by Georg Brandl.
-%
-
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{sphinx}[2010/01/15 LaTeX package (Sphinx markup)]
-
-\RequirePackage{textcomp}
-\RequirePackage{fancyhdr}
-\RequirePackage{fancybox}
-\RequirePackage{titlesec}
-\RequirePackage{tabulary}
-\RequirePackage{amsmath} % for \text
-\RequirePackage{makeidx}
-\RequirePackage{framed}
-\RequirePackage{ifthen}
-\RequirePackage{color}
-% For highlighted code.
-\RequirePackage{fancyvrb}
-% For table captions.
-\RequirePackage{threeparttable}
-% Handle footnotes in tables.
-\RequirePackage{footnote}
-\makesavenoteenv{tabulary}
-% For floating figures in the text.
-\RequirePackage{wrapfig}
-% Separate paragraphs by space by default.
-\RequirePackage{parskip}
-
-% Redefine these colors to your liking in the preamble.
-\definecolor{TitleColor}{rgb}{0.126,0.263,0.361}
-\definecolor{InnerLinkColor}{rgb}{0.208,0.374,0.486}
-\definecolor{OuterLinkColor}{rgb}{0.216,0.439,0.388}
-% Redefine these colors to something not white if you want to have colored
-% background and border for code examples.
-\definecolor{VerbatimColor}{rgb}{1,1,1}
-\definecolor{VerbatimBorderColor}{rgb}{1,1,1}
-
-% Uncomment these two lines to ignore the paper size and make the page
-% size more like a typical published manual.
-%\renewcommand{\paperheight}{9in}
-%\renewcommand{\paperwidth}{8.5in} % typical squarish manual
-%\renewcommand{\paperwidth}{7in} % O'Reilly ``Programmming Python''
-
-% For graphicx, check if we are compiling under latex or pdflatex.
-\ifx\pdftexversion\undefined
- \usepackage{graphicx}
-\else
- \usepackage[pdftex]{graphicx}
-\fi
-
-% for PDF output, use colors and maximal compression
-\newif\ifsphinxpdfoutput\sphinxpdfoutputfalse
-\ifx\pdfoutput\undefined\else\ifcase\pdfoutput
- \let\py@NormalColor\relax
- \let\py@TitleColor\relax
-\else
- \sphinxpdfoutputtrue
- \input{pdfcolor}
- \def\py@NormalColor{\color[rgb]{0.0,0.0,0.0}}
- \def\py@TitleColor{\color{TitleColor}}
- \pdfcompresslevel=9
-\fi\fi
-
-% XeLaTeX can do colors, too
-\ifx\XeTeXrevision\undefined\else
- \def\py@NormalColor{\color[rgb]{0.0,0.0,0.0}}
- \def\py@TitleColor{\color{TitleColor}}
-\fi
-
-% Increase printable page size (copied from fullpage.sty)
-\topmargin 0pt
-\advance \topmargin by -\headheight
-\advance \topmargin by -\headsep
-
-% attempt to work a little better for A4 users
-\textheight \paperheight
-\advance\textheight by -2in
-
-\oddsidemargin 0pt
-\evensidemargin 0pt
-%\evensidemargin -.25in % for ``manual size'' documents
-\marginparwidth 0.5in
-
-\textwidth \paperwidth
-\advance\textwidth by -2in
-
-
-% Style parameters and macros used by most documents here
-\raggedbottom
-\sloppy
-\hbadness = 5000 % don't print trivial gripes
-
-\pagestyle{empty} % start this way; change for
-\pagenumbering{roman} % ToC & chapters
-
-% Use this to set the font family for headers and other decor:
-\newcommand{\py@HeaderFamily}{\sffamily\bfseries}
-
-% Redefine the 'normal' header/footer style when using "fancyhdr" package:
-\@ifundefined{fancyhf}{}{
- % Use \pagestyle{normal} as the primary pagestyle for text.
- \fancypagestyle{normal}{
- \fancyhf{}
- \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}}
- \fancyfoot[LO]{{\py@HeaderFamily\nouppercase{\rightmark}}}
- \fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}}
- \fancyhead[LE,RO]{{\py@HeaderFamily \@title, \py@release}}
- \renewcommand{\headrulewidth}{0.4pt}
- \renewcommand{\footrulewidth}{0.4pt}
- }
- % Update the plain style so we get the page number & footer line,
- % but not a chapter or section title. This is to keep the first
- % page of a chapter and the blank page between chapters `clean.'
- \fancypagestyle{plain}{
- \fancyhf{}
- \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}}
- \renewcommand{\headrulewidth}{0pt}
- \renewcommand{\footrulewidth}{0.4pt}
- }
-}
-
-% Some custom font markup commands.
-%
-\newcommand{\strong}[1]{{\bf #1}}
-\newcommand{\code}[1]{\texttt{#1}}
-\newcommand{\bfcode}[1]{\code{\bfseries#1}}
-\newcommand{\email}[1]{\textsf{#1}}
-
-% Redefine the Verbatim environment to allow border and background colors.
-% The original environment is still used for verbatims within tables.
-\let\OriginalVerbatim=\Verbatim
-\let\endOriginalVerbatim=\endVerbatim
-
-% Play with vspace to be able to keep the indentation.
-\newlength\distancetoright
-\def\mycolorbox#1{%
- \setlength\distancetoright{\linewidth}%
- \advance\distancetoright -\@totalleftmargin %
- \fcolorbox{VerbatimBorderColor}{VerbatimColor}{%
- \begin{minipage}{\distancetoright}%
- #1
- \end{minipage}%
- }%
-}
-\def\FrameCommand{\mycolorbox}
-
-\renewcommand{\Verbatim}[1][1]{%
- % list starts new par, but we don't want it to be set apart vertically
- \bgroup\parskip=0pt%
- \smallskip%
- % The list environement is needed to control perfectly the vertical
- % space.
- \list{}{%
- \setlength\parskip{0pt}%
- \setlength\itemsep{0ex}%
- \setlength\topsep{0ex}%
- \setlength\partopsep{0pt}%
- \setlength\leftmargin{0pt}%
- }%
- \item\MakeFramed {\FrameRestore}%
- \small%
- \OriginalVerbatim[#1]%
-}
-\renewcommand{\endVerbatim}{%
- \endOriginalVerbatim%
- \endMakeFramed%
- \endlist%
- % close group to restore \parskip
- \egroup%
-}
-
-
-% \moduleauthor{name}{email}
-\newcommand{\moduleauthor}[2]{}
-
-% \sectionauthor{name}{email}
-\newcommand{\sectionauthor}[2]{}
-
-% Augment the sectioning commands used to get our own font family in place,
-% and reset some internal data items:
-\titleformat{\section}{\Large\py@HeaderFamily}%
- {\py@TitleColor\thesection}{0.5em}{\py@TitleColor}{\py@NormalColor}
-\titleformat{\subsection}{\large\py@HeaderFamily}%
- {\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor}{\py@NormalColor}
-\titleformat{\subsubsection}{\py@HeaderFamily}%
- {\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor}{\py@NormalColor}
-\titleformat{\paragraph}{\small\py@HeaderFamily}%
- {\py@TitleColor}{0em}{\py@TitleColor}{\py@NormalColor}
-
-% {fulllineitems} is the main environment for object descriptions.
-%
-\newcommand{\py@itemnewline}[1]{%
- \@tempdima\linewidth%
- \advance\@tempdima \leftmargin\makebox[\@tempdima][l]{#1}%
-}
-
-\newenvironment{fulllineitems}{
- \begin{list}{}{\labelwidth \leftmargin \labelsep 0pt
- \rightmargin 0pt \topsep -\parskip \partopsep \parskip
- \itemsep -\parsep
- \let\makelabel=\py@itemnewline}
-}{\end{list}}
-
-% \optional is used for ``[, arg]``, i.e. desc_optional nodes.
-\newcommand{\optional}[1]{%
- {\textnormal{\Large[}}{#1}\hspace{0.5mm}{\textnormal{\Large]}}}
-
-\newlength{\py@argswidth}
-\newcommand{\py@sigparams}[2]{%
- \parbox[t]{\py@argswidth}{#1\code{)}#2}}
-\newcommand{\pysigline}[1]{\item[#1]\nopagebreak}
-\newcommand{\pysiglinewithargsret}[3]{%
- \settowidth{\py@argswidth}{#1\code{(}}%
- \addtolength{\py@argswidth}{-2\py@argswidth}%
- \addtolength{\py@argswidth}{\linewidth}%
- \item[#1\code{(}\py@sigparams{#2}{#3}]}
-
-% Production lists
-%
-\newenvironment{productionlist}{
-% \def\optional##1{{\Large[}##1{\Large]}}
- \def\production##1##2{\\\code{##1}&::=&\code{##2}}
- \def\productioncont##1{\\& &\code{##1}}
- \parindent=2em
- \indent
- \begin{tabular}{lcl}
-}{%
- \end{tabular}
-}
-
-% Notices / Admonitions
-%
-\newlength{\py@noticelength}
-
-\newcommand{\py@heavybox}{
- \setlength{\fboxrule}{1pt}
- \setlength{\fboxsep}{6pt}
- \setlength{\py@noticelength}{\linewidth}
- \addtolength{\py@noticelength}{-2\fboxsep}
- \addtolength{\py@noticelength}{-2\fboxrule}
- %\setlength{\shadowsize}{3pt}
- \Sbox
- \minipage{\py@noticelength}
-}
-\newcommand{\py@endheavybox}{
- \endminipage
- \endSbox
- \fbox{\TheSbox}
-}
-
-\newcommand{\py@lightbox}{{%
- \setlength\parskip{0pt}\par
- \rule[0ex]{\linewidth}{0.5pt}%
- \par\vspace{-0.5ex}%
- }}
-\newcommand{\py@endlightbox}{{%
- \setlength{\parskip}{0pt}%
- \par\rule[0.5ex]{\linewidth}{0.5pt}%
- \par\vspace{-0.5ex}%
- }}
-
-% Some are quite plain:
-\newcommand{\py@noticestart@note}{\py@lightbox}
-\newcommand{\py@noticeend@note}{\py@endlightbox}
-\newcommand{\py@noticestart@hint}{\py@lightbox}
-\newcommand{\py@noticeend@hint}{\py@endlightbox}
-\newcommand{\py@noticestart@important}{\py@lightbox}
-\newcommand{\py@noticeend@important}{\py@endlightbox}
-\newcommand{\py@noticestart@tip}{\py@lightbox}
-\newcommand{\py@noticeend@tip}{\py@endlightbox}
-
-% Others gets more visible distinction:
-\newcommand{\py@noticestart@warning}{\py@heavybox}
-\newcommand{\py@noticeend@warning}{\py@endheavybox}
-\newcommand{\py@noticestart@caution}{\py@heavybox}
-\newcommand{\py@noticeend@caution}{\py@endheavybox}
-\newcommand{\py@noticestart@attention}{\py@heavybox}
-\newcommand{\py@noticeend@attention}{\py@endheavybox}
-\newcommand{\py@noticestart@danger}{\py@heavybox}
-\newcommand{\py@noticeend@danger}{\py@endheavybox}
-\newcommand{\py@noticestart@error}{\py@heavybox}
-\newcommand{\py@noticeend@error}{\py@endheavybox}
-
-\newenvironment{notice}[2]{
- \def\py@noticetype{#1}
- \csname py@noticestart@#1\endcsname
- \strong{#2}
-}{\csname py@noticeend@\py@noticetype\endcsname}
-
-% Allow the release number to be specified independently of the
-% \date{}. This allows the date to reflect the document's date and
-% release to specify the release that is documented.
-%
-\newcommand{\py@release}{}
-\newcommand{\version}{}
-\newcommand{\shortversion}{}
-\newcommand{\releaseinfo}{}
-\newcommand{\releasename}{Release}
-\newcommand{\release}[1]{%
- \renewcommand{\py@release}{\releasename\space\version}%
- \renewcommand{\version}{#1}}
-\newcommand{\setshortversion}[1]{%
- \renewcommand{\shortversion}{#1}}
-\newcommand{\setreleaseinfo}[1]{%
- \renewcommand{\releaseinfo}{#1}}
-
-% Allow specification of the author's address separately from the
-% author's name. This can be used to format them differently, which
-% is a good thing.
-%
-\newcommand{\py@authoraddress}{}
-\newcommand{\authoraddress}[1]{\renewcommand{\py@authoraddress}{#1}}
-
-% This sets up the fancy chapter headings that make the documents look
-% at least a little better than the usual LaTeX output.
-%
-\@ifundefined{ChTitleVar}{}{
- \ChNameVar{\raggedleft\normalsize\py@HeaderFamily}
- \ChNumVar{\raggedleft \bfseries\Large\py@HeaderFamily}
- \ChTitleVar{\raggedleft \rm\Huge\py@HeaderFamily}
- % This creates chapter heads without the leading \vspace*{}:
- \def\@makechapterhead#1{%
- {\parindent \z@ \raggedright \normalfont
- \ifnum \c@secnumdepth >\m@ne
- \DOCH
- \fi
- \interlinepenalty\@M
- \DOTI{#1}
- }
- }
-}
-
-% Redefine description environment so that it is usable inside fulllineitems.
-%
-\renewcommand{\description}{%
- \list{}{\labelwidth\z@%
- \itemindent-\leftmargin%
- \labelsep5pt%
- \let\makelabel=\descriptionlabel}}
-
-% Definition lists; requested by AMK for HOWTO documents. Probably useful
-% elsewhere as well, so keep in in the general style support.
-%
-\newenvironment{definitions}{%
- \begin{description}%
- \def\term##1{\item[##1]\mbox{}\\*[0mm]}
-}{%
- \end{description}%
-}
-
-% Tell TeX about pathological hyphenation cases:
-\hyphenation{Base-HTTP-Re-quest-Hand-ler}
-
-
-% The following is stuff copied from docutils' latex writer.
-%
-\newcommand{\optionlistlabel}[1]{\bf #1 \hfill}
-\newenvironment{optionlist}[1]
-{\begin{list}{}
- {\setlength{\labelwidth}{#1}
- \setlength{\rightmargin}{1cm}
- \setlength{\leftmargin}{\rightmargin}
- \addtolength{\leftmargin}{\labelwidth}
- \addtolength{\leftmargin}{\labelsep}
- \renewcommand{\makelabel}{\optionlistlabel}}
-}{\end{list}}
-
-\newlength{\lineblockindentation}
-\setlength{\lineblockindentation}{2.5em}
-\newenvironment{lineblock}[1]
-{\begin{list}{}
- {\setlength{\partopsep}{\parskip}
- \addtolength{\partopsep}{\baselineskip}
- \topsep0pt\itemsep0.15\baselineskip\parsep0pt
- \leftmargin#1}
- \raggedright}
-{\end{list}}
-
-% Redefine includgraphics for avoiding images larger than the screen size
-% If the size is not specified.
-\let\py@Oldincludegraphics\includegraphics
-
-\newbox\image@box%
-\newdimen\image@width%
-\renewcommand\includegraphics[2][\@empty]{%
- \ifx#1\@empty%
- \setbox\image@box=\hbox{\py@Oldincludegraphics{#2}}%
- \image@width\wd\image@box%
- \ifdim \image@width>\linewidth%
- \setbox\image@box=\hbox{\py@Oldincludegraphics[width=\linewidth]{#2}}%
- \box\image@box%
- \else%
- \py@Oldincludegraphics{#2}%
- \fi%
- \else%
- \py@Oldincludegraphics[#1]{#2}%
- \fi%
-}
-
-
-% Fix the index and bibliography environments to add an entry to the Table of
-% Contents; this is much nicer than just having to jump to the end of the book
-% and flip around, especially with multiple indexes.
-%
-\let\py@OldTheindex=\theindex
-\renewcommand{\theindex}{
- \cleardoublepage
- \phantomsection
- \py@OldTheindex
- \addcontentsline{toc}{chapter}{\indexname}
-}
-
-\let\py@OldThebibliography=\thebibliography
-\renewcommand{\thebibliography}[1]{
- \cleardoublepage
- \phantomsection
- \py@OldThebibliography{1}
- \addcontentsline{toc}{chapter}{\bibname}
-}
-
-% Include hyperref last.
-\RequirePackage[colorlinks,breaklinks,
- linkcolor=InnerLinkColor,filecolor=OuterLinkColor,
- menucolor=OuterLinkColor,urlcolor=OuterLinkColor,
- citecolor=InnerLinkColor]{hyperref}
-% Fix anchor placement for figures with captions.
-% (Note: we don't use a package option here; instead, we give an explicit
-% \capstart for figures that actually have a caption.)
-\RequirePackage{hypcap}
-
-% From docutils.writers.latex2e
-\providecommand{\DUspan}[2]{%
- {% group ("span") to limit the scope of styling commands
- \@for\node@class@name:=#1\do{%
- \ifcsname docutilsrole\node@class@name\endcsname%
- \csname docutilsrole\node@class@name\endcsname%
- \fi%
- }%
- {#2}% node content
- }% close "span"
-}
-
-\providecommand*{\DUprovidelength}[2]{
- \ifthenelse{\isundefined{#1}}{\newlength{#1}\setlength{#1}{#2}}{}
-}
-
-\DUprovidelength{\DUlineblockindent}{2.5em}
-\ifthenelse{\isundefined{\DUlineblock}}{
- \newenvironment{DUlineblock}[1]{%
- \list{}{\setlength{\partopsep}{\parskip}
- \addtolength{\partopsep}{\baselineskip}
- \setlength{\topsep}{0pt}
- \setlength{\itemsep}{0.15\baselineskip}
- \setlength{\parsep}{0pt}
- \setlength{\leftmargin}{#1}}
- \raggedright
- }
- {\endlist}
-}{}
-
-
-% From footmisc.sty: allows footnotes in titles
-\let\FN@sf@@footnote\footnote
-\def\footnote{\ifx\protect\@typeset@protect
- \expandafter\FN@sf@@footnote
- \else
- \expandafter\FN@sf@gobble@opt
- \fi
-}
-\edef\FN@sf@gobble@opt{\noexpand\protect
- \expandafter\noexpand\csname FN@sf@gobble@opt \endcsname}
-\expandafter\def\csname FN@sf@gobble@opt \endcsname{%
- \@ifnextchar[%]
- \FN@sf@gobble@twobracket
- \@gobble
-}
-\def\FN@sf@gobble@twobracket[#1]#2{}
diff --git a/doc/_build/latex/sphinxhowto.cls b/doc/_build/latex/sphinxhowto.cls
deleted file mode 100644
index 1ebdd43..0000000
--- a/doc/_build/latex/sphinxhowto.cls
+++ /dev/null
@@ -1,81 +0,0 @@
-%
-% sphinxhowto.cls for Sphinx (http://sphinx.pocoo.org/)
-%
-
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesClass{sphinxhowto}[2009/06/02 Document class (Sphinx HOWTO)]
-
-% 'oneside' option overriding the 'twoside' default
-\newif\if@oneside
-\DeclareOption{oneside}{\@onesidetrue}
-% Pass remaining document options to the parent class.
-\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}}
-\ProcessOptions\relax
-
-% Default to two-side document
-\if@oneside
-% nothing to do (oneside is the default)
-\else
-\PassOptionsToClass{twoside}{\sphinxdocclass}
-\fi
-
-\LoadClass{\sphinxdocclass}
-
-% Set some sane defaults for section numbering depth and TOC depth. You can
-% reset these counters in your preamble.
-%
-\setcounter{secnumdepth}{2}
-
-% Change the title page to look a bit better, and fit in with the fncychap
-% ``Bjarne'' style a bit better.
-%
-\renewcommand{\maketitle}{
- \rule{\textwidth}{1pt}
- \ifsphinxpdfoutput
- \begingroup
- % These \defs are required to deal with multi-line authors; it
- % changes \\ to ', ' (comma-space), making it pass muster for
- % generating document info in the PDF file.
- \def\\{, }
- \def\and{and }
- \pdfinfo{
- /Author (\@author)
- /Title (\@title)
- }
- \endgroup
- \fi
- \begin{flushright}
- \sphinxlogo%
- {\rm\Huge\py@HeaderFamily \@title} \par
- {\em\large\py@HeaderFamily \py@release\releaseinfo} \par
- \vspace{25pt}
- {\Large\py@HeaderFamily
- \begin{tabular}[t]{c}
- \@author
- \end{tabular}} \par
- \vspace{25pt}
- \@date \par
- \py@authoraddress \par
- \end{flushright}
- \@thanks
- \setcounter{footnote}{0}
- \let\thanks\relax\let\maketitle\relax
- %\gdef\@thanks{}\gdef\@author{}\gdef\@title{}
-}
-
-\let\py@OldTableofcontents=\tableofcontents
-\renewcommand{\tableofcontents}{
- \begingroup
- \parskip = 0mm
- \py@OldTableofcontents
- \endgroup
- \rule{\textwidth}{1pt}
- \vspace{12pt}
-}
-
-\@ifundefined{fancyhf}{
- \pagestyle{plain}}{
- \pagestyle{normal}} % start this way; change for
-\pagenumbering{arabic} % ToC & chapters
-
-\thispagestyle{empty}
diff --git a/doc/_build/latex/sphinxmanual.cls b/doc/_build/latex/sphinxmanual.cls
deleted file mode 100644
index 5751779..0000000
--- a/doc/_build/latex/sphinxmanual.cls
+++ /dev/null
@@ -1,122 +0,0 @@
-%
-% sphinxmanual.cls for Sphinx (http://sphinx.pocoo.org/)
-%
-
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesClass{sphinxmanual}[2009/06/02 Document class (Sphinx manual)]
-
-% chapters starting at odd pages (overridden by 'openany' document option)
-\PassOptionsToClass{openright}{\sphinxdocclass}
-
-% 'oneside' option overriding the 'twoside' default
-\newif\if@oneside
-\DeclareOption{oneside}{\@onesidetrue}
-% Pass remaining document options to the parent class.
-\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}}
-\ProcessOptions\relax
-
-% Defaults two-side document
-\if@oneside
-% nothing to do (oneside is the default)
-\else
-\PassOptionsToClass{twoside}{\sphinxdocclass}
-\fi
-
-\LoadClass{\sphinxdocclass}
-
-% Set some sane defaults for section numbering depth and TOC depth. You can
-% reset these counters in your preamble.
-%
-\setcounter{secnumdepth}{2}
-\setcounter{tocdepth}{1}
-
-% Change the title page to look a bit better, and fit in with the fncychap
-% ``Bjarne'' style a bit better.
-%
-\renewcommand{\maketitle}{%
- \begin{titlepage}%
- \let\footnotesize\small
- \let\footnoterule\relax
- \rule{\textwidth}{1pt}%
- \ifsphinxpdfoutput
- \begingroup
- % These \defs are required to deal with multi-line authors; it
- % changes \\ to ', ' (comma-space), making it pass muster for
- % generating document info in the PDF file.
- \def\\{, }
- \def\and{and }
- \pdfinfo{
- /Author (\@author)
- /Title (\@title)
- }
- \endgroup
- \fi
- \begin{flushright}%
- \sphinxlogo%
- {\rm\Huge\py@HeaderFamily \@title \par}%
- {\em\LARGE\py@HeaderFamily \py@release\releaseinfo \par}
- \vfill
- {\LARGE\py@HeaderFamily
- \begin{tabular}[t]{c}
- \@author
- \end{tabular}
- \par}
- \vfill\vfill
- {\large
- \@date \par
- \vfill
- \py@authoraddress \par
- }%
- \end{flushright}%\par
- \@thanks
- \end{titlepage}%
- \cleardoublepage%
- \setcounter{footnote}{0}%
- \let\thanks\relax\let\maketitle\relax
- %\gdef\@thanks{}\gdef\@author{}\gdef\@title{}
-}
-
-
-% Catch the end of the {abstract} environment, but here make sure the abstract
-% is followed by a blank page if the 'openright' option is used.
-%
-\let\py@OldEndAbstract=\endabstract
-\renewcommand{\endabstract}{
- \if@openright
- \ifodd\value{page}
- \typeout{Adding blank page after the abstract.}
- \vfil\pagebreak
- \fi
- \fi
- \py@OldEndAbstract
-}
-
-% This wraps the \tableofcontents macro with all the magic to get the spacing
-% right and have the right number of pages if the 'openright' option has been
-% used. This eliminates a fair amount of crud in the individual document files.
-%
-\let\py@OldTableofcontents=\tableofcontents
-\renewcommand{\tableofcontents}{%
- \setcounter{page}{1}%
- \pagebreak%
- \pagestyle{plain}%
- {%
- \parskip = 0mm%
- \py@OldTableofcontents%
- \if@openright%
- \ifodd\value{page}%
- \typeout{Adding blank page after the table of contents.}%
- \pagebreak\hspace{0pt}%
- \fi%
- \fi%
- \cleardoublepage%
- }%
- \pagenumbering{arabic}%
- \@ifundefined{fancyhf}{}{\pagestyle{normal}}%
-}
-
-% This is needed to get the width of the section # area wide enough in the
-% library reference. Doing it here keeps it the same for all the manuals.
-%
-\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.6em}}
-\renewcommand*\l@subsection{\@dottedtocline{2}{4.1em}{3.5em}}
diff --git a/doc/_build/latex/tabulary.sty b/doc/_build/latex/tabulary.sty
deleted file mode 100644
index ba83c0a..0000000
--- a/doc/_build/latex/tabulary.sty
+++ /dev/null
@@ -1,452 +0,0 @@
-%%
-%% This is file `tabulary.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% tabulary.dtx (with options: `package')
-%% DRAFT VERSION
-%%
-%% File `tabulary.dtx'.
-%% Copyright (C) 1995 1996 2003 David Carlisle
-%% This file may be distributed under the terms of the LPPL.
-%% See 00readme.txt for details.
-%%
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tabulary}
- [2007/10/02 v0.9 tabulary package (DPC)]
-\RequirePackage{array}
-\catcode`\Z=14
-\DeclareOption{debugshow}{\catcode`\Z=9\relax}
-\ProcessOptions
-\def\arraybackslash{\let\\=\@arraycr}
-\def\@finalstrut#1{%
- \unskip\ifhmode\nobreak\fi\vrule\@width\z@\@height\z@\@depth\dp#1}
-\newcount\TY@count
-\def\tabulary{%
- \let\TY@final\tabular
- \let\endTY@final\endtabular
- \TY@tabular}
-\def\TY@tabular#1{%
- \edef\TY@{\@currenvir}%
- {\ifnum0=`}\fi
- \@ovxx\TY@linewidth
- \@ovyy\TY@tablewidth
- \count@\z@
- \@tempswatrue
- \@whilesw\if@tempswa\fi{%
- \advance\count@\@ne
- \expandafter\ifx\csname TY@F\the\count@\endcsname\relax
- \@tempswafalse
- \else
- \expandafter\let\csname TY@SF\the\count@\expandafter\endcsname
- \csname TY@F\the\count@\endcsname
- \global\expandafter\let\csname TY@F\the\count@\endcsname\relax
- \expandafter\let\csname TY@S\the\count@\expandafter\endcsname
- \csname TY@\the\count@\endcsname
- \fi}%
- \global\TY@count\@ne
- \TY@width\xdef{0pt}%
- \global\TY@tablewidth\z@
- \global\TY@linewidth#1\relax
-Z\message{^^J^^JTable^^J%
-Z Target Width: \the\TY@linewidth^^J%
-Z \string\tabcolsep: \the\tabcolsep\space
-Z \string\arrayrulewidth: \the\arrayrulewidth\space
-Z \string\doublerulesep: \the\doublerulesep^^J%
-Z \string\tymin: \the\tymin\space
-Z \string\tymax: \the\tymax^^J}%
- \let\@classz\TY@classz
- \let\verb\TX@verb
- \toks@{}\TY@get@body}
-\let\TY@@mkpream\@mkpream
-\def\TY@mkpream{%
- \def\@addamp{%
- \if@firstamp \@firstampfalse \else
- \global\advance\TY@count\@ne
- \edef\@preamble{\@preamble &}\fi
- \TY@width\xdef{0pt}}%
- \def\@acol{%
- \TY@subwidth\col@sep
- \@addtopreamble{\hskip\col@sep}}%
- \let\@arrayrule\TY@arrayrule
- \let\@classvi\TY@classvi
- \def\@classv{\save@decl
- \expandafter\NC@ecs\@nextchar\extracolsep{}\extracolsep\@@@
- \sbox\z@{\d@llarbegin\@nextchar\d@llarend}%
- \TY@subwidth{\wd\z@}%
- \@addtopreamble{\d@llarbegin\the@toks\the\count@\relax\d@llarend}%
- \prepnext@tok}%
- \global\let\@mkpream\TY@@mkpream
- \TY@@mkpream}
-\def\TY@arrayrule{%
- \TY@subwidth\arrayrulewidth
- \@addtopreamble \vline}
-\def\TY@classvi{\ifcase \@lastchclass
- \@acol \or
- \TY@subwidth\doublerulesep
- \@addtopreamble{\hskip \doublerulesep}\or
- \@acol \or
- \@classvii
- \fi}
-\def\TY@tab{%
- \setbox\z@\hbox\bgroup
- \let\[$\let\]$%
- \let\equation$\let\endequation$%
- \col@sep\tabcolsep
- \let\d@llarbegin\begingroup\let\d@llarend\endgroup
- \let\@mkpream\TY@mkpream
- \def\multicolumn##1##2##3{\multispan##1\relax}%
- \CT@start\TY@tabarray}
-\def\TY@tabarray{\@ifnextchar[{\TY@array}{\@array[t]}}
-\def\TY@array[#1]{\@array[t]}
-\def\TY@width#1{%
- \expandafter#1\csname TY@\the\TY@count\endcsname}
-\def\TY@subwidth#1{%
- \TY@width\dimen@
- \advance\dimen@-#1\relax
- \TY@width\xdef{\the\dimen@}%
- \global\advance\TY@linewidth-#1\relax}
-\def\endtabulary{%
- \gdef\@halignto{}%
- \let\TY@footnote\footnote%
- \def\footnote{}% prevent footnotes from doing anything
- \expandafter\TY@tab\the\toks@
- \crcr\omit
- {\xdef\TY@save@row{}%
- \loop
- \advance\TY@count\m@ne
- \ifnum\TY@count>\z@
- \xdef\TY@save@row{\TY@save@row&\omit}%
- \repeat}\TY@save@row
- \endarray\global\setbox1=\lastbox\setbox0=\vbox{\unvbox1
- \unskip\global\setbox1=\lastbox}\egroup
- \dimen@\TY@linewidth
- \divide\dimen@\TY@count
- \ifdim\dimen@<\tymin
- \TY@warn{tymin too large (\the\tymin), resetting to \the\dimen@}%
- \tymin\dimen@
- \fi
- \setbox\tw@=\hbox{\unhbox\@ne
- \loop
-\@tempdima=\lastskip
-\ifdim\@tempdima>\z@
-Z \message{ecs=\the\@tempdima^^J}%
- \global\advance\TY@linewidth-\@tempdima
-\fi
- \unskip
- \setbox\tw@=\lastbox
- \ifhbox\tw@
-Z \message{Col \the\TY@count: Initial=\the\wd\tw@\space}%
- \ifdim\wd\tw@>\tymax
- \wd\tw@\tymax
-Z \message{> max\space}%
-Z \else
-Z \message{ \@spaces\space}%
- \fi
- \TY@width\dimen@
-Z \message{\the\dimen@\space}%
- \advance\dimen@\wd\tw@
-Z \message{Final=\the\dimen@\space}%
- \TY@width\xdef{\the\dimen@}%
- \ifdim\dimen@<\tymin
-Z \message{< tymin}%
- \global\advance\TY@linewidth-\dimen@
- \expandafter\xdef\csname TY@F\the\TY@count\endcsname
- {\the\dimen@}%
- \else
- \expandafter\ifx\csname TY@F\the\TY@count\endcsname\z@
-Z \message{***}%
- \global\advance\TY@linewidth-\dimen@
- \expandafter\xdef\csname TY@F\the\TY@count\endcsname
- {\the\dimen@}%
- \else
-Z \message{> tymin}%
- \global\advance\TY@tablewidth\dimen@
- \global\expandafter\let\csname TY@F\the\TY@count\endcsname
- \maxdimen
- \fi\fi
- \advance\TY@count\m@ne
- \repeat}%
- \TY@checkmin
- \TY@checkmin
- \TY@checkmin
- \TY@checkmin
- \TY@count\z@
- \let\TY@box\TY@box@v
- \let\footnote\TY@footnote % restore footnotes
- {\expandafter\TY@final\the\toks@\endTY@final}%
- \count@\z@
- \@tempswatrue
- \@whilesw\if@tempswa\fi{%
- \advance\count@\@ne
- \expandafter\ifx\csname TY@SF\the\count@\endcsname\relax
- \@tempswafalse
- \else
- \global\expandafter\let\csname TY@F\the\count@\expandafter\endcsname
- \csname TY@SF\the\count@\endcsname
- \global\expandafter\let\csname TY@\the\count@\expandafter\endcsname
- \csname TY@S\the\count@\endcsname
- \fi}%
- \TY@linewidth\@ovxx
- \TY@tablewidth\@ovyy
- \ifnum0=`{\fi}}
-\def\TY@checkmin{%
- \let\TY@checkmin\relax
-\ifdim\TY@tablewidth>\z@
- \Gscale@div\TY@ratio\TY@linewidth\TY@tablewidth
- \ifdim\TY@tablewidth <\linewidth
- \def\TY@ratio{1}%
- \fi
-\else
- \TY@warn{No suitable columns!}%
- \def\TY@ratio{1}%
-\fi
-\count@\z@
-Z \message{^^JLine Width: \the\TY@linewidth,
-Z Natural Width: \the\TY@tablewidth,
-Z Ratio: \TY@ratio^^J}%
-\@tempdima\z@
-\loop
-\ifnum\count@<\TY@count
-\advance\count@\@ne
- \ifdim\csname TY@F\the\count@\endcsname>\tymin
- \dimen@\csname TY@\the\count@\endcsname
- \dimen@\TY@ratio\dimen@
- \ifdim\dimen@<\tymin
-Z \message{Column \the\count@\space ->}%
- \global\expandafter\let\csname TY@F\the\count@\endcsname\tymin
- \global\advance\TY@linewidth-\tymin
- \global\advance\TY@tablewidth-\csname TY@\the\count@\endcsname
- \let\TY@checkmin\TY@@checkmin
- \else
- \expandafter\xdef\csname TY@F\the\count@\endcsname{\the\dimen@}%
- \advance\@tempdima\csname TY@F\the\count@\endcsname
- \fi
- \fi
-Z \dimen@\csname TY@F\the\count@\endcsname\message{\the\dimen@, }%
-\repeat
-Z \message{^^JTotal:\the\@tempdima^^J}%
-}
-\let\TY@@checkmin\TY@checkmin
-\newdimen\TY@linewidth
-\def\tyformat{\everypar{{\nobreak\hskip\z@skip}}}
-\newdimen\tymin
-\tymin=10pt
-\newdimen\tymax
-\tymax=2\textwidth
-\def\@testpach{\@chclass
- \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
- \ifnum \@lastchclass=7 5 \else
- \ifnum \@lastchclass=8 \tw@ \else
- \ifnum \@lastchclass=9 \thr@@
- \else \z@
- \ifnum \@lastchclass = 10 \else
- \edef\@nextchar{\expandafter\string\@nextchar}%
- \@chnum
- \if \@nextchar c\z@ \else
- \if \@nextchar l\@ne \else
- \if \@nextchar r\tw@ \else
- \if \@nextchar C7 \else
- \if \@nextchar L8 \else
- \if \@nextchar R9 \else
- \if \@nextchar J10 \else
- \z@ \@chclass
- \if\@nextchar |\@ne \else
- \if \@nextchar !6 \else
- \if \@nextchar @7 \else
- \if \@nextchar <8 \else
- \if \@nextchar >9 \else
- 10
- \@chnum
- \if \@nextchar m\thr@@\else
- \if \@nextchar p4 \else
- \if \@nextchar b5 \else
- \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi\fi \fi \fi\fi \fi
- \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}
-\def\TY@classz{%
- \@classx
- \@tempcnta\count@
- \ifx\TY@box\TY@box@v
- \global\advance\TY@count\@ne
- \fi
- \let\centering c%
- \let\raggedright\noindent
- \let\raggedleft\indent
- \let\arraybackslash\relax
- \prepnext@tok
- \ifnum\@chnum<4
- \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
- \fi
- \ifnum\@chnum=6
- \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
- \fi
- \@addtopreamble{%
- \ifcase\@chnum
- \hfil \d@llarbegin\insert@column\d@llarend \hfil \or
- \kern\z@
- \d@llarbegin \insert@column \d@llarend \hfil \or
- \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \or
- $\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or
- \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or
- \vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or
- \d@llarbegin \insert@column \d@llarend \or% dubious "s" case
- \TY@box\centering\or
- \TY@box\raggedright\or
- \TY@box\raggedleft\or
- \TY@box\relax
- \fi}\prepnext@tok}
-\def\TY@box#1{%
- \ifx\centering#1%
- \hfil \d@llarbegin\insert@column\d@llarend \hfil \else
- \ifx\raggedright#1%
- \kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- \d@llarbegin \insert@column \d@llarend \hfil \else
- \ifx\raggedleft#1%
- \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \else
- \ifx\relax#1%
- \d@llarbegin \insert@column \d@llarend
- \fi \fi \fi \fi}
-\def\TY@box@v#1{%
- \vtop \@startpbox{\csname TY@F\the\TY@count\endcsname}%
- #1\arraybackslash\tyformat
- \insert@column\@endpbox}
-\newdimen\TY@tablewidth
-\def\Gscale@div#1#2#3{%
- \setlength\dimen@{#3}%
- \ifdim\dimen@=\z@
- \PackageError{graphics}{Division by 0}\@eha
- \dimen@#2%
- \fi
- \edef\@tempd{\the\dimen@}%
- \setlength\dimen@{#2}%
- \count@65536\relax
- \ifdim\dimen@<\z@
- \dimen@-\dimen@
- \count@-\count@
- \fi
- \loop
- \ifdim\dimen@<8192\p@
- \dimen@\tw@\dimen@
- \divide\count@\tw@
- \repeat
- \dimen@ii=\@tempd\relax
- \divide\dimen@ii\count@
- \divide\dimen@\dimen@ii
- \edef#1{\strip@pt\dimen@}}
-\long\def\TY@get@body#1\end
- {\toks@\expandafter{\the\toks@#1}\TY@find@end}
-\def\TY@find@end#1{%
- \def\@tempa{#1}%
- \ifx\@tempa\TY@\def\@tempa{\end{#1}}\expandafter\@tempa
- \else\toks@\expandafter
- {\the\toks@\end{#1}}\expandafter\TY@get@body\fi}
-\def\TY@warn{%
- \PackageWarning{tabulary}}
-\catcode`\Z=11
-\AtBeginDocument{
-\@ifpackageloaded{colortbl}{%
-\expandafter\def\expandafter\@mkpream\expandafter#\expandafter1%
- \expandafter{%
- \expandafter\let\expandafter\CT@setup\expandafter\relax
- \expandafter\let\expandafter\CT@color\expandafter\relax
- \expandafter\let\expandafter\CT@do@color\expandafter\relax
- \expandafter\let\expandafter\color\expandafter\relax
- \expandafter\let\expandafter\CT@column@color\expandafter\relax
- \expandafter\let\expandafter\CT@row@color\expandafter\relax
- \@mkpream{#1}}
-\let\TY@@mkpream\@mkpream
-\def\TY@classz{%
- \@classx
- \@tempcnta\count@
- \ifx\TY@box\TY@box@v
- \global\advance\TY@count\@ne
- \fi
- \let\centering c%
- \let\raggedright\noindent
- \let\raggedleft\indent
- \let\arraybackslash\relax
- \prepnext@tok
-\expandafter\CT@extract\the\toks\@tempcnta\columncolor!\@nil
- \ifnum\@chnum<4
- \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
- \fi
- \ifnum\@chnum=6
- \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
- \fi
- \@addtopreamble{%
- \setbox\z@\hbox\bgroup\bgroup
- \ifcase\@chnum
- \hskip\stretch{.5}\kern\z@
- \d@llarbegin\insert@column\d@llarend\hskip\stretch{.5}\or
- \kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<<
- \d@llarbegin \insert@column \d@llarend \hfill \or
- \hfill\kern\z@ \d@llarbegin \insert@column \d@llarend \or
- $\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or
- \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or
- \vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or
- \d@llarbegin \insert@column \d@llarend \or% dubious s case
- \TY@box\centering\or
- \TY@box\raggedright\or
- \TY@box\raggedleft\or
- \TY@box\relax
- \fi
- \egroup\egroup
-\begingroup
- \CT@setup
- \CT@column@color
- \CT@row@color
- \CT@do@color
-\endgroup
- \@tempdima\ht\z@
- \adv