diff --git a/.htaccess b/.htaccess
index 49d5dae..472c261 100644
--- a/.htaccess
+++ b/.htaccess
@@ -1,7 +1,7 @@
-ErrorDocument 404 /errors/404.html
-Redirect Permanent /reports http://archiva.apache.org/ref/2.1.1
-Redirect /download.html /download.cgi
-Redirect /index.html /index.cgi
-Redirect Permanent /docs/current http://archiva.apache.org/docs/2.1.1
-#former docs use LICENCE.txt
+ErrorDocument 404 /errors/404.html
+Redirect Permanent /reports http://archiva.apache.org/ref/2.1.1
+Redirect /download.html /download.cgi
+Redirect /index.html /index.cgi
+Redirect Permanent /docs/current http://archiva.apache.org/docs/2.1.1
+#former docs use LICENCE.txt
 Redirect Permanent /LICENSE.txt http://archiva.apache.org/license.html
\ No newline at end of file
diff --git a/css/apache-maven-fluido-1.3.1.min.css b/css/apache-maven-fluido-1.3.1.min.css
index ed43d12..89b651f 100644
--- a/css/apache-maven-fluido-1.3.1.min.css
+++ b/css/apache-maven-fluido-1.3.1.min.css
@@ -1,9 +1,9 @@
-/*!
- * Bootstrap v2.2.2
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
+/*!
+ * Bootstrap v2.2.2
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
  */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover{color:#808080}.text-warning{color:#c09853}a.text-warning:hover{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover{color:#2d6987}.text-success{color:#468847}a.text-success:hover{color:#356635}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:25px}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{margin-bottom:5px;font-size:0;white-space:nowrap}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success td{background-color:#dff0d8}.table tbody tr.error td{background-color:#f2dede}.table tbody tr.warning td{background-color:#fcf8e3}.table tbody tr.info td{background-color:#d9edf7}.table-hover tbody tr.success:hover td{background-color:#d0e9c6}.table-hover tbody tr.error:hover td{background-color:#ebcccc}.table-hover tbody tr.warning:hover td{background-color:#faf2cc}.table-hover tbody tr.info:hover td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu li>a:hover,.dropdown-menu li>a:focus,.dropdown-submenu:hover>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu .disabled>a,.dropdown-menu .disabled>a:hover{color:#999}.dropdown-menu .disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #bbb;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#a2a2a2;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn{border-color:#c5c5c5;border-color:rgba(0,0,0,0.15) rgba(0,0,0,0.15) rgba(0,0,0,0.25)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #0044cc #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-mini .caret,.btn-small .caret,.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eeeeee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #dddddd #eee #eeeeee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eeeeee #eee #dddddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret{border-top-color:#555;border-bottom-color:#555}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{margin-top:-3px}.tooltip.right{margin-left:3px}.tooltip.bottom{margin-top:3px}.tooltip.left{margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:236px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media .pull-left{margin-right:10px}.media .pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed}.clear{clear:both;visibility:hidden}.clear hr{display:none}.section p,.section p,.section dt,.section dt{margin-right:7px;margin-left:7px}#ohloh{margin-bottom:10px}#poweredBy{text-align:center}a.externalLink{padding-right:18px}a.newWindow{background:url('../images/window-new.png') right center no-repeat;padding-right:18px}a.externalLink[href^=http]{background:url('../images/internet-web-browser.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".asc"]{background:url('../images/accessories-text-editor.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".jpg"],a.externalLink[href$=".jpeg"],a.externalLink[href$=".gif"],a.externalLink[href$=".png"]{background:url('../images/image-x-generic.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".tar.gz"],a.externalLink[href$=".zip"]{background:url('../images/package-x-generic.png') right center no-repeat;padding-right:18px}a.externalLink[href$=".md5"],a.externalLink[href$=".sha1"]{background:url('../images/document-properties.png') right center no-repeat;padding-right:18px}a.externalLink[href^=https]{background:url('../images/application-certificate.png') right center no-repeat;padding-right:18px}a.externalLink[href^=file]{background:url('../images/drive-harddisk.png') right center no-repeat;padding-right:18px}a.externalLink[href^=ftp]{background:url('../images/network-server.png') right center no-repeat;padding-right:18px}a.externalLink[href^=mailto]{background:url('../images/contact-new.png') right center no-repeat;padding-right:18px}li.none{list-style:none}.search-query{background-image:url(http://www.google.com/cse/intl/en/images/google_custom_search_watermark.gif);background-attachment:initial;background-origin:initial;background-clip:initial;background-color:#fff;background-position:0 50%;background-repeat:no-repeat no-repeat;width:95%}body.topBarEnabled{padding-top:60px}body.topBarDisabled{padding-top:20px}.builtBy{display:block}img.builtBy{margin:10px auto}#search-form{margin-left:9px;margin-right:9px}.hero-unit h2{font-size:60px}tt{padding:0 3px 2px;font-family:Monaco,Andale Mono,Courier New,monospace;font-size:.8em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background-color:#fee9cc;color:rgba(0,0,0,0.75);padding:1px 3px}li{color:#404040}table.zebra-striped{background-color:#FFF}.footer{background-color:#EEE}.sidebar-nav{padding-left:0;padding-right:0}.sidebar-nav .icon-chevron-right,.sidebar-nav .icon-chevron-down{margin-top:2px;margin-right:-6px;float:right;opacity:.25}li.pull-right{margin-left:3px;margin-right:3px}.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0;padding-left:15px}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
\ No newline at end of file
diff --git a/css/jquery.fancybox.2.1.5.css b/css/jquery.fancybox.2.1.5.css
index 93bef59..e5d1bd2 100644
--- a/css/jquery.fancybox.2.1.5.css
+++ b/css/jquery.fancybox.2.1.5.css
@@ -1,274 +1,274 @@
-/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
-.fancybox-wrap,
-.fancybox-skin,
-.fancybox-outer,
-.fancybox-inner,
-.fancybox-image,
-.fancybox-wrap iframe,
-.fancybox-wrap object,
-.fancybox-nav,
-.fancybox-nav span,
-.fancybox-tmp
-{
-	padding: 0;
-	margin: 0;
-	border: 0;
-	outline: none;
-	vertical-align: top;
-}
-
-.fancybox-wrap {
-	position: absolute;
-	top: 0;
-	left: 0;
-	z-index: 8020;
-}
-
-.fancybox-skin {
-	position: relative;
-	background: #f9f9f9;
-	color: #444;
-	text-shadow: none;
-	-webkit-border-radius: 4px;
-	   -moz-border-radius: 4px;
-	        border-radius: 4px;
-}
-
-.fancybox-opened {
-	z-index: 8030;
-}
-
-.fancybox-opened .fancybox-skin {
-	-webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
-	   -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
-	        box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
-}
-
-.fancybox-outer, .fancybox-inner {
-	position: relative;
-}
-
-.fancybox-inner {
-	overflow: hidden;
-}
-
-.fancybox-type-iframe .fancybox-inner {
-	-webkit-overflow-scrolling: touch;
-}
-
-.fancybox-error {
-	color: #444;
-	font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
-	margin: 0;
-	padding: 15px;
-	white-space: nowrap;
-}
-
-.fancybox-image, .fancybox-iframe {
-	display: block;
-	width: 100%;
-	height: 100%;
-}
-
-.fancybox-image {
-	max-width: 100%;
-	max-height: 100%;
-}
-
-#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
-	background-image: url('fancybox_sprite.png');
-}
-
-#fancybox-loading {
-	position: fixed;
-	top: 50%;
-	left: 50%;
-	margin-top: -22px;
-	margin-left: -22px;
-	background-position: 0 -108px;
-	opacity: 0.8;
-	cursor: pointer;
-	z-index: 8060;
-}
-
-#fancybox-loading div {
-	width: 44px;
-	height: 44px;
-	background: url('fancybox_loading.gif') center center no-repeat;
-}
-
-.fancybox-close {
-	position: absolute;
-	top: -18px;
-	right: -18px;
-	width: 36px;
-	height: 36px;
-	cursor: pointer;
-	z-index: 8040;
-}
-
-.fancybox-nav {
-	position: absolute;
-	top: 0;
-	width: 40%;
-	height: 100%;
-	cursor: pointer;
-	text-decoration: none;
-	background: transparent url('blank.gif'); /* helps IE */
-	-webkit-tap-highlight-color: rgba(0,0,0,0);
-	z-index: 8040;
-}
-
-.fancybox-prev {
-	left: 0;
-}
-
-.fancybox-next {
-	right: 0;
-}
-
-.fancybox-nav span {
-	position: absolute;
-	top: 50%;
-	width: 36px;
-	height: 34px;
-	margin-top: -18px;
-	cursor: pointer;
-	z-index: 8040;
-	visibility: hidden;
-}
-
-.fancybox-prev span {
-	left: 10px;
-	background-position: 0 -36px;
-}
-
-.fancybox-next span {
-	right: 10px;
-	background-position: 0 -72px;
-}
-
-.fancybox-nav:hover span {
-	visibility: visible;
-}
-
-.fancybox-tmp {
-	position: absolute;
-	top: -99999px;
-	left: -99999px;
-	visibility: hidden;
-	max-width: 99999px;
-	max-height: 99999px;
-	overflow: visible !important;
-}
-
-/* Overlay helper */
-
-.fancybox-lock {
-    overflow: hidden !important;
-    width: auto;
-}
-
-.fancybox-lock body {
-    overflow: hidden !important;
-}
-
-.fancybox-lock-test {
-    overflow-y: hidden !important;
-}
-
-.fancybox-overlay {
-	position: absolute;
-	top: 0;
-	left: 0;
-	overflow: hidden;
-	display: none;
-	z-index: 8010;
-	background: url('fancybox_overlay.png');
-}
-
-.fancybox-overlay-fixed {
-	position: fixed;
-	bottom: 0;
-	right: 0;
-}
-
-.fancybox-lock .fancybox-overlay {
-	overflow: auto;
-	overflow-y: scroll;
-}
-
-/* Title helper */
-
-.fancybox-title {
-	visibility: hidden;
-	font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
-	position: relative;
-	text-shadow: none;
-	z-index: 8050;
-}
-
-.fancybox-opened .fancybox-title {
-	visibility: visible;
-}
-
-.fancybox-title-float-wrap {
-	position: absolute;
-	bottom: 0;
-	right: 50%;
-	margin-bottom: -35px;
-	z-index: 8050;
-	text-align: center;
-}
-
-.fancybox-title-float-wrap .child {
-	display: inline-block;
-	margin-right: -100%;
-	padding: 2px 20px;
-	background: transparent; /* Fallback for web browsers that doesn't support RGBa */
-	background: rgba(0, 0, 0, 0.8);
-	-webkit-border-radius: 15px;
-	   -moz-border-radius: 15px;
-	        border-radius: 15px;
-	text-shadow: 0 1px 2px #222;
-	color: #FFF;
-	font-weight: bold;
-	line-height: 24px;
-	white-space: nowrap;
-}
-
-.fancybox-title-outside-wrap {
-	position: relative;
-	margin-top: 10px;
-	color: #fff;
-}
-
-.fancybox-title-inside-wrap {
-	padding-top: 10px;
-}
-
-.fancybox-title-over-wrap {
-	position: absolute;
-	bottom: 0;
-	left: 0;
-	color: #fff;
-	padding: 10px;
-	background: #000;
-	background: rgba(0, 0, 0, .8);
-}
-
-/*Retina graphics!*/
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
-	   only screen and (min--moz-device-pixel-ratio: 1.5),
-	   only screen and (min-device-pixel-ratio: 1.5){
-
-	#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
-		background-image: url('fancybox_sprite-2x.png');
-		background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/
-	}
-
-	#fancybox-loading div {
-		background-image: url('fancybox_loading-2x.gif');
-		background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/
-	}
+/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
+.fancybox-wrap,
+.fancybox-skin,
+.fancybox-outer,
+.fancybox-inner,
+.fancybox-image,
+.fancybox-wrap iframe,
+.fancybox-wrap object,
+.fancybox-nav,
+.fancybox-nav span,
+.fancybox-tmp
+{
+	padding: 0;
+	margin: 0;
+	border: 0;
+	outline: none;
+	vertical-align: top;
+}
+
+.fancybox-wrap {
+	position: absolute;
+	top: 0;
+	left: 0;
+	z-index: 8020;
+}
+
+.fancybox-skin {
+	position: relative;
+	background: #f9f9f9;
+	color: #444;
+	text-shadow: none;
+	-webkit-border-radius: 4px;
+	   -moz-border-radius: 4px;
+	        border-radius: 4px;
+}
+
+.fancybox-opened {
+	z-index: 8030;
+}
+
+.fancybox-opened .fancybox-skin {
+	-webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+	   -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+	        box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+}
+
+.fancybox-outer, .fancybox-inner {
+	position: relative;
+}
+
+.fancybox-inner {
+	overflow: hidden;
+}
+
+.fancybox-type-iframe .fancybox-inner {
+	-webkit-overflow-scrolling: touch;
+}
+
+.fancybox-error {
+	color: #444;
+	font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
+	margin: 0;
+	padding: 15px;
+	white-space: nowrap;
+}
+
+.fancybox-image, .fancybox-iframe {
+	display: block;
+	width: 100%;
+	height: 100%;
+}
+
+.fancybox-image {
+	max-width: 100%;
+	max-height: 100%;
+}
+
+#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
+	background-image: url('fancybox_sprite.png');
+}
+
+#fancybox-loading {
+	position: fixed;
+	top: 50%;
+	left: 50%;
+	margin-top: -22px;
+	margin-left: -22px;
+	background-position: 0 -108px;
+	opacity: 0.8;
+	cursor: pointer;
+	z-index: 8060;
+}
+
+#fancybox-loading div {
+	width: 44px;
+	height: 44px;
+	background: url('fancybox_loading.gif') center center no-repeat;
+}
+
+.fancybox-close {
+	position: absolute;
+	top: -18px;
+	right: -18px;
+	width: 36px;
+	height: 36px;
+	cursor: pointer;
+	z-index: 8040;
+}
+
+.fancybox-nav {
+	position: absolute;
+	top: 0;
+	width: 40%;
+	height: 100%;
+	cursor: pointer;
+	text-decoration: none;
+	background: transparent url('blank.gif'); /* helps IE */
+	-webkit-tap-highlight-color: rgba(0,0,0,0);
+	z-index: 8040;
+}
+
+.fancybox-prev {
+	left: 0;
+}
+
+.fancybox-next {
+	right: 0;
+}
+
+.fancybox-nav span {
+	position: absolute;
+	top: 50%;
+	width: 36px;
+	height: 34px;
+	margin-top: -18px;
+	cursor: pointer;
+	z-index: 8040;
+	visibility: hidden;
+}
+
+.fancybox-prev span {
+	left: 10px;
+	background-position: 0 -36px;
+}
+
+.fancybox-next span {
+	right: 10px;
+	background-position: 0 -72px;
+}
+
+.fancybox-nav:hover span {
+	visibility: visible;
+}
+
+.fancybox-tmp {
+	position: absolute;
+	top: -99999px;
+	left: -99999px;
+	visibility: hidden;
+	max-width: 99999px;
+	max-height: 99999px;
+	overflow: visible !important;
+}
+
+/* Overlay helper */
+
+.fancybox-lock {
+    overflow: hidden !important;
+    width: auto;
+}
+
+.fancybox-lock body {
+    overflow: hidden !important;
+}
+
+.fancybox-lock-test {
+    overflow-y: hidden !important;
+}
+
+.fancybox-overlay {
+	position: absolute;
+	top: 0;
+	left: 0;
+	overflow: hidden;
+	display: none;
+	z-index: 8010;
+	background: url('fancybox_overlay.png');
+}
+
+.fancybox-overlay-fixed {
+	position: fixed;
+	bottom: 0;
+	right: 0;
+}
+
+.fancybox-lock .fancybox-overlay {
+	overflow: auto;
+	overflow-y: scroll;
+}
+
+/* Title helper */
+
+.fancybox-title {
+	visibility: hidden;
+	font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
+	position: relative;
+	text-shadow: none;
+	z-index: 8050;
+}
+
+.fancybox-opened .fancybox-title {
+	visibility: visible;
+}
+
+.fancybox-title-float-wrap {
+	position: absolute;
+	bottom: 0;
+	right: 50%;
+	margin-bottom: -35px;
+	z-index: 8050;
+	text-align: center;
+}
+
+.fancybox-title-float-wrap .child {
+	display: inline-block;
+	margin-right: -100%;
+	padding: 2px 20px;
+	background: transparent; /* Fallback for web browsers that doesn't support RGBa */
+	background: rgba(0, 0, 0, 0.8);
+	-webkit-border-radius: 15px;
+	   -moz-border-radius: 15px;
+	        border-radius: 15px;
+	text-shadow: 0 1px 2px #222;
+	color: #FFF;
+	font-weight: bold;
+	line-height: 24px;
+	white-space: nowrap;
+}
+
+.fancybox-title-outside-wrap {
+	position: relative;
+	margin-top: 10px;
+	color: #fff;
+}
+
+.fancybox-title-inside-wrap {
+	padding-top: 10px;
+}
+
+.fancybox-title-over-wrap {
+	position: absolute;
+	bottom: 0;
+	left: 0;
+	color: #fff;
+	padding: 10px;
+	background: #000;
+	background: rgba(0, 0, 0, .8);
+}
+
+/*Retina graphics!*/
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
+	   only screen and (min--moz-device-pixel-ratio: 1.5),
+	   only screen and (min-device-pixel-ratio: 1.5){
+
+	#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
+		background-image: url('fancybox_sprite-2x.png');
+		background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/
+	}
+
+	#fancybox-loading div {
+		background-image: url('fancybox_loading-2x.gif');
+		background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/
+	}
 }
\ No newline at end of file
diff --git a/css/print.css b/css/print.css
index d7070ac..c21b4e2 100644
--- a/css/print.css
+++ b/css/print.css
@@ -1,23 +1,23 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/* $Id: print.css 1201871 2011-11-14 20:18:24Z simonetripodi $ */
-
-#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn {display: none !important;}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/* $Id: print.css 1201871 2011-11-14 20:18:24Z simonetripodi $ */
+
+#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn {display: none !important;}
 #bodyColumn, body.docs div.docs {margin: 0 !important;border: none !important}
\ No newline at end of file
diff --git a/css/site.css b/css/site.css
index 8dc0583..be165db 100644
--- a/css/site.css
+++ b/css/site.css
@@ -1,160 +1,160 @@
-body {
-    padding-top: 1px;
-}
-#leftColumn {
-  display: none !important
-}
-
-#bodyColumn {
-  margin-left: 1.5em;
-}
-
-div#rhs {
-  float: right;
-  text-align: center;
-}
-
-div.mainBox {
-  margin-left: auto;
-  margin-right: auto;
-  margin-top: 1em;
-  margin-bottom: 1em;
-  width: 75%;
-  background-color: #ccc;
-  position: relative;
-  padding-left: 5em;
-  border-top-right-radius: 6px;
-  border-bottom-right-radius: 6px;
-}
-
-div.mainBox div {
-  padding: 0.4em;
-}
-
-div.newsBox {
-  margin-left: auto;
-  margin-right: auto;
-  margin-top: 1em;
-  margin-bottom: 1em;
-  width: 75%;
-  background-color: #ccc;
-  position: relative;
-  padding-left: 8em;
-  border-top-right-radius: 8px;
-  border-bottom-right-radius: 8px;
-}
-
-div.newsBox div {
-  padding: 0.6em;
-}
-
-div.mainBox span + p a {
-  background: url(../images/arrow.png) no-repeat;
-  background-size: 16px 16px;
-  background-position: right;
-  padding-right: 20px;
-}
-
-div.mainBox span + p a {
-  font-size: 1.5em;
-  /*color: black;*/ 
-}
-
-div.mainBox span + p a:hover {
-  /*color: blue;*/
-}
-
-.bignumber {
-  position: absolute;
-  color: white;
-  left: 0.25em;
-  font-size: 1.9em;
-}
-
-div.linkBox p {
-  text-align: right;
-  margin-bottom: 0;
-  margin-top: 0;
-  padding-top: 0;
-}
-
-#banner {
-  background: none;
-}
-
-#banner img {
-  margin: 10px;
-}
-
-div.jqmWindow h2, div.jqmWindow p {
-  text-align: center;
-}
-
-span.jqmClose {
-  position: absolute;
-  cursor: pointer;
-  right: 4px;
-  top: 6px;
-}
-
-
- div.section {
-  margin-right: 110px;
-  margin-left: 10px;
- }
- 
-.hero-unit p {
- /* font-weight: inherit;*/
-}
-
-.archivascreenshots {
-  border: 1px solid silver; 
-  margin-left: 0.25em; 
-  margin-bottom: 0.25em
-}
-
-.rhs span {
-  display: block; 
-  font-size: 13px; 
-  font-weight: bold; 
-  margin-top: 1.5em; 
-  margin-bottom: 1.5em;    
-}
-
-.container ul li iframe {
-  margin-top: 4px;
-  margin-right: 4px;
-}
-
-.modal-body table {
-  border: 0px;
-}
-
-
-.features-preview:after {
-    background-color: #F5F5F5;
-    border: 1px solid #DDDDDD;
-    border-radius: 4px 0 4px 0;
-    color: #9DA0A4;
-    content: "New web UI";
-    font-size: 12px;
-    font-weight: bold;
-    left: -1px;
-    padding: 3px 7px;
-    position: absolute;
-    top: -1px;
-
-}
-.features-preview {
-    background-color: #FFFFFF;
-    border: 1px solid #DDDDDD;
-    border-radius: 4px 4px 4px 4px;
-    margin: 15px 0;
-    padding: 39px 19px 14px;
-    position: relative;
-    min-height: 450px;
-}
-
-.carousel .item > img {
-  min-height: 400px;
+body {
+    padding-top: 1px;
+}
+#leftColumn {
+  display: none !important
+}
+
+#bodyColumn {
+  margin-left: 1.5em;
+}
+
+div#rhs {
+  float: right;
+  text-align: center;
+}
+
+div.mainBox {
+  margin-left: auto;
+  margin-right: auto;
+  margin-top: 1em;
+  margin-bottom: 1em;
+  width: 75%;
+  background-color: #ccc;
+  position: relative;
+  padding-left: 5em;
+  border-top-right-radius: 6px;
+  border-bottom-right-radius: 6px;
+}
+
+div.mainBox div {
+  padding: 0.4em;
+}
+
+div.newsBox {
+  margin-left: auto;
+  margin-right: auto;
+  margin-top: 1em;
+  margin-bottom: 1em;
+  width: 75%;
+  background-color: #ccc;
+  position: relative;
+  padding-left: 8em;
+  border-top-right-radius: 8px;
+  border-bottom-right-radius: 8px;
+}
+
+div.newsBox div {
+  padding: 0.6em;
+}
+
+div.mainBox span + p a {
+  background: url(../images/arrow.png) no-repeat;
+  background-size: 16px 16px;
+  background-position: right;
+  padding-right: 20px;
+}
+
+div.mainBox span + p a {
+  font-size: 1.5em;
+  /*color: black;*/ 
+}
+
+div.mainBox span + p a:hover {
+  /*color: blue;*/
+}
+
+.bignumber {
+  position: absolute;
+  color: white;
+  left: 0.25em;
+  font-size: 1.9em;
+}
+
+div.linkBox p {
+  text-align: right;
+  margin-bottom: 0;
+  margin-top: 0;
+  padding-top: 0;
+}
+
+#banner {
+  background: none;
+}
+
+#banner img {
+  margin: 10px;
+}
+
+div.jqmWindow h2, div.jqmWindow p {
+  text-align: center;
+}
+
+span.jqmClose {
+  position: absolute;
+  cursor: pointer;
+  right: 4px;
+  top: 6px;
+}
+
+
+ div.section {
+  margin-right: 110px;
+  margin-left: 10px;
+ }
+ 
+.hero-unit p {
+ /* font-weight: inherit;*/
+}
+
+.archivascreenshots {
+  border: 1px solid silver; 
+  margin-left: 0.25em; 
+  margin-bottom: 0.25em
+}
+
+.rhs span {
+  display: block; 
+  font-size: 13px; 
+  font-weight: bold; 
+  margin-top: 1.5em; 
+  margin-bottom: 1.5em;    
+}
+
+.container ul li iframe {
+  margin-top: 4px;
+  margin-right: 4px;
+}
+
+.modal-body table {
+  border: 0px;
+}
+
+
+.features-preview:after {
+    background-color: #F5F5F5;
+    border: 1px solid #DDDDDD;
+    border-radius: 4px 0 4px 0;
+    color: #9DA0A4;
+    content: "New web UI";
+    font-size: 12px;
+    font-weight: bold;
+    left: -1px;
+    padding: 3px 7px;
+    position: absolute;
+    top: -1px;
+
+}
+.features-preview {
+    background-color: #FFFFFF;
+    border: 1px solid #DDDDDD;
+    border-radius: 4px 4px 4px 4px;
+    margin: 15px 0;
+    padding: 39px 19px 14px;
+    position: relative;
+    min-height: 450px;
+}
+
+.carousel .item > img {
+  min-height: 400px;
 }
\ No newline at end of file
diff --git a/developers/archiva-eclipse-codestyle.xml b/developers/archiva-eclipse-codestyle.xml
index c5e4468..d1a261f 100644
--- a/developers/archiva-eclipse-codestyle.xml
+++ b/developers/archiva-eclipse-codestyle.xml
@@ -1,264 +1,264 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<profiles version="11">
-<profile kind="CodeFormatterProfile" name="archiva" version="11">
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="4"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="20"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="37"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="120"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="37"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="20"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="37"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="20"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="37"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="20"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.compiler.source" value="1.5"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="120"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.5"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="true"/>
-<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.5"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="2"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="4"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="48"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="37"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
-</profile>
-</profiles>
+<?xml version="1.0" encoding="UTF-8"?>
+<profiles version="11">
+<profile kind="CodeFormatterProfile" name="archiva" version="11">
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="next_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="18"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="20"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="37"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="next_line"/>
+<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="120"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="37"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="18"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="20"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="next_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="37"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="20"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="37"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="next_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="18"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="20"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="next_line"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="next_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.source" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="120"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="next_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="next_line"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="18"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="true"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="18"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="next_line"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="48"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="37"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="18"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="next_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
+</profile>
+</profiles>
diff --git a/developers/archiva-idea-codestyle.xml b/developers/archiva-idea-codestyle.xml
index 4d6e827..55b7325 100644
--- a/developers/archiva-idea-codestyle.xml
+++ b/developers/archiva-idea-codestyle.xml
@@ -1,172 +1,172 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<code_scheme name="archiva">
-  <option name="JAVA_INDENT_OPTIONS">
-    <value>
-      <option name="INDENT_SIZE" value="4" />
-      <option name="CONTINUATION_INDENT_SIZE" value="4" />
-      <option name="TAB_SIZE" value="4" />
-      <option name="USE_TAB_CHARACTER" value="false" />
-      <option name="SMART_TABS" value="false" />
-      <option name="LABEL_INDENT_SIZE" value="0" />
-      <option name="LABEL_INDENT_ABSOLUTE" value="false" />
-      <option name="USE_RELATIVE_INDENTS" value="false" />
-    </value>
-  </option>
-  <option name="JSP_INDENT_OPTIONS">
-    <value>
-      <option name="INDENT_SIZE" value="2" />
-      <option name="CONTINUATION_INDENT_SIZE" value="4" />
-      <option name="TAB_SIZE" value="2" />
-      <option name="USE_TAB_CHARACTER" value="false" />
-      <option name="SMART_TABS" value="false" />
-      <option name="LABEL_INDENT_SIZE" value="0" />
-      <option name="LABEL_INDENT_ABSOLUTE" value="false" />
-      <option name="USE_RELATIVE_INDENTS" value="false" />
-    </value>
-  </option>
-  <option name="XML_INDENT_OPTIONS">
-    <value>
-      <option name="INDENT_SIZE" value="2" />
-      <option name="CONTINUATION_INDENT_SIZE" value="4" />
-      <option name="TAB_SIZE" value="2" />
-      <option name="USE_TAB_CHARACTER" value="false" />
-      <option name="SMART_TABS" value="false" />
-      <option name="LABEL_INDENT_SIZE" value="0" />
-      <option name="LABEL_INDENT_ABSOLUTE" value="false" />
-      <option name="USE_RELATIVE_INDENTS" value="false" />
-    </value>
-  </option>
-  <option name="LINE_SEPARATOR" value="&#10;" />
-  <option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
-  <option name="KEEP_LINE_BREAKS" value="false" />
-  <option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
-  <option name="BLANK_LINES_AROUND_FIELD" value="1" />
-  <option name="BRACE_STYLE" value="2" />
-  <option name="CLASS_BRACE_STYLE" value="2" />
-  <option name="METHOD_BRACE_STYLE" value="2" />
-  <option name="ELSE_ON_NEW_LINE" value="true" />
-  <option name="WHILE_ON_NEW_LINE" value="true" />
-  <option name="CATCH_ON_NEW_LINE" value="true" />
-  <option name="FINALLY_ON_NEW_LINE" value="true" />
-  <option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
-  <option name="SPACE_WITHIN_PARENTHESES" value="true" />
-  <option name="SPACE_WITHIN_METHOD_CALL_PARENTHESES" value="true" />
-  <option name="SPACE_WITHIN_METHOD_PARENTHESES" value="true" />
-  <option name="SPACE_WITHIN_IF_PARENTHESES" value="true" />
-  <option name="SPACE_WITHIN_WHILE_PARENTHESES" value="true" />
-  <option name="SPACE_WITHIN_FOR_PARENTHESES" value="true" />
-  <option name="SPACE_WITHIN_CATCH_PARENTHESES" value="true" />
-  <option name="SPACE_WITHIN_SWITCH_PARENTHESES" value="true" />
-  <option name="SPACE_WITHIN_SYNCHRONIZED_PARENTHESES" value="true" />
-  <option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACES" value="true" />
-  <option name="CALL_PARAMETERS_WRAP" value="1" />
-  <option name="METHOD_PARAMETERS_WRAP" value="1" />
-  <option name="EXTENDS_LIST_WRAP" value="1" />
-  <option name="THROWS_LIST_WRAP" value="1" />
-  <option name="EXTENDS_KEYWORD_WRAP" value="2" />
-  <option name="THROWS_KEYWORD_WRAP" value="2" />
-  <option name="BINARY_OPERATION_WRAP" value="1" />
-  <option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
-  <option name="TERNARY_OPERATION_WRAP" value="5" />
-  <option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
-  <option name="FOR_STATEMENT_WRAP" value="1" />
-  <option name="ARRAY_INITIALIZER_WRAP" value="1" />
-  <option name="ASSIGNMENT_WRAP" value="1" />
-  <option name="IF_BRACE_FORCE" value="3" />
-  <option name="DOWHILE_BRACE_FORCE" value="3" />
-  <option name="WHILE_BRACE_FORCE" value="3" />
-  <option name="FOR_BRACE_FORCE" value="3" />
-  <option name="SPACE_WITHIN_ANNOTATION_PARENTHESES" value="true" />
-  <option name="ENUM_CONSTANTS_WRAP" value="2" />
-  <ADDITIONAL_INDENT_OPTIONS fileType="groovy">
-    <option name="INDENT_SIZE" value="2" />
-    <option name="CONTINUATION_INDENT_SIZE" value="8" />
-    <option name="TAB_SIZE" value="4" />
-    <option name="USE_TAB_CHARACTER" value="false" />
-    <option name="SMART_TABS" value="false" />
-    <option name="LABEL_INDENT_SIZE" value="0" />
-    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
-    <option name="USE_RELATIVE_INDENTS" value="false" />
-  </ADDITIONAL_INDENT_OPTIONS>
-  <ADDITIONAL_INDENT_OPTIONS fileType="gsp">
-    <option name="INDENT_SIZE" value="2" />
-    <option name="CONTINUATION_INDENT_SIZE" value="8" />
-    <option name="TAB_SIZE" value="4" />
-    <option name="USE_TAB_CHARACTER" value="false" />
-    <option name="SMART_TABS" value="false" />
-    <option name="LABEL_INDENT_SIZE" value="0" />
-    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
-    <option name="USE_RELATIVE_INDENTS" value="false" />
-  </ADDITIONAL_INDENT_OPTIONS>
-  <ADDITIONAL_INDENT_OPTIONS fileType="java">
-    <option name="INDENT_SIZE" value="4" />
-    <option name="CONTINUATION_INDENT_SIZE" value="4" />
-    <option name="TAB_SIZE" value="4" />
-    <option name="USE_TAB_CHARACTER" value="false" />
-    <option name="SMART_TABS" value="false" />
-    <option name="LABEL_INDENT_SIZE" value="0" />
-    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
-    <option name="USE_RELATIVE_INDENTS" value="false" />
-  </ADDITIONAL_INDENT_OPTIONS>
-  <ADDITIONAL_INDENT_OPTIONS fileType="js">
-    <option name="INDENT_SIZE" value="4" />
-    <option name="CONTINUATION_INDENT_SIZE" value="8" />
-    <option name="TAB_SIZE" value="4" />
-    <option name="USE_TAB_CHARACTER" value="false" />
-    <option name="SMART_TABS" value="false" />
-    <option name="LABEL_INDENT_SIZE" value="0" />
-    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
-    <option name="USE_RELATIVE_INDENTS" value="false" />
-  </ADDITIONAL_INDENT_OPTIONS>
-  <ADDITIONAL_INDENT_OPTIONS fileType="jsp">
-    <option name="INDENT_SIZE" value="2" />
-    <option name="CONTINUATION_INDENT_SIZE" value="4" />
-    <option name="TAB_SIZE" value="2" />
-    <option name="USE_TAB_CHARACTER" value="false" />
-    <option name="SMART_TABS" value="false" />
-    <option name="LABEL_INDENT_SIZE" value="0" />
-    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
-    <option name="USE_RELATIVE_INDENTS" value="false" />
-  </ADDITIONAL_INDENT_OPTIONS>
-  <ADDITIONAL_INDENT_OPTIONS fileType="php">
-    <option name="INDENT_SIZE" value="4" />
-    <option name="CONTINUATION_INDENT_SIZE" value="8" />
-    <option name="TAB_SIZE" value="4" />
-    <option name="USE_TAB_CHARACTER" value="false" />
-    <option name="SMART_TABS" value="false" />
-    <option name="LABEL_INDENT_SIZE" value="0" />
-    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
-    <option name="USE_RELATIVE_INDENTS" value="false" />
-  </ADDITIONAL_INDENT_OPTIONS>
-  <ADDITIONAL_INDENT_OPTIONS fileType="sass">
-    <option name="INDENT_SIZE" value="2" />
-    <option name="CONTINUATION_INDENT_SIZE" value="8" />
-    <option name="TAB_SIZE" value="4" />
-    <option name="USE_TAB_CHARACTER" value="false" />
-    <option name="SMART_TABS" value="false" />
-    <option name="LABEL_INDENT_SIZE" value="0" />
-    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
-    <option name="USE_RELATIVE_INDENTS" value="false" />
-  </ADDITIONAL_INDENT_OPTIONS>
-  <ADDITIONAL_INDENT_OPTIONS fileType="xml">
-    <option name="INDENT_SIZE" value="2" />
-    <option name="CONTINUATION_INDENT_SIZE" value="4" />
-    <option name="TAB_SIZE" value="2" />
-    <option name="USE_TAB_CHARACTER" value="false" />
-    <option name="SMART_TABS" value="false" />
-    <option name="LABEL_INDENT_SIZE" value="0" />
-    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
-    <option name="USE_RELATIVE_INDENTS" value="false" />
-  </ADDITIONAL_INDENT_OPTIONS>
-  <ADDITIONAL_INDENT_OPTIONS fileType="yml">
-    <option name="INDENT_SIZE" value="2" />
-    <option name="CONTINUATION_INDENT_SIZE" value="8" />
-    <option name="TAB_SIZE" value="4" />
-    <option name="USE_TAB_CHARACTER" value="false" />
-    <option name="SMART_TABS" value="false" />
-    <option name="LABEL_INDENT_SIZE" value="0" />
-    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
-    <option name="USE_RELATIVE_INDENTS" value="false" />
-  </ADDITIONAL_INDENT_OPTIONS>
-</code_scheme>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<code_scheme name="archiva">
+  <option name="JAVA_INDENT_OPTIONS">
+    <value>
+      <option name="INDENT_SIZE" value="4" />
+      <option name="CONTINUATION_INDENT_SIZE" value="4" />
+      <option name="TAB_SIZE" value="4" />
+      <option name="USE_TAB_CHARACTER" value="false" />
+      <option name="SMART_TABS" value="false" />
+      <option name="LABEL_INDENT_SIZE" value="0" />
+      <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+      <option name="USE_RELATIVE_INDENTS" value="false" />
+    </value>
+  </option>
+  <option name="JSP_INDENT_OPTIONS">
+    <value>
+      <option name="INDENT_SIZE" value="2" />
+      <option name="CONTINUATION_INDENT_SIZE" value="4" />
+      <option name="TAB_SIZE" value="2" />
+      <option name="USE_TAB_CHARACTER" value="false" />
+      <option name="SMART_TABS" value="false" />
+      <option name="LABEL_INDENT_SIZE" value="0" />
+      <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+      <option name="USE_RELATIVE_INDENTS" value="false" />
+    </value>
+  </option>
+  <option name="XML_INDENT_OPTIONS">
+    <value>
+      <option name="INDENT_SIZE" value="2" />
+      <option name="CONTINUATION_INDENT_SIZE" value="4" />
+      <option name="TAB_SIZE" value="2" />
+      <option name="USE_TAB_CHARACTER" value="false" />
+      <option name="SMART_TABS" value="false" />
+      <option name="LABEL_INDENT_SIZE" value="0" />
+      <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+      <option name="USE_RELATIVE_INDENTS" value="false" />
+    </value>
+  </option>
+  <option name="LINE_SEPARATOR" value="&#10;" />
+  <option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
+  <option name="KEEP_LINE_BREAKS" value="false" />
+  <option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
+  <option name="BLANK_LINES_AROUND_FIELD" value="1" />
+  <option name="BRACE_STYLE" value="2" />
+  <option name="CLASS_BRACE_STYLE" value="2" />
+  <option name="METHOD_BRACE_STYLE" value="2" />
+  <option name="ELSE_ON_NEW_LINE" value="true" />
+  <option name="WHILE_ON_NEW_LINE" value="true" />
+  <option name="CATCH_ON_NEW_LINE" value="true" />
+  <option name="FINALLY_ON_NEW_LINE" value="true" />
+  <option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
+  <option name="SPACE_WITHIN_PARENTHESES" value="true" />
+  <option name="SPACE_WITHIN_METHOD_CALL_PARENTHESES" value="true" />
+  <option name="SPACE_WITHIN_METHOD_PARENTHESES" value="true" />
+  <option name="SPACE_WITHIN_IF_PARENTHESES" value="true" />
+  <option name="SPACE_WITHIN_WHILE_PARENTHESES" value="true" />
+  <option name="SPACE_WITHIN_FOR_PARENTHESES" value="true" />
+  <option name="SPACE_WITHIN_CATCH_PARENTHESES" value="true" />
+  <option name="SPACE_WITHIN_SWITCH_PARENTHESES" value="true" />
+  <option name="SPACE_WITHIN_SYNCHRONIZED_PARENTHESES" value="true" />
+  <option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACES" value="true" />
+  <option name="CALL_PARAMETERS_WRAP" value="1" />
+  <option name="METHOD_PARAMETERS_WRAP" value="1" />
+  <option name="EXTENDS_LIST_WRAP" value="1" />
+  <option name="THROWS_LIST_WRAP" value="1" />
+  <option name="EXTENDS_KEYWORD_WRAP" value="2" />
+  <option name="THROWS_KEYWORD_WRAP" value="2" />
+  <option name="BINARY_OPERATION_WRAP" value="1" />
+  <option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
+  <option name="TERNARY_OPERATION_WRAP" value="5" />
+  <option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
+  <option name="FOR_STATEMENT_WRAP" value="1" />
+  <option name="ARRAY_INITIALIZER_WRAP" value="1" />
+  <option name="ASSIGNMENT_WRAP" value="1" />
+  <option name="IF_BRACE_FORCE" value="3" />
+  <option name="DOWHILE_BRACE_FORCE" value="3" />
+  <option name="WHILE_BRACE_FORCE" value="3" />
+  <option name="FOR_BRACE_FORCE" value="3" />
+  <option name="SPACE_WITHIN_ANNOTATION_PARENTHESES" value="true" />
+  <option name="ENUM_CONSTANTS_WRAP" value="2" />
+  <ADDITIONAL_INDENT_OPTIONS fileType="groovy">
+    <option name="INDENT_SIZE" value="2" />
+    <option name="CONTINUATION_INDENT_SIZE" value="8" />
+    <option name="TAB_SIZE" value="4" />
+    <option name="USE_TAB_CHARACTER" value="false" />
+    <option name="SMART_TABS" value="false" />
+    <option name="LABEL_INDENT_SIZE" value="0" />
+    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+    <option name="USE_RELATIVE_INDENTS" value="false" />
+  </ADDITIONAL_INDENT_OPTIONS>
+  <ADDITIONAL_INDENT_OPTIONS fileType="gsp">
+    <option name="INDENT_SIZE" value="2" />
+    <option name="CONTINUATION_INDENT_SIZE" value="8" />
+    <option name="TAB_SIZE" value="4" />
+    <option name="USE_TAB_CHARACTER" value="false" />
+    <option name="SMART_TABS" value="false" />
+    <option name="LABEL_INDENT_SIZE" value="0" />
+    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+    <option name="USE_RELATIVE_INDENTS" value="false" />
+  </ADDITIONAL_INDENT_OPTIONS>
+  <ADDITIONAL_INDENT_OPTIONS fileType="java">
+    <option name="INDENT_SIZE" value="4" />
+    <option name="CONTINUATION_INDENT_SIZE" value="4" />
+    <option name="TAB_SIZE" value="4" />
+    <option name="USE_TAB_CHARACTER" value="false" />
+    <option name="SMART_TABS" value="false" />
+    <option name="LABEL_INDENT_SIZE" value="0" />
+    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+    <option name="USE_RELATIVE_INDENTS" value="false" />
+  </ADDITIONAL_INDENT_OPTIONS>
+  <ADDITIONAL_INDENT_OPTIONS fileType="js">
+    <option name="INDENT_SIZE" value="4" />
+    <option name="CONTINUATION_INDENT_SIZE" value="8" />
+    <option name="TAB_SIZE" value="4" />
+    <option name="USE_TAB_CHARACTER" value="false" />
+    <option name="SMART_TABS" value="false" />
+    <option name="LABEL_INDENT_SIZE" value="0" />
+    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+    <option name="USE_RELATIVE_INDENTS" value="false" />
+  </ADDITIONAL_INDENT_OPTIONS>
+  <ADDITIONAL_INDENT_OPTIONS fileType="jsp">
+    <option name="INDENT_SIZE" value="2" />
+    <option name="CONTINUATION_INDENT_SIZE" value="4" />
+    <option name="TAB_SIZE" value="2" />
+    <option name="USE_TAB_CHARACTER" value="false" />
+    <option name="SMART_TABS" value="false" />
+    <option name="LABEL_INDENT_SIZE" value="0" />
+    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+    <option name="USE_RELATIVE_INDENTS" value="false" />
+  </ADDITIONAL_INDENT_OPTIONS>
+  <ADDITIONAL_INDENT_OPTIONS fileType="php">
+    <option name="INDENT_SIZE" value="4" />
+    <option name="CONTINUATION_INDENT_SIZE" value="8" />
+    <option name="TAB_SIZE" value="4" />
+    <option name="USE_TAB_CHARACTER" value="false" />
+    <option name="SMART_TABS" value="false" />
+    <option name="LABEL_INDENT_SIZE" value="0" />
+    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+    <option name="USE_RELATIVE_INDENTS" value="false" />
+  </ADDITIONAL_INDENT_OPTIONS>
+  <ADDITIONAL_INDENT_OPTIONS fileType="sass">
+    <option name="INDENT_SIZE" value="2" />
+    <option name="CONTINUATION_INDENT_SIZE" value="8" />
+    <option name="TAB_SIZE" value="4" />
+    <option name="USE_TAB_CHARACTER" value="false" />
+    <option name="SMART_TABS" value="false" />
+    <option name="LABEL_INDENT_SIZE" value="0" />
+    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+    <option name="USE_RELATIVE_INDENTS" value="false" />
+  </ADDITIONAL_INDENT_OPTIONS>
+  <ADDITIONAL_INDENT_OPTIONS fileType="xml">
+    <option name="INDENT_SIZE" value="2" />
+    <option name="CONTINUATION_INDENT_SIZE" value="4" />
+    <option name="TAB_SIZE" value="2" />
+    <option name="USE_TAB_CHARACTER" value="false" />
+    <option name="SMART_TABS" value="false" />
+    <option name="LABEL_INDENT_SIZE" value="0" />
+    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+    <option name="USE_RELATIVE_INDENTS" value="false" />
+  </ADDITIONAL_INDENT_OPTIONS>
+  <ADDITIONAL_INDENT_OPTIONS fileType="yml">
+    <option name="INDENT_SIZE" value="2" />
+    <option name="CONTINUATION_INDENT_SIZE" value="8" />
+    <option name="TAB_SIZE" value="4" />
+    <option name="USE_TAB_CHARACTER" value="false" />
+    <option name="SMART_TABS" value="false" />
+    <option name="LABEL_INDENT_SIZE" value="0" />
+    <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+    <option name="USE_RELATIVE_INDENTS" value="false" />
+  </ADDITIONAL_INDENT_OPTIONS>
+</code_scheme>
+
diff --git a/developers/building.html b/developers/building.html
index a3134e1..54e39fe 100644
--- a/developers/building.html
+++ b/developers/building.html
@@ -1,283 +1,281 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Creation-yyyymmdd" content="20120119" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Building Archiva</title>
-    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="../css/site.css" />
-    <link rel="stylesheet" href="../css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="../security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../"  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="../redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="../index.html" id="bannerLeft">
-                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-            <li class="">
-                    <a href="../" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Building Archiva</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
-<h2>Building Archiva<a name="Building_Archiva"></a></h2>
-<p>To build the very latest code available... </p>
-<ol style="list-style-type: decimal">
-<li>Check out the source code as described on the <a href="../source-repository.html">Source Repository</a> page.</li>
-<li>In the 'parent' directory, execute <tt>mvn clean install</tt> to build the parent pom. (only needed if we depend on a new parent)</li>
-<li>In the 'archiva' directory, execute <tt>mvn clean install</tt> to build the Archiva modules and distribution.</li></ol>
-<p>After the build completes, you can find the Archiva distribution in <tt>archiva-jetty/target</tt> and the Archiva webapp in <tt>archiva-modules/archiva-web/archiva-webapp/target</tt></p>
-<p>Usually, it's that simple. :) Occasionally, Archiva may depend on a snapshot of another project such as <a class="externalLink" href="http://archiva.apache.org/redback">Redback</a>, and you may need to build that first, or configure a snapshot repository. If you're having trouble building Archiva, ask on the <a href="../mail-lists.html">Development mailing list</a> and we'll point you in the right direction.</p></div>
-<div class="section">
-<h2>Documentation<a name="Documentation"></a></h2>
-<p>The version-specific documentation for the latest version of Archiva can be found in <tt>archiva/archiva-docs</tt>, and the top-level Archiva website --including the page you're reading now -- is in the <tt>site</tt> directory.</p>
-<p>To work on the documentation, execute <tt>mvn site:run</tt> in one of these directories, and then visit http://localhost:8080 to view pages as you edit them. When you're done, submit a patch in the <a href="../issue-tracking.html">issue tracker</a>.</p></div>
-<div class="section">
-<h2>git clone<a name="git_clone"></a></h2>
-<div class="source">
-<pre>git clone git://github.com/apache/archiva.git; cd archiva ; sh ./init-git-svn.sh
-or trough https
-git clone https://github.com/apache/archiva.git; cd archiva ; sh ./init-git-svn.sh
-</pre></div></div>
-<div class="section">
-<h2>Running Javascript webapp with tomcat-maven-plugin<a name="Running_Javascript_webapp_with_tomcat-maven-plugin"></a></h2>
-<p>You can use <a class="externalLink" href="http://tomcat.apache.org/maven-plugin.html">tomcat-maven-plugin</a> to run the webapp without installing the war in a container. With maven3 in the top directory :</p>
-<div class="source">
-<pre>mvn tomcat7:run -pl :archiva-webapp -am (use mvnDebug if you want to attach a debugger)
-or
-sh ./t7.sh (use sh ./t7-debug.sh if you want to attach a debugger)
-</pre></div>
-<p>Hit your browser : http://localhost:9091/archiva/index.html</p></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Creation-yyyymmdd" content="20120119" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Building Archiva</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="../security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../"  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="../redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="../index.html" id="bannerLeft">
+                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+            <li class="">
+                    <a href="../" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Building Archiva</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
+<h2>Building Archiva<a name="Building_Archiva"></a></h2>
+<p>To build the very latest code available... </p>
+<ol style="list-style-type: decimal">
+<li>Check out the source code as described on the <a href="../source-repository.html">Source Repository</a> page.</li>
+<li>In the 'parent' directory, execute <tt>mvn clean install</tt> to build the parent pom. (only needed if we depend on a new parent)</li>
+<li>In the 'archiva' directory, execute <tt>mvn clean install</tt> to build the Archiva modules and distribution.</li></ol>
+<p>After the build completes, you can find the Archiva distribution in <tt>archiva-jetty/target</tt> and the Archiva webapp in <tt>archiva-modules/archiva-web/archiva-webapp/target</tt></p>
+<p>Usually, it's that simple. :) Occasionally, Archiva may depend on a snapshot of another project such as <a class="externalLink" href="http://archiva.apache.org/redback">Redback</a>, and you may need to build that first, or configure a snapshot repository. If you're having trouble building Archiva, ask on the <a href="../mail-lists.html">Development mailing list</a> and we'll point you in the right direction.</p></div>
+<div class="section">
+<h2>Documentation<a name="Documentation"></a></h2>
+<p>The version-specific documentation for the latest version of Archiva can be found in <tt>archiva/archiva-docs</tt>, and the top-level Archiva website --including the page you're reading now -- is in the <tt>site</tt> directory.</p>
+<p>To work on the documentation, execute <tt>mvn site:run</tt> in one of these directories, and then visit http://localhost:8080 to view pages as you edit them. When you're done, submit a patch in the <a href="../issue-tracking.html">issue tracker</a>.</p></div>
+<div class="section">
+<h2>git clone<a name="git_clone"></a></h2>
+<div class="source">
+<pre>git clone git://github.com/apache/archiva.git; cd archiva ; sh ./init-git-svn.sh
+or trough https
+git clone https://github.com/apache/archiva.git; cd archiva ; sh ./init-git-svn.sh</pre></div></div>
+<div class="section">
+<h2>Running Javascript webapp with tomcat-maven-plugin<a name="Running_Javascript_webapp_with_tomcat-maven-plugin"></a></h2>
+<p>You can use <a class="externalLink" href="http://tomcat.apache.org/maven-plugin.html">tomcat-maven-plugin</a> to run the webapp without installing the war in a container. With maven3 in the top directory :</p>
+<div class="source">
+<pre>mvn tomcat7:run -pl :archiva-webapp -am (use mvnDebug if you want to attach a debugger)
+or
+sh ./t7.sh (use sh ./t7-debug.sh if you want to attach a debugger)</pre></div>
+<p>Hit your browser : http://localhost:9091/archiva/index.html</p></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/developers/how-we-do-things.html b/developers/how-we-do-things.html
index 0e1b289..f5817fa 100644
--- a/developers/how-we-do-things.html
+++ b/developers/how-we-do-things.html
@@ -1,290 +1,289 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Creation-yyyymmdd" content="20121008" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - How We Do Things</title>
-    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="../css/site.css" />
-    <link rel="stylesheet" href="../css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="../security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../"  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="../redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="../index.html" id="bannerLeft">
-                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-            <li class="">
-                    <a href="../" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">How We Do Things</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
-<h2>How We Do Things<a name="How_We_Do_Things"></a></h2>
-<p>Below are the conventions we follow in Archiva.</p>
-<div class="section">
-<h3>Continuous Integration<a name="Continuous_Integration"></a></h3>
-<p>We use the Jenkins Apache instance for building Archiva (and redback dependencies) on scm changes.</p>
-<p>See the tab with various builds: <a class="externalLink" href="https://builds.apache.org/view/A-D/view/Archiva/">Archiva tab</a></p>
-<p>You can test fresh builds with downloading from this Jenkins job <a class="externalLink" href="https://builds.apache.org/job/archiva-master-build/">archiva-master-build/</a>:</p>
-<ul>
-<li><a class="externalLink" href="https://builds.apache.org/job/archiva-master-build/lastSuccessfulBuild/artifact/archiva-jetty/target/apache-archiva-2.2.0-SNAPSHOT-bin.zip">standalone with embeded jetty</a> (unzip then cd bin;./archiva start running on 8080)</li>
-<li><a class="externalLink" href="https://builds.apache.org/job/archiva-master-build/lastSuccessfulBuild/artifact/archiva-modules/archiva-web/archiva-webapp/target/archiva-webapp-2.2.0-SNAPSHOT-SNAPSHOT.war">war webapp js</a></li></ul></div>
-<div class="section">
-<h3>Code Style<a name="Code_Style"></a></h3>
-<p>There isn't any code style that needs to be followed as long as it is consistent, can be checked in checkstyle, can be formatted in Eclipse, IDEA and NetBeans. And the following rules must be followed:</p>
-<ol style="list-style-type: decimal">
-<li>Use spaces, not tabs
-<ul>
-<li>4 spaces for Java</li>
-<li>2 spaces for XML</li></ul></li>
-<li>120 column wrap, not 80</li>
-<li>Wrap on spaces, not on '.' in a method call
-<p>You can use the existing codestyle files:</p>
-<ul>
-<li><a href="./archiva-idea-codestyle.xml">idea</a></li>
-<li><a href="./archiva-eclipse-codestyle.xml">eclipse</a></li></ul></li></ol></div>
-<div class="section">
-<h3>Versioning<a name="Versioning"></a></h3>
-<p>It has been established in the community that the following style would be followed for the versioning of releases:</p>
-<div>
-<pre>Milestones -&gt; Final -&gt; Patch releases (e.g. 1.1-M1, 1.1-M2, 1.1, 1.1.1, 1.1.2 )
-</pre></div>
-<p>As much as possible, the team is aiming for frequent releases. If the roadmap for the current development version is big, milestone releases can be applied until the final release. But if the roadmap is composed of just a small number of issues, we could proceed immediately to preparing a release candidate and push it out as the final release once it passes the vote.</p></div>
-<div class="section">
-<h3>References<a name="References"></a></h3>
-<ul>
-<li><a class="externalLink" href="http://old.nabble.com/Fwd%3A-What-do-we-need-to-establish--td17098487.html"> Mailing list discussion regarding conventions</a></li></ul></div></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Creation-yyyymmdd" content="20121008" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - How We Do Things</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="../security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../"  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="../redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="../index.html" id="bannerLeft">
+                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+            <li class="">
+                    <a href="../" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">How We Do Things</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
+<h2>How We Do Things<a name="How_We_Do_Things"></a></h2>
+<p>Below are the conventions we follow in Archiva.</p>
+<div class="section">
+<h3>Continuous Integration<a name="Continuous_Integration"></a></h3>
+<p>We use the Jenkins Apache instance for building Archiva (and redback dependencies) on scm changes.</p>
+<p>See the tab with various builds: <a class="externalLink" href="https://builds.apache.org/view/A-D/view/Archiva/">Archiva tab</a></p>
+<p>You can test fresh builds with downloading from this Jenkins job <a class="externalLink" href="https://builds.apache.org/job/archiva-master-build/">archiva-master-build/</a>:</p>
+<ul>
+<li><a class="externalLink" href="https://builds.apache.org/job/archiva-master-build/lastSuccessfulBuild/artifact/archiva-jetty/target/apache-archiva-2.2.0-SNAPSHOT-bin.zip">standalone with embeded jetty</a> (unzip then cd bin;./archiva start running on 8080)</li>
+<li><a class="externalLink" href="https://builds.apache.org/job/archiva-master-build/lastSuccessfulBuild/artifact/archiva-modules/archiva-web/archiva-webapp/target/archiva-webapp-2.2.0-SNAPSHOT-SNAPSHOT.war">war webapp js</a></li></ul></div>
+<div class="section">
+<h3>Code Style<a name="Code_Style"></a></h3>
+<p>There isn't any code style that needs to be followed as long as it is consistent, can be checked in checkstyle, can be formatted in Eclipse, IDEA and NetBeans. And the following rules must be followed:</p>
+<ol style="list-style-type: decimal">
+<li>Use spaces, not tabs
+<ul>
+<li>4 spaces for Java</li>
+<li>2 spaces for XML</li></ul></li>
+<li>120 column wrap, not 80</li>
+<li>Wrap on spaces, not on '.' in a method call
+<p>You can use the existing codestyle files:</p>
+<ul>
+<li><a href="./archiva-idea-codestyle.xml">idea</a></li>
+<li><a href="./archiva-eclipse-codestyle.xml">eclipse</a></li></ul></li></ol></div>
+<div class="section">
+<h3>Versioning<a name="Versioning"></a></h3>
+<p>It has been established in the community that the following style would be followed for the versioning of releases:</p>
+<div>
+<pre>Milestones -&gt; Final -&gt; Patch releases (e.g. 1.1-M1, 1.1-M2, 1.1, 1.1.1, 1.1.2 )</pre></div>
+<p>As much as possible, the team is aiming for frequent releases. If the roadmap for the current development version is big, milestone releases can be applied until the final release. But if the roadmap is composed of just a small number of issues, we could proceed immediately to preparing a release candidate and push it out as the final release once it passes the vote.</p></div>
+<div class="section">
+<h3>References<a name="References"></a></h3>
+<ul>
+<li><a class="externalLink" href="http://old.nabble.com/Fwd%3A-What-do-we-need-to-establish--td17098487.html"> Mailing list discussion regarding conventions</a></li></ul></div></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/developers/publishing-site.html b/developers/publishing-site.html
index bd00ece..cfddd2c 100644
--- a/developers/publishing-site.html
+++ b/developers/publishing-site.html
@@ -1,322 +1,316 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Archiva Sites Publishing</title>
-    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="../css/site.css" />
-    <link rel="stylesheet" href="../css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="../security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../"  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="../redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="../index.html" id="bannerLeft">
-                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-            <li class="">
-                    <a href="../" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Archiva Sites Publishing</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <div class="section">
-<h2>Publishing the Archiva Site<a name="Publishing_the_Archiva_Site"></a></h2>
-<p>The Archiva site, documentation and reference documentation are now published to <tt>http://archiva.apache.org/</tt> using the <a class="externalLink" href="http://www.apache.org/dev/project-site.html#svnpubsub"> ASF's svnpubsub</a> service.</p>
-<p>The files published to the site are all stored under the Subversion repository at <a class="externalLink" href="http://svn.apache.org/repos/asf/archiva/site-content/">http://svn.apache.org/repos/asf/archiva/site-content/</a>.</p>
-<p>This mostly operates like a normal site deployment, though there are some specific customisations and special instructions for the reference library. The processes follow those described for the <a class="externalLink" href="http://maven.apache.org/plugins/maven-scm-publish-plugin/">Maven SCM Publish Plugin</a> for <a class="externalLink" href="http://maven.apache.org/plugins/maven-scm-publish-plugin/examples/one-module-configuration.html"> Single module projects</a> and <a class="externalLink" href="http://maven.apache.org/plugins/maven-scm-publish-plugin/examples/multi-module-configuration.html"> Multi-module projects</a> as applicable.</p>
-<p>Each site checks out the production site data into the <tt>site-publish</tt> directory of the current project, to avoid being cleaned as part of the build. It is ignored by <tt>svn</tt> operations, but you should ensure that the checkout is clean if you ever cancel or have a failure during a publish operation. You can check it is clean by ensuring there is no data from <tt>git status</tt> in that directory, or by removing it and having it get checked out again.</p>
-<div class="section">
-<h3>Editing and Publishing the Main Site<a name="Editing_and_Publishing_the_Main_Site"></a></h3>
-<p>The site displayed at the root of <a class="externalLink" href="http://archiva.apache.org">http://archiva.apache.org</a> (where you are reading this) has its source code in Git at <a class="externalLink" href="https://git-wip-us.apache.org/repos/asf/archiva-site.git">https://git-wip-us.apache.org/repos/asf/archiva-site.git</a>.</p>
-<p>To edit and publish the site, do the following:</p>
-<ol style="list-style-type: decimal">
-<li>Checkout the source code from Git (if you follow the instructions in <a href="./building.html"> Building Archiva</a>, you know how to have it.</li>
-<li>Make edits and check them using <tt>mvn site</tt> or <tt>mvn site:run</tt> until satisfied.</li>
-<li>Commit your changes (making sure your working copy is completely up to date first)</li>
-<li>Publish the site:
-<div>
-<pre>mvn site-deploy
-</pre></div></li></ol>
-<p>This site deployment can be done at any time, and is not tied to releases.</p>
-<p>Note that since the main site also contains the (large!) <tt>docs</tt> and <tt>ref</tt> directories in the <tt>site-publish</tt> directory, there is a special <tt>setup-checkout</tt> profile in place to get the initial checkout without those directories. This will normally be activated whenever the <tt>site-publish</tt> directory is missing - if you happen to have active profiles from your <tt>settings.xml</tt> you may need to enable it explicitly whenever you do a deployment and that checkout is missing: <tt>mvn site-deploy -Psetup-checkout</tt> </p></div>
-<div class="section">
-<h3>Editing and Publishing the Archiva Documentation<a name="Editing_and_Publishing_the_Archiva_Documentation"></a></h3>
-<p>The documentation displayed under the subdirectories of <a class="externalLink" href="http://archiva.apache.org/docs/">http://archiva.apache.org/docs/</a> has its source code in Git at <a class="externalLink" href="https://git-wip-us.apache.org/repos/asf/archiva.git">https://git-wip-us.apache.org/repos/asf/archiva.git</a> directory archiva-docs, which is part of the main project checkout.</p>
-<p>The instructions for managing the documentation is the same as for the main site, being published from the directory using:</p>
-<div>
-<pre>mvn site-deploy
-</pre></div>
-<p>However, in this case it is typically done as part of a release process - see <a href="./releasing.html"> Releasing Archiva</a> for instructions on doing this.</p>
-<p>The documentation remains versioned based on the release it is related to. To best manage this with svnpubsub, the site is always published into a directory <tt>docs/latest</tt>, only requiring a small number of modifications to be made. Then, as part of the release instructions, the <tt>latest</tt> directory is copied to the versioned location - for example, <tt>http://svn.apache.org/repos/asf/archiva/site-content/docs/1.4-M4</tt>.</p>
-<p>For <tt>site:stage</tt> to apply correctly without needing a full checkout, a workaround is applied by setting the <tt>distributionManagement/site/url</tt> element to match that of the parent site. The value is then overridden with the correct value in the <tt>maven-scm-publish-plugin</tt> configuration. This avoids the Site plugin attempting to relativize links incorrectly.</p></div>
-<div class="section">
-<h3>Editing and Publishing the Reference Documentation<a name="Editing_and_Publishing_the_Reference_Documentation"></a></h3>
-<p>The reference documentation, including JavaDocs and source cross-reference, is displayed under the URL <a class="externalLink" href="http://archiva.apache.org/ref">http://archiva.apache.org/ref</a>. At this time, only the latest reference documents are retained. They require quite a lot of space, and historical information is of less relevance to Archiva developers or users.</p>
-<p>To publish the latest reference documents, you need to run:</p>
-<div>
-<pre>cd archiva-modules
-mvn site site:stage scm-publish:publish-scm
-or
-sh ./deploySite.sh
-</pre></div>
-<p>This will likely cause a very large commit, and should be done infrequently. Once per release is likely to be adequate.</p></div>
-<div class="section">
-<h3>Publishing Redback site<a name="Publishing_Redback_site"></a></h3>
-<p>The redback is stored under the Subversion repository at <a class="externalLink" href="https://svn.apache.org/repos/asf/archiva/redback/redback-site/trunk">https://svn.apache.org/repos/asf/archiva/redback/redback-site/trunk</a>.</p>
-<p>It's displayed under the URL <a class="externalLink" href="http://archiva.apache.org/redback">http://archiva.apache.org/redback</a>.</p>
-<p>To publish documentation, you need to run:</p>
-<div>
-<pre>mvn site-deploy
-</pre></div></div>
-<div class="section">
-<h3>Publishing Redback Core reference<a name="Publishing_Redback_Core_reference"></a></h3>
-<p>The Redback core reference is displayed under the URL <a class="externalLink" href="http://archiva.apache.org/redback/core">http://archiva.apache.org/redback/core</a>.</p>
-<p>It contains javadoc for Redback core.</p>
-<p>To publish documentation, you need to run:</p>
-<div>
-<pre>mvn clean site-deploy scm-publish:publish-scm
-or
-sh ./deploySite.sh
-</pre></div></div>
-<div class="section">
-<h3>Publishing Redback Components reference<a name="Publishing_Redback_Components_reference"></a></h3>
-<p>The Redback components reference is displayed under the URL <a class="externalLink" href="http://archiva.apache.org/redback/components">http://archiva.apache.org/redback/components</a>.</p>
-<p>It contains javadoc for Redback components.</p>
-<p>To publish documentation, you need to run:</p>
-<div>
-<pre>mvn clean site-deploy scm-publish:publish-scm
-or
-sh ./deploySite.sh
-</pre></div></div></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Archiva Sites Publishing</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="../security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../"  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="../redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="../index.html" id="bannerLeft">
+                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+            <li class="">
+                    <a href="../" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Archiva Sites Publishing</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <div class="section">
+<h2>Publishing the Archiva Site<a name="Publishing_the_Archiva_Site"></a></h2>
+<p>The Archiva site, documentation and reference documentation are now published to <tt>http://archiva.apache.org/</tt> using the <a class="externalLink" href="http://www.apache.org/dev/project-site.html#svnpubsub"> ASF's svnpubsub</a> service.</p>
+<p>The files published to the site are all stored under the Subversion repository at <a class="externalLink" href="http://svn.apache.org/repos/asf/archiva/site-content/">http://svn.apache.org/repos/asf/archiva/site-content/</a>.</p>
+<p>This mostly operates like a normal site deployment, though there are some specific customisations and special instructions for the reference library. The processes follow those described for the <a class="externalLink" href="http://maven.apache.org/plugins/maven-scm-publish-plugin/">Maven SCM Publish Plugin</a> for <a class="externalLink" href="http://maven.apache.org/plugins/maven-scm-publish-plugin/examples/one-module-configuration.html"> Single module projects</a> and <a class="externalLink" href="http://maven.apache.org/plugins/maven-scm-publish-plugin/examples/multi-module-configuration.html"> Multi-module projects</a> as applicable.</p>
+<p>Each site checks out the production site data into the <tt>site-publish</tt> directory of the current project, to avoid being cleaned as part of the build. It is ignored by <tt>svn</tt> operations, but you should ensure that the checkout is clean if you ever cancel or have a failure during a publish operation. You can check it is clean by ensuring there is no data from <tt>git status</tt> in that directory, or by removing it and having it get checked out again.</p>
+<div class="section">
+<h3>Editing and Publishing the Main Site<a name="Editing_and_Publishing_the_Main_Site"></a></h3>
+<p>The site displayed at the root of <a class="externalLink" href="http://archiva.apache.org">http://archiva.apache.org</a> (where you are reading this) has its source code in Git at <a class="externalLink" href="https://git-wip-us.apache.org/repos/asf/archiva-site.git">https://git-wip-us.apache.org/repos/asf/archiva-site.git</a>.</p>
+<p>To edit and publish the site, do the following:</p>
+<ol style="list-style-type: decimal">
+<li>Checkout the source code from Git (if you follow the instructions in <a href="./building.html"> Building Archiva</a>, you know how to have it.</li>
+<li>Make edits and check them using <tt>mvn site</tt> or <tt>mvn site:run</tt> until satisfied.</li>
+<li>Commit your changes (making sure your working copy is completely up to date first)</li>
+<li>Publish the site:
+<div>
+<pre>mvn site-deploy</pre></div></li></ol>
+<p>This site deployment can be done at any time, and is not tied to releases.</p>
+<p>Note that since the main site also contains the (large!) <tt>docs</tt> and <tt>ref</tt> directories in the <tt>site-publish</tt> directory, there is a special <tt>setup-checkout</tt> profile in place to get the initial checkout without those directories. This will normally be activated whenever the <tt>site-publish</tt> directory is missing - if you happen to have active profiles from your <tt>settings.xml</tt> you may need to enable it explicitly whenever you do a deployment and that checkout is missing: <tt>mvn site-deploy -Psetup-checkout</tt> </p></div>
+<div class="section">
+<h3>Editing and Publishing the Archiva Documentation<a name="Editing_and_Publishing_the_Archiva_Documentation"></a></h3>
+<p>The documentation displayed under the subdirectories of <a class="externalLink" href="http://archiva.apache.org/docs/">http://archiva.apache.org/docs/</a> has its source code in Git at <a class="externalLink" href="https://git-wip-us.apache.org/repos/asf/archiva.git">https://git-wip-us.apache.org/repos/asf/archiva.git</a> directory archiva-docs, which is part of the main project checkout.</p>
+<p>The instructions for managing the documentation is the same as for the main site, being published from the directory using:</p>
+<div>
+<pre>mvn site-deploy</pre></div>
+<p>However, in this case it is typically done as part of a release process - see <a href="./releasing.html"> Releasing Archiva</a> for instructions on doing this.</p>
+<p>The documentation remains versioned based on the release it is related to. To best manage this with svnpubsub, the site is always published into a directory <tt>docs/latest</tt>, only requiring a small number of modifications to be made. Then, as part of the release instructions, the <tt>latest</tt> directory is copied to the versioned location - for example, <tt>http://svn.apache.org/repos/asf/archiva/site-content/docs/1.4-M4</tt>.</p>
+<p>For <tt>site:stage</tt> to apply correctly without needing a full checkout, a workaround is applied by setting the <tt>distributionManagement/site/url</tt> element to match that of the parent site. The value is then overridden with the correct value in the <tt>maven-scm-publish-plugin</tt> configuration. This avoids the Site plugin attempting to relativize links incorrectly.</p></div>
+<div class="section">
+<h3>Editing and Publishing the Reference Documentation<a name="Editing_and_Publishing_the_Reference_Documentation"></a></h3>
+<p>The reference documentation, including JavaDocs and source cross-reference, is displayed under the URL <a class="externalLink" href="http://archiva.apache.org/ref">http://archiva.apache.org/ref</a>. At this time, only the latest reference documents are retained. They require quite a lot of space, and historical information is of less relevance to Archiva developers or users.</p>
+<p>To publish the latest reference documents, you need to run:</p>
+<div>
+<pre>cd archiva-modules
+mvn site site:stage scm-publish:publish-scm
+or
+sh ./deploySite.sh</pre></div>
+<p>This will likely cause a very large commit, and should be done infrequently. Once per release is likely to be adequate.</p></div>
+<div class="section">
+<h3>Publishing Redback site<a name="Publishing_Redback_site"></a></h3>
+<p>The redback is stored under the Subversion repository at <a class="externalLink" href="https://svn.apache.org/repos/asf/archiva/redback/redback-site/trunk">https://svn.apache.org/repos/asf/archiva/redback/redback-site/trunk</a>.</p>
+<p>It's displayed under the URL <a class="externalLink" href="http://archiva.apache.org/redback">http://archiva.apache.org/redback</a>.</p>
+<p>To publish documentation, you need to run:</p>
+<div>
+<pre>mvn site-deploy</pre></div></div>
+<div class="section">
+<h3>Publishing Redback Core reference<a name="Publishing_Redback_Core_reference"></a></h3>
+<p>The Redback core reference is displayed under the URL <a class="externalLink" href="http://archiva.apache.org/redback/core">http://archiva.apache.org/redback/core</a>.</p>
+<p>It contains javadoc for Redback core.</p>
+<p>To publish documentation, you need to run:</p>
+<div>
+<pre>mvn clean site-deploy scm-publish:publish-scm
+or
+sh ./deploySite.sh</pre></div></div>
+<div class="section">
+<h3>Publishing Redback Components reference<a name="Publishing_Redback_Components_reference"></a></h3>
+<p>The Redback components reference is displayed under the URL <a class="externalLink" href="http://archiva.apache.org/redback/components">http://archiva.apache.org/redback/components</a>.</p>
+<p>It contains javadoc for Redback components.</p>
+<p>To publish documentation, you need to run:</p>
+<div>
+<pre>mvn clean site-deploy scm-publish:publish-scm
+or
+sh ./deploySite.sh</pre></div></div></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/developers/releasing.html b/developers/releasing.html
index 6b96b80..11a4600 100644
--- a/developers/releasing.html
+++ b/developers/releasing.html
@@ -1,316 +1,311 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Creation-yyyymmdd" content="20120119" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Archiva release process</title>
-    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="../css/site.css" />
-    <link rel="stylesheet" href="../css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="../security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../"  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="../redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="../index.html" id="bannerLeft">
-                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-            <li class="">
-                    <a href="../" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Archiva release process</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
-<h2>Archiva release process<a name="Archiva_release_process"></a></h2>
-<ol style="list-style-type: decimal">
-<li>Post to the dev list a few days before you plan to do an Archiva release</li>
-<li>Recreate the staging repository on archiva-repository.apache.org - make sure that it is not scanned (so that .index* is not created). Your maven setting must contains the entry to be able to deploy.
-<div class="source">
-<pre>   &lt;server&gt;
-     &lt;id&gt;archiva-repository.releases&lt;/id&gt;
-     &lt;username&gt;&lt;/username&gt;
-     &lt;password&gt;&lt;/password&gt;
-   &lt;/server&gt;
-</pre></div></li>
-<li>If there are changes in the parent pom, release parent pom &#x2013; https://svn.apache.org/repos/asf/archiva/parent
-<ul>
-<li>mvn release:prepare (verify that it has been properly tagged)</li>
-<li>mvn release:perform (verify that it has been deployed correctly in the staging repo)</li></ul></li>
-<li>Update the parent pom version of archiva &#x2013; https://svn.apache.org/repos/asf/archiva/trunk
-<ul>
-<li>change the parent pom version to the archiva-parent version that has just been released</li>
-<li>commit the changes made</li></ul></li>
-<li>Update the release notes and the site.xml for version changes in archiva-docs</li>
-<li>Verify that the webapp-tests are building successfully. Since it is in a separate profile but inside the Archiva source tree, it will not be released but will still be included in the release tag. If some tests are failing, comment it out first so that only the passing tests are executed when the webapp-tests module are built from the tag.</li>
-<li>Release archiva You should have a GPG agent running (preferred), and confirm it works by running &quot;gpg -ab&quot; (type some text and press Ctrl-D). If you do not have a GPG agent running, make sure that you have the &quot;apache-release&quot; profile set in your settings.xml as shown below.
-<div class="source">
-<pre>&lt;profile&gt;
-  &lt;id&gt;apache-release&lt;/id&gt;
-  &lt;properties&gt;
-    &lt;gpg.passphrase&gt;[GPG_PASSWORD]&lt;/gpg.passphrase&gt;
-  &lt;/properties&gt;
-&lt;/profile&gt;
-</pre></div>
-<p>Set your user credentials for the stage repo in the <i>servers</i> section of your settings.xml for <a href="#archiva-repository.releases">archiva-repository.releases</a>.</p>
-<p>Execute mvn release:prepare (check that it has been properly tagged. the tag name must be.. archiva-[VERSION]).</p>
-<p>Next, execute mvn release:perform</p>
-<p>Download the uploaded files via wget:</p>
-<div class="source">
-<pre>ex.
-wget http://archiva-repository.apache.org/archiva/repository/staged-releases/org/apache/archiva/archiva-jetty/1.3/archiva-jetty-1.3-bin.tar.gz
-Verify the signatures:
-ex.
-gpg -v archiva-jetty-1.3-bin.zip.asc
-</pre></div>
-<p>The documentation is deployed as part of the process to the final location for review in the vote: http://archiva.apache.org/docs/1.3/. If the vote doesn't pass, the documentation will need to be removed from the server for redeployment. Commit the sources and binaries from org/apache/archiva/archiva-jetty, and org/apache/archiva/archiva to the svn distribution tree. First in dev tree: https://dist.apache.org/repos/dist/dev/archiva/ (if the vote pass they will be copied to release tree) https://dist.apache.org/repos/dist/release/archiva</p>
-<div class="source">
-<pre>svn co https://dist.apache.org/repos/dist/dev/archiva/ archiva-dev-release
-cd archiva-dev-release
-sh ./release-script-svn.sh VERSION STAGING_URL
-</pre></div>
-<p>Call for a vote in the dev list and wait for 72 hrs. for the vote results. 3 binding votes are necessary for the release to be finalized. example If the vote fails or needs to be canceled, the version number should not be re-used if the version was made available for public download. After the vote has passed, move the files from dist dev to dist release: svn mv https://dist.apache.org/repos/dist/dev/archiva/ to https://dist.apache.org/repos/dist/relase/archiva/ To sync the jars to ibiblio, execute:</p>
-<p><b>NOTE: the stage plugin doesn't work with maven3 you must use maven 2.2.1</b></p>
-<div class="source">
-<pre>  mvn stage:copy -Dsource=&quot;https://archiva-repository.apache.org/archiva/repository/archiva-releases-stage/&quot;
-     -Dtarget=&quot;scp://[APACHE_USERNAME]@people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository&quot;
-     -Dversion=1.3 -DrepositoryId=apache.releases
-</pre></div>
-<p>mark the appropriate release version in JIRA as complete Update the archiva site (https://svn.apache.org/repos/asf/archiva/site/) for the versions and release notes URL and run mvn site-deploy. The 3 properties to change are at the bottom of pom.xml before generating the site. Once mirroring done (can be 24H): remove previous versions from https://dist.apache.org/repos/dist/release/archiva/</p>
-<p>Publish the reference docs (sh ./deploySite.sh in the archiva-modules directory) from the release tag. You may have to exclude the archiva-webapp module to do this, and will require MAVEN_OPTS=-Xmx256m. You may need to use Maven 2.2.1 instead of Maven 3.x for this.</p>
-<p>Send out an announcement of the release to:</p>
-<ul>
-<li>users@archiva.apache.org</li>
-<li>users@maven.apache.org</li>
-<li>announce@apache.org</li></ul></li></ol></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Creation-yyyymmdd" content="20120119" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Archiva release process</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="../security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../"  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="../redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="../index.html" id="bannerLeft">
+                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+            <li class="">
+                    <a href="../" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Archiva release process</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
+<h2>Archiva release process<a name="Archiva_release_process"></a></h2>
+<ol style="list-style-type: decimal">
+<li>Post to the dev list a few days before you plan to do an Archiva release</li>
+<li>Recreate the staging repository on archiva-repository.apache.org - make sure that it is not scanned (so that .index* is not created). Your maven setting must contains the entry to be able to deploy.
+<div class="source">
+<pre>   &lt;server&gt;
+     &lt;id&gt;archiva-repository.releases&lt;/id&gt;
+     &lt;username&gt;&lt;/username&gt;
+     &lt;password&gt;&lt;/password&gt;
+   &lt;/server&gt;</pre></div></li>
+<li>If there are changes in the parent pom, release parent pom &#x2013; https://svn.apache.org/repos/asf/archiva/parent
+<ul>
+<li>mvn release:prepare (verify that it has been properly tagged)</li>
+<li>mvn release:perform (verify that it has been deployed correctly in the staging repo)</li></ul></li>
+<li>Update the parent pom version of archiva &#x2013; https://svn.apache.org/repos/asf/archiva/trunk
+<ul>
+<li>change the parent pom version to the archiva-parent version that has just been released</li>
+<li>commit the changes made</li></ul></li>
+<li>Update the release notes and the site.xml for version changes in archiva-docs</li>
+<li>Verify that the webapp-tests are building successfully. Since it is in a separate profile but inside the Archiva source tree, it will not be released but will still be included in the release tag. If some tests are failing, comment it out first so that only the passing tests are executed when the webapp-tests module are built from the tag.</li>
+<li>Release archiva You should have a GPG agent running (preferred), and confirm it works by running &quot;gpg -ab&quot; (type some text and press Ctrl-D). If you do not have a GPG agent running, make sure that you have the &quot;apache-release&quot; profile set in your settings.xml as shown below.
+<div class="source">
+<pre>&lt;profile&gt;
+  &lt;id&gt;apache-release&lt;/id&gt;
+  &lt;properties&gt;
+    &lt;gpg.passphrase&gt;[GPG_PASSWORD]&lt;/gpg.passphrase&gt;
+  &lt;/properties&gt;
+&lt;/profile&gt;</pre></div>
+<p>Set your user credentials for the stage repo in the <i>servers</i> section of your settings.xml for <a href="#archiva-repository.releases">archiva-repository.releases</a>.</p>
+<p>Execute mvn release:prepare (check that it has been properly tagged. the tag name must be.. archiva-[VERSION]).</p>
+<p>Next, execute mvn release:perform</p>
+<p>Download the uploaded files via wget:</p>
+<div class="source">
+<pre>ex.
+wget http://archiva-repository.apache.org/archiva/repository/staged-releases/org/apache/archiva/archiva-jetty/1.3/archiva-jetty-1.3-bin.tar.gz
+Verify the signatures:
+ex.
+gpg -v archiva-jetty-1.3-bin.zip.asc</pre></div>
+<p>The documentation is deployed as part of the process to the final location for review in the vote: http://archiva.apache.org/docs/1.3/. If the vote doesn't pass, the documentation will need to be removed from the server for redeployment. Commit the sources and binaries from org/apache/archiva/archiva-jetty, and org/apache/archiva/archiva to the svn distribution tree. First in dev tree: https://dist.apache.org/repos/dist/dev/archiva/ (if the vote pass they will be copied to release tree) https://dist.apache.org/repos/dist/release/archiva</p>
+<div class="source">
+<pre>svn co https://dist.apache.org/repos/dist/dev/archiva/ archiva-dev-release
+cd archiva-dev-release
+sh ./release-script-svn.sh VERSION STAGING_URL</pre></div>
+<p>Call for a vote in the dev list and wait for 72 hrs. for the vote results. 3 binding votes are necessary for the release to be finalized. example If the vote fails or needs to be canceled, the version number should not be re-used if the version was made available for public download. After the vote has passed, move the files from dist dev to dist release: svn mv https://dist.apache.org/repos/dist/dev/archiva/ to https://dist.apache.org/repos/dist/relase/archiva/ To sync the jars to ibiblio, execute:</p>
+<p><b>NOTE: the stage plugin doesn't work with maven3 you must use maven 2.2.1</b></p>
+<div class="source">
+<pre>  mvn stage:copy -Dsource=&quot;https://archiva-repository.apache.org/archiva/repository/archiva-releases-stage/&quot;
+     -Dtarget=&quot;scp://[APACHE_USERNAME]@people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository&quot;
+     -Dversion=1.3 -DrepositoryId=apache.releases</pre></div>
+<p>mark the appropriate release version in JIRA as complete Update the archiva site (https://svn.apache.org/repos/asf/archiva/site/) for the versions and release notes URL and run mvn site-deploy. The 3 properties to change are at the bottom of pom.xml before generating the site. Once mirroring done (can be 24H): remove previous versions from https://dist.apache.org/repos/dist/release/archiva/</p>
+<p>Publish the reference docs (sh ./deploySite.sh in the archiva-modules directory) from the release tag. You may have to exclude the archiva-webapp module to do this, and will require MAVEN_OPTS=-Xmx256m. You may need to use Maven 2.2.1 instead of Maven 3.x for this.</p>
+<p>Send out an announcement of the release to:</p>
+<ul>
+<li>users@archiva.apache.org</li>
+<li>users@maven.apache.org</li>
+<li>announce@apache.org</li></ul></li></ol></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/download.cgi b/download.cgi
index afc9595..20d30e5 100644
--- a/download.cgi
+++ b/download.cgi
@@ -1,5 +1,5 @@
-#!/bin/sh
-# Just call the standard mirrors.cgi script. It will use download.html
-# as the input template.
-#
+#!/bin/sh
+# Just call the standard mirrors.cgi script. It will use download.html
+# as the input template.
+#
 exec /www/www.apache.org/dyn/mirrors/mirrors.cgi $*
\ No newline at end of file
diff --git a/download.html b/download.html
index fbc4500..ad52219 100644
--- a/download.html
+++ b/download.html
@@ -1,570 +1,570 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - 
-    Download Apache Archiva</title>
-    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="./css/site.css" />
-    <link rel="stylesheet" href="./css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href=""  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="index.html" id="bannerLeft">
-                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-                <li class="">
-                    <a href="./" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">
-    Download Apache Archiva</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <!-- Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License. -->
-  
-    <div class="section">
-<h2>Download Apache Archiva 2.1.1<a name="Download_Apache_Archiva_2.1.1"></a></h2>
-      
-<p>Archiva is distributed under the <a class="externalLink" href="http://archiva.apache.org/license.html}">Apache License, version 2.0</a>.</p>
-      
-<div class="section">
-<h3>System Requirements<a name="System_Requirements"></a></h3>
-        
-<table border="0" class="table table-striped">
-          
-<tr class="a">
-            
-<td><b>JDK</b></td>
-            
-<td>1.7 or above</td>
-          </tr>
-          
-<tr class="b">
-            
-<td><b>No minimum requirement</b></td>
-            
-<td>The Archiva application is in itself about 50MB but will use more disk space to store repository contents</td>
-          </tr>
-          
-<tr class="a">
-            
-<td><b>Operating System</b></td>
-            
-<td>Support for Linux, Mac OS, Solaris and Windows.  Tested on Windows XP SP2, Ubuntu Linux, and Mac OS X.</td>
-          </tr>
-        </table>
-      </div>
-      <a name="mirror"></a>
-      
-<div class="section">
-<h3>Mirror<a name="Mirror"></a></h3>
-
-        
-<p>
-          [if-any logo]
-          <a href="[link]">
-            <img src="[logo]" align="right" border="0" alt="logo" />
-          </a>
-          [end]
-          The currently selected mirror is
-          <b>[preferred]</b>.
-          If you encounter a problem with this mirror,
-          please select another mirror.
-          If all mirrors are failing, there are
-          <i>backup</i>
-          mirrors
-          (at the end of the mirrors list) that should be available.
-        </p>
-
-        <form action="[location]" method="get" id="SelectMirror" class="form-inline">
-          Other mirrors:
-          <select name="Preferred" class="input-xlarge">
-            [if-any http]
-            [for http]
-            <option value="[http]">[http]</option>
-            [end]
-            [end]
-            [if-any ftp]
-            [for ftp]
-            <option value="[ftp]">[ftp]</option>
-            [end]
-            [end]
-            [if-any backup]
-            [for backup]
-            <option value="[backup]">[backup] (backup)</option>
-            [end]
-            [end]
-          </select>
-          <input type="submit" value="Change" class="btn" />
-        </form>
-
-        
-<p>
-          You may also consult the
-          <a class="externalLink" href="http://www.apache.org/mirrors/">complete list of
-            mirrors.</a>
-        </p>
-
-      </div>
-      
-<div class="section">
-<h3>Current Release: Archiva 2.1.1<a name="Current_Release:_Archiva_2.1.1"></a></h3>
-        
-<p>
-          This is the currently recommended version of Archiva.
-
-          </p>
-<ul>
-            
-<li><a href="./docs/2.1.1/release-notes.html">Release Notes</a></li>
-            
-<li><a href="./known-issues.html">Known Issues and Errata</a></li>
-              
-<li><a href="./security.html">Security Reports</a></li>
-          </ul>
-        
-        
-<p>
-          </p>
-<table border="0" class="table table-striped">
-            <thead>
-              
-<tr class="a">
-                
-<th>Archiva 2.1.1 </th>
-                
-<th>Mirrors</th>
-                
-<th>Checksum</th>
-                
-<th>Signature</th>
-              </tr>
-            </thead>
-            <tbody>
-              
-<tr class="b">
-                
-<td>Archiva 2.1.1 Standalone</td>
-                
-<td><a href="[preferred]archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.tar.gz">tar.gz</a></td>
-                
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.tar.gz.md5">md5</a></td>
-                
-<td><a class="externalLink" href="http://www.apache.org/dyn/closer.cgi/archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.tar.gz.asc">asc</a></td>
-              </tr>
-              
-<tr class="a">
-                
-<td></td>
-                
-<td><a href="[preferred]archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.zip">zip</a></td>
-                
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.zip.md5">md5</a></td>
-                
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.zip.asc">asc</a></td>
-              </tr>
-              
-<tr class="b">
-                
-<td>Archiva 2.1.1 WAR</td>
-                
-<td><a href="[preferred]archiva/2.1.1/binaries/apache-archiva-2.1.1.war">war</a></td>
-                
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1.war.md5">md5</a></td>
-                
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1.war.asc">asc</a></td>
-              </tr>
-              
-<tr class="a">
-                
-<td>Archiva 2.1.1 Sources</td>
-                
-<td><a href="[preferred]archiva/2.1.1/src/apache-archiva-2.1.1-src.zip">source zip</a></td>
-                
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/src/apache-archiva-2.1.1-src.zip.md5">md5</a></td>
-                
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/src/apache-archiva-2.1.1-src.zip.asc">asc</a></td>
-              </tr>
-            </tbody>
-          </table>
-        
-
-      </div>
-
-                  
-<div class="section">
-<h3>Last Release series 1.3.x: Archiva 1.3.9<a name="Last_Release_series_1.3.x:_Archiva_1.3.9"></a></h3>
-            
-<p>
-            This is the previous stable release of Archiva.
-            </p>
-<ul>
-              
-<li><a href="./docs/1.3.9/release-notes.html">Release Notes</a></li>
-              
-<li><a href="./known-issues.html">Known Issues and Errata</a></li>
-              
-<li><a href="./security.html">Security Reports</a></li>
-            </ul>
-            
-            
-<p>
-              </p>
-<table border="0" class="table table-striped">
-                <thead>
-                  
-<tr class="a">
-                    
-<th>Archiva 1.3.9 </th>
-                    
-<th>Mirrors</th>
-                    
-<th>Checksum</th>
-                    
-<th>Signature</th>
-                  </tr>
-                </thead>
-                <tbody>
-                  
-<tr class="b">
-                    
-<td>Archiva 1.3.9 Standalone</td>
-                    
-<td><a href="[preferred]archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.tar.gz">tar.gz</a></td>
-                    
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.tar.gz.md5">md5</a></td>
-                    
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.tar.gz.asc">asc</a></td>
-                  </tr>
-                  
-<tr class="a">
-                    
-<td></td>
-                    
-<td><a href="[preferred]archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.zip">zip</a></td>
-                    
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.zip.md5">md5</a></td>
-                    
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.zip.asc">asc</a></td>
-                  </tr>
-                  
-<tr class="b">
-                    
-<td>Archiva 1.3.9 WAR</td>
-                    
-<td><a href="[preferred]archiva/1.3.9/binaries/apache-archiva-1.3.9.war">war</a></td>
-                    
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.war.md5">md5</a></td>
-                    
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.war.asc">asc</a></td>
-                  </tr>
-                  
-<tr class="a">
-                    
-<td>Archiva 1.3.9 Sources</td>
-                    
-<td><a href="[preferred]archiva/1.3.9/src/apache-archiva-1.3.9-src.zip">source zip</a></td>
-                    
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/src/apache-archiva-1.3.9-src.zip.md5">md5</a></td>
-                    
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/src/apache-archiva-1.3.9-src.zip.asc">asc</a></td>
-                  </tr>
-                </tbody>
-              </table>
-            
-          </div>
-
-        
-      
-<div class="section">
-<h3>Previous Versions<a name="Previous_Versions"></a></h3>
-        
-<p>
-          More releases are available in the <a class="externalLink" href="http://archive.apache.org/dist/archiva/">Apache Archiva Archives</a>
-          or prior to the graduation from Maven, in the <a class="externalLink" href="http://archive.apache.org/dist/maven/binaries/">Apache Maven Archives</a>.
-        </p>
-      </div>
-      
-<div class="section">
-<h3>Verify the integrity of the files<a name="Verify_the_integrity_of_the_files"></a></h3>
-        
-<p>
-          We recommend that you verify the integrity of the downloaded files using the PGP signatures and MD5 checksums.
-
-          The PGP signatures can be verified using PGP or GPG. First download the <a class="externalLink" href="http://www.apache.org/dist/archiva/KEYS">KEYS</a>
-          as well as the asc signature file for the particular distribution. Make sure you get these files from
-          <a class="externalLink" href="http://www.apache.org/dist/archiva">the main distribution directory</a>,
-          rather than from a mirror. <br />
-          Then verify the signatures using:
-        </p>
-          
-<div>
-<pre>
-          % pgpk -a KEYS
-          % pgpv $filename.tar.gz.asc
-          or
-          % pgp -ka KEYS
-          % pgp $filename.tar.gz.asc
-          or
-          % gpg --import KEYS
-          % gpg --verify $filename.tar.gz.asc
-          </pre></div>
-        
-<p>
-          You can also verify the MD5 signature on the files. A Unix program called md5 or md5sum is included in many
-          Unix distributions. It is also available as part of <a class="externalLink" href="http://www.gnu.org/software/coreutils/">GNU Coreutils</a>.
-          Windows users can get binary md5 programs from <a class="externalLink" href="http://www.fourmilab.ch/md5/">Fourmilab</a>,
-          <a class="externalLink" href="http://www.pc-tools.net/win32/md5sums">PC-Tools</a> or <a class="externalLink" href="http://www.slavasoft.com/fsum/">SlavaSoft</a>
-        </p>
-      </div>
-    </div>
-  
-
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - 
+    Download Apache Archiva</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="./css/site.css" />
+    <link rel="stylesheet" href="./css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href=""  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="index.html" id="bannerLeft">
+                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+                <li class="">
+                    <a href="./" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">
+    Download Apache Archiva</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License. -->
+  
+    <div class="section">
+<h2>Download Apache Archiva 2.1.1<a name="Download_Apache_Archiva_2.1.1"></a></h2>
+      
+<p>Archiva is distributed under the <a class="externalLink" href="http://archiva.apache.org/license.html}">Apache License, version 2.0</a>.</p>
+      
+<div class="section">
+<h3>System Requirements<a name="System_Requirements"></a></h3>
+        
+<table border="0" class="table table-striped">
+          
+<tr class="a">
+            
+<td><b>JDK</b></td>
+            
+<td>1.7 or above</td>
+          </tr>
+          
+<tr class="b">
+            
+<td><b>No minimum requirement</b></td>
+            
+<td>The Archiva application is in itself about 50MB but will use more disk space to store repository contents</td>
+          </tr>
+          
+<tr class="a">
+            
+<td><b>Operating System</b></td>
+            
+<td>Support for Linux, Mac OS, Solaris and Windows.  Tested on Windows XP SP2, Ubuntu Linux, and Mac OS X.</td>
+          </tr>
+        </table>
+      </div>
+      <a name="mirror"></a>
+      
+<div class="section">
+<h3>Mirror<a name="Mirror"></a></h3>
+
+        
+<p>
+          [if-any logo]
+          <a href="[link]">
+            <img src="[logo]" align="right" border="0" alt="logo" />
+          </a>
+          [end]
+          The currently selected mirror is
+          <b>[preferred]</b>.
+          If you encounter a problem with this mirror,
+          please select another mirror.
+          If all mirrors are failing, there are
+          <i>backup</i>
+          mirrors
+          (at the end of the mirrors list) that should be available.
+        </p>
+
+        <form action="[location]" method="get" id="SelectMirror" class="form-inline">
+          Other mirrors:
+          <select name="Preferred" class="input-xlarge">
+            [if-any http]
+            [for http]
+            <option value="[http]">[http]</option>
+            [end]
+            [end]
+            [if-any ftp]
+            [for ftp]
+            <option value="[ftp]">[ftp]</option>
+            [end]
+            [end]
+            [if-any backup]
+            [for backup]
+            <option value="[backup]">[backup] (backup)</option>
+            [end]
+            [end]
+          </select>
+          <input type="submit" value="Change" class="btn" />
+        </form>
+
+        
+<p>
+          You may also consult the
+          <a class="externalLink" href="http://www.apache.org/mirrors/">complete list of
+            mirrors.</a>
+        </p>
+
+      </div>
+      
+<div class="section">
+<h3>Current Release: Archiva 2.1.1<a name="Current_Release:_Archiva_2.1.1"></a></h3>
+        
+<p>
+          This is the currently recommended version of Archiva.
+
+          </p>
+<ul>
+            
+<li><a href="./docs/2.1.1/release-notes.html">Release Notes</a></li>
+            
+<li><a href="./known-issues.html">Known Issues and Errata</a></li>
+              
+<li><a href="./security.html">Security Reports</a></li>
+          </ul>
+        
+        
+<p>
+          </p>
+<table border="0" class="table table-striped">
+            <thead>
+              
+<tr class="a">
+                
+<th>Archiva 2.1.1 </th>
+                
+<th>Mirrors</th>
+                
+<th>Checksum</th>
+                
+<th>Signature</th>
+              </tr>
+            </thead>
+            <tbody>
+              
+<tr class="b">
+                
+<td>Archiva 2.1.1 Standalone</td>
+                
+<td><a href="[preferred]archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.tar.gz">tar.gz</a></td>
+                
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.tar.gz.md5">md5</a></td>
+                
+<td><a class="externalLink" href="http://www.apache.org/dyn/closer.cgi/archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.tar.gz.asc">asc</a></td>
+              </tr>
+              
+<tr class="a">
+                
+<td></td>
+                
+<td><a href="[preferred]archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.zip">zip</a></td>
+                
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.zip.md5">md5</a></td>
+                
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.zip.asc">asc</a></td>
+              </tr>
+              
+<tr class="b">
+                
+<td>Archiva 2.1.1 WAR</td>
+                
+<td><a href="[preferred]archiva/2.1.1/binaries/apache-archiva-2.1.1.war">war</a></td>
+                
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1.war.md5">md5</a></td>
+                
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1.war.asc">asc</a></td>
+              </tr>
+              
+<tr class="a">
+                
+<td>Archiva 2.1.1 Sources</td>
+                
+<td><a href="[preferred]archiva/2.1.1/src/apache-archiva-2.1.1-src.zip">source zip</a></td>
+                
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/src/apache-archiva-2.1.1-src.zip.md5">md5</a></td>
+                
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/src/apache-archiva-2.1.1-src.zip.asc">asc</a></td>
+              </tr>
+            </tbody>
+          </table>
+        
+
+      </div>
+
+                  
+<div class="section">
+<h3>Last Release series 1.3.x: Archiva 1.3.9<a name="Last_Release_series_1.3.x:_Archiva_1.3.9"></a></h3>
+            
+<p>
+            This is the previous stable release of Archiva.
+            </p>
+<ul>
+              
+<li><a href="./docs/1.3.9/release-notes.html">Release Notes</a></li>
+              
+<li><a href="./known-issues.html">Known Issues and Errata</a></li>
+              
+<li><a href="./security.html">Security Reports</a></li>
+            </ul>
+            
+            
+<p>
+              </p>
+<table border="0" class="table table-striped">
+                <thead>
+                  
+<tr class="a">
+                    
+<th>Archiva 1.3.9 </th>
+                    
+<th>Mirrors</th>
+                    
+<th>Checksum</th>
+                    
+<th>Signature</th>
+                  </tr>
+                </thead>
+                <tbody>
+                  
+<tr class="b">
+                    
+<td>Archiva 1.3.9 Standalone</td>
+                    
+<td><a href="[preferred]archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.tar.gz">tar.gz</a></td>
+                    
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.tar.gz.md5">md5</a></td>
+                    
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.tar.gz.asc">asc</a></td>
+                  </tr>
+                  
+<tr class="a">
+                    
+<td></td>
+                    
+<td><a href="[preferred]archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.zip">zip</a></td>
+                    
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.zip.md5">md5</a></td>
+                    
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.zip.asc">asc</a></td>
+                  </tr>
+                  
+<tr class="b">
+                    
+<td>Archiva 1.3.9 WAR</td>
+                    
+<td><a href="[preferred]archiva/1.3.9/binaries/apache-archiva-1.3.9.war">war</a></td>
+                    
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.war.md5">md5</a></td>
+                    
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.war.asc">asc</a></td>
+                  </tr>
+                  
+<tr class="a">
+                    
+<td>Archiva 1.3.9 Sources</td>
+                    
+<td><a href="[preferred]archiva/1.3.9/src/apache-archiva-1.3.9-src.zip">source zip</a></td>
+                    
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/src/apache-archiva-1.3.9-src.zip.md5">md5</a></td>
+                    
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/src/apache-archiva-1.3.9-src.zip.asc">asc</a></td>
+                  </tr>
+                </tbody>
+              </table>
+            
+          </div>
+
+        
+      
+<div class="section">
+<h3>Previous Versions<a name="Previous_Versions"></a></h3>
+        
+<p>
+          More releases are available in the <a class="externalLink" href="http://archive.apache.org/dist/archiva/">Apache Archiva Archives</a>
+          or prior to the graduation from Maven, in the <a class="externalLink" href="http://archive.apache.org/dist/maven/binaries/">Apache Maven Archives</a>.
+        </p>
+      </div>
+      
+<div class="section">
+<h3>Verify the integrity of the files<a name="Verify_the_integrity_of_the_files"></a></h3>
+        
+<p>
+          We recommend that you verify the integrity of the downloaded files using the PGP signatures and MD5 checksums.
+
+          The PGP signatures can be verified using PGP or GPG. First download the <a class="externalLink" href="http://www.apache.org/dist/archiva/KEYS">KEYS</a>
+          as well as the asc signature file for the particular distribution. Make sure you get these files from
+          <a class="externalLink" href="http://www.apache.org/dist/archiva">the main distribution directory</a>,
+          rather than from a mirror. <br />
+          Then verify the signatures using:
+        </p>
+          
+<div>
+<pre>
+          % pgpk -a KEYS
+          % pgpv $filename.tar.gz.asc
+          or
+          % pgp -ka KEYS
+          % pgp $filename.tar.gz.asc
+          or
+          % gpg --import KEYS
+          % gpg --verify $filename.tar.gz.asc
+          </pre></div>
+        
+<p>
+          You can also verify the MD5 signature on the files. A Unix program called md5 or md5sum is included in many
+          Unix distributions. It is also available as part of <a class="externalLink" href="http://www.gnu.org/software/coreutils/">GNU Coreutils</a>.
+          Windows users can get binary md5 programs from <a class="externalLink" href="http://www.fourmilab.ch/md5/">Fourmilab</a>,
+          <a class="externalLink" href="http://www.pc-tools.net/win32/md5sums">PC-Tools</a> or <a class="externalLink" href="http://www.slavasoft.com/fsum/">SlavaSoft</a>
+        </p>
+      </div>
+    </div>
+  
+
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/errors/404.html b/errors/404.html
index 15e30ce..217fe28 100644
--- a/errors/404.html
+++ b/errors/404.html
@@ -1,261 +1,261 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Page Not found</title>
-    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="../css/site.css" />
-    <link rel="stylesheet" href="../css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="../security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../"  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="../redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="../index.html" id="bannerLeft">
-                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-            <li class="">
-                    <a href="../" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Page Not found</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
-<h2>Page Not Found<a name="Page_Not_Found"></a></h2>
-<p>We're sorry, but the page you requested cannot be found. This may be because:</p>
-<ul>
-<li>The page has moved, was outdated, or has not been created yet</li>
-<li>You typed the address incorrectly</li>
-<li>You followed a link from another site that pointed to this page</li></ul>
-<p>If you came to this page by following a broken link on our site, you can report the <a class="externalLink" href="http://jira.codehaus.org/browse/MRM"> problem</a>.</p></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Page Not found</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="../security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../"  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="../redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="../index.html" id="bannerLeft">
+                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+            <li class="">
+                    <a href="../" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Page Not found</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
+<h2>Page Not Found<a name="Page_Not_Found"></a></h2>
+<p>We're sorry, but the page you requested cannot be found. This may be because:</p>
+<ul>
+<li>The page has moved, was outdated, or has not been created yet</li>
+<li>You typed the address incorrectly</li>
+<li>You followed a link from another site that pointed to this page</li></ul>
+<p>If you came to this page by following a broken link on our site, you can report the <a class="externalLink" href="http://jira.codehaus.org/browse/MRM"> problem</a>.</p></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/get-involved.html b/get-involved.html
index c62ca0e..b3a2983 100644
--- a/get-involved.html
+++ b/get-involved.html
@@ -1,290 +1,290 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Creation-yyyymmdd" content="20120119" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Archiva Community - Get Involved</title>
-    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="./css/site.css" />
-    <link rel="stylesheet" href="./css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href=""  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="index.html" id="bannerLeft">
-                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-                <li class="">
-                    <a href="./" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Archiva Community - Get Involved</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
-<h2>Getting Involved in the Archiva Project<a name="Getting_Involved_in_the_Archiva_Project"></a></h2>
-<p>Archiva is an open source project and relies heavily on an active community. If you need help, you should look to the community. Equally, please look for ways that you may contribute back.</p>
-<p>This page provides some pointers for receiving help and contributing to the Archiva community.</p>
-<div class="section">
-<h3>Getting Help<a name="Getting_Help"></a></h3>
-<p>There are a number of ways to find help if you have an issue. </p>
-<ul>
-<li><b>Read the documentation</b><br />Read the <a class="externalLink" href="http://archiva.apache.org/docs/2.2.0-SNAPSHOT/userguide">user</a> and <a class="externalLink" href="http://archiva.apache.org/docs/2.2.0-SNAPSHOT/adminguide">administration</a> documentation. </li>
-<li><b>Search the Wiki</b><br />Search the <a class="externalLink" href="http://cwiki.apache.org/confluence/display/ARCHIVA">Archiva Wiki</a>. Lots of useful information has been contributed by users here.</li>
-<li><b>Submit an issue</b><br />Search the <a href="./issue-tracking.html">Jira</a> issue tracking system. The problem you are experiencing may be a known issue and others may have suggested work-arounds. If the issue is new, you should consider submitting a report.</li>
-<li><b>Search the mailing lists</b><br />Search the mailing lists. Look <a href="./mail-lists.html">here</a> for a list of Archiva mailing lists. If you cannot find everything you need, ask a question on the appropriate list.</li></ul>
-<div class="section">
-<h4>More Information<a name="More_Information"></a></h4>
-<p>If you are new to Archiva (or Maven), there are a number of helpful resources on the Maven website which provide step-by-step guides to getting help, useful information regarding etiquette, and lots of other resources.</p>
-<p>Check out:</p>
-<ul>
-<li><a class="externalLink" href="http://maven.apache.org/community.html">The Maven Community</a></li>
-<li><a class="externalLink" href="http://maven.apache.org/users/getting-help.html">Getting Help with Maven</a></li></ul></div></div>
-<div class="section">
-<h3>How to Contribute<a name="How_to_Contribute"></a></h3>
-<p>As with any open source project, there are several ways you can help:</p>
-<ul>
-<li><b>Join a mailing list</b><br />Join a <a href="./mail-lists.html">mailing list</a> and answer other user's questions. You can also meet up with developers and users on <tt>#archiva</tt> on <tt>irc.freenode.net</tt></li>
-<li><b>Fix bugs</b><br />Report bugs, feature requests and other issues in the <a href="./issue-tracking.html">Jira</a> issue tracking system. Also, read up on <a href="./developers/how-we-do-things.html">how we do things</a> in Archiva.</li>
-<li><b>Build it</b><br />Check out the <a href="./source-repository.html">source code</a> and <a href="./developers/building.html">build Archiva</a> for yourself. Fix bugs and submit patches for reported issues (both those you find, or that others have filed).</li>
-<li><b>Write documentation</b><br />Help with the documentation by pointing out areas that are lacking or unclear, and if you are so inclined, submitting patches to correct it. You can quickly contribute rough thoughts to the <a class="externalLink" href="http://cwiki.apache.org/confluence/display/ARCHIVA"> wiki</a>, or you can volunteer to help collate and organise information that is already there.</li>
-<li><b>Contribute Patches</b> You can attache source patches to our JIRA. Or contribute using github pull requests our github source mirror is available here <a class="externalLink" href="https://github.com/apache/archiva">https://github.com/apache/archiva</a></li></ul>
-<p>Your participation in the community is much appreciated!</p>
-<div class="section">
-<h4>More Information<a name="More_Information"></a></h4>
-<p>If you are new to Archiva (or Maven), there are a number of helpful resources on the Maven website regarding contribution back to the community.</p>
-<p>Check out:</p>
-<ul>
-<li><a class="externalLink" href="http://maven.apache.org/community.html">The Maven Community</a> </li>
-<li><a class="externalLink" href="http://maven.apache.org/guides/development/guide-helping.html">Guide to helping with Maven</a></li></ul></div></div></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Creation-yyyymmdd" content="20120119" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Archiva Community - Get Involved</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="./css/site.css" />
+    <link rel="stylesheet" href="./css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href=""  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="index.html" id="bannerLeft">
+                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+                <li class="">
+                    <a href="./" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Archiva Community - Get Involved</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
+<h2>Getting Involved in the Archiva Project<a name="Getting_Involved_in_the_Archiva_Project"></a></h2>
+<p>Archiva is an open source project and relies heavily on an active community. If you need help, you should look to the community. Equally, please look for ways that you may contribute back.</p>
+<p>This page provides some pointers for receiving help and contributing to the Archiva community.</p>
+<div class="section">
+<h3>Getting Help<a name="Getting_Help"></a></h3>
+<p>There are a number of ways to find help if you have an issue. </p>
+<ul>
+<li><b>Read the documentation</b><br />Read the <a class="externalLink" href="http://archiva.apache.org/docs/2.2.0-SNAPSHOT/userguide">user</a> and <a class="externalLink" href="http://archiva.apache.org/docs/2.2.0-SNAPSHOT/adminguide">administration</a> documentation. </li>
+<li><b>Search the Wiki</b><br />Search the <a class="externalLink" href="http://cwiki.apache.org/confluence/display/ARCHIVA">Archiva Wiki</a>. Lots of useful information has been contributed by users here.</li>
+<li><b>Submit an issue</b><br />Search the <a href="./issue-tracking.html">Jira</a> issue tracking system. The problem you are experiencing may be a known issue and others may have suggested work-arounds. If the issue is new, you should consider submitting a report.</li>
+<li><b>Search the mailing lists</b><br />Search the mailing lists. Look <a href="./mail-lists.html">here</a> for a list of Archiva mailing lists. If you cannot find everything you need, ask a question on the appropriate list.</li></ul>
+<div class="section">
+<h4>More Information<a name="More_Information"></a></h4>
+<p>If you are new to Archiva (or Maven), there are a number of helpful resources on the Maven website which provide step-by-step guides to getting help, useful information regarding etiquette, and lots of other resources.</p>
+<p>Check out:</p>
+<ul>
+<li><a class="externalLink" href="http://maven.apache.org/community.html">The Maven Community</a></li>
+<li><a class="externalLink" href="http://maven.apache.org/users/getting-help.html">Getting Help with Maven</a></li></ul></div></div>
+<div class="section">
+<h3>How to Contribute<a name="How_to_Contribute"></a></h3>
+<p>As with any open source project, there are several ways you can help:</p>
+<ul>
+<li><b>Join a mailing list</b><br />Join a <a href="./mail-lists.html">mailing list</a> and answer other user's questions. You can also meet up with developers and users on <tt>#archiva</tt> on <tt>irc.freenode.net</tt></li>
+<li><b>Fix bugs</b><br />Report bugs, feature requests and other issues in the <a href="./issue-tracking.html">Jira</a> issue tracking system. Also, read up on <a href="./developers/how-we-do-things.html">how we do things</a> in Archiva.</li>
+<li><b>Build it</b><br />Check out the <a href="./source-repository.html">source code</a> and <a href="./developers/building.html">build Archiva</a> for yourself. Fix bugs and submit patches for reported issues (both those you find, or that others have filed).</li>
+<li><b>Write documentation</b><br />Help with the documentation by pointing out areas that are lacking or unclear, and if you are so inclined, submitting patches to correct it. You can quickly contribute rough thoughts to the <a class="externalLink" href="http://cwiki.apache.org/confluence/display/ARCHIVA"> wiki</a>, or you can volunteer to help collate and organise information that is already there.</li>
+<li><b>Contribute Patches</b> You can attache source patches to our JIRA. Or contribute using github pull requests our github source mirror is available here <a class="externalLink" href="https://github.com/apache/archiva">https://github.com/apache/archiva</a></li></ul>
+<p>Your participation in the community is much appreciated!</p>
+<div class="section">
+<h4>More Information<a name="More_Information"></a></h4>
+<p>If you are new to Archiva (or Maven), there are a number of helpful resources on the Maven website regarding contribution back to the community.</p>
+<p>Check out:</p>
+<ul>
+<li><a class="externalLink" href="http://maven.apache.org/community.html">The Maven Community</a> </li>
+<li><a class="externalLink" href="http://maven.apache.org/guides/development/guide-helping.html">Guide to helping with Maven</a></li></ul></div></div></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/index.cgi b/index.cgi
index f40e178..924a78d 100644
--- a/index.cgi
+++ b/index.cgi
@@ -1,3 +1,3 @@
-#!/bin/sh
-#
+#!/bin/sh
+#
 exec /www/www.apache.org/dyn/mirrors/mirrors.cgi $*
\ No newline at end of file
diff --git a/index.html b/index.html
index fda1190..30c52ee 100644
--- a/index.html
+++ b/index.html
@@ -1,803 +1,803 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="author" content="Brett Porter" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - 
-    The Build Artifact Repository Manager</title>
-    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="./css/site.css" />
-    <link rel="stylesheet" href="./css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-    <!-- move js and css to head --><link rel="stylesheet" href="css/jquery.fancybox.2.1.5.css" type="text/css" media="screen" /><script src="js/index.js" type="text/javascript"></script><script src="js/fancybox.js" type="text/javascript"></script><script src="js/jquery.fancybox.pack.2.1.5.js" type="text/javascript"></script><script src="js/jquery.mousewheel-3.0.6.pack.js" type="text/javascript"></script>              </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href=""  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="index.html" id="bannerLeft">
-                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-                <li class="">
-                    <a href="./" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">
-    The Build Artifact Repository Manager</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <!-- ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~  http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License. -->
-  
-    
-<div class="row-fluid">
-      
-<div class="span8">
-        
-<div class="newsBox">
-          
-<div class="hero-unit">
-            <span class="bignumber badge badge-warning">NEW</span>
-            
-<p><b>Our code source is now using git, so you can propose pull requests using <a class="externalLink" href="https://github.com/apache/archiva">github mirror</a></b></p>
-            
-<p><b>4th September 2014 release of 2.1.1 See <a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">Quick Tour</a></b></p>
-          </div>
-        </div>
-      </div>
-    </div>
-
-
-    
-<div id="carousel-main">
-
-        
-<div id="screenshots-carousel" class="carousel slide span10">
-          <!-- Carousel items -->
-          
-<div class="carousel-inner">
-            
-<div class="item active">
-              <img src="http://archiva.apache.org/docs/2.1.1/images/ldap-configuration.png" alt="" height="120px" />
-              
-<div class="carousel-caption">
-                
-<p>Dynamic LDAP Configuration.</p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/adminguide/redback-runtime-configuration.html">View all.</a></p>
-              </div>
-            </div>
-            
-<div class="item">
-              <img src="http://archiva.apache.org/docs/2.1.1/images/ldap-group-roles-mapping.png" alt="" />
-              
-<div class="carousel-caption">
-                
-<p>Dynamic LDAP Group-Roles mapping Configuration.</p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/adminguide/redback-runtime-configuration.html">View all.</a></p>
-              </div>
-            </div>
-            
-<div class="item">
-              <img src="http://archiva.apache.org/docs/2.1.1/images/tour/project-info.png" alt="" />
-              
-<div class="carousel-caption">
-                
-<p>Informative display for artifacts stored in the repository.</p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">View all.</a></p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/index.html">View new documentation.</a></p>
-              </div>
-            </div>
-            
-<div class="item">
-              <img src="http://archiva.apache.org/docs/2.1.1/images/tour/search-form.png" alt="" />
-              
-<div class="carousel-caption">
-                
-<p>User-friendly browsing interface, and powerful search functionalities.</p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">View all.</a></p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/index.html">View new documentation.</a></p>
-              </div>
-            </div>
-            
-<div class="item">
-              <img src="http://archiva.apache.org/docs/2.1.1/images/tour/search-results.png" alt="" />
-              
-<div class="carousel-caption">
-                
-<p>Filterable search results.</p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">View all.</a></p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/index.html">View new documentation.</a></p>
-              </div>
-            </div>
-            
-<div class="item">
-              <img src="http://archiva.apache.org/docs/2.1.1/images/tour/browse.png" alt="" />
-              
-<div class="carousel-caption">
-                
-<p>Browse interface.</p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">View all.</a></p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/index.html">View new documentation.</a></p>
-              </div>
-            </div>
-
-
-            
-<div class="item">
-              <img src="http://archiva.apache.org/docs/2.1.1/images/tour/remote-proxy-cache.png" alt="" />
-              
-<div class="carousel-caption">
-                
-<p>Drag &amp; drop remote proxies ordering.</p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">View all.</a></p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/index.html">View new documentation.</a></p>
-              </div>
-            </div>
-            
-<div class="item">
-              <img src="http://archiva.apache.org/docs/2.1.1/images/tour/upload-files.png" alt="" />
-              
-<div class="carousel-caption">
-                
-<p>Drag &amp; drop upload artifacts via UI.</p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">View all.</a></p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/index.html">View new documentation.</a></p>
-              </div>
-            </div>
-            
-<div class="item">
-              <img src="http://archiva.apache.org/docs/2.1.1/images/tour/graphical-admin.png" alt="" />
-              
-<div class="carousel-caption">
-                
-<p>Comprehensive web-based administration interface.</p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">View all.</a></p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/index.html">View new documentation.</a></p>
-              </div>
-            </div>
-            
-<div class="item">
-              <img src="http://archiva.apache.org/docs/2.1.1/images/proxy-connectors-rules.png" alt="" />
-              
-<div class="carousel-caption">
-                
-<p>Bulk update of your black/while list when fetching remote repositories.</p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">View all.</a></p>
-                
-<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/index.html">View new documentation.</a></p>
-              </div>
-            </div>
-
-          </div>
-
-          <!-- Carousel nav -->
-          <a name="carousel-prev" class="left carousel-control" id="carousel-prev">&#x2039;</a>
-          <a name="carousel-next" class="right carousel-control" id="carousel-next">&#x203a;</a>
-        </div>
-    </div>
-    
-<div class="section">
-<h2>Apache Archiva&#x99;: The Build Artifact Repository Manager<a name="Apache_Archiva:_The_Build_Artifact_Repository_Manager"></a></h2>
-      
-<p>
-         Apache Archiva&#x99; is an extensible repository management software that
-         helps taking care of your own personal or enterprise-wide build 
-         artifact repository. It is the perfect companion for build tools such 
-         as <a class="externalLink" href="http://maven.apache.org">Maven</a>,
-         <a class="externalLink" href="http://continuum.apache.org/">Continuum</a>,
-         and <a class="externalLink" href="http://ant.apache.org/">ANT</a>. 
-      </p>
- 
-      
-<p>
-         Archiva offers several capabilities, amongst which remote repository proxying, 
-         security access management, build artifact storage, delivery, browsing, indexing 
-         and usage reporting, extensible scanning functionality&#x85; and many more! Get the
-         latest updates, follow us on twitter <a class="externalLink" href="http://twitter.com/archiva">@archiva</a>.
-      </p>
-
-      
-<p>
-        And in case you were wondering, it is pronounced <i>ahr-kahy-vuh</i>, like <i>archive</i> but with an <i>a</i>!
-      </p>
-
-      
-<div class="mainBox">
-        
-<div class="hero-unit">
-          <span class="bignumber badge badge-warning">1</span>
-
-          
-<p>
-            <a href="docs/2.1.1/tour/index.html">Take a look around</a>
-          </p>
-          
-<p>
-            <!-- Commenting out while we still don't have a live demo  
-            Try out the live demo, or take a look at the screenshots in the feature walkthrough. -->
-            Take a look at the screenshots in the feature walkthrough.
-          </p>
-          <br style="clear: left" />
-        </div>
-      </div>
-      
-<div class="mainBox">
-        
-<div class="hero-unit">
-          <span class="bignumber badge badge-warning">2</span>
-
-          
-<p>
-            <a href="download.html">Download Archiva</a>
-          </p>
-          
-<p>
-            <span class="expand" style="width: 200px; display: block; float: left;">
-              <img src="images/collapsed.gif" width="7" height="7" alt="" />
-              <b>Latest stable release:</b>
-            </span>
-            <span class="button mainalign">
-              <a href="#a" class="btn btn-primary btn-medium" style="margin-bottom: 5px;" id="openDialogRelease">Get Archiva 2.1.1 <span style="font-size:smaller;color:#F89406">4th September 2014</span>
-              </a>
-            </span>
-            <br />
-                        <span class="expand" style="width: 200px; display: block; float: left;">
-              <img src="images/collapsed.gif" width="7" height="7" alt="" />
-              <b>Previous release:</b>
-            </span>
-            <span class="button mainalign">
-              <a href="#a" class="btn btn-primary btn-medium" style="margin-bottom: 5px;" id="openDialogPreview">Get Archiva 1.3.9 <span style="font-size:smaller;color:#F89406">1 July 2014</span>
-              </a>
-            </span>
-            <br />
-                        <span class="expand">
-              <img src="images/collapsed.gif" width="7" height="7" alt="" />
-              <a href="download.html"><b>All downloads</b></a>
-            </span>
-          </p>
-        </div>
-      </div>
-
-      
-<div class="mainBox">
-        
-<div class="hero-unit">
-          <span class="bignumber badge badge-warning">3</span>
-
-          
-<p>
-            <a href="docs/2.1.1/index.html">Documentation</a>
-          </p>
-          
-<p>
-            <img src="images/collapsed.gif" width="7" height="7" alt="" />
-            Simple out of the box configuration and <a href="docs/2.1.1/quick-start.html">quick start guide</a>
-            <br />
-            <img src="images/collapsed.gif" width="7" height="7" alt="" />
-            Read the <a href="docs/2.1.1/userguide/index.html">users guide</a> and <a href="docs/2.1.1/adminguide/index.html">administration documentation</a>
-            <br />
-            <img src="images/collapsed.gif" width="7" height="7" alt="" />
-            For security issues, read the <a href="security.html">security vulnerabilities document</a>
-            <br />
-            <img src="images/collapsed.gif" width="7" height="7" alt="" />
-            Documentation is also available for <a href="versions.html">previous versions</a>
-          </p>
-        </div>
-      </div>
-      
-<div class="mainBox">
-        
-<div class="hero-unit">
-          <span class="bignumber badge badge-warning">4</span>
-
-          
-<p>
-            <a href="get-involved.html">Get involved</a>
-          </p>
-          
-<p>
-            Get support from the <a href="mail-lists.html">mailing lists</a> and <a class="externalLink" href="http://cwiki.apache.org/confluence/display/ARCHIVA/">wiki</a>, file <a href="issue-tracking.html">issues</a>, and even <a href="get-involved.html">get involved</a> in the development.
-          </p>
-          <br style="clear: left" />
-        </div>
-      </div>
-
-      
-<div>
-        
-<div class="section">
-<h2>Videos<a name="Videos"></a></h2>
-        
-<div class="section">
-<div class="section">
-<h4>Quick start<a name="Quick_start"></a></h4>
-        
-<p align="center">
-          <iframe width="420" height="315" src="http://www.youtube.com/embed/kG349qooN8E" frameborder="0" allowfullscreen=""></iframe>
-        </p>
-        </div>
-<div class="section">
-<h4>Browsing/Uploading/Searching<a name="BrowsingUploadingSearching"></a></h4>
-        
-<p align="center">
-          <iframe width="420" height="315" src="http://www.youtube.com/embed/y4DoLCfYR-A" frameborder="0" allowfullscreen=""></iframe>
-        </p>
-      </div>
-
-    </div></div></div>
-
-    
-<div class="section">
-<h2>License<a name="License"></a></h2>
-      
-<p>
-        Archiva is distributed under the <a class="externalLink" href="http://www.apache.org/licenses/">Apache License, version 2.0</a>
-      </p>
-    </div>
-    
-<div class="section">
-<h2>Thanks<a name="Thanks"></a></h2>
-      
-<p>
-        We would like to thank all the <a class="externalLink" href="http://www.apache.org/foundation/thanks.html">sponsors that provide financial assistance to the Apache Software Foundation</a>.
-        For more information on how you can support the foundation, see the <a class="externalLink" href="http://www.apache.org/foundation/sponsorship.html">sponsorship</a> page.
-      </p>
-    </div>
-
-    
-<div class="section">
-<h2>Resources<a name="Resources"></a></h2>
-      
-<p>
-        Need more? Try some of these resources.
-      </p>
-      
-<div>
-        
-<div class="section">
-<h3>Books<a name="Books"></a></h3>
-        
-<div style="margin-left: auto; margin-right: auto; text-align: center">
-          
-<div style="float: left; width: 50%;">
-            
-<p>
-              <a class="externalLink" href="http://www.packtpub.com/apache-maven-2-effective-implementations/book"><img src="images/books/apache_maven_2_effective_implementation.jpg" alt="" /></a><br />
-              <a class="externalLink" href="http://www.packtpub.com/apache-maven-2-effective-implementations/book">Apache Maven 2: Effective Implementation</a> (Maria Odea Ching, Brett Porter; September 2009)<br />
-              <span style="font-size: 0.8em">
-                Build and manage applications with Maven, Continuum and Archiva
-              </span>
-            </p>
-          </div>
-          
-<div style="float: left; width: 50%;">
-            
-<p>
-              <a class="externalLink" href="http://www.wakaleo.com/java-power-tools"><img src="images/books/java_power_tools.gif" alt="" /></a><br />
-              <a class="externalLink" href="http://www.wakaleo.com/java-power-tools">Java Power Tools</a> (John Smart; April 2008)<br />
-              <span style="font-size: 0.8em">
-                Contains a section on Archiva and repository management
-              </span>
-            </p>
-          </div>
-        </div>
-      </div>
-      
-<div style="clear: left">
-        </div>
-<div class="section">
-<h3>Articles, Presentations and Tutorials<a name="Articles_Presentations_and_Tutorials"></a></h3>
-        
-<ul>
-          
-<li>
-            <a class="externalLink" href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=archiva">Archiva 1.1.1 Tutorial in Spanish!</a> - Video also available <a class="externalLink" href="http://www.adictosaltrabajo.com/detalle-noticia.php?noticia=61">here</a> - (&#xc1;ngel Garc&#xed;a Jerez; September 2008)
-          </li>
-        </ul>
-      </div>
-    </div></div>
-
-      
-<div id="dialogRelease" class="modal hide fade">
-        
-<div class="modal-header">
-          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">[&#xd7;]</button>
-          
-<h1>Archiva 2.1.1</h1>
-        </div>
-        
-<div class="modal-body">
-          
-<p>
-          This is the recommended latest release of Archiva.
-          </p>
-          
-<table border="0" class="table table-striped">
-            
-<tr class="a">
-              
-<th> </th>
-              
-<th>Mirrors</th>
-              
-<th>Checksum</th>
-              
-<th>Signature</th>
-            </tr>
-            
-<tr class="b">
-              
-<td>Archiva 2.1.1 Standalone</td>
-              
-<td><a href="[preferred]archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.zip">zip</a></td>
-              
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.zip.md5">md5</a></td>
-              
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.zip.asc">asc</a></td>
-            </tr>
-            
-<tr class="a">
-              
-<td>Archiva 2.1.1 WAR</td>
-              
-<td><a href="[preferred]archiva/2.1.1/binaries/apache-archiva-2.1.1.war">war</a></td>
-              
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1.war.md5">md5</a></td>
-              
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1.war.asc">asc</a></td>
-            </tr>
-          </table>
-
-        </div>
-        
-<div class="modal-footer">
-          
-<div class="row">
-            
-<div class="pull-rigth">
-              <a href="docs/2.1.1/release-notes.html">Release Notes</a> | <a href="download.html">More downloads or change mirror.</a>
-            </div>
-            <!-- add mirror change option -->
-            <!-- div>
-              <form action="[location]" method="get" id="SelectMirror" class="form-inline">
-                Other mirrors:
-                <select name="Preferred">
-                  [if-any http]
-                  [for http]
-                  <option value="[http]">[http]</option>
-                  [end]
-                  [end]
-                  [if-any ftp]
-                  [for ftp]
-                  <option value="[ftp]">[ftp]</option>
-                  [end]
-                  [end]
-                  [if-any backup]
-                  [for backup]
-                  <option value="[backup]">[backup] (backup)</option>
-                  [end]
-                  [end]
-                </select>
-                <input type="submit" value="Change" class="btn"/>
-              </form>
-            </div -->
-          </div>
-        </div>
-      </div>
-      
-<div id="dialogPreview" class="modal hide fade">
-        
-<div class="modal-header">
-          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">[&#xd7;]</button>
-          
-<h1>Archiva 1.3.9</h1>
-        </div>
-        
-<div class="modal-body">
-          
-<p>This is the last release of the previous Archiva development series.</p>
-          
-<table border="0" class="table table-striped">
-            
-<tr class="a">
-              
-<th> </th>
-              
-<th>Mirrors</th>
-              
-<th>Checksum</th>
-              
-<th>Signature</th>
-            </tr>
-            
-<tr class="b">
-              
-<td>Archiva 1.3.9 Standalone</td>
-              
-<td><a href="[preferred]archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.zip">zip</a></td>
-              
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.zip.md5">md5</a></td>
-              
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.zip.asc">asc</a></td>
-            </tr>
-            
-<tr class="a">
-              
-<td>Archiva 1.3.9 WAR</td>
-              
-<td><a href="[preferred]archiva/1.3.9/binaries/apache-archiva-1.3.9.war">war</a></td>
-              
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.war.md5">md5</a></td>
-              
-<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.war.asc">asc</a></td>
-            </tr>
-          </table>
-        </div>
-        
-<div class="modal-footer">
-          
-<p><a href="docs/1.3.9/release-notes.html">Release Notes</a> | <a href="download.html">More downloads or change mirror.</a></p>
-        </div>
-      </div>
-
-  
-
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="author" content="Brett Porter" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - 
+    The Build Artifact Repository Manager</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="./css/site.css" />
+    <link rel="stylesheet" href="./css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+    <!-- move js and css to head --><link rel="stylesheet" href="css/jquery.fancybox.2.1.5.css" type="text/css" media="screen" /><script src="js/index.js" type="text/javascript"></script><script src="js/fancybox.js" type="text/javascript"></script><script src="js/jquery.fancybox.pack.2.1.5.js" type="text/javascript"></script><script src="js/jquery.mousewheel-3.0.6.pack.js" type="text/javascript"></script>              </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href=""  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="index.html" id="bannerLeft">
+                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+                <li class="">
+                    <a href="./" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">
+    The Build Artifact Repository Manager</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~  http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License. -->
+  
+    
+<div class="row-fluid">
+      
+<div class="span8">
+        
+<div class="newsBox">
+          
+<div class="hero-unit">
+            <span class="bignumber badge badge-warning">NEW</span>
+            
+<p><b>Our code source is now using git, so you can propose pull requests using <a class="externalLink" href="https://github.com/apache/archiva">github mirror</a></b></p>
+            
+<p><b>4th September 2014 release of 2.1.1 See <a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">Quick Tour</a></b></p>
+          </div>
+        </div>
+      </div>
+    </div>
+
+
+    
+<div id="carousel-main">
+
+        
+<div id="screenshots-carousel" class="carousel slide span10">
+          <!-- Carousel items -->
+          
+<div class="carousel-inner">
+            
+<div class="item active">
+              <img src="http://archiva.apache.org/docs/2.1.1/images/ldap-configuration.png" alt="" height="120px" />
+              
+<div class="carousel-caption">
+                
+<p>Dynamic LDAP Configuration.</p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/adminguide/redback-runtime-configuration.html">View all.</a></p>
+              </div>
+            </div>
+            
+<div class="item">
+              <img src="http://archiva.apache.org/docs/2.1.1/images/ldap-group-roles-mapping.png" alt="" />
+              
+<div class="carousel-caption">
+                
+<p>Dynamic LDAP Group-Roles mapping Configuration.</p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/adminguide/redback-runtime-configuration.html">View all.</a></p>
+              </div>
+            </div>
+            
+<div class="item">
+              <img src="http://archiva.apache.org/docs/2.1.1/images/tour/project-info.png" alt="" />
+              
+<div class="carousel-caption">
+                
+<p>Informative display for artifacts stored in the repository.</p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">View all.</a></p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/index.html">View new documentation.</a></p>
+              </div>
+            </div>
+            
+<div class="item">
+              <img src="http://archiva.apache.org/docs/2.1.1/images/tour/search-form.png" alt="" />
+              
+<div class="carousel-caption">
+                
+<p>User-friendly browsing interface, and powerful search functionalities.</p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">View all.</a></p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/index.html">View new documentation.</a></p>
+              </div>
+            </div>
+            
+<div class="item">
+              <img src="http://archiva.apache.org/docs/2.1.1/images/tour/search-results.png" alt="" />
+              
+<div class="carousel-caption">
+                
+<p>Filterable search results.</p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">View all.</a></p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/index.html">View new documentation.</a></p>
+              </div>
+            </div>
+            
+<div class="item">
+              <img src="http://archiva.apache.org/docs/2.1.1/images/tour/browse.png" alt="" />
+              
+<div class="carousel-caption">
+                
+<p>Browse interface.</p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">View all.</a></p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/index.html">View new documentation.</a></p>
+              </div>
+            </div>
+
+
+            
+<div class="item">
+              <img src="http://archiva.apache.org/docs/2.1.1/images/tour/remote-proxy-cache.png" alt="" />
+              
+<div class="carousel-caption">
+                
+<p>Drag &amp; drop remote proxies ordering.</p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">View all.</a></p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/index.html">View new documentation.</a></p>
+              </div>
+            </div>
+            
+<div class="item">
+              <img src="http://archiva.apache.org/docs/2.1.1/images/tour/upload-files.png" alt="" />
+              
+<div class="carousel-caption">
+                
+<p>Drag &amp; drop upload artifacts via UI.</p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">View all.</a></p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/index.html">View new documentation.</a></p>
+              </div>
+            </div>
+            
+<div class="item">
+              <img src="http://archiva.apache.org/docs/2.1.1/images/tour/graphical-admin.png" alt="" />
+              
+<div class="carousel-caption">
+                
+<p>Comprehensive web-based administration interface.</p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">View all.</a></p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/index.html">View new documentation.</a></p>
+              </div>
+            </div>
+            
+<div class="item">
+              <img src="http://archiva.apache.org/docs/2.1.1/images/proxy-connectors-rules.png" alt="" />
+              
+<div class="carousel-caption">
+                
+<p>Bulk update of your black/while list when fetching remote repositories.</p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/tour/index.html">View all.</a></p>
+                
+<p><a class="externalLink" href="http://archiva.apache.org/docs/2.1.1/index.html">View new documentation.</a></p>
+              </div>
+            </div>
+
+          </div>
+
+          <!-- Carousel nav -->
+          <a name="carousel-prev" class="left carousel-control" id="carousel-prev">&#x2039;</a>
+          <a name="carousel-next" class="right carousel-control" id="carousel-next">&#x203a;</a>
+        </div>
+    </div>
+    
+<div class="section">
+<h2>Apache Archiva&#x99;: The Build Artifact Repository Manager<a name="Apache_Archiva:_The_Build_Artifact_Repository_Manager"></a></h2>
+      
+<p>
+         Apache Archiva&#x99; is an extensible repository management software that
+         helps taking care of your own personal or enterprise-wide build 
+         artifact repository. It is the perfect companion for build tools such 
+         as <a class="externalLink" href="http://maven.apache.org">Maven</a>,
+         <a class="externalLink" href="http://continuum.apache.org/">Continuum</a>,
+         and <a class="externalLink" href="http://ant.apache.org/">ANT</a>. 
+      </p>
+ 
+      
+<p>
+         Archiva offers several capabilities, amongst which remote repository proxying, 
+         security access management, build artifact storage, delivery, browsing, indexing 
+         and usage reporting, extensible scanning functionality&#x85; and many more! Get the
+         latest updates, follow us on twitter <a class="externalLink" href="http://twitter.com/archiva">@archiva</a>.
+      </p>
+
+      
+<p>
+        And in case you were wondering, it is pronounced <i>ahr-kahy-vuh</i>, like <i>archive</i> but with an <i>a</i>!
+      </p>
+
+      
+<div class="mainBox">
+        
+<div class="hero-unit">
+          <span class="bignumber badge badge-warning">1</span>
+
+          
+<p>
+            <a href="docs/2.1.1/tour/index.html">Take a look around</a>
+          </p>
+          
+<p>
+            <!-- Commenting out while we still don't have a live demo  
+            Try out the live demo, or take a look at the screenshots in the feature walkthrough. -->
+            Take a look at the screenshots in the feature walkthrough.
+          </p>
+          <br style="clear: left" />
+        </div>
+      </div>
+      
+<div class="mainBox">
+        
+<div class="hero-unit">
+          <span class="bignumber badge badge-warning">2</span>
+
+          
+<p>
+            <a href="download.html">Download Archiva</a>
+          </p>
+          
+<p>
+            <span class="expand" style="width: 200px; display: block; float: left;">
+              <img src="images/collapsed.gif" width="7" height="7" alt="" />
+              <b>Latest stable release:</b>
+            </span>
+            <span class="button mainalign">
+              <a href="#a" class="btn btn-primary btn-medium" style="margin-bottom: 5px;" id="openDialogRelease">Get Archiva 2.1.1 <span style="font-size:smaller;color:#F89406">4th September 2014</span>
+              </a>
+            </span>
+            <br />
+                        <span class="expand" style="width: 200px; display: block; float: left;">
+              <img src="images/collapsed.gif" width="7" height="7" alt="" />
+              <b>Previous release:</b>
+            </span>
+            <span class="button mainalign">
+              <a href="#a" class="btn btn-primary btn-medium" style="margin-bottom: 5px;" id="openDialogPreview">Get Archiva 1.3.9 <span style="font-size:smaller;color:#F89406">1 July 2014</span>
+              </a>
+            </span>
+            <br />
+                        <span class="expand">
+              <img src="images/collapsed.gif" width="7" height="7" alt="" />
+              <a href="download.html"><b>All downloads</b></a>
+            </span>
+          </p>
+        </div>
+      </div>
+
+      
+<div class="mainBox">
+        
+<div class="hero-unit">
+          <span class="bignumber badge badge-warning">3</span>
+
+          
+<p>
+            <a href="docs/2.1.1/index.html">Documentation</a>
+          </p>
+          
+<p>
+            <img src="images/collapsed.gif" width="7" height="7" alt="" />
+            Simple out of the box configuration and <a href="docs/2.1.1/quick-start.html">quick start guide</a>
+            <br />
+            <img src="images/collapsed.gif" width="7" height="7" alt="" />
+            Read the <a href="docs/2.1.1/userguide/index.html">users guide</a> and <a href="docs/2.1.1/adminguide/index.html">administration documentation</a>
+            <br />
+            <img src="images/collapsed.gif" width="7" height="7" alt="" />
+            For security issues, read the <a href="security.html">security vulnerabilities document</a>
+            <br />
+            <img src="images/collapsed.gif" width="7" height="7" alt="" />
+            Documentation is also available for <a href="versions.html">previous versions</a>
+          </p>
+        </div>
+      </div>
+      
+<div class="mainBox">
+        
+<div class="hero-unit">
+          <span class="bignumber badge badge-warning">4</span>
+
+          
+<p>
+            <a href="get-involved.html">Get involved</a>
+          </p>
+          
+<p>
+            Get support from the <a href="mail-lists.html">mailing lists</a> and <a class="externalLink" href="http://cwiki.apache.org/confluence/display/ARCHIVA/">wiki</a>, file <a href="issue-tracking.html">issues</a>, and even <a href="get-involved.html">get involved</a> in the development.
+          </p>
+          <br style="clear: left" />
+        </div>
+      </div>
+
+      
+<div>
+        
+<div class="section">
+<h2>Videos<a name="Videos"></a></h2>
+        
+<div class="section">
+<div class="section">
+<h4>Quick start<a name="Quick_start"></a></h4>
+        
+<p align="center">
+          <iframe width="420" height="315" src="http://www.youtube.com/embed/kG349qooN8E" frameborder="0" allowfullscreen=""></iframe>
+        </p>
+        </div>
+<div class="section">
+<h4>Browsing/Uploading/Searching<a name="BrowsingUploadingSearching"></a></h4>
+        
+<p align="center">
+          <iframe width="420" height="315" src="http://www.youtube.com/embed/y4DoLCfYR-A" frameborder="0" allowfullscreen=""></iframe>
+        </p>
+      </div>
+
+    </div></div></div>
+
+    
+<div class="section">
+<h2>License<a name="License"></a></h2>
+      
+<p>
+        Archiva is distributed under the <a class="externalLink" href="http://www.apache.org/licenses/">Apache License, version 2.0</a>
+      </p>
+    </div>
+    
+<div class="section">
+<h2>Thanks<a name="Thanks"></a></h2>
+      
+<p>
+        We would like to thank all the <a class="externalLink" href="http://www.apache.org/foundation/thanks.html">sponsors that provide financial assistance to the Apache Software Foundation</a>.
+        For more information on how you can support the foundation, see the <a class="externalLink" href="http://www.apache.org/foundation/sponsorship.html">sponsorship</a> page.
+      </p>
+    </div>
+
+    
+<div class="section">
+<h2>Resources<a name="Resources"></a></h2>
+      
+<p>
+        Need more? Try some of these resources.
+      </p>
+      
+<div>
+        
+<div class="section">
+<h3>Books<a name="Books"></a></h3>
+        
+<div style="margin-left: auto; margin-right: auto; text-align: center">
+          
+<div style="float: left; width: 50%;">
+            
+<p>
+              <a class="externalLink" href="http://www.packtpub.com/apache-maven-2-effective-implementations/book"><img src="images/books/apache_maven_2_effective_implementation.jpg" alt="" /></a><br />
+              <a class="externalLink" href="http://www.packtpub.com/apache-maven-2-effective-implementations/book">Apache Maven 2: Effective Implementation</a> (Maria Odea Ching, Brett Porter; September 2009)<br />
+              <span style="font-size: 0.8em">
+                Build and manage applications with Maven, Continuum and Archiva
+              </span>
+            </p>
+          </div>
+          
+<div style="float: left; width: 50%;">
+            
+<p>
+              <a class="externalLink" href="http://www.wakaleo.com/java-power-tools"><img src="images/books/java_power_tools.gif" alt="" /></a><br />
+              <a class="externalLink" href="http://www.wakaleo.com/java-power-tools">Java Power Tools</a> (John Smart; April 2008)<br />
+              <span style="font-size: 0.8em">
+                Contains a section on Archiva and repository management
+              </span>
+            </p>
+          </div>
+        </div>
+      </div>
+      
+<div style="clear: left">
+        </div>
+<div class="section">
+<h3>Articles, Presentations and Tutorials<a name="Articles_Presentations_and_Tutorials"></a></h3>
+        
+<ul>
+          
+<li>
+            <a class="externalLink" href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=archiva">Archiva 1.1.1 Tutorial in Spanish!</a> - Video also available <a class="externalLink" href="http://www.adictosaltrabajo.com/detalle-noticia.php?noticia=61">here</a> - (&#xc1;ngel Garc&#xed;a Jerez; September 2008)
+          </li>
+        </ul>
+      </div>
+    </div></div>
+
+      
+<div id="dialogRelease" class="modal hide fade">
+        
+<div class="modal-header">
+          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">[&#xd7;]</button>
+          
+<h1>Archiva 2.1.1</h1>
+        </div>
+        
+<div class="modal-body">
+          
+<p>
+          This is the recommended latest release of Archiva.
+          </p>
+          
+<table border="0" class="table table-striped">
+            
+<tr class="a">
+              
+<th> </th>
+              
+<th>Mirrors</th>
+              
+<th>Checksum</th>
+              
+<th>Signature</th>
+            </tr>
+            
+<tr class="b">
+              
+<td>Archiva 2.1.1 Standalone</td>
+              
+<td><a href="[preferred]archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.zip">zip</a></td>
+              
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.zip.md5">md5</a></td>
+              
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1-bin.zip.asc">asc</a></td>
+            </tr>
+            
+<tr class="a">
+              
+<td>Archiva 2.1.1 WAR</td>
+              
+<td><a href="[preferred]archiva/2.1.1/binaries/apache-archiva-2.1.1.war">war</a></td>
+              
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1.war.md5">md5</a></td>
+              
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/2.1.1/binaries/apache-archiva-2.1.1.war.asc">asc</a></td>
+            </tr>
+          </table>
+
+        </div>
+        
+<div class="modal-footer">
+          
+<div class="row">
+            
+<div class="pull-rigth">
+              <a href="docs/2.1.1/release-notes.html">Release Notes</a> | <a href="download.html">More downloads or change mirror.</a>
+            </div>
+            <!-- add mirror change option -->
+            <!-- div>
+              <form action="[location]" method="get" id="SelectMirror" class="form-inline">
+                Other mirrors:
+                <select name="Preferred">
+                  [if-any http]
+                  [for http]
+                  <option value="[http]">[http]</option>
+                  [end]
+                  [end]
+                  [if-any ftp]
+                  [for ftp]
+                  <option value="[ftp]">[ftp]</option>
+                  [end]
+                  [end]
+                  [if-any backup]
+                  [for backup]
+                  <option value="[backup]">[backup] (backup)</option>
+                  [end]
+                  [end]
+                </select>
+                <input type="submit" value="Change" class="btn"/>
+              </form>
+            </div -->
+          </div>
+        </div>
+      </div>
+      
+<div id="dialogPreview" class="modal hide fade">
+        
+<div class="modal-header">
+          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">[&#xd7;]</button>
+          
+<h1>Archiva 1.3.9</h1>
+        </div>
+        
+<div class="modal-body">
+          
+<p>This is the last release of the previous Archiva development series.</p>
+          
+<table border="0" class="table table-striped">
+            
+<tr class="a">
+              
+<th> </th>
+              
+<th>Mirrors</th>
+              
+<th>Checksum</th>
+              
+<th>Signature</th>
+            </tr>
+            
+<tr class="b">
+              
+<td>Archiva 1.3.9 Standalone</td>
+              
+<td><a href="[preferred]archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.zip">zip</a></td>
+              
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.zip.md5">md5</a></td>
+              
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.1-bin.zip.asc">asc</a></td>
+            </tr>
+            
+<tr class="a">
+              
+<td>Archiva 1.3.9 WAR</td>
+              
+<td><a href="[preferred]archiva/1.3.9/binaries/apache-archiva-1.3.9.war">war</a></td>
+              
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.war.md5">md5</a></td>
+              
+<td><a class="externalLink" href="http://www.apache.org/dist/archiva/1.3.9/binaries/apache-archiva-1.3.9.war.asc">asc</a></td>
+            </tr>
+          </table>
+        </div>
+        
+<div class="modal-footer">
+          
+<p><a href="docs/1.3.9/release-notes.html">Release Notes</a> | <a href="download.html">More downloads or change mirror.</a></p>
+        </div>
+      </div>
+
+  
+
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/integration.html b/integration.html
index 005e934..c551517 100644
--- a/integration.html
+++ b/integration.html
@@ -1,264 +1,264 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Continuous Integration</title>
-    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="./css/site.css" />
-    <link rel="stylesheet" href="./css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href=""  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="index.html" id="bannerLeft">
-                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-                <li class="">
-                    <a href="./" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Continuous Integration</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <div class="section">
-<h2>Overview<a name="Overview"></a></h2><a name="Overview"></a>
-<p>This project uses <a class="externalLink" href="http://jenkins-ci.org/">Jenkins</a>.</p></div>
-<div class="section">
-<h2>Access<a name="Access"></a></h2><a name="Access"></a>
-<p>The following is a link to the continuous integration system used by the project.</p>
-<div class="source">
-<pre><a class="externalLink" href="https://builds.apache.org/view/A-F/view/Archiva/">https://builds.apache.org/view/A-F/view/Archiva/</a></pre></div></div>
-<div class="section">
-<h2>Notifiers<a name="Notifiers"></a></h2><a name="Notifiers"></a>
-<p>No notifiers are defined. Please check back at a later date.</p></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Continuous Integration</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="./css/site.css" />
+    <link rel="stylesheet" href="./css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href=""  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="index.html" id="bannerLeft">
+                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+                <li class="">
+                    <a href="./" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Continuous Integration</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <div class="section">
+<h2>Overview<a name="Overview"></a></h2><a name="Overview"></a>
+<p>This project uses <a class="externalLink" href="http://jenkins-ci.org/">Jenkins</a>.</p></div>
+<div class="section">
+<h2>Access<a name="Access"></a></h2><a name="Access"></a>
+<p>The following is a link to the continuous integration system used by the project.</p>
+<div class="source">
+<pre><a class="externalLink" href="https://builds.apache.org/view/A-F/view/Archiva/">https://builds.apache.org/view/A-F/view/Archiva/</a></pre></div></div>
+<div class="section">
+<h2>Notifiers<a name="Notifiers"></a></h2><a name="Notifiers"></a>
+<p>No notifiers are defined. Please check back at a later date.</p></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/issue-tracking.html b/issue-tracking.html
index 7db0482..734d170 100644
--- a/issue-tracking.html
+++ b/issue-tracking.html
@@ -1,261 +1,261 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Issue Tracking</title>
-    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="./css/site.css" />
-    <link rel="stylesheet" href="./css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href=""  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="index.html" id="bannerLeft">
-                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-                <li class="">
-                    <a href="./" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Issue Tracking</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <div class="section">
-<h2>Overview<a name="Overview"></a></h2><a name="Overview"></a>
-<p>This project uses <a class="externalLink" href="http://www.atlassian.com/software/jira">JIRA</a> a J2EE-based, issue tracking and project management application.</p></div>
-<div class="section">
-<h2>Issue Tracking<a name="Issue_Tracking"></a></h2><a name="Issue_Tracking"></a>
-<p>Issues, bugs, and feature requests should be submitted to the following issue tracking system for this project.</p>
-<div class="source">
-<pre><a class="externalLink" href="http://jira.codehaus.org/browse/MRM">http://jira.codehaus.org/browse/MRM</a></pre></div></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Issue Tracking</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="./css/site.css" />
+    <link rel="stylesheet" href="./css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href=""  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="index.html" id="bannerLeft">
+                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+                <li class="">
+                    <a href="./" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Issue Tracking</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <div class="section">
+<h2>Overview<a name="Overview"></a></h2><a name="Overview"></a>
+<p>This project uses <a class="externalLink" href="http://www.atlassian.com/software/jira">JIRA</a> a J2EE-based, issue tracking and project management application.</p></div>
+<div class="section">
+<h2>Issue Tracking<a name="Issue_Tracking"></a></h2><a name="Issue_Tracking"></a>
+<p>Issues, bugs, and feature requests should be submitted to the following issue tracking system for this project.</p>
+<div class="source">
+<pre><a class="externalLink" href="http://jira.codehaus.org/browse/MRM">http://jira.codehaus.org/browse/MRM</a></pre></div></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/js/apache-maven-fluido-1.3.1.min.js b/js/apache-maven-fluido-1.3.1.min.js
index a65544e..d16bb77 100644
--- a/js/apache-maven-fluido-1.3.1.min.js
+++ b/js/apache-maven-fluido-1.3.1.min.js
@@ -1,21 +1,21 @@
-/*!
- * jQuery JavaScript Library v1.9.1
- * http://jquery.com/
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- *
- * Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2013-2-4
- */
-(function(a3,aH){var aj,x,aD=typeof aH,l=a3.document,aM=a3.location,bj=a3.jQuery,I=a3.$,ab={},a7=[],t="1.9.1",aJ=a7.concat,ap=a7.push,a5=a7.slice,aN=a7.indexOf,A=ab.toString,W=ab.hasOwnProperty,aR=t.trim,bK=function(e,b4){return new bK.fn.init(e,b4,x)},bB=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ad=/\S+/g,D=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,bs=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,a=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,bi=/^[\],:{}\s]*$/,bl=/(?:^|:|,)(?:\s*\[)+/g,bH=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,a0=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,bT=/^-ms-/,aW=/-([\da-z])/gi,N=function(e,b4){return b4.toUpperCase()},bX=function(e){if(l.addEventListener||e.type==="load"||l.readyState==="complete"){bm();bK.ready()}},bm=function(){if(l.addEventListener){l.removeEventListener("DOMContentLoaded",bX,false);a3.removeEventListener("load",bX,false)}else{l.detachEvent("onreadystatechange",bX);a3.detachEvent("onload",bX)}};bK.fn=bK.prototype={jquery:t,constructor:bK,init:function(e,b6,b5){var b4,b7;if(!e){return this}if(typeof e==="string"){if(e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3){b4=[null,e,null]}else{b4=bs.exec(e)}if(b4&&(b4[1]||!b6)){if(b4[1]){b6=b6 instanceof bK?b6[0]:b6;bK.merge(this,bK.parseHTML(b4[1],b6&&b6.nodeType?b6.ownerDocument||b6:l,true));if(a.test(b4[1])&&bK.isPlainObject(b6)){for(b4 in b6){if(bK.isFunction(this[b4])){this[b4](b6[b4])}else{this.attr(b4,b6[b4])}}}return this}else{b7=l.getElementById(b4[2]);if(b7&&b7.parentNode){if(b7.id!==b4[2]){return b5.find(e)}this.length=1;this[0]=b7}this.context=l;this.selector=e;return this}}else{if(!b6||b6.jquery){return(b6||b5).find(e)}else{return this.constructor(b6).find(e)}}}else{if(e.nodeType){this.context=this[0]=e;this.length=1;return this}else{if(bK.isFunction(e)){return b5.ready(e)}}}if(e.selector!==aH){this.selector=e.selector;this.context=e.context}return bK.makeArray(e,this)},selector:"",length:0,size:function(){return this.length},toArray:function(){return a5.call(this)},get:function(e){return e==null?this.toArray():(e<0?this[this.length+e]:this[e])},pushStack:function(e){var b4=bK.merge(this.constructor(),e);b4.prevObject=this;b4.context=this.context;return b4},each:function(b4,e){return bK.each(this,b4,e)},ready:function(e){bK.ready.promise().done(e);return this},slice:function(){return this.pushStack(a5.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(b5){var e=this.length,b4=+b5+(b5<0?e:0);return this.pushStack(b4>=0&&b4<e?[this[b4]]:[])},map:function(e){return this.pushStack(bK.map(this,function(b5,b4){return e.call(b5,b4,b5)}))},end:function(){return this.prevObject||this.constructor(null)},push:ap,sort:[].sort,splice:[].splice};bK.fn.init.prototype=bK.fn;bK.extend=bK.fn.extend=function(){var e,b9,b4,b5,cc,ca,b8=arguments[0]||{},b7=1,b6=arguments.length,cb=false;if(typeof b8==="boolean"){cb=b8;b8=arguments[1]||{};b7=2}if(typeof b8!=="object"&&!bK.isFunction(b8)){b8={}}if(b6===b7){b8=this;--b7}for(;b7<b6;b7++){if((cc=arguments[b7])!=null){for(b5 in cc){e=b8[b5];b4=cc[b5];if(b8===b4){continue}if(cb&&b4&&(bK.isPlainObject(b4)||(b9=bK.isArray(b4)))){if(b9){b9=false;ca=e&&bK.isArray(e)?e:[]}else{ca=e&&bK.isPlainObject(e)?e:{}}b8[b5]=bK.extend(cb,ca,b4)}else{if(b4!==aH){b8[b5]=b4}}}}}return b8};bK.extend({noConflict:function(e){if(a3.$===bK){a3.$=I}if(e&&a3.jQuery===bK){a3.jQuery=bj}return bK},isReady:false,readyWait:1,holdReady:function(e){if(e){bK.readyWait++}else{bK.ready(true)}},ready:function(e){if(e===true?--bK.readyWait:bK.isReady){return}if(!l.body){return setTimeout(bK.ready)}bK.isReady=true;if(e!==true&&--bK.readyWait>0){return}aj.resolveWith(l,[bK]);if(bK.fn.trigger){bK(l).trigger("ready").off("ready")}},isFunction:function(e){return bK.type(e)==="function"},isArray:Array.isArray||function(e){return bK.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return !isNaN(parseFloat(e))&&isFinite(e)},type:function(e){if(e==null){return String(e)}return typeof e==="object"||typeof e==="function"?ab[A.call(e)]||"object":typeof e},isPlainObject:function(b6){if(!b6||bK.type(b6)!=="object"||b6.nodeType||bK.isWindow(b6)){return false}try{if(b6.constructor&&!W.call(b6,"constructor")&&!W.call(b6.constructor.prototype,"isPrototypeOf")){return false}}catch(b5){return false}var b4;for(b4 in b6){}return b4===aH||W.call(b6,b4)},isEmptyObject:function(b4){var e;for(e in b4){return false}return true},error:function(e){throw new Error(e)},parseHTML:function(b7,b5,b6){if(!b7||typeof b7!=="string"){return null}if(typeof b5==="boolean"){b6=b5;b5=false}b5=b5||l;var b4=a.exec(b7),e=!b6&&[];if(b4){return[b5.createElement(b4[1])]}b4=bK.buildFragment([b7],b5,e);if(e){bK(e).remove()}return bK.merge([],b4.childNodes)},parseJSON:function(e){if(a3.JSON&&a3.JSON.parse){return a3.JSON.parse(e)}if(e===null){return e}if(typeof e==="string"){e=bK.trim(e);if(e){if(bi.test(e.replace(bH,"@").replace(a0,"]").replace(bl,""))){return(new Function("return "+e))()}}}bK.error("Invalid JSON: "+e)},parseXML:function(b6){var b4,b5;if(!b6||typeof b6!=="string"){return null}try{if(a3.DOMParser){b5=new DOMParser();b4=b5.parseFromString(b6,"text/xml")}else{b4=new ActiveXObject("Microsoft.XMLDOM");b4.async="false";b4.loadXML(b6)}}catch(b7){b4=aH}if(!b4||!b4.documentElement||b4.getElementsByTagName("parsererror").length){bK.error("Invalid XML: "+b6)}return b4},noop:function(){},globalEval:function(e){if(e&&bK.trim(e)){(a3.execScript||function(b4){a3["eval"].call(a3,b4)})(e)}},camelCase:function(e){return e.replace(bT,"ms-").replace(aW,N)},nodeName:function(b4,e){return b4.nodeName&&b4.nodeName.toLowerCase()===e.toLowerCase()},each:function(b8,b9,b4){var b7,b5=0,b6=b8.length,e=ac(b8);if(b4){if(e){for(;b5<b6;b5++){b7=b9.apply(b8[b5],b4);if(b7===false){break}}}else{for(b5 in b8){b7=b9.apply(b8[b5],b4);if(b7===false){break}}}}else{if(e){for(;b5<b6;b5++){b7=b9.call(b8[b5],b5,b8[b5]);if(b7===false){break}}}else{for(b5 in b8){b7=b9.call(b8[b5],b5,b8[b5]);if(b7===false){break}}}}return b8},trim:aR&&!aR.call("\uFEFF\xA0")?function(e){return e==null?"":aR.call(e)}:function(e){return e==null?"":(e+"").replace(D,"")},makeArray:function(e,b5){var b4=b5||[];if(e!=null){if(ac(Object(e))){bK.merge(b4,typeof e==="string"?[e]:e)}else{ap.call(b4,e)}}return b4},inArray:function(b6,b4,b5){var e;if(b4){if(aN){return aN.call(b4,b6,b5)}e=b4.length;b5=b5?b5<0?Math.max(0,e+b5):b5:0;for(;b5<e;b5++){if(b5 in b4&&b4[b5]===b6){return b5}}}return -1},merge:function(b7,b5){var e=b5.length,b6=b7.length,b4=0;if(typeof e==="number"){for(;b4<e;b4++){b7[b6++]=b5[b4]}}else{while(b5[b4]!==aH){b7[b6++]=b5[b4++]}}b7.length=b6;return b7},grep:function(b4,b9,e){var b8,b5=[],b6=0,b7=b4.length;e=!!e;for(;b6<b7;b6++){b8=!!b9(b4[b6],b6);if(e!==b8){b5.push(b4[b6])}}return b5},map:function(b5,ca,e){var b9,b7=0,b8=b5.length,b4=ac(b5),b6=[];if(b4){for(;b7<b8;b7++){b9=ca(b5[b7],b7,e);if(b9!=null){b6[b6.length]=b9}}}else{for(b7 in b5){b9=ca(b5[b7],b7,e);if(b9!=null){b6[b6.length]=b9}}}return aJ.apply([],b6)},guid:1,proxy:function(b7,b6){var e,b5,b4;if(typeof b6==="string"){b4=b7[b6];b6=b7;b7=b4}if(!bK.isFunction(b7)){return aH}e=a5.call(arguments,2);b5=function(){return b7.apply(b6||this,e.concat(a5.call(arguments)))};b5.guid=b7.guid=b7.guid||bK.guid++;return b5},access:function(e,b8,ca,b9,b6,cc,cb){var b5=0,b4=e.length,b7=ca==null;if(bK.type(ca)==="object"){b6=true;for(b5 in ca){bK.access(e,b8,b5,ca[b5],true,cc,cb)}}else{if(b9!==aH){b6=true;if(!bK.isFunction(b9)){cb=true}if(b7){if(cb){b8.call(e,b9);b8=null}else{b7=b8;b8=function(ce,cd,cf){return b7.call(bK(ce),cf)}}}if(b8){for(;b5<b4;b5++){b8(e[b5],ca,cb?b9:b9.call(e[b5],b5,b8(e[b5],ca)))}}}}return b6?e:b7?b8.call(e):b4?b8(e[0],ca):cc},now:function(){return(new Date()).getTime()}});bK.ready.promise=function(b7){if(!aj){aj=bK.Deferred();if(l.readyState==="complete"){setTimeout(bK.ready)}else{if(l.addEventListener){l.addEventListener("DOMContentLoaded",bX,false);a3.addEventListener("load",bX,false)}else{l.attachEvent("onreadystatechange",bX);a3.attachEvent("onload",bX);var b6=false;try{b6=a3.frameElement==null&&l.documentElement}catch(b5){}if(b6&&b6.doScroll){(function b4(){if(!bK.isReady){try{b6.doScroll("left")}catch(b8){return setTimeout(b4,50)}bm();bK.ready()}})()}}}}return aj.promise(b7)};bK.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(b4,e){ab["[object "+e+"]"]=e.toLowerCase()});function ac(b5){var b4=b5.length,e=bK.type(b5);if(bK.isWindow(b5)){return false}if(b5.nodeType===1&&b4){return true}return e==="array"||e!=="function"&&(b4===0||typeof b4==="number"&&b4>0&&(b4-1) in b5)}x=bK(l);var bZ={};function af(b4){var e=bZ[b4]={};bK.each(b4.match(ad)||[],function(b6,b5){e[b5]=true});return e}bK.Callbacks=function(cd){cd=typeof cd==="string"?(bZ[cd]||af(cd)):bK.extend({},cd);var b7,b6,e,b8,b9,b5,ca=[],cb=!cd.once&&[],b4=function(ce){b6=cd.memory&&ce;e=true;b9=b5||0;b5=0;b8=ca.length;b7=true;for(;ca&&b9<b8;b9++){if(ca[b9].apply(ce[0],ce[1])===false&&cd.stopOnFalse){b6=false;break}}b7=false;if(ca){if(cb){if(cb.length){b4(cb.shift())}}else{if(b6){ca=[]}else{cc.disable()}}}},cc={add:function(){if(ca){var cf=ca.length;(function ce(cg){bK.each(cg,function(ci,ch){var cj=bK.type(ch);if(cj==="function"){if(!cd.unique||!cc.has(ch)){ca.push(ch)}}else{if(ch&&ch.length&&cj!=="string"){ce(ch)}}})})(arguments);if(b7){b8=ca.length}else{if(b6){b5=cf;b4(b6)}}}return this},remove:function(){if(ca){bK.each(arguments,function(cg,ce){var cf;while((cf=bK.inArray(ce,ca,cf))>-1){ca.splice(cf,1);if(b7){if(cf<=b8){b8--}if(cf<=b9){b9--}}}})}return this},has:function(ce){return ce?bK.inArray(ce,ca)>-1:!!(ca&&ca.length)},empty:function(){ca=[];return this},disable:function(){ca=cb=b6=aH;return this},disabled:function(){return !ca},lock:function(){cb=aH;if(!b6){cc.disable()}return this},locked:function(){return !cb},fireWith:function(cf,ce){ce=ce||[];ce=[cf,ce.slice?ce.slice():ce];if(ca&&(!e||cb)){if(b7){cb.push(ce)}else{b4(ce)}}return this},fire:function(){cc.fireWith(this,arguments);return this},fired:function(){return !!e}};return cc};bK.extend({Deferred:function(b5){var b4=[["resolve","done",bK.Callbacks("once memory"),"resolved"],["reject","fail",bK.Callbacks("once memory"),"rejected"],["notify","progress",bK.Callbacks("memory")]],b6="pending",b7={state:function(){return b6},always:function(){e.done(arguments).fail(arguments);return this},then:function(){var b8=arguments;return bK.Deferred(function(b9){bK.each(b4,function(cb,ca){var cd=ca[0],cc=bK.isFunction(b8[cb])&&b8[cb];e[ca[1]](function(){var ce=cc&&cc.apply(this,arguments);if(ce&&bK.isFunction(ce.promise)){ce.promise().done(b9.resolve).fail(b9.reject).progress(b9.notify)}else{b9[cd+"With"](this===b7?b9.promise():this,cc?[ce]:arguments)}})});b8=null}).promise()},promise:function(b8){return b8!=null?bK.extend(b8,b7):b7}},e={};b7.pipe=b7.then;bK.each(b4,function(b9,b8){var cb=b8[2],ca=b8[3];b7[b8[1]]=cb.add;if(ca){cb.add(function(){b6=ca},b4[b9^1][2].disable,b4[2][2].lock)}e[b8[0]]=function(){e[b8[0]+"With"](this===e?b7:this,arguments);return this};e[b8[0]+"With"]=cb.fireWith});b7.promise(e);if(b5){b5.call(e,e)}return e},when:function(b7){var b5=0,b9=a5.call(arguments),e=b9.length,b4=e!==1||(b7&&bK.isFunction(b7.promise))?e:0,cc=b4===1?b7:bK.Deferred(),b6=function(ce,cf,cd){return function(cg){cf[ce]=this;cd[ce]=arguments.length>1?a5.call(arguments):cg;if(cd===cb){cc.notifyWith(cf,cd)}else{if(!(--b4)){cc.resolveWith(cf,cd)}}}},cb,b8,ca;if(e>1){cb=new Array(e);b8=new Array(e);ca=new Array(e);for(;b5<e;b5++){if(b9[b5]&&bK.isFunction(b9[b5].promise)){b9[b5].promise().done(b6(b5,ca,b9)).fail(cc.reject).progress(b6(b5,b8,cb))}else{--b4}}}if(!b4){cc.resolveWith(ca,b9)}return cc.promise()}});bK.support=(function(){var cf,ce,cc,cb,cd,ca,b6,b8,b5,b7,b4=l.createElement("div");b4.setAttribute("className","t");b4.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";ce=b4.getElementsByTagName("*");cc=b4.getElementsByTagName("a")[0];if(!ce||!cc||!ce.length){return{}}cd=l.createElement("select");b6=cd.appendChild(l.createElement("option"));cb=b4.getElementsByTagName("input")[0];cc.style.cssText="top:1px;float:left;opacity:.5";cf={getSetAttribute:b4.className!=="t",leadingWhitespace:b4.firstChild.nodeType===3,tbody:!b4.getElementsByTagName("tbody").length,htmlSerialize:!!b4.getElementsByTagName("link").length,style:/top/.test(cc.getAttribute("style")),hrefNormalized:cc.getAttribute("href")==="/a",opacity:/^0.5/.test(cc.style.opacity),cssFloat:!!cc.style.cssFloat,checkOn:!!cb.value,optSelected:b6.selected,enctype:!!l.createElement("form").enctype,html5Clone:l.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",boxModel:l.compatMode==="CSS1Compat",deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true,boxSizingReliable:true,pixelPosition:false};cb.checked=true;cf.noCloneChecked=cb.cloneNode(true).checked;cd.disabled=true;cf.optDisabled=!b6.disabled;try{delete b4.test}catch(b9){cf.deleteExpando=false}cb=l.createElement("input");cb.setAttribute("value","");cf.input=cb.getAttribute("value")==="";cb.value="t";cb.setAttribute("type","radio");cf.radioValue=cb.value==="t";cb.setAttribute("checked","t");cb.setAttribute("name","t");ca=l.createDocumentFragment();ca.appendChild(cb);cf.appendChecked=cb.checked;cf.checkClone=ca.cloneNode(true).cloneNode(true).lastChild.checked;if(b4.attachEvent){b4.attachEvent("onclick",function(){cf.noCloneEvent=false});b4.cloneNode(true).click()}for(b7 in {submit:true,change:true,focusin:true}){b4.setAttribute(b8="on"+b7,"t");cf[b7+"Bubbles"]=b8 in a3||b4.attributes[b8].expando===false}b4.style.backgroundClip="content-box";b4.cloneNode(true).style.backgroundClip="";cf.clearCloneStyle=b4.style.backgroundClip==="content-box";bK(function(){var cg,cj,ci,ch="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",e=l.getElementsByTagName("body")[0];if(!e){return}cg=l.createElement("div");cg.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";e.appendChild(cg).appendChild(b4);b4.innerHTML="<table><tr><td></td><td>t</td></tr></table>";ci=b4.getElementsByTagName("td");ci[0].style.cssText="padding:0;margin:0;border:0;display:none";b5=(ci[0].offsetHeight===0);ci[0].style.display="";ci[1].style.display="none";cf.reliableHiddenOffsets=b5&&(ci[0].offsetHeight===0);b4.innerHTML="";b4.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";cf.boxSizing=(b4.offsetWidth===4);cf.doesNotIncludeMarginInBodyOffset=(e.offsetTop!==1);if(a3.getComputedStyle){cf.pixelPosition=(a3.getComputedStyle(b4,null)||{}).top!=="1%";cf.boxSizingReliable=(a3.getComputedStyle(b4,null)||{width:"4px"}).width==="4px";cj=b4.appendChild(l.createElement("div"));cj.style.cssText=b4.style.cssText=ch;cj.style.marginRight=cj.style.width="0";b4.style.width="1px";cf.reliableMarginRight=!parseFloat((a3.getComputedStyle(cj,null)||{}).marginRight)}if(typeof b4.style.zoom!==aD){b4.innerHTML="";b4.style.cssText=ch+"width:1px;padding:1px;display:inline;zoom:1";cf.inlineBlockNeedsLayout=(b4.offsetWidth===3);b4.style.display="block";b4.innerHTML="<div></div>";b4.firstChild.style.width="5px";cf.shrinkWrapBlocks=(b4.offsetWidth!==3);if(cf.inlineBlockNeedsLayout){e.style.zoom=1}}e.removeChild(cg);cg=b4=ci=cj=null});ce=cd=ca=b6=cc=cb=null;return cf})();var bx=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,aO=/([A-Z])/g;function bb(b6,b4,b8,b7){if(!bK.acceptData(b6)){return}var b9,cb,cc=bK.expando,ca=typeof b4==="string",cd=b6.nodeType,e=cd?bK.cache:b6,b5=cd?b6[cc]:b6[cc]&&cc;if((!b5||!e[b5]||(!b7&&!e[b5].data))&&ca&&b8===aH){return}if(!b5){if(cd){b6[cc]=b5=a7.pop()||bK.guid++}else{b5=cc}}if(!e[b5]){e[b5]={};if(!cd){e[b5].toJSON=bK.noop}}if(typeof b4==="object"||typeof b4==="function"){if(b7){e[b5]=bK.extend(e[b5],b4)}else{e[b5].data=bK.extend(e[b5].data,b4)}}b9=e[b5];if(!b7){if(!b9.data){b9.data={}}b9=b9.data}if(b8!==aH){b9[bK.camelCase(b4)]=b8}if(ca){cb=b9[b4];if(cb==null){cb=b9[bK.camelCase(b4)]}}else{cb=b9}return cb}function aa(b6,b4,b7){if(!bK.acceptData(b6)){return}var b9,b8,ca,cb=b6.nodeType,e=cb?bK.cache:b6,b5=cb?b6[bK.expando]:bK.expando;if(!e[b5]){return}if(b4){ca=b7?e[b5]:e[b5].data;if(ca){if(!bK.isArray(b4)){if(b4 in ca){b4=[b4]}else{b4=bK.camelCase(b4);if(b4 in ca){b4=[b4]}else{b4=b4.split(" ")}}}else{b4=b4.concat(bK.map(b4,bK.camelCase))}for(b9=0,b8=b4.length;b9<b8;b9++){delete ca[b4[b9]]}if(!(b7?O:bK.isEmptyObject)(ca)){return}}}if(!b7){delete e[b5].data;if(!O(e[b5])){return}}if(cb){bK.cleanData([b6],true)}else{if(bK.support.deleteExpando||e!=e.window){delete e[b5]}else{e[b5]=null}}}bK.extend({cache:{},expando:"jQuery"+(t+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?bK.cache[e[bK.expando]]:e[bK.expando];return !!e&&!O(e)},data:function(b4,e,b5){return bb(b4,e,b5)},removeData:function(b4,e){return aa(b4,e)},_data:function(b4,e,b5){return bb(b4,e,b5,true)},_removeData:function(b4,e){return aa(b4,e,true)},acceptData:function(b4){if(b4.nodeType&&b4.nodeType!==1&&b4.nodeType!==9){return false}var e=b4.nodeName&&bK.noData[b4.nodeName.toLowerCase()];return !e||e!==true&&b4.getAttribute("classid")===e}});bK.fn.extend({data:function(b6,b9){var b4,e,b7=this[0],b5=0,b8=null;if(b6===aH){if(this.length){b8=bK.data(b7);if(b7.nodeType===1&&!bK._data(b7,"parsedAttrs")){b4=b7.attributes;for(;b5<b4.length;b5++){e=b4[b5].name;if(!e.indexOf("data-")){e=bK.camelCase(e.slice(5));bz(b7,e,b8[e])}}bK._data(b7,"parsedAttrs",true)}}return b8}if(typeof b6==="object"){return this.each(function(){bK.data(this,b6)})}return bK.access(this,function(ca){if(ca===aH){return b7?bz(b7,b6,bK.data(b7,b6)):null}this.each(function(){bK.data(this,b6,ca)})},null,b9,arguments.length>1,null,true)},removeData:function(e){return this.each(function(){bK.removeData(this,e)})}});function bz(b6,b5,b7){if(b7===aH&&b6.nodeType===1){var b4="data-"+b5.replace(aO,"-$1").toLowerCase();b7=b6.getAttribute(b4);if(typeof b7==="string"){try{b7=b7==="true"?true:b7==="false"?false:b7==="null"?null:+b7+""===b7?+b7:bx.test(b7)?bK.parseJSON(b7):b7}catch(b8){}bK.data(b6,b5,b7)}else{b7=aH}}return b7}function O(b4){var e;for(e in b4){if(e==="data"&&bK.isEmptyObject(b4[e])){continue}if(e!=="toJSON"){return false}}return true}bK.extend({queue:function(b5,b4,b6){var e;if(b5){b4=(b4||"fx")+"queue";e=bK._data(b5,b4);if(b6){if(!e||bK.isArray(b6)){e=bK._data(b5,b4,bK.makeArray(b6))}else{e.push(b6)}}return e||[]}},dequeue:function(b8,b7){b7=b7||"fx";var b4=bK.queue(b8,b7),b9=b4.length,b6=b4.shift(),e=bK._queueHooks(b8,b7),b5=function(){bK.dequeue(b8,b7)};if(b6==="inprogress"){b6=b4.shift();b9--}e.cur=b6;if(b6){if(b7==="fx"){b4.unshift("inprogress")}delete e.stop;b6.call(b8,b5,e)}if(!b9&&e){e.empty.fire()}},_queueHooks:function(b5,b4){var e=b4+"queueHooks";return bK._data(b5,e)||bK._data(b5,e,{empty:bK.Callbacks("once memory").add(function(){bK._removeData(b5,b4+"queue");bK._removeData(b5,e)})})}});bK.fn.extend({queue:function(e,b4){var b5=2;if(typeof e!=="string"){b4=e;e="fx";b5--}if(arguments.length<b5){return bK.queue(this[0],e)}return b4===aH?this:this.each(function(){var b6=bK.queue(this,e,b4);bK._queueHooks(this,e);if(e==="fx"&&b6[0]!=="inprogress"){bK.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){bK.dequeue(this,e)})},delay:function(b4,e){b4=bK.fx?bK.fx.speeds[b4]||b4:b4;e=e||"fx";return this.queue(e,function(b6,b5){var b7=setTimeout(b6,b4);b5.stop=function(){clearTimeout(b7)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(b5,b9){var b4,b6=1,ca=bK.Deferred(),b8=this,e=this.length,b7=function(){if(!(--b6)){ca.resolveWith(b8,[b8])}};if(typeof b5!=="string"){b9=b5;b5=aH}b5=b5||"fx";while(e--){b4=bK._data(b8[e],b5+"queueHooks");if(b4&&b4.empty){b6++;b4.empty.add(b7)}}b7();return ca.promise(b9)}});var a9,b0,bN=/[\t\r\n]/g,al=/\r/g,aG=/^(?:input|select|textarea|button|object)$/i,E=/^(?:a|area)$/i,M=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,ar=/^(?:checked|selected)$/i,bQ=bK.support.getSetAttribute,bG=bK.support.input;bK.fn.extend({attr:function(e,b4){return bK.access(this,bK.attr,e,b4,arguments.length>1)},removeAttr:function(e){return this.each(function(){bK.removeAttr(this,e)})},prop:function(e,b4){return bK.access(this,bK.prop,e,b4,arguments.length>1)},removeProp:function(e){e=bK.propFix[e]||e;return this.each(function(){try{this[e]=aH;delete this[e]}catch(b4){}})},addClass:function(ca){var b4,e,cb,b7,b5,b6=0,b8=this.length,b9=typeof ca==="string"&&ca;if(bK.isFunction(ca)){return this.each(function(cc){bK(this).addClass(ca.call(this,cc,this.className))})}if(b9){b4=(ca||"").match(ad)||[];for(;b6<b8;b6++){e=this[b6];cb=e.nodeType===1&&(e.className?(" "+e.className+" ").replace(bN," "):" ");if(cb){b5=0;while((b7=b4[b5++])){if(cb.indexOf(" "+b7+" ")<0){cb+=b7+" "}}e.className=bK.trim(cb)}}}return this},removeClass:function(ca){var b4,e,cb,b7,b5,b6=0,b8=this.length,b9=arguments.length===0||typeof ca==="string"&&ca;if(bK.isFunction(ca)){return this.each(function(cc){bK(this).removeClass(ca.call(this,cc,this.className))})}if(b9){b4=(ca||"").match(ad)||[];for(;b6<b8;b6++){e=this[b6];cb=e.nodeType===1&&(e.className?(" "+e.className+" ").replace(bN," "):"");if(cb){b5=0;while((b7=b4[b5++])){while(cb.indexOf(" "+b7+" ")>=0){cb=cb.replace(" "+b7+" "," ")}}e.className=ca?bK.trim(cb):""}}}return this},toggleClass:function(b6,b4){var b5=typeof b6,e=typeof b4==="boolean";if(bK.isFunction(b6)){return this.each(function(b7){bK(this).toggleClass(b6.call(this,b7,this.className,b4),b4)})}return this.each(function(){if(b5==="string"){var b9,b8=0,b7=bK(this),ca=b4,cb=b6.match(ad)||[];while((b9=cb[b8++])){ca=e?ca:!b7.hasClass(b9);b7[ca?"addClass":"removeClass"](b9)}}else{if(b5===aD||b5==="boolean"){if(this.className){bK._data(this,"__className__",this.className)}this.className=this.className||b6===false?"":bK._data(this,"__className__")||""}}})},hasClass:function(e){var b6=" "+e+" ",b5=0,b4=this.length;for(;b5<b4;b5++){if(this[b5].nodeType===1&&(" "+this[b5].className+" ").replace(bN," ").indexOf(b6)>=0){return true}}return false},val:function(b6){var b4,e,b7,b5=this[0];if(!arguments.length){if(b5){e=bK.valHooks[b5.type]||bK.valHooks[b5.nodeName.toLowerCase()];if(e&&"get" in e&&(b4=e.get(b5,"value"))!==aH){return b4}b4=b5.value;return typeof b4==="string"?b4.replace(al,""):b4==null?"":b4}return}b7=bK.isFunction(b6);return this.each(function(b9){var ca,b8=bK(this);if(this.nodeType!==1){return}if(b7){ca=b6.call(this,b9,b8.val())}else{ca=b6}if(ca==null){ca=""}else{if(typeof ca==="number"){ca+=""}else{if(bK.isArray(ca)){ca=bK.map(ca,function(cb){return cb==null?"":cb+""})}}}e=bK.valHooks[this.type]||bK.valHooks[this.nodeName.toLowerCase()];if(!e||!("set" in e)||e.set(this,ca,"value")===aH){this.value=ca}})}});bK.extend({valHooks:{option:{get:function(e){var b4=e.attributes.value;return !b4||b4.specified?e.value:e.text}},select:{get:function(e){var b9,b5,cb=e.options,b7=e.selectedIndex,b6=e.type==="select-one"||b7<0,ca=b6?null:[],b8=b6?b7+1:cb.length,b4=b7<0?b8:b6?b7:0;for(;b4<b8;b4++){b5=cb[b4];if((b5.selected||b4===b7)&&(bK.support.optDisabled?!b5.disabled:b5.getAttribute("disabled")===null)&&(!b5.parentNode.disabled||!bK.nodeName(b5.parentNode,"optgroup"))){b9=bK(b5).val();if(b6){return b9}ca.push(b9)}}return ca},set:function(b4,b5){var e=bK.makeArray(b5);bK(b4).find("option").each(function(){this.selected=bK.inArray(bK(this).val(),e)>=0});if(!e.length){b4.selectedIndex=-1}return e}}},attr:function(b8,b6,b9){var e,b7,b5,b4=b8.nodeType;if(!b8||b4===3||b4===8||b4===2){return}if(typeof b8.getAttribute===aD){return bK.prop(b8,b6,b9)}b7=b4!==1||!bK.isXMLDoc(b8);if(b7){b6=b6.toLowerCase();e=bK.attrHooks[b6]||(M.test(b6)?b0:a9)}if(b9!==aH){if(b9===null){bK.removeAttr(b8,b6)}else{if(e&&b7&&"set" in e&&(b5=e.set(b8,b9,b6))!==aH){return b5}else{b8.setAttribute(b6,b9+"");return b9}}}else{if(e&&b7&&"get" in e&&(b5=e.get(b8,b6))!==null){return b5}else{if(typeof b8.getAttribute!==aD){b5=b8.getAttribute(b6)}return b5==null?aH:b5}}},removeAttr:function(b5,b7){var e,b6,b4=0,b8=b7&&b7.match(ad);if(b8&&b5.nodeType===1){while((e=b8[b4++])){b6=bK.propFix[e]||e;if(M.test(e)){if(!bQ&&ar.test(e)){b5[bK.camelCase("default-"+e)]=b5[b6]=false}else{b5[b6]=false}}else{bK.attr(b5,e,"")}b5.removeAttribute(bQ?e:b6)}}},attrHooks:{type:{set:function(e,b4){if(!bK.support.radioValue&&b4==="radio"&&bK.nodeName(e,"input")){var b5=e.value;e.setAttribute("type",b4);if(b5){e.value=b5}return b4}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(b8,b6,b9){var b5,e,b7,b4=b8.nodeType;if(!b8||b4===3||b4===8||b4===2){return}b7=b4!==1||!bK.isXMLDoc(b8);if(b7){b6=bK.propFix[b6]||b6;e=bK.propHooks[b6]}if(b9!==aH){if(e&&"set" in e&&(b5=e.set(b8,b9,b6))!==aH){return b5}else{return(b8[b6]=b9)}}else{if(e&&"get" in e&&(b5=e.get(b8,b6))!==null){return b5}else{return b8[b6]}}},propHooks:{tabIndex:{get:function(b4){var e=b4.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):aG.test(b4.nodeName)||E.test(b4.nodeName)&&b4.href?0:aH}}}});b0={get:function(b6,b4){var b7=bK.prop(b6,b4),e=typeof b7==="boolean"&&b6.getAttribute(b4),b5=typeof b7==="boolean"?bG&&bQ?e!=null:ar.test(b4)?b6[bK.camelCase("default-"+b4)]:!!e:b6.getAttributeNode(b4);return b5&&b5.value!==false?b4.toLowerCase():aH},set:function(b4,b5,e){if(b5===false){bK.removeAttr(b4,e)}else{if(bG&&bQ||!ar.test(e)){b4.setAttribute(!bQ&&bK.propFix[e]||e,e)}else{b4[bK.camelCase("default-"+e)]=b4[e]=true}}return e}};if(!bG||!bQ){bK.attrHooks.value={get:function(b5,b4){var e=b5.getAttributeNode(b4);return bK.nodeName(b5,"input")?b5.defaultValue:e&&e.specified?e.value:aH},set:function(b4,b5,e){if(bK.nodeName(b4,"input")){b4.defaultValue=b5}else{return a9&&a9.set(b4,b5,e)}}}}if(!bQ){a9=bK.valHooks.button={get:function(b5,b4){var e=b5.getAttributeNode(b4);return e&&(b4==="id"||b4==="name"||b4==="coords"?e.value!=="":e.specified)?e.value:aH},set:function(b5,b6,b4){var e=b5.getAttributeNode(b4);if(!e){b5.setAttributeNode((e=b5.ownerDocument.createAttribute(b4)))}e.value=b6+="";return b4==="value"||b6===b5.getAttribute(b4)?b6:aH}};bK.attrHooks.contenteditable={get:a9.get,set:function(b4,b5,e){a9.set(b4,b5===""?false:b5,e)}};bK.each(["width","height"],function(b4,e){bK.attrHooks[e]=bK.extend(bK.attrHooks[e],{set:function(b5,b6){if(b6===""){b5.setAttribute(e,"auto");return b6}}})})}if(!bK.support.hrefNormalized){bK.each(["href","src","width","height"],function(b4,e){bK.attrHooks[e]=bK.extend(bK.attrHooks[e],{get:function(b6){var b5=b6.getAttribute(e,2);return b5==null?aH:b5}})});bK.each(["href","src"],function(b4,e){bK.propHooks[e]={get:function(b5){return b5.getAttribute(e,4)}}})}if(!bK.support.style){bK.attrHooks.style={get:function(e){return e.style.cssText||aH},set:function(e,b4){return(e.style.cssText=b4+"")}}}if(!bK.support.optSelected){bK.propHooks.selected=bK.extend(bK.propHooks.selected,{get:function(b4){var e=b4.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!bK.support.enctype){bK.propFix.enctype="encoding"}if(!bK.support.checkOn){bK.each(["radio","checkbox"],function(){bK.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}bK.each(["radio","checkbox"],function(){bK.valHooks[this]=bK.extend(bK.valHooks[this],{set:function(e,b4){if(bK.isArray(b4)){return(e.checked=bK.inArray(bK(e).val(),b4)>=0)}}})});var bI=/^(?:input|select|textarea)$/i,a4=/^key/,bO=/^(?:mouse|contextmenu)|click/,bC=/^(?:focusinfocus|focusoutblur)$/,bv=/^([^.]*)(?:\.(.+)|)$/;function S(){return true}function Y(){return false}bK.event={global:{},add:function(b7,cc,ch,b9,b8){var ca,ci,cj,b5,ce,cb,cg,b6,cf,e,b4,cd=bK._data(b7);if(!cd){return}if(ch.handler){b5=ch;ch=b5.handler;b8=b5.selector}if(!ch.guid){ch.guid=bK.guid++}if(!(ci=cd.events)){ci=cd.events={}}if(!(cb=cd.handle)){cb=cd.handle=function(ck){return typeof bK!==aD&&(!ck||bK.event.triggered!==ck.type)?bK.event.dispatch.apply(cb.elem,arguments):aH};cb.elem=b7}cc=(cc||"").match(ad)||[""];cj=cc.length;while(cj--){ca=bv.exec(cc[cj])||[];cf=b4=ca[1];e=(ca[2]||"").split(".").sort();ce=bK.event.special[cf]||{};cf=(b8?ce.delegateType:ce.bindType)||cf;ce=bK.event.special[cf]||{};cg=bK.extend({type:cf,origType:b4,data:b9,handler:ch,guid:ch.guid,selector:b8,needsContext:b8&&bK.expr.match.needsContext.test(b8),namespace:e.join(".")},b5);if(!(b6=ci[cf])){b6=ci[cf]=[];b6.delegateCount=0;if(!ce.setup||ce.setup.call(b7,b9,e,cb)===false){if(b7.addEventListener){b7.addEventListener(cf,cb,false)}else{if(b7.attachEvent){b7.attachEvent("on"+cf,cb)}}}}if(ce.add){ce.add.call(b7,cg);if(!cg.handler.guid){cg.handler.guid=ch.guid}}if(b8){b6.splice(b6.delegateCount++,0,cg)}else{b6.push(cg)}bK.event.global[cf]=true}b7=null},remove:function(b6,cc,cj,b7,cb){var b9,cg,ca,b8,ci,ch,ce,b5,cf,e,b4,cd=bK.hasData(b6)&&bK._data(b6);if(!cd||!(ch=cd.events)){return}cc=(cc||"").match(ad)||[""];ci=cc.length;while(ci--){ca=bv.exec(cc[ci])||[];cf=b4=ca[1];e=(ca[2]||"").split(".").sort();if(!cf){for(cf in ch){bK.event.remove(b6,cf+cc[ci],cj,b7,true)}continue}ce=bK.event.special[cf]||{};cf=(b7?ce.delegateType:ce.bindType)||cf;b5=ch[cf]||[];ca=ca[2]&&new RegExp("(^|\\.)"+e.join("\\.(?:.*\\.|)")+"(\\.|$)");b8=b9=b5.length;while(b9--){cg=b5[b9];if((cb||b4===cg.origType)&&(!cj||cj.guid===cg.guid)&&(!ca||ca.test(cg.namespace))&&(!b7||b7===cg.selector||b7==="**"&&cg.selector)){b5.splice(b9,1);if(cg.selector){b5.delegateCount--}if(ce.remove){ce.remove.call(b6,cg)}}}if(b8&&!b5.length){if(!ce.teardown||ce.teardown.call(b6,e,cd.handle)===false){bK.removeEvent(b6,cf,cd.handle)}delete ch[cf]}}if(bK.isEmptyObject(ch)){delete cd.handle;bK._removeData(b6,"events")}},trigger:function(b4,cb,b7,ci){var cc,b6,cg,ch,ce,ca,b9,b8=[b7||l],cf=W.call(b4,"type")?b4.type:b4,b5=W.call(b4,"namespace")?b4.namespace.split("."):[];cg=ca=b7=b7||l;if(b7.nodeType===3||b7.nodeType===8){return}if(bC.test(cf+bK.event.triggered)){return}if(cf.indexOf(".")>=0){b5=cf.split(".");cf=b5.shift();b5.sort()}b6=cf.indexOf(":")<0&&"on"+cf;b4=b4[bK.expando]?b4:new bK.Event(cf,typeof b4==="object"&&b4);b4.isTrigger=true;b4.namespace=b5.join(".");b4.namespace_re=b4.namespace?new RegExp("(^|\\.)"+b5.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;b4.result=aH;if(!b4.target){b4.target=b7}cb=cb==null?[b4]:bK.makeArray(cb,[b4]);ce=bK.event.special[cf]||{};if(!ci&&ce.trigger&&ce.trigger.apply(b7,cb)===false){return}if(!ci&&!ce.noBubble&&!bK.isWindow(b7)){ch=ce.delegateType||cf;if(!bC.test(ch+cf)){cg=cg.parentNode}for(;cg;cg=cg.parentNode){b8.push(cg);ca=cg}if(ca===(b7.ownerDocument||l)){b8.push(ca.defaultView||ca.parentWindow||a3)}}b9=0;while((cg=b8[b9++])&&!b4.isPropagationStopped()){b4.type=b9>1?ch:ce.bindType||cf;cc=(bK._data(cg,"events")||{})[b4.type]&&bK._data(cg,"handle");if(cc){cc.apply(cg,cb)}cc=b6&&cg[b6];if(cc&&bK.acceptData(cg)&&cc.apply&&cc.apply(cg,cb)===false){b4.preventDefault()}}b4.type=cf;if(!ci&&!b4.isDefaultPrevented()){if((!ce._default||ce._default.apply(b7.ownerDocument,cb)===false)&&!(cf==="click"&&bK.nodeName(b7,"a"))&&bK.acceptData(b7)){if(b6&&b7[cf]&&!bK.isWindow(b7)){ca=b7[b6];if(ca){b7[b6]=null}bK.event.triggered=cf;try{b7[cf]()}catch(cd){}bK.event.triggered=aH;if(ca){b7[b6]=ca}}}}return b4.result},dispatch:function(e){e=bK.event.fix(e);var b7,b8,cc,b4,b6,cb=[],ca=a5.call(arguments),b5=(bK._data(this,"events")||{})[e.type]||[],b9=bK.event.special[e.type]||{};ca[0]=e;e.delegateTarget=this;if(b9.preDispatch&&b9.preDispatch.call(this,e)===false){return}cb=bK.event.handlers.call(this,e,b5);b7=0;while((b4=cb[b7++])&&!e.isPropagationStopped()){e.currentTarget=b4.elem;b6=0;while((cc=b4.handlers[b6++])&&!e.isImmediatePropagationStopped()){if(!e.namespace_re||e.namespace_re.test(cc.namespace)){e.handleObj=cc;e.data=cc.data;b8=((bK.event.special[cc.origType]||{}).handle||cc.handler).apply(b4.elem,ca);if(b8!==aH){if((e.result=b8)===false){e.preventDefault();e.stopPropagation()}}}}}if(b9.postDispatch){b9.postDispatch.call(this,e)}return e.result},handlers:function(e,b5){var b4,ca,b8,b7,b9=[],b6=b5.delegateCount,cb=e.target;if(b6&&cb.nodeType&&(!e.button||e.type!=="click")){for(;cb!=this;cb=cb.parentNode||this){if(cb.nodeType===1&&(cb.disabled!==true||e.type!=="click")){b8=[];for(b7=0;b7<b6;b7++){ca=b5[b7];b4=ca.selector+" ";if(b8[b4]===aH){b8[b4]=ca.needsContext?bK(b4,this).index(cb)>=0:bK.find(b4,this,null,[cb]).length}if(b8[b4]){b8.push(ca)}}if(b8.length){b9.push({elem:cb,handlers:b8})}}}}if(b6<b5.length){b9.push({elem:this,handlers:b5.slice(b6)})}return b9},fix:function(b6){if(b6[bK.expando]){return b6}var b4,b9,b8,b5=b6.type,e=b6,b7=this.fixHooks[b5];if(!b7){this.fixHooks[b5]=b7=bO.test(b5)?this.mouseHooks:a4.test(b5)?this.keyHooks:{}}b8=b7.props?this.props.concat(b7.props):this.props;b6=new bK.Event(e);b4=b8.length;while(b4--){b9=b8[b4];b6[b9]=e[b9]}if(!b6.target){b6.target=e.srcElement||l}if(b6.target.nodeType===3){b6.target=b6.target.parentNode}b6.metaKey=!!b6.metaKey;return b7.filter?b7.filter(b6,e):b6},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(b4,e){if(b4.which==null){b4.which=e.charCode!=null?e.charCode:e.keyCode}return b4}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(b6,b5){var e,b7,b8,b4=b5.button,b9=b5.fromElement;if(b6.pageX==null&&b5.clientX!=null){b7=b6.target.ownerDocument||l;b8=b7.documentElement;e=b7.body;b6.pageX=b5.clientX+(b8&&b8.scrollLeft||e&&e.scrollLeft||0)-(b8&&b8.clientLeft||e&&e.clientLeft||0);b6.pageY=b5.clientY+(b8&&b8.scrollTop||e&&e.scrollTop||0)-(b8&&b8.clientTop||e&&e.clientTop||0)}if(!b6.relatedTarget&&b9){b6.relatedTarget=b9===b6.target?b5.toElement:b9}if(!b6.which&&b4!==aH){b6.which=(b4&1?1:(b4&2?3:(b4&4?2:0)))}return b6}},special:{load:{noBubble:true},click:{trigger:function(){if(bK.nodeName(this,"input")&&this.type==="checkbox"&&this.click){this.click();return false}}},focus:{trigger:function(){if(this!==l.activeElement&&this.focus){try{this.focus();return false}catch(b4){}}},delegateType:"focusin"},blur:{trigger:function(){if(this===l.activeElement&&this.blur){this.blur();return false}},delegateType:"focusout"},beforeunload:{postDispatch:function(e){if(e.result!==aH){e.originalEvent.returnValue=e.result}}}},simulate:function(b5,b7,b6,b4){var b8=bK.extend(new bK.Event(),b6,{type:b5,isSimulated:true,originalEvent:{}});if(b4){bK.event.trigger(b8,null,b7)}else{bK.event.dispatch.call(b7,b8)}if(b8.isDefaultPrevented()){b6.preventDefault()}}};bK.removeEvent=l.removeEventListener?function(b4,e,b5){if(b4.removeEventListener){b4.removeEventListener(e,b5,false)}}:function(b5,b4,b6){var e="on"+b4;if(b5.detachEvent){if(typeof b5[e]===aD){b5[e]=null}b5.detachEvent(e,b6)}};bK.Event=function(b4,e){if(!(this instanceof bK.Event)){return new bK.Event(b4,e)}if(b4&&b4.type){this.originalEvent=b4;this.type=b4.type;this.isDefaultPrevented=(b4.defaultPrevented||b4.returnValue===false||b4.getPreventDefault&&b4.getPreventDefault())?S:Y}else{this.type=b4}if(e){bK.extend(this,e)}this.timeStamp=b4&&b4.timeStamp||bK.now();this[bK.expando]=true};bK.Event.prototype={isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y,preventDefault:function(){var b4=this.originalEvent;this.isDefaultPrevented=S;if(!b4){return}if(b4.preventDefault){b4.preventDefault()}else{b4.returnValue=false}},stopPropagation:function(){var b4=this.originalEvent;this.isPropagationStopped=S;if(!b4){return}if(b4.stopPropagation){b4.stopPropagation()}b4.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=S;this.stopPropagation()}};bK.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(b4,e){bK.event.special[b4]={delegateType:e,bindType:e,handle:function(b7){var b5,b9=this,b8=b7.relatedTarget,b6=b7.handleObj;if(!b8||(b8!==b9&&!bK.contains(b9,b8))){b7.type=b6.origType;b5=b6.handler.apply(this,arguments);b7.type=e}return b5}}});if(!bK.support.submitBubbles){bK.event.special.submit={setup:function(){if(bK.nodeName(this,"form")){return false}bK.event.add(this,"click._submit keypress._submit",function(b6){var b5=b6.target,b4=bK.nodeName(b5,"input")||bK.nodeName(b5,"button")?b5.form:aH;if(b4&&!bK._data(b4,"submitBubbles")){bK.event.add(b4,"submit._submit",function(e){e._submit_bubble=true});bK._data(b4,"submitBubbles",true)}})},postDispatch:function(e){if(e._submit_bubble){delete e._submit_bubble;if(this.parentNode&&!e.isTrigger){bK.event.simulate("submit",this.parentNode,e,true)}}},teardown:function(){if(bK.nodeName(this,"form")){return false}bK.event.remove(this,"._submit")}}}if(!bK.support.changeBubbles){bK.event.special.change={setup:function(){if(bI.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){bK.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});bK.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false}bK.event.simulate("change",this,e,true)})}return false}bK.event.add(this,"beforeactivate._change",function(b5){var b4=b5.target;if(bI.test(b4.nodeName)&&!bK._data(b4,"changeBubbles")){bK.event.add(b4,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){bK.event.simulate("change",this.parentNode,e,true)}});bK._data(b4,"changeBubbles",true)}})},handle:function(b4){var e=b4.target;if(this!==e||b4.isSimulated||b4.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return b4.handleObj.handler.apply(this,arguments)}},teardown:function(){bK.event.remove(this,"._change");return !bI.test(this.nodeName)}}}if(!bK.support.focusinBubbles){bK.each({focus:"focusin",blur:"focusout"},function(b6,e){var b4=0,b5=function(b7){bK.event.simulate(e,b7.target,bK.event.fix(b7),true)};bK.event.special[e]={setup:function(){if(b4++===0){l.addEventListener(b6,b5,true)}},teardown:function(){if(--b4===0){l.removeEventListener(b6,b5,true)}}}})}bK.fn.extend({on:function(b5,e,b8,b7,b4){var b6,b9;if(typeof b5==="object"){if(typeof e!=="string"){b8=b8||e;e=aH}for(b6 in b5){this.on(b6,e,b8,b5[b6],b4)}return this}if(b8==null&&b7==null){b7=e;b8=e=aH}else{if(b7==null){if(typeof e==="string"){b7=b8;b8=aH}else{b7=b8;b8=e;e=aH}}}if(b7===false){b7=Y}else{if(!b7){return this}}if(b4===1){b9=b7;b7=function(ca){bK().off(ca);return b9.apply(this,arguments)};b7.guid=b9.guid||(b9.guid=bK.guid++)}return this.each(function(){bK.event.add(this,b5,b7,b8,e)})},one:function(b4,e,b6,b5){return this.on(b4,e,b6,b5,1)},off:function(b5,e,b7){var b4,b6;if(b5&&b5.preventDefault&&b5.handleObj){b4=b5.handleObj;bK(b5.delegateTarget).off(b4.namespace?b4.origType+"."+b4.namespace:b4.origType,b4.selector,b4.handler);return this}if(typeof b5==="object"){for(b6 in b5){this.off(b6,e,b5[b6])}return this}if(e===false||typeof e==="function"){b7=e;e=aH}if(b7===false){b7=Y}return this.each(function(){bK.event.remove(this,b5,b7,e)})},bind:function(e,b5,b4){return this.on(e,null,b5,b4)},unbind:function(e,b4){return this.off(e,null,b4)},delegate:function(e,b4,b6,b5){return this.on(b4,e,b6,b5)},undelegate:function(e,b4,b5){return arguments.length===1?this.off(e,"**"):this.off(b4,e||"**",b5)},trigger:function(e,b4){return this.each(function(){bK.event.trigger(e,b4,this)})},triggerHandler:function(e,b5){var b4=this[0];if(b4){return bK.event.trigger(e,b5,b4,true)}}});
-/*!
- * Sizzle CSS Selector Engine
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license
- * http://sizzlejs.com/
- */
+/*!
+ * jQuery JavaScript Library v1.9.1
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2013-2-4
+ */
+(function(a3,aH){var aj,x,aD=typeof aH,l=a3.document,aM=a3.location,bj=a3.jQuery,I=a3.$,ab={},a7=[],t="1.9.1",aJ=a7.concat,ap=a7.push,a5=a7.slice,aN=a7.indexOf,A=ab.toString,W=ab.hasOwnProperty,aR=t.trim,bK=function(e,b4){return new bK.fn.init(e,b4,x)},bB=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ad=/\S+/g,D=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,bs=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,a=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,bi=/^[\],:{}\s]*$/,bl=/(?:^|:|,)(?:\s*\[)+/g,bH=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,a0=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,bT=/^-ms-/,aW=/-([\da-z])/gi,N=function(e,b4){return b4.toUpperCase()},bX=function(e){if(l.addEventListener||e.type==="load"||l.readyState==="complete"){bm();bK.ready()}},bm=function(){if(l.addEventListener){l.removeEventListener("DOMContentLoaded",bX,false);a3.removeEventListener("load",bX,false)}else{l.detachEvent("onreadystatechange",bX);a3.detachEvent("onload",bX)}};bK.fn=bK.prototype={jquery:t,constructor:bK,init:function(e,b6,b5){var b4,b7;if(!e){return this}if(typeof e==="string"){if(e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3){b4=[null,e,null]}else{b4=bs.exec(e)}if(b4&&(b4[1]||!b6)){if(b4[1]){b6=b6 instanceof bK?b6[0]:b6;bK.merge(this,bK.parseHTML(b4[1],b6&&b6.nodeType?b6.ownerDocument||b6:l,true));if(a.test(b4[1])&&bK.isPlainObject(b6)){for(b4 in b6){if(bK.isFunction(this[b4])){this[b4](b6[b4])}else{this.attr(b4,b6[b4])}}}return this}else{b7=l.getElementById(b4[2]);if(b7&&b7.parentNode){if(b7.id!==b4[2]){return b5.find(e)}this.length=1;this[0]=b7}this.context=l;this.selector=e;return this}}else{if(!b6||b6.jquery){return(b6||b5).find(e)}else{return this.constructor(b6).find(e)}}}else{if(e.nodeType){this.context=this[0]=e;this.length=1;return this}else{if(bK.isFunction(e)){return b5.ready(e)}}}if(e.selector!==aH){this.selector=e.selector;this.context=e.context}return bK.makeArray(e,this)},selector:"",length:0,size:function(){return this.length},toArray:function(){return a5.call(this)},get:function(e){return e==null?this.toArray():(e<0?this[this.length+e]:this[e])},pushStack:function(e){var b4=bK.merge(this.constructor(),e);b4.prevObject=this;b4.context=this.context;return b4},each:function(b4,e){return bK.each(this,b4,e)},ready:function(e){bK.ready.promise().done(e);return this},slice:function(){return this.pushStack(a5.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(b5){var e=this.length,b4=+b5+(b5<0?e:0);return this.pushStack(b4>=0&&b4<e?[this[b4]]:[])},map:function(e){return this.pushStack(bK.map(this,function(b5,b4){return e.call(b5,b4,b5)}))},end:function(){return this.prevObject||this.constructor(null)},push:ap,sort:[].sort,splice:[].splice};bK.fn.init.prototype=bK.fn;bK.extend=bK.fn.extend=function(){var e,b9,b4,b5,cc,ca,b8=arguments[0]||{},b7=1,b6=arguments.length,cb=false;if(typeof b8==="boolean"){cb=b8;b8=arguments[1]||{};b7=2}if(typeof b8!=="object"&&!bK.isFunction(b8)){b8={}}if(b6===b7){b8=this;--b7}for(;b7<b6;b7++){if((cc=arguments[b7])!=null){for(b5 in cc){e=b8[b5];b4=cc[b5];if(b8===b4){continue}if(cb&&b4&&(bK.isPlainObject(b4)||(b9=bK.isArray(b4)))){if(b9){b9=false;ca=e&&bK.isArray(e)?e:[]}else{ca=e&&bK.isPlainObject(e)?e:{}}b8[b5]=bK.extend(cb,ca,b4)}else{if(b4!==aH){b8[b5]=b4}}}}}return b8};bK.extend({noConflict:function(e){if(a3.$===bK){a3.$=I}if(e&&a3.jQuery===bK){a3.jQuery=bj}return bK},isReady:false,readyWait:1,holdReady:function(e){if(e){bK.readyWait++}else{bK.ready(true)}},ready:function(e){if(e===true?--bK.readyWait:bK.isReady){return}if(!l.body){return setTimeout(bK.ready)}bK.isReady=true;if(e!==true&&--bK.readyWait>0){return}aj.resolveWith(l,[bK]);if(bK.fn.trigger){bK(l).trigger("ready").off("ready")}},isFunction:function(e){return bK.type(e)==="function"},isArray:Array.isArray||function(e){return bK.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return !isNaN(parseFloat(e))&&isFinite(e)},type:function(e){if(e==null){return String(e)}return typeof e==="object"||typeof e==="function"?ab[A.call(e)]||"object":typeof e},isPlainObject:function(b6){if(!b6||bK.type(b6)!=="object"||b6.nodeType||bK.isWindow(b6)){return false}try{if(b6.constructor&&!W.call(b6,"constructor")&&!W.call(b6.constructor.prototype,"isPrototypeOf")){return false}}catch(b5){return false}var b4;for(b4 in b6){}return b4===aH||W.call(b6,b4)},isEmptyObject:function(b4){var e;for(e in b4){return false}return true},error:function(e){throw new Error(e)},parseHTML:function(b7,b5,b6){if(!b7||typeof b7!=="string"){return null}if(typeof b5==="boolean"){b6=b5;b5=false}b5=b5||l;var b4=a.exec(b7),e=!b6&&[];if(b4){return[b5.createElement(b4[1])]}b4=bK.buildFragment([b7],b5,e);if(e){bK(e).remove()}return bK.merge([],b4.childNodes)},parseJSON:function(e){if(a3.JSON&&a3.JSON.parse){return a3.JSON.parse(e)}if(e===null){return e}if(typeof e==="string"){e=bK.trim(e);if(e){if(bi.test(e.replace(bH,"@").replace(a0,"]").replace(bl,""))){return(new Function("return "+e))()}}}bK.error("Invalid JSON: "+e)},parseXML:function(b6){var b4,b5;if(!b6||typeof b6!=="string"){return null}try{if(a3.DOMParser){b5=new DOMParser();b4=b5.parseFromString(b6,"text/xml")}else{b4=new ActiveXObject("Microsoft.XMLDOM");b4.async="false";b4.loadXML(b6)}}catch(b7){b4=aH}if(!b4||!b4.documentElement||b4.getElementsByTagName("parsererror").length){bK.error("Invalid XML: "+b6)}return b4},noop:function(){},globalEval:function(e){if(e&&bK.trim(e)){(a3.execScript||function(b4){a3["eval"].call(a3,b4)})(e)}},camelCase:function(e){return e.replace(bT,"ms-").replace(aW,N)},nodeName:function(b4,e){return b4.nodeName&&b4.nodeName.toLowerCase()===e.toLowerCase()},each:function(b8,b9,b4){var b7,b5=0,b6=b8.length,e=ac(b8);if(b4){if(e){for(;b5<b6;b5++){b7=b9.apply(b8[b5],b4);if(b7===false){break}}}else{for(b5 in b8){b7=b9.apply(b8[b5],b4);if(b7===false){break}}}}else{if(e){for(;b5<b6;b5++){b7=b9.call(b8[b5],b5,b8[b5]);if(b7===false){break}}}else{for(b5 in b8){b7=b9.call(b8[b5],b5,b8[b5]);if(b7===false){break}}}}return b8},trim:aR&&!aR.call("\uFEFF\xA0")?function(e){return e==null?"":aR.call(e)}:function(e){return e==null?"":(e+"").replace(D,"")},makeArray:function(e,b5){var b4=b5||[];if(e!=null){if(ac(Object(e))){bK.merge(b4,typeof e==="string"?[e]:e)}else{ap.call(b4,e)}}return b4},inArray:function(b6,b4,b5){var e;if(b4){if(aN){return aN.call(b4,b6,b5)}e=b4.length;b5=b5?b5<0?Math.max(0,e+b5):b5:0;for(;b5<e;b5++){if(b5 in b4&&b4[b5]===b6){return b5}}}return -1},merge:function(b7,b5){var e=b5.length,b6=b7.length,b4=0;if(typeof e==="number"){for(;b4<e;b4++){b7[b6++]=b5[b4]}}else{while(b5[b4]!==aH){b7[b6++]=b5[b4++]}}b7.length=b6;return b7},grep:function(b4,b9,e){var b8,b5=[],b6=0,b7=b4.length;e=!!e;for(;b6<b7;b6++){b8=!!b9(b4[b6],b6);if(e!==b8){b5.push(b4[b6])}}return b5},map:function(b5,ca,e){var b9,b7=0,b8=b5.length,b4=ac(b5),b6=[];if(b4){for(;b7<b8;b7++){b9=ca(b5[b7],b7,e);if(b9!=null){b6[b6.length]=b9}}}else{for(b7 in b5){b9=ca(b5[b7],b7,e);if(b9!=null){b6[b6.length]=b9}}}return aJ.apply([],b6)},guid:1,proxy:function(b7,b6){var e,b5,b4;if(typeof b6==="string"){b4=b7[b6];b6=b7;b7=b4}if(!bK.isFunction(b7)){return aH}e=a5.call(arguments,2);b5=function(){return b7.apply(b6||this,e.concat(a5.call(arguments)))};b5.guid=b7.guid=b7.guid||bK.guid++;return b5},access:function(e,b8,ca,b9,b6,cc,cb){var b5=0,b4=e.length,b7=ca==null;if(bK.type(ca)==="object"){b6=true;for(b5 in ca){bK.access(e,b8,b5,ca[b5],true,cc,cb)}}else{if(b9!==aH){b6=true;if(!bK.isFunction(b9)){cb=true}if(b7){if(cb){b8.call(e,b9);b8=null}else{b7=b8;b8=function(ce,cd,cf){return b7.call(bK(ce),cf)}}}if(b8){for(;b5<b4;b5++){b8(e[b5],ca,cb?b9:b9.call(e[b5],b5,b8(e[b5],ca)))}}}}return b6?e:b7?b8.call(e):b4?b8(e[0],ca):cc},now:function(){return(new Date()).getTime()}});bK.ready.promise=function(b7){if(!aj){aj=bK.Deferred();if(l.readyState==="complete"){setTimeout(bK.ready)}else{if(l.addEventListener){l.addEventListener("DOMContentLoaded",bX,false);a3.addEventListener("load",bX,false)}else{l.attachEvent("onreadystatechange",bX);a3.attachEvent("onload",bX);var b6=false;try{b6=a3.frameElement==null&&l.documentElement}catch(b5){}if(b6&&b6.doScroll){(function b4(){if(!bK.isReady){try{b6.doScroll("left")}catch(b8){return setTimeout(b4,50)}bm();bK.ready()}})()}}}}return aj.promise(b7)};bK.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(b4,e){ab["[object "+e+"]"]=e.toLowerCase()});function ac(b5){var b4=b5.length,e=bK.type(b5);if(bK.isWindow(b5)){return false}if(b5.nodeType===1&&b4){return true}return e==="array"||e!=="function"&&(b4===0||typeof b4==="number"&&b4>0&&(b4-1) in b5)}x=bK(l);var bZ={};function af(b4){var e=bZ[b4]={};bK.each(b4.match(ad)||[],function(b6,b5){e[b5]=true});return e}bK.Callbacks=function(cd){cd=typeof cd==="string"?(bZ[cd]||af(cd)):bK.extend({},cd);var b7,b6,e,b8,b9,b5,ca=[],cb=!cd.once&&[],b4=function(ce){b6=cd.memory&&ce;e=true;b9=b5||0;b5=0;b8=ca.length;b7=true;for(;ca&&b9<b8;b9++){if(ca[b9].apply(ce[0],ce[1])===false&&cd.stopOnFalse){b6=false;break}}b7=false;if(ca){if(cb){if(cb.length){b4(cb.shift())}}else{if(b6){ca=[]}else{cc.disable()}}}},cc={add:function(){if(ca){var cf=ca.length;(function ce(cg){bK.each(cg,function(ci,ch){var cj=bK.type(ch);if(cj==="function"){if(!cd.unique||!cc.has(ch)){ca.push(ch)}}else{if(ch&&ch.length&&cj!=="string"){ce(ch)}}})})(arguments);if(b7){b8=ca.length}else{if(b6){b5=cf;b4(b6)}}}return this},remove:function(){if(ca){bK.each(arguments,function(cg,ce){var cf;while((cf=bK.inArray(ce,ca,cf))>-1){ca.splice(cf,1);if(b7){if(cf<=b8){b8--}if(cf<=b9){b9--}}}})}return this},has:function(ce){return ce?bK.inArray(ce,ca)>-1:!!(ca&&ca.length)},empty:function(){ca=[];return this},disable:function(){ca=cb=b6=aH;return this},disabled:function(){return !ca},lock:function(){cb=aH;if(!b6){cc.disable()}return this},locked:function(){return !cb},fireWith:function(cf,ce){ce=ce||[];ce=[cf,ce.slice?ce.slice():ce];if(ca&&(!e||cb)){if(b7){cb.push(ce)}else{b4(ce)}}return this},fire:function(){cc.fireWith(this,arguments);return this},fired:function(){return !!e}};return cc};bK.extend({Deferred:function(b5){var b4=[["resolve","done",bK.Callbacks("once memory"),"resolved"],["reject","fail",bK.Callbacks("once memory"),"rejected"],["notify","progress",bK.Callbacks("memory")]],b6="pending",b7={state:function(){return b6},always:function(){e.done(arguments).fail(arguments);return this},then:function(){var b8=arguments;return bK.Deferred(function(b9){bK.each(b4,function(cb,ca){var cd=ca[0],cc=bK.isFunction(b8[cb])&&b8[cb];e[ca[1]](function(){var ce=cc&&cc.apply(this,arguments);if(ce&&bK.isFunction(ce.promise)){ce.promise().done(b9.resolve).fail(b9.reject).progress(b9.notify)}else{b9[cd+"With"](this===b7?b9.promise():this,cc?[ce]:arguments)}})});b8=null}).promise()},promise:function(b8){return b8!=null?bK.extend(b8,b7):b7}},e={};b7.pipe=b7.then;bK.each(b4,function(b9,b8){var cb=b8[2],ca=b8[3];b7[b8[1]]=cb.add;if(ca){cb.add(function(){b6=ca},b4[b9^1][2].disable,b4[2][2].lock)}e[b8[0]]=function(){e[b8[0]+"With"](this===e?b7:this,arguments);return this};e[b8[0]+"With"]=cb.fireWith});b7.promise(e);if(b5){b5.call(e,e)}return e},when:function(b7){var b5=0,b9=a5.call(arguments),e=b9.length,b4=e!==1||(b7&&bK.isFunction(b7.promise))?e:0,cc=b4===1?b7:bK.Deferred(),b6=function(ce,cf,cd){return function(cg){cf[ce]=this;cd[ce]=arguments.length>1?a5.call(arguments):cg;if(cd===cb){cc.notifyWith(cf,cd)}else{if(!(--b4)){cc.resolveWith(cf,cd)}}}},cb,b8,ca;if(e>1){cb=new Array(e);b8=new Array(e);ca=new Array(e);for(;b5<e;b5++){if(b9[b5]&&bK.isFunction(b9[b5].promise)){b9[b5].promise().done(b6(b5,ca,b9)).fail(cc.reject).progress(b6(b5,b8,cb))}else{--b4}}}if(!b4){cc.resolveWith(ca,b9)}return cc.promise()}});bK.support=(function(){var cf,ce,cc,cb,cd,ca,b6,b8,b5,b7,b4=l.createElement("div");b4.setAttribute("className","t");b4.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";ce=b4.getElementsByTagName("*");cc=b4.getElementsByTagName("a")[0];if(!ce||!cc||!ce.length){return{}}cd=l.createElement("select");b6=cd.appendChild(l.createElement("option"));cb=b4.getElementsByTagName("input")[0];cc.style.cssText="top:1px;float:left;opacity:.5";cf={getSetAttribute:b4.className!=="t",leadingWhitespace:b4.firstChild.nodeType===3,tbody:!b4.getElementsByTagName("tbody").length,htmlSerialize:!!b4.getElementsByTagName("link").length,style:/top/.test(cc.getAttribute("style")),hrefNormalized:cc.getAttribute("href")==="/a",opacity:/^0.5/.test(cc.style.opacity),cssFloat:!!cc.style.cssFloat,checkOn:!!cb.value,optSelected:b6.selected,enctype:!!l.createElement("form").enctype,html5Clone:l.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",boxModel:l.compatMode==="CSS1Compat",deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true,boxSizingReliable:true,pixelPosition:false};cb.checked=true;cf.noCloneChecked=cb.cloneNode(true).checked;cd.disabled=true;cf.optDisabled=!b6.disabled;try{delete b4.test}catch(b9){cf.deleteExpando=false}cb=l.createElement("input");cb.setAttribute("value","");cf.input=cb.getAttribute("value")==="";cb.value="t";cb.setAttribute("type","radio");cf.radioValue=cb.value==="t";cb.setAttribute("checked","t");cb.setAttribute("name","t");ca=l.createDocumentFragment();ca.appendChild(cb);cf.appendChecked=cb.checked;cf.checkClone=ca.cloneNode(true).cloneNode(true).lastChild.checked;if(b4.attachEvent){b4.attachEvent("onclick",function(){cf.noCloneEvent=false});b4.cloneNode(true).click()}for(b7 in {submit:true,change:true,focusin:true}){b4.setAttribute(b8="on"+b7,"t");cf[b7+"Bubbles"]=b8 in a3||b4.attributes[b8].expando===false}b4.style.backgroundClip="content-box";b4.cloneNode(true).style.backgroundClip="";cf.clearCloneStyle=b4.style.backgroundClip==="content-box";bK(function(){var cg,cj,ci,ch="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",e=l.getElementsByTagName("body")[0];if(!e){return}cg=l.createElement("div");cg.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";e.appendChild(cg).appendChild(b4);b4.innerHTML="<table><tr><td></td><td>t</td></tr></table>";ci=b4.getElementsByTagName("td");ci[0].style.cssText="padding:0;margin:0;border:0;display:none";b5=(ci[0].offsetHeight===0);ci[0].style.display="";ci[1].style.display="none";cf.reliableHiddenOffsets=b5&&(ci[0].offsetHeight===0);b4.innerHTML="";b4.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";cf.boxSizing=(b4.offsetWidth===4);cf.doesNotIncludeMarginInBodyOffset=(e.offsetTop!==1);if(a3.getComputedStyle){cf.pixelPosition=(a3.getComputedStyle(b4,null)||{}).top!=="1%";cf.boxSizingReliable=(a3.getComputedStyle(b4,null)||{width:"4px"}).width==="4px";cj=b4.appendChild(l.createElement("div"));cj.style.cssText=b4.style.cssText=ch;cj.style.marginRight=cj.style.width="0";b4.style.width="1px";cf.reliableMarginRight=!parseFloat((a3.getComputedStyle(cj,null)||{}).marginRight)}if(typeof b4.style.zoom!==aD){b4.innerHTML="";b4.style.cssText=ch+"width:1px;padding:1px;display:inline;zoom:1";cf.inlineBlockNeedsLayout=(b4.offsetWidth===3);b4.style.display="block";b4.innerHTML="<div></div>";b4.firstChild.style.width="5px";cf.shrinkWrapBlocks=(b4.offsetWidth!==3);if(cf.inlineBlockNeedsLayout){e.style.zoom=1}}e.removeChild(cg);cg=b4=ci=cj=null});ce=cd=ca=b6=cc=cb=null;return cf})();var bx=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,aO=/([A-Z])/g;function bb(b6,b4,b8,b7){if(!bK.acceptData(b6)){return}var b9,cb,cc=bK.expando,ca=typeof b4==="string",cd=b6.nodeType,e=cd?bK.cache:b6,b5=cd?b6[cc]:b6[cc]&&cc;if((!b5||!e[b5]||(!b7&&!e[b5].data))&&ca&&b8===aH){return}if(!b5){if(cd){b6[cc]=b5=a7.pop()||bK.guid++}else{b5=cc}}if(!e[b5]){e[b5]={};if(!cd){e[b5].toJSON=bK.noop}}if(typeof b4==="object"||typeof b4==="function"){if(b7){e[b5]=bK.extend(e[b5],b4)}else{e[b5].data=bK.extend(e[b5].data,b4)}}b9=e[b5];if(!b7){if(!b9.data){b9.data={}}b9=b9.data}if(b8!==aH){b9[bK.camelCase(b4)]=b8}if(ca){cb=b9[b4];if(cb==null){cb=b9[bK.camelCase(b4)]}}else{cb=b9}return cb}function aa(b6,b4,b7){if(!bK.acceptData(b6)){return}var b9,b8,ca,cb=b6.nodeType,e=cb?bK.cache:b6,b5=cb?b6[bK.expando]:bK.expando;if(!e[b5]){return}if(b4){ca=b7?e[b5]:e[b5].data;if(ca){if(!bK.isArray(b4)){if(b4 in ca){b4=[b4]}else{b4=bK.camelCase(b4);if(b4 in ca){b4=[b4]}else{b4=b4.split(" ")}}}else{b4=b4.concat(bK.map(b4,bK.camelCase))}for(b9=0,b8=b4.length;b9<b8;b9++){delete ca[b4[b9]]}if(!(b7?O:bK.isEmptyObject)(ca)){return}}}if(!b7){delete e[b5].data;if(!O(e[b5])){return}}if(cb){bK.cleanData([b6],true)}else{if(bK.support.deleteExpando||e!=e.window){delete e[b5]}else{e[b5]=null}}}bK.extend({cache:{},expando:"jQuery"+(t+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?bK.cache[e[bK.expando]]:e[bK.expando];return !!e&&!O(e)},data:function(b4,e,b5){return bb(b4,e,b5)},removeData:function(b4,e){return aa(b4,e)},_data:function(b4,e,b5){return bb(b4,e,b5,true)},_removeData:function(b4,e){return aa(b4,e,true)},acceptData:function(b4){if(b4.nodeType&&b4.nodeType!==1&&b4.nodeType!==9){return false}var e=b4.nodeName&&bK.noData[b4.nodeName.toLowerCase()];return !e||e!==true&&b4.getAttribute("classid")===e}});bK.fn.extend({data:function(b6,b9){var b4,e,b7=this[0],b5=0,b8=null;if(b6===aH){if(this.length){b8=bK.data(b7);if(b7.nodeType===1&&!bK._data(b7,"parsedAttrs")){b4=b7.attributes;for(;b5<b4.length;b5++){e=b4[b5].name;if(!e.indexOf("data-")){e=bK.camelCase(e.slice(5));bz(b7,e,b8[e])}}bK._data(b7,"parsedAttrs",true)}}return b8}if(typeof b6==="object"){return this.each(function(){bK.data(this,b6)})}return bK.access(this,function(ca){if(ca===aH){return b7?bz(b7,b6,bK.data(b7,b6)):null}this.each(function(){bK.data(this,b6,ca)})},null,b9,arguments.length>1,null,true)},removeData:function(e){return this.each(function(){bK.removeData(this,e)})}});function bz(b6,b5,b7){if(b7===aH&&b6.nodeType===1){var b4="data-"+b5.replace(aO,"-$1").toLowerCase();b7=b6.getAttribute(b4);if(typeof b7==="string"){try{b7=b7==="true"?true:b7==="false"?false:b7==="null"?null:+b7+""===b7?+b7:bx.test(b7)?bK.parseJSON(b7):b7}catch(b8){}bK.data(b6,b5,b7)}else{b7=aH}}return b7}function O(b4){var e;for(e in b4){if(e==="data"&&bK.isEmptyObject(b4[e])){continue}if(e!=="toJSON"){return false}}return true}bK.extend({queue:function(b5,b4,b6){var e;if(b5){b4=(b4||"fx")+"queue";e=bK._data(b5,b4);if(b6){if(!e||bK.isArray(b6)){e=bK._data(b5,b4,bK.makeArray(b6))}else{e.push(b6)}}return e||[]}},dequeue:function(b8,b7){b7=b7||"fx";var b4=bK.queue(b8,b7),b9=b4.length,b6=b4.shift(),e=bK._queueHooks(b8,b7),b5=function(){bK.dequeue(b8,b7)};if(b6==="inprogress"){b6=b4.shift();b9--}e.cur=b6;if(b6){if(b7==="fx"){b4.unshift("inprogress")}delete e.stop;b6.call(b8,b5,e)}if(!b9&&e){e.empty.fire()}},_queueHooks:function(b5,b4){var e=b4+"queueHooks";return bK._data(b5,e)||bK._data(b5,e,{empty:bK.Callbacks("once memory").add(function(){bK._removeData(b5,b4+"queue");bK._removeData(b5,e)})})}});bK.fn.extend({queue:function(e,b4){var b5=2;if(typeof e!=="string"){b4=e;e="fx";b5--}if(arguments.length<b5){return bK.queue(this[0],e)}return b4===aH?this:this.each(function(){var b6=bK.queue(this,e,b4);bK._queueHooks(this,e);if(e==="fx"&&b6[0]!=="inprogress"){bK.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){bK.dequeue(this,e)})},delay:function(b4,e){b4=bK.fx?bK.fx.speeds[b4]||b4:b4;e=e||"fx";return this.queue(e,function(b6,b5){var b7=setTimeout(b6,b4);b5.stop=function(){clearTimeout(b7)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(b5,b9){var b4,b6=1,ca=bK.Deferred(),b8=this,e=this.length,b7=function(){if(!(--b6)){ca.resolveWith(b8,[b8])}};if(typeof b5!=="string"){b9=b5;b5=aH}b5=b5||"fx";while(e--){b4=bK._data(b8[e],b5+"queueHooks");if(b4&&b4.empty){b6++;b4.empty.add(b7)}}b7();return ca.promise(b9)}});var a9,b0,bN=/[\t\r\n]/g,al=/\r/g,aG=/^(?:input|select|textarea|button|object)$/i,E=/^(?:a|area)$/i,M=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,ar=/^(?:checked|selected)$/i,bQ=bK.support.getSetAttribute,bG=bK.support.input;bK.fn.extend({attr:function(e,b4){return bK.access(this,bK.attr,e,b4,arguments.length>1)},removeAttr:function(e){return this.each(function(){bK.removeAttr(this,e)})},prop:function(e,b4){return bK.access(this,bK.prop,e,b4,arguments.length>1)},removeProp:function(e){e=bK.propFix[e]||e;return this.each(function(){try{this[e]=aH;delete this[e]}catch(b4){}})},addClass:function(ca){var b4,e,cb,b7,b5,b6=0,b8=this.length,b9=typeof ca==="string"&&ca;if(bK.isFunction(ca)){return this.each(function(cc){bK(this).addClass(ca.call(this,cc,this.className))})}if(b9){b4=(ca||"").match(ad)||[];for(;b6<b8;b6++){e=this[b6];cb=e.nodeType===1&&(e.className?(" "+e.className+" ").replace(bN," "):" ");if(cb){b5=0;while((b7=b4[b5++])){if(cb.indexOf(" "+b7+" ")<0){cb+=b7+" "}}e.className=bK.trim(cb)}}}return this},removeClass:function(ca){var b4,e,cb,b7,b5,b6=0,b8=this.length,b9=arguments.length===0||typeof ca==="string"&&ca;if(bK.isFunction(ca)){return this.each(function(cc){bK(this).removeClass(ca.call(this,cc,this.className))})}if(b9){b4=(ca||"").match(ad)||[];for(;b6<b8;b6++){e=this[b6];cb=e.nodeType===1&&(e.className?(" "+e.className+" ").replace(bN," "):"");if(cb){b5=0;while((b7=b4[b5++])){while(cb.indexOf(" "+b7+" ")>=0){cb=cb.replace(" "+b7+" "," ")}}e.className=ca?bK.trim(cb):""}}}return this},toggleClass:function(b6,b4){var b5=typeof b6,e=typeof b4==="boolean";if(bK.isFunction(b6)){return this.each(function(b7){bK(this).toggleClass(b6.call(this,b7,this.className,b4),b4)})}return this.each(function(){if(b5==="string"){var b9,b8=0,b7=bK(this),ca=b4,cb=b6.match(ad)||[];while((b9=cb[b8++])){ca=e?ca:!b7.hasClass(b9);b7[ca?"addClass":"removeClass"](b9)}}else{if(b5===aD||b5==="boolean"){if(this.className){bK._data(this,"__className__",this.className)}this.className=this.className||b6===false?"":bK._data(this,"__className__")||""}}})},hasClass:function(e){var b6=" "+e+" ",b5=0,b4=this.length;for(;b5<b4;b5++){if(this[b5].nodeType===1&&(" "+this[b5].className+" ").replace(bN," ").indexOf(b6)>=0){return true}}return false},val:function(b6){var b4,e,b7,b5=this[0];if(!arguments.length){if(b5){e=bK.valHooks[b5.type]||bK.valHooks[b5.nodeName.toLowerCase()];if(e&&"get" in e&&(b4=e.get(b5,"value"))!==aH){return b4}b4=b5.value;return typeof b4==="string"?b4.replace(al,""):b4==null?"":b4}return}b7=bK.isFunction(b6);return this.each(function(b9){var ca,b8=bK(this);if(this.nodeType!==1){return}if(b7){ca=b6.call(this,b9,b8.val())}else{ca=b6}if(ca==null){ca=""}else{if(typeof ca==="number"){ca+=""}else{if(bK.isArray(ca)){ca=bK.map(ca,function(cb){return cb==null?"":cb+""})}}}e=bK.valHooks[this.type]||bK.valHooks[this.nodeName.toLowerCase()];if(!e||!("set" in e)||e.set(this,ca,"value")===aH){this.value=ca}})}});bK.extend({valHooks:{option:{get:function(e){var b4=e.attributes.value;return !b4||b4.specified?e.value:e.text}},select:{get:function(e){var b9,b5,cb=e.options,b7=e.selectedIndex,b6=e.type==="select-one"||b7<0,ca=b6?null:[],b8=b6?b7+1:cb.length,b4=b7<0?b8:b6?b7:0;for(;b4<b8;b4++){b5=cb[b4];if((b5.selected||b4===b7)&&(bK.support.optDisabled?!b5.disabled:b5.getAttribute("disabled")===null)&&(!b5.parentNode.disabled||!bK.nodeName(b5.parentNode,"optgroup"))){b9=bK(b5).val();if(b6){return b9}ca.push(b9)}}return ca},set:function(b4,b5){var e=bK.makeArray(b5);bK(b4).find("option").each(function(){this.selected=bK.inArray(bK(this).val(),e)>=0});if(!e.length){b4.selectedIndex=-1}return e}}},attr:function(b8,b6,b9){var e,b7,b5,b4=b8.nodeType;if(!b8||b4===3||b4===8||b4===2){return}if(typeof b8.getAttribute===aD){return bK.prop(b8,b6,b9)}b7=b4!==1||!bK.isXMLDoc(b8);if(b7){b6=b6.toLowerCase();e=bK.attrHooks[b6]||(M.test(b6)?b0:a9)}if(b9!==aH){if(b9===null){bK.removeAttr(b8,b6)}else{if(e&&b7&&"set" in e&&(b5=e.set(b8,b9,b6))!==aH){return b5}else{b8.setAttribute(b6,b9+"");return b9}}}else{if(e&&b7&&"get" in e&&(b5=e.get(b8,b6))!==null){return b5}else{if(typeof b8.getAttribute!==aD){b5=b8.getAttribute(b6)}return b5==null?aH:b5}}},removeAttr:function(b5,b7){var e,b6,b4=0,b8=b7&&b7.match(ad);if(b8&&b5.nodeType===1){while((e=b8[b4++])){b6=bK.propFix[e]||e;if(M.test(e)){if(!bQ&&ar.test(e)){b5[bK.camelCase("default-"+e)]=b5[b6]=false}else{b5[b6]=false}}else{bK.attr(b5,e,"")}b5.removeAttribute(bQ?e:b6)}}},attrHooks:{type:{set:function(e,b4){if(!bK.support.radioValue&&b4==="radio"&&bK.nodeName(e,"input")){var b5=e.value;e.setAttribute("type",b4);if(b5){e.value=b5}return b4}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(b8,b6,b9){var b5,e,b7,b4=b8.nodeType;if(!b8||b4===3||b4===8||b4===2){return}b7=b4!==1||!bK.isXMLDoc(b8);if(b7){b6=bK.propFix[b6]||b6;e=bK.propHooks[b6]}if(b9!==aH){if(e&&"set" in e&&(b5=e.set(b8,b9,b6))!==aH){return b5}else{return(b8[b6]=b9)}}else{if(e&&"get" in e&&(b5=e.get(b8,b6))!==null){return b5}else{return b8[b6]}}},propHooks:{tabIndex:{get:function(b4){var e=b4.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):aG.test(b4.nodeName)||E.test(b4.nodeName)&&b4.href?0:aH}}}});b0={get:function(b6,b4){var b7=bK.prop(b6,b4),e=typeof b7==="boolean"&&b6.getAttribute(b4),b5=typeof b7==="boolean"?bG&&bQ?e!=null:ar.test(b4)?b6[bK.camelCase("default-"+b4)]:!!e:b6.getAttributeNode(b4);return b5&&b5.value!==false?b4.toLowerCase():aH},set:function(b4,b5,e){if(b5===false){bK.removeAttr(b4,e)}else{if(bG&&bQ||!ar.test(e)){b4.setAttribute(!bQ&&bK.propFix[e]||e,e)}else{b4[bK.camelCase("default-"+e)]=b4[e]=true}}return e}};if(!bG||!bQ){bK.attrHooks.value={get:function(b5,b4){var e=b5.getAttributeNode(b4);return bK.nodeName(b5,"input")?b5.defaultValue:e&&e.specified?e.value:aH},set:function(b4,b5,e){if(bK.nodeName(b4,"input")){b4.defaultValue=b5}else{return a9&&a9.set(b4,b5,e)}}}}if(!bQ){a9=bK.valHooks.button={get:function(b5,b4){var e=b5.getAttributeNode(b4);return e&&(b4==="id"||b4==="name"||b4==="coords"?e.value!=="":e.specified)?e.value:aH},set:function(b5,b6,b4){var e=b5.getAttributeNode(b4);if(!e){b5.setAttributeNode((e=b5.ownerDocument.createAttribute(b4)))}e.value=b6+="";return b4==="value"||b6===b5.getAttribute(b4)?b6:aH}};bK.attrHooks.contenteditable={get:a9.get,set:function(b4,b5,e){a9.set(b4,b5===""?false:b5,e)}};bK.each(["width","height"],function(b4,e){bK.attrHooks[e]=bK.extend(bK.attrHooks[e],{set:function(b5,b6){if(b6===""){b5.setAttribute(e,"auto");return b6}}})})}if(!bK.support.hrefNormalized){bK.each(["href","src","width","height"],function(b4,e){bK.attrHooks[e]=bK.extend(bK.attrHooks[e],{get:function(b6){var b5=b6.getAttribute(e,2);return b5==null?aH:b5}})});bK.each(["href","src"],function(b4,e){bK.propHooks[e]={get:function(b5){return b5.getAttribute(e,4)}}})}if(!bK.support.style){bK.attrHooks.style={get:function(e){return e.style.cssText||aH},set:function(e,b4){return(e.style.cssText=b4+"")}}}if(!bK.support.optSelected){bK.propHooks.selected=bK.extend(bK.propHooks.selected,{get:function(b4){var e=b4.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!bK.support.enctype){bK.propFix.enctype="encoding"}if(!bK.support.checkOn){bK.each(["radio","checkbox"],function(){bK.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}bK.each(["radio","checkbox"],function(){bK.valHooks[this]=bK.extend(bK.valHooks[this],{set:function(e,b4){if(bK.isArray(b4)){return(e.checked=bK.inArray(bK(e).val(),b4)>=0)}}})});var bI=/^(?:input|select|textarea)$/i,a4=/^key/,bO=/^(?:mouse|contextmenu)|click/,bC=/^(?:focusinfocus|focusoutblur)$/,bv=/^([^.]*)(?:\.(.+)|)$/;function S(){return true}function Y(){return false}bK.event={global:{},add:function(b7,cc,ch,b9,b8){var ca,ci,cj,b5,ce,cb,cg,b6,cf,e,b4,cd=bK._data(b7);if(!cd){return}if(ch.handler){b5=ch;ch=b5.handler;b8=b5.selector}if(!ch.guid){ch.guid=bK.guid++}if(!(ci=cd.events)){ci=cd.events={}}if(!(cb=cd.handle)){cb=cd.handle=function(ck){return typeof bK!==aD&&(!ck||bK.event.triggered!==ck.type)?bK.event.dispatch.apply(cb.elem,arguments):aH};cb.elem=b7}cc=(cc||"").match(ad)||[""];cj=cc.length;while(cj--){ca=bv.exec(cc[cj])||[];cf=b4=ca[1];e=(ca[2]||"").split(".").sort();ce=bK.event.special[cf]||{};cf=(b8?ce.delegateType:ce.bindType)||cf;ce=bK.event.special[cf]||{};cg=bK.extend({type:cf,origType:b4,data:b9,handler:ch,guid:ch.guid,selector:b8,needsContext:b8&&bK.expr.match.needsContext.test(b8),namespace:e.join(".")},b5);if(!(b6=ci[cf])){b6=ci[cf]=[];b6.delegateCount=0;if(!ce.setup||ce.setup.call(b7,b9,e,cb)===false){if(b7.addEventListener){b7.addEventListener(cf,cb,false)}else{if(b7.attachEvent){b7.attachEvent("on"+cf,cb)}}}}if(ce.add){ce.add.call(b7,cg);if(!cg.handler.guid){cg.handler.guid=ch.guid}}if(b8){b6.splice(b6.delegateCount++,0,cg)}else{b6.push(cg)}bK.event.global[cf]=true}b7=null},remove:function(b6,cc,cj,b7,cb){var b9,cg,ca,b8,ci,ch,ce,b5,cf,e,b4,cd=bK.hasData(b6)&&bK._data(b6);if(!cd||!(ch=cd.events)){return}cc=(cc||"").match(ad)||[""];ci=cc.length;while(ci--){ca=bv.exec(cc[ci])||[];cf=b4=ca[1];e=(ca[2]||"").split(".").sort();if(!cf){for(cf in ch){bK.event.remove(b6,cf+cc[ci],cj,b7,true)}continue}ce=bK.event.special[cf]||{};cf=(b7?ce.delegateType:ce.bindType)||cf;b5=ch[cf]||[];ca=ca[2]&&new RegExp("(^|\\.)"+e.join("\\.(?:.*\\.|)")+"(\\.|$)");b8=b9=b5.length;while(b9--){cg=b5[b9];if((cb||b4===cg.origType)&&(!cj||cj.guid===cg.guid)&&(!ca||ca.test(cg.namespace))&&(!b7||b7===cg.selector||b7==="**"&&cg.selector)){b5.splice(b9,1);if(cg.selector){b5.delegateCount--}if(ce.remove){ce.remove.call(b6,cg)}}}if(b8&&!b5.length){if(!ce.teardown||ce.teardown.call(b6,e,cd.handle)===false){bK.removeEvent(b6,cf,cd.handle)}delete ch[cf]}}if(bK.isEmptyObject(ch)){delete cd.handle;bK._removeData(b6,"events")}},trigger:function(b4,cb,b7,ci){var cc,b6,cg,ch,ce,ca,b9,b8=[b7||l],cf=W.call(b4,"type")?b4.type:b4,b5=W.call(b4,"namespace")?b4.namespace.split("."):[];cg=ca=b7=b7||l;if(b7.nodeType===3||b7.nodeType===8){return}if(bC.test(cf+bK.event.triggered)){return}if(cf.indexOf(".")>=0){b5=cf.split(".");cf=b5.shift();b5.sort()}b6=cf.indexOf(":")<0&&"on"+cf;b4=b4[bK.expando]?b4:new bK.Event(cf,typeof b4==="object"&&b4);b4.isTrigger=true;b4.namespace=b5.join(".");b4.namespace_re=b4.namespace?new RegExp("(^|\\.)"+b5.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;b4.result=aH;if(!b4.target){b4.target=b7}cb=cb==null?[b4]:bK.makeArray(cb,[b4]);ce=bK.event.special[cf]||{};if(!ci&&ce.trigger&&ce.trigger.apply(b7,cb)===false){return}if(!ci&&!ce.noBubble&&!bK.isWindow(b7)){ch=ce.delegateType||cf;if(!bC.test(ch+cf)){cg=cg.parentNode}for(;cg;cg=cg.parentNode){b8.push(cg);ca=cg}if(ca===(b7.ownerDocument||l)){b8.push(ca.defaultView||ca.parentWindow||a3)}}b9=0;while((cg=b8[b9++])&&!b4.isPropagationStopped()){b4.type=b9>1?ch:ce.bindType||cf;cc=(bK._data(cg,"events")||{})[b4.type]&&bK._data(cg,"handle");if(cc){cc.apply(cg,cb)}cc=b6&&cg[b6];if(cc&&bK.acceptData(cg)&&cc.apply&&cc.apply(cg,cb)===false){b4.preventDefault()}}b4.type=cf;if(!ci&&!b4.isDefaultPrevented()){if((!ce._default||ce._default.apply(b7.ownerDocument,cb)===false)&&!(cf==="click"&&bK.nodeName(b7,"a"))&&bK.acceptData(b7)){if(b6&&b7[cf]&&!bK.isWindow(b7)){ca=b7[b6];if(ca){b7[b6]=null}bK.event.triggered=cf;try{b7[cf]()}catch(cd){}bK.event.triggered=aH;if(ca){b7[b6]=ca}}}}return b4.result},dispatch:function(e){e=bK.event.fix(e);var b7,b8,cc,b4,b6,cb=[],ca=a5.call(arguments),b5=(bK._data(this,"events")||{})[e.type]||[],b9=bK.event.special[e.type]||{};ca[0]=e;e.delegateTarget=this;if(b9.preDispatch&&b9.preDispatch.call(this,e)===false){return}cb=bK.event.handlers.call(this,e,b5);b7=0;while((b4=cb[b7++])&&!e.isPropagationStopped()){e.currentTarget=b4.elem;b6=0;while((cc=b4.handlers[b6++])&&!e.isImmediatePropagationStopped()){if(!e.namespace_re||e.namespace_re.test(cc.namespace)){e.handleObj=cc;e.data=cc.data;b8=((bK.event.special[cc.origType]||{}).handle||cc.handler).apply(b4.elem,ca);if(b8!==aH){if((e.result=b8)===false){e.preventDefault();e.stopPropagation()}}}}}if(b9.postDispatch){b9.postDispatch.call(this,e)}return e.result},handlers:function(e,b5){var b4,ca,b8,b7,b9=[],b6=b5.delegateCount,cb=e.target;if(b6&&cb.nodeType&&(!e.button||e.type!=="click")){for(;cb!=this;cb=cb.parentNode||this){if(cb.nodeType===1&&(cb.disabled!==true||e.type!=="click")){b8=[];for(b7=0;b7<b6;b7++){ca=b5[b7];b4=ca.selector+" ";if(b8[b4]===aH){b8[b4]=ca.needsContext?bK(b4,this).index(cb)>=0:bK.find(b4,this,null,[cb]).length}if(b8[b4]){b8.push(ca)}}if(b8.length){b9.push({elem:cb,handlers:b8})}}}}if(b6<b5.length){b9.push({elem:this,handlers:b5.slice(b6)})}return b9},fix:function(b6){if(b6[bK.expando]){return b6}var b4,b9,b8,b5=b6.type,e=b6,b7=this.fixHooks[b5];if(!b7){this.fixHooks[b5]=b7=bO.test(b5)?this.mouseHooks:a4.test(b5)?this.keyHooks:{}}b8=b7.props?this.props.concat(b7.props):this.props;b6=new bK.Event(e);b4=b8.length;while(b4--){b9=b8[b4];b6[b9]=e[b9]}if(!b6.target){b6.target=e.srcElement||l}if(b6.target.nodeType===3){b6.target=b6.target.parentNode}b6.metaKey=!!b6.metaKey;return b7.filter?b7.filter(b6,e):b6},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(b4,e){if(b4.which==null){b4.which=e.charCode!=null?e.charCode:e.keyCode}return b4}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(b6,b5){var e,b7,b8,b4=b5.button,b9=b5.fromElement;if(b6.pageX==null&&b5.clientX!=null){b7=b6.target.ownerDocument||l;b8=b7.documentElement;e=b7.body;b6.pageX=b5.clientX+(b8&&b8.scrollLeft||e&&e.scrollLeft||0)-(b8&&b8.clientLeft||e&&e.clientLeft||0);b6.pageY=b5.clientY+(b8&&b8.scrollTop||e&&e.scrollTop||0)-(b8&&b8.clientTop||e&&e.clientTop||0)}if(!b6.relatedTarget&&b9){b6.relatedTarget=b9===b6.target?b5.toElement:b9}if(!b6.which&&b4!==aH){b6.which=(b4&1?1:(b4&2?3:(b4&4?2:0)))}return b6}},special:{load:{noBubble:true},click:{trigger:function(){if(bK.nodeName(this,"input")&&this.type==="checkbox"&&this.click){this.click();return false}}},focus:{trigger:function(){if(this!==l.activeElement&&this.focus){try{this.focus();return false}catch(b4){}}},delegateType:"focusin"},blur:{trigger:function(){if(this===l.activeElement&&this.blur){this.blur();return false}},delegateType:"focusout"},beforeunload:{postDispatch:function(e){if(e.result!==aH){e.originalEvent.returnValue=e.result}}}},simulate:function(b5,b7,b6,b4){var b8=bK.extend(new bK.Event(),b6,{type:b5,isSimulated:true,originalEvent:{}});if(b4){bK.event.trigger(b8,null,b7)}else{bK.event.dispatch.call(b7,b8)}if(b8.isDefaultPrevented()){b6.preventDefault()}}};bK.removeEvent=l.removeEventListener?function(b4,e,b5){if(b4.removeEventListener){b4.removeEventListener(e,b5,false)}}:function(b5,b4,b6){var e="on"+b4;if(b5.detachEvent){if(typeof b5[e]===aD){b5[e]=null}b5.detachEvent(e,b6)}};bK.Event=function(b4,e){if(!(this instanceof bK.Event)){return new bK.Event(b4,e)}if(b4&&b4.type){this.originalEvent=b4;this.type=b4.type;this.isDefaultPrevented=(b4.defaultPrevented||b4.returnValue===false||b4.getPreventDefault&&b4.getPreventDefault())?S:Y}else{this.type=b4}if(e){bK.extend(this,e)}this.timeStamp=b4&&b4.timeStamp||bK.now();this[bK.expando]=true};bK.Event.prototype={isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y,preventDefault:function(){var b4=this.originalEvent;this.isDefaultPrevented=S;if(!b4){return}if(b4.preventDefault){b4.preventDefault()}else{b4.returnValue=false}},stopPropagation:function(){var b4=this.originalEvent;this.isPropagationStopped=S;if(!b4){return}if(b4.stopPropagation){b4.stopPropagation()}b4.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=S;this.stopPropagation()}};bK.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(b4,e){bK.event.special[b4]={delegateType:e,bindType:e,handle:function(b7){var b5,b9=this,b8=b7.relatedTarget,b6=b7.handleObj;if(!b8||(b8!==b9&&!bK.contains(b9,b8))){b7.type=b6.origType;b5=b6.handler.apply(this,arguments);b7.type=e}return b5}}});if(!bK.support.submitBubbles){bK.event.special.submit={setup:function(){if(bK.nodeName(this,"form")){return false}bK.event.add(this,"click._submit keypress._submit",function(b6){var b5=b6.target,b4=bK.nodeName(b5,"input")||bK.nodeName(b5,"button")?b5.form:aH;if(b4&&!bK._data(b4,"submitBubbles")){bK.event.add(b4,"submit._submit",function(e){e._submit_bubble=true});bK._data(b4,"submitBubbles",true)}})},postDispatch:function(e){if(e._submit_bubble){delete e._submit_bubble;if(this.parentNode&&!e.isTrigger){bK.event.simulate("submit",this.parentNode,e,true)}}},teardown:function(){if(bK.nodeName(this,"form")){return false}bK.event.remove(this,"._submit")}}}if(!bK.support.changeBubbles){bK.event.special.change={setup:function(){if(bI.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){bK.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});bK.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false}bK.event.simulate("change",this,e,true)})}return false}bK.event.add(this,"beforeactivate._change",function(b5){var b4=b5.target;if(bI.test(b4.nodeName)&&!bK._data(b4,"changeBubbles")){bK.event.add(b4,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){bK.event.simulate("change",this.parentNode,e,true)}});bK._data(b4,"changeBubbles",true)}})},handle:function(b4){var e=b4.target;if(this!==e||b4.isSimulated||b4.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return b4.handleObj.handler.apply(this,arguments)}},teardown:function(){bK.event.remove(this,"._change");return !bI.test(this.nodeName)}}}if(!bK.support.focusinBubbles){bK.each({focus:"focusin",blur:"focusout"},function(b6,e){var b4=0,b5=function(b7){bK.event.simulate(e,b7.target,bK.event.fix(b7),true)};bK.event.special[e]={setup:function(){if(b4++===0){l.addEventListener(b6,b5,true)}},teardown:function(){if(--b4===0){l.removeEventListener(b6,b5,true)}}}})}bK.fn.extend({on:function(b5,e,b8,b7,b4){var b6,b9;if(typeof b5==="object"){if(typeof e!=="string"){b8=b8||e;e=aH}for(b6 in b5){this.on(b6,e,b8,b5[b6],b4)}return this}if(b8==null&&b7==null){b7=e;b8=e=aH}else{if(b7==null){if(typeof e==="string"){b7=b8;b8=aH}else{b7=b8;b8=e;e=aH}}}if(b7===false){b7=Y}else{if(!b7){return this}}if(b4===1){b9=b7;b7=function(ca){bK().off(ca);return b9.apply(this,arguments)};b7.guid=b9.guid||(b9.guid=bK.guid++)}return this.each(function(){bK.event.add(this,b5,b7,b8,e)})},one:function(b4,e,b6,b5){return this.on(b4,e,b6,b5,1)},off:function(b5,e,b7){var b4,b6;if(b5&&b5.preventDefault&&b5.handleObj){b4=b5.handleObj;bK(b5.delegateTarget).off(b4.namespace?b4.origType+"."+b4.namespace:b4.origType,b4.selector,b4.handler);return this}if(typeof b5==="object"){for(b6 in b5){this.off(b6,e,b5[b6])}return this}if(e===false||typeof e==="function"){b7=e;e=aH}if(b7===false){b7=Y}return this.each(function(){bK.event.remove(this,b5,b7,e)})},bind:function(e,b5,b4){return this.on(e,null,b5,b4)},unbind:function(e,b4){return this.off(e,null,b4)},delegate:function(e,b4,b6,b5){return this.on(b4,e,b6,b5)},undelegate:function(e,b4,b5){return arguments.length===1?this.off(e,"**"):this.off(b4,e||"**",b5)},trigger:function(e,b4){return this.each(function(){bK.event.trigger(e,b4,this)})},triggerHandler:function(e,b5){var b4=this[0];if(b4){return bK.event.trigger(e,b5,b4,true)}}});
+/*!
+ * Sizzle CSS Selector Engine
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://sizzlejs.com/
+ */
 (function(db,ci){var cy,cc,co,cI,cK,cT,cU,dh,cW,cC,cp,ce,c0,dc,cb,cG,cE,c6="sizzle"+-(new Date()),cJ=db.document,de={},df=0,c1=0,b6=cA(),c5=cA(),cH=cA(),da=typeof ci,cO=1<<31,c8=[],c9=c8.pop,b5=c8.push,cn=c8.slice,ca=c8.indexOf||function(dj){var di=0,e=this.length;for(;di<e;di++){if(this[di]===dj){return di}}return -1},cq="[\\x20\\t\\r\\n\\f]",b4="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",cL=b4.replace("w","w#"),cj="([*^$|!~]?=)",c3="\\["+cq+"*("+b4+")"+cq+"*(?:"+cj+cq+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+cL+")|)|)"+cq+"*\\]",cl=":("+b4+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+c3.replace(3,8)+")*)|.*)\\)|)",cs=new RegExp("^"+cq+"+|((?:^|[^\\\\])(?:\\\\.)*)"+cq+"+$","g"),cv=new RegExp("^"+cq+"*,"+cq+"*"),cB=new RegExp("^"+cq+"*([\\x20\\t\\r\\n\\f>+~])"+cq+"*"),cQ=new RegExp(cl),cR=new RegExp("^"+cL+"$"),cZ={ID:new RegExp("^#("+b4+")"),CLASS:new RegExp("^\\.("+b4+")"),NAME:new RegExp("^\\[name=['\"]?("+b4+")['\"]?\\]"),TAG:new RegExp("^("+b4.replace("w","w*")+")"),ATTR:new RegExp("^"+c3),PSEUDO:new RegExp("^"+cl),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+cq+"*(even|odd|(([+-]|)(\\d*)n|)"+cq+"*(?:([+-]|)"+cq+"*(\\d+)|))"+cq+"*\\)|)","i"),needsContext:new RegExp("^"+cq+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+cq+"*((?:-\\d)?\\d*)"+cq+"*\\)|)(?=[^-]|$)","i")},cX=/[\x20\t\r\n\f]*[+~]/,cN=/^[^{]+\{\s*\[native code/,cP=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,b9=/^(?:input|select|textarea|button)$/i,cm=/^h\d$/i,cM=/'|\\/g,cu=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,ct=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,c2=function(e,dj){var di="0x"+dj-65536;return di!==di?dj:di<0?String.fromCharCode(di+65536):String.fromCharCode(di>>10|55296,di&1023|56320)};try{cn.call(cJ.documentElement.childNodes,0)[0].nodeType}catch(cD){cn=function(di){var dj,e=[];while((dj=this[di++])){e.push(dj)}return e}}function cF(e){return cN.test(e+"")}function cA(){var e,di=[];return(e=function(dj,dk){if(di.push(dj+=" ")>co.cacheLength){delete e[di.shift()]}return(e[dj]=dk)})}function ck(e){e[c6]=true;return e}function cd(di){var dk=cC.createElement("div");try{return di(dk)}catch(dj){return false}finally{dk=null}}function cw(dq,di,du,dw){var dv,dm,dn,ds,dt,dl,dk,e,dj,dr;if((di?di.ownerDocument||di:cJ)!==cC){cW(di)}di=di||cC;du=du||[];if(!dq||typeof dq!=="string"){return du}if((ds=di.nodeType)!==1&&ds!==9){return[]}if(!ce&&!dw){if((dv=cP.exec(dq))){if((dn=dv[1])){if(ds===9){dm=di.getElementById(dn);if(dm&&dm.parentNode){if(dm.id===dn){du.push(dm);return du}}else{return du}}else{if(di.ownerDocument&&(dm=di.ownerDocument.getElementById(dn))&&cG(di,dm)&&dm.id===dn){du.push(dm);return du}}}else{if(dv[2]){b5.apply(du,cn.call(di.getElementsByTagName(dq),0));return du}else{if((dn=dv[3])&&de.getByClassName&&di.getElementsByClassName){b5.apply(du,cn.call(di.getElementsByClassName(dn),0));return du}}}}if(de.qsa&&!c0.test(dq)){dk=true;e=c6;dj=di;dr=ds===9&&dq;if(ds===1&&di.nodeName.toLowerCase()!=="object"){dl=cg(dq);if((dk=di.getAttribute("id"))){e=dk.replace(cM,"\\$&")}else{di.setAttribute("id",e)}e="[id='"+e+"'] ";dt=dl.length;while(dt--){dl[dt]=e+ch(dl[dt])}dj=cX.test(dq)&&di.parentNode||di;dr=dl.join(",")}if(dr){try{b5.apply(du,cn.call(dj.querySelectorAll(dr),0));return du}catch(dp){}finally{if(!dk){di.removeAttribute("id")}}}}}return dd(dq.replace(cs,"$1"),di,du,dw)}cK=cw.isXML=function(e){var di=e&&(e.ownerDocument||e).documentElement;return di?di.nodeName!=="HTML":false};cW=cw.setDocument=function(e){var di=e?e.ownerDocument||e:cJ;if(di===cC||di.nodeType!==9||!di.documentElement){return cC}cC=di;cp=di.documentElement;ce=cK(di);de.tagNameNoComments=cd(function(dj){dj.appendChild(di.createComment(""));return !dj.getElementsByTagName("*").length});de.attributes=cd(function(dk){dk.innerHTML="<select></select>";var dj=typeof dk.lastChild.getAttribute("multiple");return dj!=="boolean"&&dj!=="string"});de.getByClassName=cd(function(dj){dj.innerHTML="<div class='hidden e'></div><div class='hidden'></div>";if(!dj.getElementsByClassName||!dj.getElementsByClassName("e").length){return false}dj.lastChild.className="e";return dj.getElementsByClassName("e").length===2});de.getByName=cd(function(dk){dk.id=c6+0;dk.innerHTML="<a name='"+c6+"'></a><div name='"+c6+"'></div>";cp.insertBefore(dk,cp.firstChild);var dj=di.getElementsByName&&di.getElementsByName(c6).length===2+di.getElementsByName(c6+0).length;de.getIdNotName=!di.getElementById(c6);cp.removeChild(dk);return dj});co.attrHandle=cd(function(dj){dj.innerHTML="<a href='#'></a>";return dj.firstChild&&typeof dj.firstChild.getAttribute!==da&&dj.firstChild.getAttribute("href")==="#"})?{}:{href:function(dj){return dj.getAttribute("href",2)},type:function(dj){return dj.getAttribute("type")}};if(de.getIdNotName){co.find.ID=function(dl,dk){if(typeof dk.getElementById!==da&&!ce){var dj=dk.getElementById(dl);return dj&&dj.parentNode?[dj]:[]}};co.filter.ID=function(dk){var dj=dk.replace(ct,c2);return function(dl){return dl.getAttribute("id")===dj}}}else{co.find.ID=function(dl,dk){if(typeof dk.getElementById!==da&&!ce){var dj=dk.getElementById(dl);return dj?dj.id===dl||typeof dj.getAttributeNode!==da&&dj.getAttributeNode("id").value===dl?[dj]:ci:[]}};co.filter.ID=function(dk){var dj=dk.replace(ct,c2);return function(dm){var dl=typeof dm.getAttributeNode!==da&&dm.getAttributeNode("id");return dl&&dl.value===dj}}}co.find.TAG=de.tagNameNoComments?function(dj,dk){if(typeof dk.getElementsByTagName!==da){return dk.getElementsByTagName(dj)}}:function(dj,dn){var dp,dm=[],dl=0,dk=dn.getElementsByTagName(dj);if(dj==="*"){while((dp=dk[dl++])){if(dp.nodeType===1){dm.push(dp)}}return dm}return dk};co.find.NAME=de.getByName&&function(dj,dk){if(typeof dk.getElementsByName!==da){return dk.getElementsByName(name)}};co.find.CLASS=de.getByClassName&&function(dk,dj){if(typeof dj.getElementsByClassName!==da&&!ce){return dj.getElementsByClassName(dk)}};dc=[];c0=[":focus"];if((de.qsa=cF(di.querySelectorAll))){cd(function(dj){dj.innerHTML="<select><option selected=''></option></select>";if(!dj.querySelectorAll("[selected]").length){c0.push("\\["+cq+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)")}if(!dj.querySelectorAll(":checked").length){c0.push(":checked")}});cd(function(dj){dj.innerHTML="<input type='hidden' i=''/>";if(dj.querySelectorAll("[i^='']").length){c0.push("[*^$]="+cq+"*(?:\"\"|'')")}if(!dj.querySelectorAll(":enabled").length){c0.push(":enabled",":disabled")}dj.querySelectorAll("*,:x");c0.push(",.*:")})}if((de.matchesSelector=cF((cb=cp.matchesSelector||cp.mozMatchesSelector||cp.webkitMatchesSelector||cp.oMatchesSelector||cp.msMatchesSelector)))){cd(function(dj){de.disconnectedMatch=cb.call(dj,"div");cb.call(dj,"[s!='']:x");dc.push("!=",cl)})}c0=new RegExp(c0.join("|"));dc=new RegExp(dc.join("|"));cG=cF(cp.contains)||cp.compareDocumentPosition?function(dk,dj){var dm=dk.nodeType===9?dk.documentElement:dk,dl=dj&&dj.parentNode;return dk===dl||!!(dl&&dl.nodeType===1&&(dm.contains?dm.contains(dl):dk.compareDocumentPosition&&dk.compareDocumentPosition(dl)&16))}:function(dk,dj){if(dj){while((dj=dj.parentNode)){if(dj===dk){return true}}}return false};cE=cp.compareDocumentPosition?function(dk,dj){var dl;if(dk===dj){cU=true;return 0}if((dl=dj.compareDocumentPosition&&dk.compareDocumentPosition&&dk.compareDocumentPosition(dj))){if(dl&1||dk.parentNode&&dk.parentNode.nodeType===11){if(dk===di||cG(cJ,dk)){return -1}if(dj===di||cG(cJ,dj)){return 1}return 0}return dl&4?-1:1}return dk.compareDocumentPosition?-1:1}:function(dk,dj){var dr,dn=0,dq=dk.parentNode,dm=dj.parentNode,dl=[dk],dp=[dj];if(dk===dj){cU=true;return 0}else{if(!dq||!dm){return dk===di?-1:dj===di?1:dq?-1:dm?1:0}else{if(dq===dm){return b7(dk,dj)}}}dr=dk;while((dr=dr.parentNode)){dl.unshift(dr)}dr=dj;while((dr=dr.parentNode)){dp.unshift(dr)}while(dl[dn]===dp[dn]){dn++}return dn?b7(dl[dn],dp[dn]):dl[dn]===cJ?-1:dp[dn]===cJ?1:0};cU=false;[0,0].sort(cE);de.detectDuplicates=cU;return cC};cw.matches=function(di,e){return cw(di,null,null,e)};cw.matchesSelector=function(dj,dl){if((dj.ownerDocument||dj)!==cC){cW(dj)}dl=dl.replace(cu,"='$1']");if(de.matchesSelector&&!ce&&(!dc||!dc.test(dl))&&!c0.test(dl)){try{var di=cb.call(dj,dl);if(di||de.disconnectedMatch||dj.document&&dj.document.nodeType!==11){return di}}catch(dk){}}return cw(dl,cC,null,[dj]).length>0};cw.contains=function(e,di){if((e.ownerDocument||e)!==cC){cW(e)}return cG(e,di)};cw.attr=function(di,e){var dj;if((di.ownerDocument||di)!==cC){cW(di)}if(!ce){e=e.toLowerCase()}if((dj=co.attrHandle[e])){return dj(di)}if(ce||de.attributes){return di.getAttribute(e)}return((dj=di.getAttributeNode(e))||di.getAttribute(e))&&di[e]===true?e:dj&&dj.specified?dj.value:null};cw.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};cw.uniqueSort=function(dj){var dk,dl=[],di=1,e=0;cU=!de.detectDuplicates;dj.sort(cE);if(cU){for(;(dk=dj[di]);di++){if(dk===dj[di-1]){e=dl.push(di)}}while(e--){dj.splice(dl[e],1)}}return dj};function b7(di,e){var dk=e&&di,dj=dk&&(~e.sourceIndex||cO)-(~di.sourceIndex||cO);if(dj){return dj}if(dk){while((dk=dk.nextSibling)){if(dk===e){return -1}}}return di?1:-1}function cx(e){return function(dj){var di=dj.nodeName.toLowerCase();return di==="input"&&dj.type===e}}function b8(e){return function(dj){var di=dj.nodeName.toLowerCase();return(di==="input"||di==="button")&&dj.type===e}}function c4(e){return ck(function(di){di=+di;return ck(function(dj,dn){var dl,dk=e([],dj.length,di),dm=dk.length;while(dm--){if(dj[(dl=dk[dm])]){dj[dl]=!(dn[dl]=dj[dl])}}})})}cI=cw.getText=function(dl){var dk,di="",dj=0,e=dl.nodeType;if(!e){for(;(dk=dl[dj]);dj++){di+=cI(dk)}}else{if(e===1||e===9||e===11){if(typeof dl.textContent==="string"){return dl.textContent}else{for(dl=dl.firstChild;dl;dl=dl.nextSibling){di+=cI(dl)}}}else{if(e===3||e===4){return dl.nodeValue}}}return di};co=cw.selectors={cacheLength:50,createPseudo:ck,match:cZ,find:{},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){e[1]=e[1].replace(ct,c2);e[3]=(e[4]||e[5]||"").replace(ct,c2);if(e[2]==="~="){e[3]=" "+e[3]+" "}return e.slice(0,4)},CHILD:function(e){e[1]=e[1].toLowerCase();if(e[1].slice(0,3)==="nth"){if(!e[3]){cw.error(e[0])}e[4]=+(e[4]?e[5]+(e[6]||1):2*(e[3]==="even"||e[3]==="odd"));e[5]=+((e[7]+e[8])||e[3]==="odd")}else{if(e[3]){cw.error(e[0])}}return e},PSEUDO:function(di){var e,dj=!di[5]&&di[2];if(cZ.CHILD.test(di[0])){return null}if(di[4]){di[2]=di[4]}else{if(dj&&cQ.test(dj)&&(e=cg(dj,true))&&(e=dj.indexOf(")",dj.length-e)-dj.length)){di[0]=di[0].slice(0,e);di[2]=dj.slice(0,e)}}return di.slice(0,3)}},filter:{TAG:function(e){if(e==="*"){return function(){return true}}e=e.replace(ct,c2).toLowerCase();return function(di){return di.nodeName&&di.nodeName.toLowerCase()===e}},CLASS:function(e){var di=b6[e+" "];return di||(di=new RegExp("(^|"+cq+")"+e+"("+cq+"|$)"))&&b6(e,function(dj){return di.test(dj.className||(typeof dj.getAttribute!==da&&dj.getAttribute("class"))||"")})},ATTR:function(dj,di,e){return function(dl){var dk=cw.attr(dl,dj);if(dk==null){return di==="!="}if(!di){return true}dk+="";return di==="="?dk===e:di==="!="?dk!==e:di==="^="?e&&dk.indexOf(e)===0:di==="*="?e&&dk.indexOf(e)>-1:di==="$="?e&&dk.slice(-e.length)===e:di==="~="?(" "+dk+" ").indexOf(e)>-1:di==="|="?dk===e||dk.slice(0,e.length+1)===e+"-":false}},CHILD:function(di,dl,dk,dm,dj){var dp=di.slice(0,3)!=="nth",e=di.slice(-4)!=="last",dn=dl==="of-type";return dm===1&&dj===0?function(dq){return !!dq.parentNode}:function(dw,du,dz){var dq,dC,dx,dB,dy,dt,dv=dp!==e?"nextSibling":"previousSibling",dA=dw.parentNode,ds=dn&&dw.nodeName.toLowerCase(),dr=!dz&&!dn;if(dA){if(dp){while(dv){dx=dw;while((dx=dx[dv])){if(dn?dx.nodeName.toLowerCase()===ds:dx.nodeType===1){return false}}dt=dv=di==="only"&&!dt&&"nextSibling"}return true}dt=[e?dA.firstChild:dA.lastChild];if(e&&dr){dC=dA[c6]||(dA[c6]={});dq=dC[di]||[];dy=dq[0]===df&&dq[1];dB=dq[0]===df&&dq[2];dx=dy&&dA.childNodes[dy];while((dx=++dy&&dx&&dx[dv]||(dB=dy=0)||dt.pop())){if(dx.nodeType===1&&++dB&&dx===dw){dC[di]=[df,dy,dB];break}}}else{if(dr&&(dq=(dw[c6]||(dw[c6]={}))[di])&&dq[0]===df){dB=dq[1]}else{while((dx=++dy&&dx&&dx[dv]||(dB=dy=0)||dt.pop())){if((dn?dx.nodeName.toLowerCase()===ds:dx.nodeType===1)&&++dB){if(dr){(dx[c6]||(dx[c6]={}))[di]=[df,dB]}if(dx===dw){break}}}}}dB-=dj;return dB===dm||(dB%dm===0&&dB/dm>=0)}}},PSEUDO:function(dk,dj){var e,di=co.pseudos[dk]||co.setFilters[dk.toLowerCase()]||cw.error("unsupported pseudo: "+dk);if(di[c6]){return di(dj)}if(di.length>1){e=[dk,dk,"",dj];return co.setFilters.hasOwnProperty(dk.toLowerCase())?ck(function(dn,dq){var dm,dl=di(dn,dj),dp=dl.length;while(dp--){dm=ca.call(dn,dl[dp]);dn[dm]=!(dq[dm]=dl[dp])}}):function(dl){return di(dl,0,e)}}return di}},pseudos:{not:ck(function(e){var di=[],dj=[],dk=cT(e.replace(cs,"$1"));return dk[c6]?ck(function(dm,ds,dq,dn){var dr,dl=dk(dm,null,dn,[]),dp=dm.length;while(dp--){if((dr=dl[dp])){dm[dp]=!(ds[dp]=dr)}}}):function(dn,dm,dl){di[0]=dn;dk(di,null,dl,dj);return !dj.pop()}}),has:ck(function(e){return function(di){return cw(e,di).length>0}}),contains:ck(function(e){return function(di){return(di.textContent||di.innerText||cI(di)).indexOf(e)>-1}}),lang:ck(function(e){if(!cR.test(e||"")){cw.error("unsupported lang: "+e)}e=e.replace(ct,c2).toLowerCase();return function(dj){var di;do{if((di=ce?dj.getAttribute("xml:lang")||dj.getAttribute("lang"):dj.lang)){di=di.toLowerCase();return di===e||di.indexOf(e+"-")===0}}while((dj=dj.parentNode)&&dj.nodeType===1);return false}}),target:function(e){var di=db.location&&db.location.hash;return di&&di.slice(1)===e.id},root:function(e){return e===cp},focus:function(e){return e===cC.activeElement&&(!cC.hasFocus||cC.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===false},disabled:function(e){return e.disabled===true},checked:function(e){var di=e.nodeName.toLowerCase();return(di==="input"&&!!e.checked)||(di==="option"&&!!e.selected)},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling){if(e.nodeName>"@"||e.nodeType===3||e.nodeType===4){return false}}return true},parent:function(e){return !co.pseudos.empty(e)},header:function(e){return cm.test(e.nodeName)},input:function(e){return b9.test(e.nodeName)},button:function(di){var e=di.nodeName.toLowerCase();return e==="input"&&di.type==="button"||e==="button"},text:function(di){var e;return di.nodeName.toLowerCase()==="input"&&di.type==="text"&&((e=di.getAttribute("type"))==null||e.toLowerCase()===di.type)},first:c4(function(){return[0]}),last:c4(function(e,di){return[di-1]}),eq:c4(function(e,dj,di){return[di<0?di+dj:di]}),even:c4(function(e,dj){var di=0;for(;di<dj;di+=2){e.push(di)}return e}),odd:c4(function(e,dj){var di=1;for(;di<dj;di+=2){e.push(di)}return e}),lt:c4(function(e,dk,dj){var di=dj<0?dj+dk:dj;for(;--di>=0;){e.push(di)}return e}),gt:c4(function(e,dk,dj){var di=dj<0?dj+dk:dj;for(;++di<dk;){e.push(di)}return e})}};for(cy in {radio:true,checkbox:true,file:true,password:true,image:true}){co.pseudos[cy]=cx(cy)}for(cy in {submit:true,reset:true}){co.pseudos[cy]=b8(cy)}function cg(dl,dr){var di,dm,dp,dq,dn,dj,e,dk=c5[dl+" "];if(dk){return dr?0:dk.slice(0)}dn=dl;dj=[];e=co.preFilter;while(dn){if(!di||(dm=cv.exec(dn))){if(dm){dn=dn.slice(dm[0].length)||dn}dj.push(dp=[])}di=false;if((dm=cB.exec(dn))){di=dm.shift();dp.push({value:di,type:dm[0].replace(cs," ")});dn=dn.slice(di.length)}for(dq in co.filter){if((dm=cZ[dq].exec(dn))&&(!e[dq]||(dm=e[dq](dm)))){di=dm.shift();dp.push({value:di,type:dq,matches:dm});dn=dn.slice(di.length)}}if(!di){break}}return dr?dn.length:dn?cw.error(dl):c5(dl,dj).slice(0)}function ch(dk){var dj=0,di=dk.length,e="";for(;dj<di;dj++){e+=dk[dj].value}return e}function cr(dl,dj,dk){var e=dj.dir,dm=dk&&e==="parentNode",di=c1++;return dj.first?function(dq,dp,dn){while((dq=dq[e])){if(dq.nodeType===1||dm){return dl(dq,dp,dn)}}}:function(ds,dq,dp){var du,dn,dr,dt=df+" "+di;if(dp){while((ds=ds[e])){if(ds.nodeType===1||dm){if(dl(ds,dq,dp)){return true}}}}else{while((ds=ds[e])){if(ds.nodeType===1||dm){dr=ds[c6]||(ds[c6]={});if((dn=dr[e])&&dn[0]===dt){if((du=dn[1])===true||du===cc){return du===true}}else{dn=dr[e]=[dt];dn[1]=dl(ds,dq,dp)||cc;if(dn[1]===true){return true}}}}}}}function dg(e){return e.length>1?function(dl,dk,di){var dj=e.length;while(dj--){if(!e[dj](dl,dk,di)){return false}}return true}:e[0]}function cY(e,di,dj,dk,dn){var dl,dr=[],dm=0,dp=e.length,dq=di!=null;for(;dm<dp;dm++){if((dl=e[dm])){if(!dj||dj(dl,dk,dn)){dr.push(dl);if(dq){di.push(dm)}}}}return dr}function cf(dj,di,dl,dk,dm,e){if(dk&&!dk[c6]){dk=cf(dk)}if(dm&&!dm[c6]){dm=cf(dm,e)}return ck(function(dy,dv,dq,dx){var dA,dw,ds,dr=[],dz=[],dp=dv.length,dn=dy||cz(di||"*",dq.nodeType?[dq]:dq,[]),dt=dj&&(dy||!di)?cY(dn,dr,dj,dq,dx):dn,du=dl?dm||(dy?dj:dp||dk)?[]:dv:dt;if(dl){dl(dt,du,dq,dx)}if(dk){dA=cY(du,dz);dk(dA,[],dq,dx);dw=dA.length;while(dw--){if((ds=dA[dw])){du[dz[dw]]=!(dt[dz[dw]]=ds)}}}if(dy){if(dm||dj){if(dm){dA=[];dw=du.length;while(dw--){if((ds=du[dw])){dA.push((dt[dw]=ds))}}dm(null,(du=[]),dA,dx)}dw=du.length;while(dw--){if((ds=du[dw])&&(dA=dm?ca.call(dy,ds):dr[dw])>-1){dy[dA]=!(dv[dA]=ds)}}}}else{du=cY(du===dv?du.splice(dp,du.length):du);if(dm){dm(null,dv,du,dx)}else{b5.apply(dv,du)}}})}function c7(dn){var di,dl,dj,dm=dn.length,dr=co.relative[dn[0].type],ds=dr||co.relative[" "],dk=dr?1:0,dp=cr(function(dt){return dt===di},ds,true),dq=cr(function(dt){return ca.call(di,dt)>-1},ds,true),e=[function(dv,du,dt){return(!dr&&(dt||du!==dh))||((di=du).nodeType?dp(dv,du,dt):dq(dv,du,dt))}];for(;dk<dm;dk++){if((dl=co.relative[dn[dk].type])){e=[cr(dg(e),dl)]}else{dl=co.filter[dn[dk].type].apply(null,dn[dk].matches);if(dl[c6]){dj=++dk;for(;dj<dm;dj++){if(co.relative[dn[dj].type]){break}}return cf(dk>1&&dg(e),dk>1&&ch(dn.slice(0,dk-1)).replace(cs,"$1"),dl,dk<dj&&c7(dn.slice(dk,dj)),dj<dm&&c7((dn=dn.slice(dj))),dj<dm&&ch(dn))}e.push(dl)}}return dg(e)}function cV(dk,dj){var dm=0,e=dj.length>0,dl=dk.length>0,di=function(dx,dr,dw,dv,dD){var ds,dt,dy,dC=[],dB=0,du="0",dn=dx&&[],dz=dD!=null,dA=dh,dq=dx||dl&&co.find.TAG("*",dD&&dr.parentNode||dr),dp=(df+=dA==null?1:Math.random()||0.1);if(dz){dh=dr!==cC&&dr;cc=dm}for(;(ds=dq[du])!=null;du++){if(dl&&ds){dt=0;while((dy=dk[dt++])){if(dy(ds,dr,dw)){dv.push(ds);break}}if(dz){df=dp;cc=++dm}}if(e){if((ds=!dy&&ds)){dB--}if(dx){dn.push(ds)}}}dB+=du;if(e&&du!==dB){dt=0;while((dy=dj[dt++])){dy(dn,dC,dr,dw)}if(dx){if(dB>0){while(du--){if(!(dn[du]||dC[du])){dC[du]=c9.call(dv)}}}dC=cY(dC)}b5.apply(dv,dC);if(dz&&!dx&&dC.length>0&&(dB+dj.length)>1){cw.uniqueSort(dv)}}if(dz){df=dp;dh=dA}return dn};return e?ck(di):di}cT=cw.compile=function(e,dm){var dj,di=[],dl=[],dk=cH[e+" "];if(!dk){if(!dm){dm=cg(e)}dj=dm.length;while(dj--){dk=c7(dm[dj]);if(dk[c6]){di.push(dk)}else{dl.push(dk)}}dk=cH(e,cV(dl,di))}return dk};function cz(di,dl,dk){var dj=0,e=dl.length;for(;dj<e;dj++){cw(di,dl[dj],dk)}return dk}function dd(dj,e,dk,dn){var dl,dq,di,dr,dp,dm=cg(dj);if(!dn){if(dm.length===1){dq=dm[0]=dm[0].slice(0);if(dq.length>2&&(di=dq[0]).type==="ID"&&e.nodeType===9&&!ce&&co.relative[dq[1].type]){e=co.find.ID(di.matches[0].replace(ct,c2),e)[0];if(!e){return dk}dj=dj.slice(dq.shift().value.length)}dl=cZ.needsContext.test(dj)?0:dq.length;while(dl--){di=dq[dl];if(co.relative[(dr=di.type)]){break}if((dp=co.find[dr])){if((dn=dp(di.matches[0].replace(ct,c2),cX.test(dq[0].type)&&e.parentNode||e))){dq.splice(dl,1);dj=dn.length&&ch(dq);if(!dj){b5.apply(dk,cn.call(dn,0));return dk}break}}}}}cT(dj,dm)(dn,e,ce,dk,cX.test(dj));return dk}co.pseudos.nth=co.pseudos.eq;function cS(){}co.filters=cS.prototype=co.pseudos;co.setFilters=new cS();cW();cw.attr=bK.attr;bK.find=cw;bK.expr=cw.selectors;bK.expr[":"]=bK.expr.pseudos;bK.unique=cw.uniqueSort;bK.text=cw.getText;bK.isXMLDoc=cw.isXML;bK.contains=cw.contains})(a3);var ak=/Until$/,bu=/^(?:parents|prev(?:Until|All))/,ao=/^.[^:#\[\.,]*$/,z=bK.expr.match.needsContext,by={children:true,contents:true,next:true,prev:true};bK.fn.extend({find:function(b4){var b7,b6,b5,e=this.length;if(typeof b4!=="string"){b5=this;return this.pushStack(bK(b4).filter(function(){for(b7=0;b7<e;b7++){if(bK.contains(b5[b7],this)){return true}}}))}b6=[];for(b7=0;b7<e;b7++){bK.find(b4,this[b7],b6)}b6=this.pushStack(e>1?bK.unique(b6):b6);b6.selector=(this.selector?this.selector+" ":"")+b4;return b6},has:function(b6){var b5,b4=bK(b6,this),e=b4.length;return this.filter(function(){for(b5=0;b5<e;b5++){if(bK.contains(this,b4[b5])){return true}}})},not:function(e){return this.pushStack(aP(this,e,false))},filter:function(e){return this.pushStack(aP(this,e,true))},is:function(e){return !!e&&(typeof e==="string"?z.test(e)?bK(e,this.context).index(this[0])>=0:bK.filter(e,this).length>0:this.filter(e).length>0)},closest:function(b7,b6){var b8,b5=0,e=this.length,b4=[],b9=z.test(b7)||typeof b7!=="string"?bK(b7,b6||this.context):0;for(;b5<e;b5++){b8=this[b5];while(b8&&b8.ownerDocument&&b8!==b6&&b8.nodeType!==11){if(b9?b9.index(b8)>-1:bK.find.matchesSelector(b8,b7)){b4.push(b8);break}b8=b8.parentNode}}return this.pushStack(b4.length>1?bK.unique(b4):b4)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.first().prevAll().length:-1}if(typeof e==="string"){return bK.inArray(this[0],bK(e))}return bK.inArray(e.jquery?e[0]:e,this)},add:function(e,b4){var b6=typeof e==="string"?bK(e,b4):bK.makeArray(e&&e.nodeType?[e]:e),b5=bK.merge(this.get(),b6);return this.pushStack(bK.unique(b5))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}});bK.fn.andSelf=bK.fn.addBack;function aY(b4,e){do{b4=b4[e]}while(b4&&b4.nodeType!==1);return b4}bK.each({parent:function(b4){var e=b4.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return bK.dir(e,"parentNode")},parentsUntil:function(b4,e,b5){return bK.dir(b4,"parentNode",b5)},next:function(e){return aY(e,"nextSibling")},prev:function(e){return aY(e,"previousSibling")},nextAll:function(e){return bK.dir(e,"nextSibling")},prevAll:function(e){return bK.dir(e,"previousSibling")},nextUntil:function(b4,e,b5){return bK.dir(b4,"nextSibling",b5)},prevUntil:function(b4,e,b5){return bK.dir(b4,"previousSibling",b5)},siblings:function(e){return bK.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return bK.sibling(e.firstChild)},contents:function(e){return bK.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:bK.merge([],e.childNodes)}},function(e,b4){bK.fn[e]=function(b7,b5){var b6=bK.map(this,b4,b7);if(!ak.test(e)){b5=b7}if(b5&&typeof b5==="string"){b6=bK.filter(b5,b6)}b6=this.length>1&&!by[e]?bK.unique(b6):b6;if(this.length>1&&bu.test(e)){b6=b6.reverse()}return this.pushStack(b6)}});bK.extend({filter:function(b5,e,b4){if(b4){b5=":not("+b5+")"}return e.length===1?bK.find.matchesSelector(e[0],b5)?[e[0]]:[]:bK.find.matches(b5,e)},dir:function(b5,b4,b7){var e=[],b6=b5[b4];while(b6&&b6.nodeType!==9&&(b7===aH||b6.nodeType!==1||!bK(b6).is(b7))){if(b6.nodeType===1){e.push(b6)}b6=b6[b4]}return e},sibling:function(b5,b4){var e=[];for(;b5;b5=b5.nextSibling){if(b5.nodeType===1&&b5!==b4){e.push(b5)}}return e}});function aP(b6,b5,e){b5=b5||0;if(bK.isFunction(b5)){return bK.grep(b6,function(b8,b7){var b9=!!b5.call(b8,b7,b8);return b9===e})}else{if(b5.nodeType){return bK.grep(b6,function(b7){return(b7===b5)===e})}else{if(typeof b5==="string"){var b4=bK.grep(b6,function(b7){return b7.nodeType===1});if(ao.test(b5)){return bK.filter(b5,b4,!e)}else{b5=bK.filter(b5,b4)}}}}return bK.grep(b6,function(b7){return(bK.inArray(b7,b5)>=0)===e})}function B(e){var b5=d.split("|"),b4=e.createDocumentFragment();if(b4.createElement){while(b5.length){b4.createElement(b5.pop())}}return b4}var d="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",aB=/ jQuery\d+="(?:null|\d+)"/g,K=new RegExp("<(?:"+d+")[\\s/>]","i"),b3=/^\s+/,aE=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,m=/<([\w:]+)/,bY=/<tbody/i,J=/<|&#?\w+;/,am=/<(?:script|style|link)/i,r=/^(?:checkbox|radio)$/i,bV=/checked\s*(?:[^=]|=\s*.checked.)/i,bA=/^$|\/(?:java|ecma)script/i,at=/^true\/(.*)/,aL=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,U={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:bK.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},aT=B(l),j=aT.appendChild(l.createElement("div"));U.optgroup=U.option;U.tbody=U.tfoot=U.colgroup=U.caption=U.thead;U.th=U.td;bK.fn.extend({text:function(e){return bK.access(this,function(b4){return b4===aH?bK.text(this):this.empty().append((this[0]&&this[0].ownerDocument||l).createTextNode(b4))},null,e,arguments.length)},wrapAll:function(e){if(bK.isFunction(e)){return this.each(function(b5){bK(this).wrapAll(e.call(this,b5))})}if(this[0]){var b4=bK(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){b4.insertBefore(this[0])}b4.map(function(){var b5=this;while(b5.firstChild&&b5.firstChild.nodeType===1){b5=b5.firstChild}return b5}).append(this)}return this},wrapInner:function(e){if(bK.isFunction(e)){return this.each(function(b4){bK(this).wrapInner(e.call(this,b4))})}return this.each(function(){var b4=bK(this),b5=b4.contents();if(b5.length){b5.wrapAll(e)}else{b4.append(e)}})},wrap:function(e){var b4=bK.isFunction(e);return this.each(function(b5){bK(this).wrapAll(b4?e.call(this,b5):e)})},unwrap:function(){return this.parent().each(function(){if(!bK.nodeName(this,"body")){bK(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){this.insertBefore(e,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(e){if(this.parentNode){this.parentNode.insertBefore(e,this)}})},after:function(){return this.domManip(arguments,false,function(e){if(this.parentNode){this.parentNode.insertBefore(e,this.nextSibling)}})},remove:function(e,b6){var b5,b4=0;for(;(b5=this[b4])!=null;b4++){if(!e||bK.filter(e,[b5]).length>0){if(!b6&&b5.nodeType===1){bK.cleanData(k(b5))}if(b5.parentNode){if(b6&&bK.contains(b5.ownerDocument,b5)){bt(k(b5,"script"))}b5.parentNode.removeChild(b5)}}}return this},empty:function(){var b4,e=0;for(;(b4=this[e])!=null;e++){if(b4.nodeType===1){bK.cleanData(k(b4,false))}while(b4.firstChild){b4.removeChild(b4.firstChild)}if(b4.options&&bK.nodeName(b4,"select")){b4.options.length=0}}return this},clone:function(b4,e){b4=b4==null?false:b4;e=e==null?b4:e;return this.map(function(){return bK.clone(this,b4,e)})},html:function(e){return bK.access(this,function(b7){var b6=this[0]||{},b5=0,b4=this.length;if(b7===aH){return b6.nodeType===1?b6.innerHTML.replace(aB,""):aH}if(typeof b7==="string"&&!am.test(b7)&&(bK.support.htmlSerialize||!K.test(b7))&&(bK.support.leadingWhitespace||!b3.test(b7))&&!U[(m.exec(b7)||["",""])[1].toLowerCase()]){b7=b7.replace(aE,"<$1></$2>");try{for(;b5<b4;b5++){b6=this[b5]||{};if(b6.nodeType===1){bK.cleanData(k(b6,false));b6.innerHTML=b7}}b6=0}catch(b8){}}if(b6){this.empty().append(b7)}},null,e,arguments.length)},replaceWith:function(b4){var e=bK.isFunction(b4);if(!e&&typeof b4!=="string"){b4=bK(b4).not(this).detach()}return this.domManip([b4],true,function(b7){var b6=this.nextSibling,b5=this.parentNode;if(b5){bK(this).remove();b5.insertBefore(b7,b6)}})},detach:function(e){return this.remove(e,true)},domManip:function(cb,ch,cg){cb=aJ.apply([],cb);var b9,b5,e,b7,ce,ca,b8=0,b6=this.length,cd=this,cf=b6-1,cc=cb[0],b4=bK.isFunction(cc);if(b4||!(b6<=1||typeof cc!=="string"||bK.support.checkClone||!bV.test(cc))){return this.each(function(cj){var ci=cd.eq(cj);if(b4){cb[0]=cc.call(this,cj,ch?ci.html():aH)}ci.domManip(cb,ch,cg)})}if(b6){ca=bK.buildFragment(cb,this[0].ownerDocument,false,this);b9=ca.firstChild;if(ca.childNodes.length===1){ca=b9}if(b9){ch=ch&&bK.nodeName(b9,"tr");b7=bK.map(k(ca,"script"),u);e=b7.length;for(;b8<b6;b8++){b5=ca;if(b8!==cf){b5=bK.clone(b5,true,true);if(e){bK.merge(b7,k(b5,"script"))}}cg.call(ch&&bK.nodeName(this[b8],"table")?y(this[b8],"tbody"):this[b8],b5,b8)}if(e){ce=b7[b7.length-1].ownerDocument;bK.map(b7,bd);for(b8=0;b8<e;b8++){b5=b7[b8];if(bA.test(b5.type||"")&&!bK._data(b5,"globalEval")&&bK.contains(ce,b5)){if(b5.src){bK.ajax({url:b5.src,type:"GET",dataType:"script",async:false,global:false,"throws":true})}else{bK.globalEval((b5.text||b5.textContent||b5.innerHTML||"").replace(aL,""))}}}}ca=b9=null}}return this}});function y(b4,e){return b4.getElementsByTagName(e)[0]||b4.appendChild(b4.ownerDocument.createElement(e))}function u(b4){var e=b4.getAttributeNode("type");b4.type=(e&&e.specified)+"/"+b4.type;return b4}function bd(b4){var e=at.exec(b4.type);if(e){b4.type=e[1]}else{b4.removeAttribute("type")}return b4}function bt(e,b5){var b6,b4=0;for(;(b6=e[b4])!=null;b4++){bK._data(b6,"globalEval",!b5||bK._data(b5[b4],"globalEval"))}}function au(ca,b4){if(b4.nodeType!==1||!bK.hasData(ca)){return}var b7,b6,e,b9=bK._data(ca),b8=bK._data(b4,b9),b5=b9.events;if(b5){delete b8.handle;b8.events={};for(b7 in b5){for(b6=0,e=b5[b7].length;b6<e;b6++){bK.event.add(b4,b7,b5[b7][b6])}}}if(b8.data){b8.data=bK.extend({},b8.data)}}function R(b7,b4){var b8,b6,b5;if(b4.nodeType!==1){return}b8=b4.nodeName.toLowerCase();if(!bK.support.noCloneEvent&&b4[bK.expando]){b5=bK._data(b4);for(b6 in b5.events){bK.removeEvent(b4,b6,b5.handle)}b4.removeAttribute(bK.expando)}if(b8==="script"&&b4.text!==b7.text){u(b4).text=b7.text;bd(b4)}else{if(b8==="object"){if(b4.parentNode){b4.outerHTML=b7.outerHTML}if(bK.support.html5Clone&&(b7.innerHTML&&!bK.trim(b4.innerHTML))){b4.innerHTML=b7.innerHTML}}else{if(b8==="input"&&r.test(b7.type)){b4.defaultChecked=b4.checked=b7.checked;if(b4.value!==b7.value){b4.value=b7.value}}else{if(b8==="option"){b4.defaultSelected=b4.selected=b7.defaultSelected}else{if(b8==="input"||b8==="textarea"){b4.defaultValue=b7.defaultValue}}}}}}bK.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,b4){bK.fn[e]=function(b5){var b6,b8=0,b7=[],ca=bK(b5),b9=ca.length-1;for(;b8<=b9;b8++){b6=b8===b9?this:this.clone(true);bK(ca[b8])[b4](b6);ap.apply(b7,b6.get())}return this.pushStack(b7)}});function k(b6,e){var b4,b7,b5=0,b8=typeof b6.getElementsByTagName!==aD?b6.getElementsByTagName(e||"*"):typeof b6.querySelectorAll!==aD?b6.querySelectorAll(e||"*"):aH;if(!b8){for(b8=[],b4=b6.childNodes||b6;(b7=b4[b5])!=null;b5++){if(!e||bK.nodeName(b7,e)){b8.push(b7)}else{bK.merge(b8,k(b7,e))}}}return e===aH||e&&bK.nodeName(b6,e)?bK.merge([b6],b8):b8}function bW(e){if(r.test(e.type)){e.defaultChecked=e.checked}}bK.extend({clone:function(b4,b6,e){var b8,b5,cb,b7,b9,ca=bK.contains(b4.ownerDocument,b4);if(bK.support.html5Clone||bK.isXMLDoc(b4)||!K.test("<"+b4.nodeName+">")){cb=b4.cloneNode(true)}else{j.innerHTML=b4.outerHTML;j.removeChild(cb=j.firstChild)}if((!bK.support.noCloneEvent||!bK.support.noCloneChecked)&&(b4.nodeType===1||b4.nodeType===11)&&!bK.isXMLDoc(b4)){b8=k(cb);b9=k(b4);for(b7=0;(b5=b9[b7])!=null;++b7){if(b8[b7]){R(b5,b8[b7])}}}if(b6){if(e){b9=b9||k(b4);b8=b8||k(cb);for(b7=0;(b5=b9[b7])!=null;b7++){au(b5,b8[b7])}}else{au(b4,cb)}}b8=k(cb,"script");if(b8.length>0){bt(b8,!ca&&k(b4,"script"))}b8=b9=b5=null;return cb},buildFragment:function(b4,b6,cb,cg){var cc,b8,ca,cf,ch,ce,b5,b9=b4.length,b7=B(b6),e=[],cd=0;for(;cd<b9;cd++){b8=b4[cd];if(b8||b8===0){if(bK.type(b8)==="object"){bK.merge(e,b8.nodeType?[b8]:b8)}else{if(!J.test(b8)){e.push(b6.createTextNode(b8))}else{cf=cf||b7.appendChild(b6.createElement("div"));ch=(m.exec(b8)||["",""])[1].toLowerCase();b5=U[ch]||U._default;cf.innerHTML=b5[1]+b8.replace(aE,"<$1></$2>")+b5[2];cc=b5[0];while(cc--){cf=cf.lastChild}if(!bK.support.leadingWhitespace&&b3.test(b8)){e.push(b6.createTextNode(b3.exec(b8)[0]))}if(!bK.support.tbody){b8=ch==="table"&&!bY.test(b8)?cf.firstChild:b5[1]==="<table>"&&!bY.test(b8)?cf:0;cc=b8&&b8.childNodes.length;while(cc--){if(bK.nodeName((ce=b8.childNodes[cc]),"tbody")&&!ce.childNodes.length){b8.removeChild(ce)}}}bK.merge(e,cf.childNodes);cf.textContent="";while(cf.firstChild){cf.removeChild(cf.firstChild)}cf=b7.lastChild}}}}if(cf){b7.removeChild(cf)}if(!bK.support.appendChecked){bK.grep(k(e,"input"),bW)}cd=0;while((b8=e[cd++])){if(cg&&bK.inArray(b8,cg)!==-1){continue}ca=bK.contains(b8.ownerDocument,b8);cf=k(b7.appendChild(b8),"script");if(ca){bt(cf)}if(cb){cc=0;while((b8=cf[cc++])){if(bA.test(b8.type||"")){cb.push(b8)}}}}cf=null;return b7},cleanData:function(b4,cc){var b6,cb,b5,b7,b8=0,cd=bK.expando,e=bK.cache,b9=bK.support.deleteExpando,ca=bK.event.special;for(;(b6=b4[b8])!=null;b8++){if(cc||bK.acceptData(b6)){b5=b6[cd];b7=b5&&e[b5];if(b7){if(b7.events){for(cb in b7.events){if(ca[cb]){bK.event.remove(b6,cb)}else{bK.removeEvent(b6,cb,b7.handle)}}}if(e[b5]){delete e[b5];if(b9){delete b6[cd]}else{if(typeof b6.removeAttribute!==aD){b6.removeAttribute(cd)}else{b6[cd]=null}}a7.push(b5)}}}}}});var aF,bp,F,bh=/alpha\([^)]*\)/i,aU=/opacity\s*=\s*([^)]*)/,bo=/^(top|right|bottom|left)$/,G=/^(none|table(?!-c[ea]).+)/,aZ=/^margin/,ba=new RegExp("^("+bB+")(.*)$","i"),X=new RegExp("^("+bB+")(?!px)[a-z%]+$","i"),T=new RegExp("^([+-])=("+bB+")","i"),bk={BODY:"block"},bc={position:"absolute",visibility:"hidden",display:"block"},bD={letterSpacing:0,fontWeight:400},bU=["Top","Right","Bottom","Left"],aw=["Webkit","O","Moz","ms"];function b(b6,b4){if(b4 in b6){return b4}var b7=b4.charAt(0).toUpperCase()+b4.slice(1),e=b4,b5=aw.length;while(b5--){b4=aw[b5]+b7;if(b4 in b6){return b4}}return e}function Q(b4,e){b4=e||b4;return bK.css(b4,"display")==="none"||!bK.contains(b4.ownerDocument,b4)}function p(b9,e){var ca,b7,b8,b4=[],b5=0,b6=b9.length;for(;b5<b6;b5++){b7=b9[b5];if(!b7.style){continue}b4[b5]=bK._data(b7,"olddisplay");ca=b7.style.display;if(e){if(!b4[b5]&&ca==="none"){b7.style.display=""}if(b7.style.display===""&&Q(b7)){b4[b5]=bK._data(b7,"olddisplay",bF(b7.nodeName))}}else{if(!b4[b5]){b8=Q(b7);if(ca&&ca!=="none"||!b8){bK._data(b7,"olddisplay",b8?ca:bK.css(b7,"display"))}}}}for(b5=0;b5<b6;b5++){b7=b9[b5];if(!b7.style){continue}if(!e||b7.style.display==="none"||b7.style.display===""){b7.style.display=e?b4[b5]||"":"none"}}return b9}bK.fn.extend({css:function(e,b4){return bK.access(this,function(b9,b6,ca){var b5,b8,cb={},b7=0;if(bK.isArray(b6)){b8=bp(b9);b5=b6.length;for(;b7<b5;b7++){cb[b6[b7]]=bK.css(b9,b6[b7],false,b8)}return cb}return ca!==aH?bK.style(b9,b6,ca):bK.css(b9,b6)},e,b4,arguments.length>1)},show:function(){return p(this,true)},hide:function(){return p(this)},toggle:function(b4){var e=typeof b4==="boolean";return this.each(function(){if(e?b4:Q(this)){bK(this).show()}else{bK(this).hide()}})}});bK.extend({cssHooks:{opacity:{get:function(b5,b4){if(b4){var e=F(b5,"opacity");return e===""?"1":e}}}},cssNumber:{columnCount:true,fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":bK.support.cssFloat?"cssFloat":"styleFloat"},style:function(b6,b5,cc,b7){if(!b6||b6.nodeType===3||b6.nodeType===8||!b6.style){return}var ca,cb,cd,b8=bK.camelCase(b5),b4=b6.style;b5=bK.cssProps[b8]||(bK.cssProps[b8]=b(b4,b8));cd=bK.cssHooks[b5]||bK.cssHooks[b8];if(cc!==aH){cb=typeof cc;if(cb==="string"&&(ca=T.exec(cc))){cc=(ca[1]+1)*ca[2]+parseFloat(bK.css(b6,b5));cb="number"}if(cc==null||cb==="number"&&isNaN(cc)){return}if(cb==="number"&&!bK.cssNumber[b8]){cc+="px"}if(!bK.support.clearCloneStyle&&cc===""&&b5.indexOf("background")===0){b4[b5]="inherit"}if(!cd||!("set" in cd)||(cc=cd.set(b6,cc,b7))!==aH){try{b4[b5]=cc}catch(b9){}}}else{if(cd&&"get" in cd&&(ca=cd.get(b6,false,b7))!==aH){return ca}return b4[b5]}},css:function(b9,b7,b4,b8){var b6,ca,e,b5=bK.camelCase(b7);b7=bK.cssProps[b5]||(bK.cssProps[b5]=b(b9.style,b5));e=bK.cssHooks[b7]||bK.cssHooks[b5];if(e&&"get" in e){ca=e.get(b9,true,b4)}if(ca===aH){ca=F(b9,b7,b8)}if(ca==="normal"&&b7 in bD){ca=bD[b7]}if(b4===""||b4){b6=parseFloat(ca);return b4===true||bK.isNumeric(b6)?b6||0:ca}return ca},swap:function(b8,b7,b9,b6){var b5,b4,e={};for(b4 in b7){e[b4]=b8.style[b4];b8.style[b4]=b7[b4]}b5=b9.apply(b8,b6||[]);for(b4 in b7){b8.style[b4]=e[b4]}return b5}});if(a3.getComputedStyle){bp=function(e){return a3.getComputedStyle(e,null)};F=function(b7,b5,b9){var b6,b4,cb,b8=b9||bp(b7),ca=b8?b8.getPropertyValue(b5)||b8[b5]:aH,e=b7.style;if(b8){if(ca===""&&!bK.contains(b7.ownerDocument,b7)){ca=bK.style(b7,b5)}if(X.test(ca)&&aZ.test(b5)){b6=e.width;b4=e.minWidth;cb=e.maxWidth;e.minWidth=e.maxWidth=e.width=ca;ca=b8.width;e.width=b6;e.minWidth=b4;e.maxWidth=cb}}return ca}}else{if(l.documentElement.currentStyle){bp=function(e){return e.currentStyle};F=function(b6,b4,b9){var b5,b8,ca,b7=b9||bp(b6),cb=b7?b7[b4]:aH,e=b6.style;if(cb==null&&e&&e[b4]){cb=e[b4]}if(X.test(cb)&&!bo.test(b4)){b5=e.left;b8=b6.runtimeStyle;ca=b8&&b8.left;if(ca){b8.left=b6.currentStyle.left}e.left=b4==="fontSize"?"1em":cb;cb=e.pixelLeft+"px";e.left=b5;if(ca){b8.left=ca}}return cb===""?"auto":cb}}}function aK(e,b5,b6){var b4=ba.exec(b5);return b4?Math.max(0,b4[1]-(b6||0))+(b4[2]||"px"):b5}function ax(b7,b4,e,b9,b6){var b5=e===(b9?"border":"content")?4:b4==="width"?1:0,b8=0;for(;b5<4;b5+=2){if(e==="margin"){b8+=bK.css(b7,e+bU[b5],true,b6)}if(b9){if(e==="content"){b8-=bK.css(b7,"padding"+bU[b5],true,b6)}if(e!=="margin"){b8-=bK.css(b7,"border"+bU[b5]+"Width",true,b6)}}else{b8+=bK.css(b7,"padding"+bU[b5],true,b6);if(e!=="padding"){b8+=bK.css(b7,"border"+bU[b5]+"Width",true,b6)}}}return b8}function v(b7,b4,e){var b6=true,b8=b4==="width"?b7.offsetWidth:b7.offsetHeight,b5=bp(b7),b9=bK.support.boxSizing&&bK.css(b7,"boxSizing",false,b5)==="border-box";if(b8<=0||b8==null){b8=F(b7,b4,b5);if(b8<0||b8==null){b8=b7.style[b4]}if(X.test(b8)){return b8}b6=b9&&(bK.support.boxSizingReliable||b8===b7.style[b4]);b8=parseFloat(b8)||0}return(b8+ax(b7,b4,e||(b9?"border":"content"),b6,b5))+"px"}function bF(b5){var b4=l,e=bk[b5];if(!e){e=a2(b5,b4);if(e==="none"||!e){aF=(aF||bK("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(b4.documentElement);b4=(aF[0].contentWindow||aF[0].contentDocument).document;b4.write("<!doctype html><html><body>");b4.close();e=a2(b5,b4);aF.detach()}bk[b5]=e}return e}function a2(e,b6){var b4=bK(b6.createElement(e)).appendTo(b6.body),b5=bK.css(b4[0],"display");b4.remove();return b5}bK.each(["height","width"],function(b4,e){bK.cssHooks[e]={get:function(b7,b6,b5){if(b6){return b7.offsetWidth===0&&G.test(bK.css(b7,"display"))?bK.swap(b7,bc,function(){return v(b7,e,b5)}):v(b7,e,b5)}},set:function(b7,b8,b5){var b6=b5&&bp(b7);return aK(b7,b8,b5?ax(b7,e,b5,bK.support.boxSizing&&bK.css(b7,"boxSizing",false,b6)==="border-box",b6):0)}}});if(!bK.support.opacity){bK.cssHooks.opacity={get:function(b4,e){return aU.test((e&&b4.currentStyle?b4.currentStyle.filter:b4.style.filter)||"")?(0.01*parseFloat(RegExp.$1))+"":e?"1":""},set:function(b7,b8){var b6=b7.style,b4=b7.currentStyle,e=bK.isNumeric(b8)?"alpha(opacity="+b8*100+")":"",b5=b4&&b4.filter||b6.filter||"";b6.zoom=1;if((b8>=1||b8==="")&&bK.trim(b5.replace(bh,""))===""&&b6.removeAttribute){b6.removeAttribute("filter");if(b8===""||b4&&!b4.filter){return}}b6.filter=bh.test(b5)?b5.replace(bh,e):b5+" "+e}}}bK(function(){if(!bK.support.reliableMarginRight){bK.cssHooks.marginRight={get:function(b4,e){if(e){return bK.swap(b4,{display:"inline-block"},F,[b4,"marginRight"])}}}}if(!bK.support.pixelPosition&&bK.fn.position){bK.each(["top","left"],function(e,b4){bK.cssHooks[b4]={get:function(b6,b5){if(b5){b5=F(b6,b4);return X.test(b5)?bK(b6).position()[b4]+"px":b5}}}})}});if(bK.expr&&bK.expr.filters){bK.expr.filters.hidden=function(e){return e.offsetWidth<=0&&e.offsetHeight<=0||(!bK.support.reliableHiddenOffsets&&((e.style&&e.style.display)||bK.css(e,"display"))==="none")};bK.expr.filters.visible=function(e){return !bK.expr.filters.hidden(e)}}bK.each({margin:"",padding:"",border:"Width"},function(e,b4){bK.cssHooks[e+b4]={expand:function(b7){var b6=0,b5={},b8=typeof b7==="string"?b7.split(" "):[b7];for(;b6<4;b6++){b5[e+bU[b6]+b4]=b8[b6]||b8[b6-2]||b8[0]}return b5}};if(!aZ.test(e)){bK.cssHooks[e+b4].set=aK}});var bw=/%20/g,aS=/\[\]$/,V=/\r?\n/g,c=/^(?:submit|button|image|reset|file)$/i,av=/^(?:input|select|textarea|keygen)/i;bK.fn.extend({serialize:function(){return bK.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=bK.prop(this,"elements");return e?bK.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!bK(this).is(":disabled")&&av.test(this.nodeName)&&!c.test(e)&&(this.checked||!r.test(e))}).map(function(e,b4){var b5=bK(this).val();return b5==null?null:bK.isArray(b5)?bK.map(b5,function(b6){return{name:b4.name,value:b6.replace(V,"\r\n")}}):{name:b4.name,value:b5.replace(V,"\r\n")}}).get()}});bK.param=function(e,b5){var b6,b4=[],b7=function(b8,b9){b9=bK.isFunction(b9)?b9():(b9==null?"":b9);b4[b4.length]=encodeURIComponent(b8)+"="+encodeURIComponent(b9)};if(b5===aH){b5=bK.ajaxSettings&&bK.ajaxSettings.traditional}if(bK.isArray(e)||(e.jquery&&!bK.isPlainObject(e))){bK.each(e,function(){b7(this.name,this.value)})}else{for(b6 in e){i(b6,e[b6],b5,b7)}}return b4.join("&").replace(bw,"+")};function i(b5,b7,b4,b6){var e;if(bK.isArray(b7)){bK.each(b7,function(b9,b8){if(b4||aS.test(b5)){b6(b5,b8)}else{i(b5+"["+(typeof b8==="object"?b9:"")+"]",b8,b4,b6)}})}else{if(!b4&&bK.type(b7)==="object"){for(e in b7){i(b5+"["+e+"]",b7[e],b4,b6)}}else{b6(b5,b7)}}}bK.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(b4,e){bK.fn[e]=function(b6,b5){return arguments.length>0?this.on(e,null,b6,b5):this.trigger(e)}});bK.fn.hover=function(e,b4){return this.mouseenter(e).mouseleave(b4||e)};var b2,Z,bP=bK.now(),aA=/\?/,aq=/#.*$/,P=/([?&])_=[^&]*/,ah=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,C=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,o=/^(?:GET|HEAD)$/,aI=/^\/\//,aV=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,b1=bK.fn.load,w={},a8={},aX="*/".concat("*");try{Z=aM.href}catch(bg){Z=l.createElement("a");Z.href="";Z=Z.href}b2=aV.exec(Z.toLowerCase())||[];function bM(e){return function(b7,b8){if(typeof b7!=="string"){b8=b7;b7="*"}var b4,b5=0,b6=b7.toLowerCase().match(ad)||[];if(bK.isFunction(b8)){while((b4=b6[b5++])){if(b4[0]==="+"){b4=b4.slice(1)||"*";(e[b4]=e[b4]||[]).unshift(b8)}else{(e[b4]=e[b4]||[]).push(b8)}}}}}function n(e,b5,b9,b6){var b4={},b7=(e===a8);function b8(ca){var cb;b4[ca]=true;bK.each(e[ca]||[],function(cd,cc){var ce=cc(b5,b9,b6);if(typeof ce==="string"&&!b7&&!b4[ce]){b5.dataTypes.unshift(ce);b8(ce);return false}else{if(b7){return !(cb=ce)}}});return cb}return b8(b5.dataTypes[0])||!b4["*"]&&b8("*")}function s(b5,b6){var e,b4,b7=bK.ajaxSettings.flatOptions||{};for(b4 in b6){if(b6[b4]!==aH){(b7[b4]?b5:(e||(e={})))[b4]=b6[b4]}}if(e){bK.extend(true,b5,e)}return b5}bK.fn.load=function(b6,b9,ca){if(typeof b6!=="string"&&b1){return b1.apply(this,arguments)}var e,b5,b7,b4=this,b8=b6.indexOf(" ");if(b8>=0){e=b6.slice(b8,b6.length);b6=b6.slice(0,b8)}if(bK.isFunction(b9)){ca=b9;b9=aH}else{if(b9&&typeof b9==="object"){b7="POST"}}if(b4.length>0){bK.ajax({url:b6,type:b7,dataType:"html",data:b9}).done(function(cb){b5=arguments;b4.html(e?bK("<div>").append(bK.parseHTML(cb)).find(e):cb)}).complete(ca&&function(cc,cb){b4.each(ca,b5||[cc.responseText,cb,cc])})}return this};bK.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,b4){bK.fn[b4]=function(b5){return this.on(b4,b5)}});bK.each(["get","post"],function(e,b4){bK[b4]=function(b5,b7,b8,b6){if(bK.isFunction(b7)){b6=b6||b8;b8=b7;b7=aH}return bK.ajax({url:b5,type:b4,dataType:b6,data:b7,success:b8})}});bK.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Z,type:"GET",isLocal:C.test(b2[1]),global:true,processData:true,async:true,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":aX,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a3.String,"text html":true,"text json":bK.parseJSON,"text xml":bK.parseXML},flatOptions:{url:true,context:true}},ajaxSetup:function(b4,e){return e?s(s(b4,bK.ajaxSettings),e):s(bK.ajaxSettings,b4)},ajaxPrefilter:bM(w),ajaxTransport:bM(a8),ajax:function(b8,b5){if(typeof b8==="object"){b5=b8;b8=aH}b5=b5||{};var ch,cj,b9,co,cd,b4,ck,b6,cc=bK.ajaxSetup({},b5),cq=cc.context||cc,cf=cc.context&&(cq.nodeType||cq.jquery)?bK(cq):bK.event,cp=bK.Deferred(),cm=bK.Callbacks("once memory"),ca=cc.statusCode||{},cg={},cn={},b7=0,cb="canceled",ci={readyState:0,getResponseHeader:function(cr){var e;if(b7===2){if(!b6){b6={};while((e=ah.exec(co))){b6[e[1].toLowerCase()]=e[2]}}e=b6[cr.toLowerCase()]}return e==null?null:e},getAllResponseHeaders:function(){return b7===2?co:null},setRequestHeader:function(cr,cs){var e=cr.toLowerCase();if(!b7){cr=cn[e]=cn[e]||cr;cg[cr]=cs}return this},overrideMimeType:function(e){if(!b7){cc.mimeType=e}return this},statusCode:function(cr){var e;if(cr){if(b7<2){for(e in cr){ca[e]=[ca[e],cr[e]]}}else{ci.always(cr[ci.status])}}return this},abort:function(cr){var e=cr||cb;if(ck){ck.abort(e)}ce(0,e);return this}};cp.promise(ci).complete=cm.add;ci.success=ci.done;ci.error=ci.fail;cc.url=((b8||cc.url||Z)+"").replace(aq,"").replace(aI,b2[1]+"//");cc.type=b5.method||b5.type||cc.method||cc.type;cc.dataTypes=bK.trim(cc.dataType||"*").toLowerCase().match(ad)||[""];if(cc.crossDomain==null){ch=aV.exec(cc.url.toLowerCase());cc.crossDomain=!!(ch&&(ch[1]!==b2[1]||ch[2]!==b2[2]||(ch[3]||(ch[1]==="http:"?80:443))!=(b2[3]||(b2[1]==="http:"?80:443))))}if(cc.data&&cc.processData&&typeof cc.data!=="string"){cc.data=bK.param(cc.data,cc.traditional)}n(w,cc,b5,ci);if(b7===2){return ci}b4=cc.global;if(b4&&bK.active++===0){bK.event.trigger("ajaxStart")}cc.type=cc.type.toUpperCase();cc.hasContent=!o.test(cc.type);b9=cc.url;if(!cc.hasContent){if(cc.data){b9=(cc.url+=(aA.test(b9)?"&":"?")+cc.data);delete cc.data}if(cc.cache===false){cc.url=P.test(b9)?b9.replace(P,"$1_="+bP++):b9+(aA.test(b9)?"&":"?")+"_="+bP++}}if(cc.ifModified){if(bK.lastModified[b9]){ci.setRequestHeader("If-Modified-Since",bK.lastModified[b9])}if(bK.etag[b9]){ci.setRequestHeader("If-None-Match",bK.etag[b9])}}if(cc.data&&cc.hasContent&&cc.contentType!==false||b5.contentType){ci.setRequestHeader("Content-Type",cc.contentType)}ci.setRequestHeader("Accept",cc.dataTypes[0]&&cc.accepts[cc.dataTypes[0]]?cc.accepts[cc.dataTypes[0]]+(cc.dataTypes[0]!=="*"?", "+aX+"; q=0.01":""):cc.accepts["*"]);for(cj in cc.headers){ci.setRequestHeader(cj,cc.headers[cj])}if(cc.beforeSend&&(cc.beforeSend.call(cq,ci,cc)===false||b7===2)){return ci.abort()}cb="abort";for(cj in {success:1,error:1,complete:1}){ci[cj](cc[cj])}ck=n(a8,cc,b5,ci);if(!ck){ce(-1,"No Transport")}else{ci.readyState=1;if(b4){cf.trigger("ajaxSend",[ci,cc])}if(cc.async&&cc.timeout>0){cd=setTimeout(function(){ci.abort("timeout")},cc.timeout)}try{b7=1;ck.send(cg,ce)}catch(cl){if(b7<2){ce(-1,cl)}else{throw cl}}}function ce(cv,cr,cw,ct){var e,cz,cx,cu,cy,cs=cr;if(b7===2){return}b7=2;if(cd){clearTimeout(cd)}ck=aH;co=ct||"";ci.readyState=cv>0?4:0;if(cw){cu=g(cc,ci,cw)}if(cv>=200&&cv<300||cv===304){if(cc.ifModified){cy=ci.getResponseHeader("Last-Modified");if(cy){bK.lastModified[b9]=cy}cy=ci.getResponseHeader("etag");if(cy){bK.etag[b9]=cy}}if(cv===204){e=true;cs="nocontent"}else{if(cv===304){e=true;cs="notmodified"}else{e=ag(cc,cu);cs=e.state;cz=e.data;cx=e.error;e=!cx}}}else{cx=cs;if(cv||!cs){cs="error";if(cv<0){cv=0}}}ci.status=cv;ci.statusText=(cr||cs)+"";if(e){cp.resolveWith(cq,[cz,cs,ci])}else{cp.rejectWith(cq,[ci,cs,cx])}ci.statusCode(ca);ca=aH;if(b4){cf.trigger(e?"ajaxSuccess":"ajaxError",[ci,cc,e?cz:cx])}cm.fireWith(cq,[ci,cs]);if(b4){cf.trigger("ajaxComplete",[ci,cc]);if(!(--bK.active)){bK.event.trigger("ajaxStop")}}}return ci},getScript:function(e,b4){return bK.get(e,aH,b4,"script")},getJSON:function(e,b4,b5){return bK.get(e,b4,b5,"json")}});function g(cc,cb,b8){var e,b7,b6,b9,b4=cc.contents,ca=cc.dataTypes,b5=cc.responseFields;for(b9 in b5){if(b9 in b8){cb[b5[b9]]=b8[b9]}}while(ca[0]==="*"){ca.shift();if(b7===aH){b7=cc.mimeType||cb.getResponseHeader("Content-Type")}}if(b7){for(b9 in b4){if(b4[b9]&&b4[b9].test(b7)){ca.unshift(b9);break}}}if(ca[0] in b8){b6=ca[0]}else{for(b9 in b8){if(!ca[0]||cc.converters[b9+" "+ca[0]]){b6=b9;break}if(!e){e=b9}}b6=b6||e}if(b6){if(b6!==ca[0]){ca.unshift(b6)}return b8[b6]}}function ag(ce,b6){var b4,ca,cc,b7,cd={},b8=0,cb=ce.dataTypes.slice(),b5=cb[0];if(ce.dataFilter){b6=ce.dataFilter(b6,ce.dataType)}if(cb[1]){for(cc in ce.converters){cd[cc.toLowerCase()]=ce.converters[cc]}}for(;(ca=cb[++b8]);){if(ca!=="*"){if(b5!=="*"&&b5!==ca){cc=cd[b5+" "+ca]||cd["* "+ca];if(!cc){for(b4 in cd){b7=b4.split(" ");if(b7[1]===ca){cc=cd[b5+" "+b7[0]]||cd["* "+b7[0]];if(cc){if(cc===true){cc=cd[b4]}else{if(cd[b4]!==true){ca=b7[0];cb.splice(b8--,0,ca)}}break}}}}if(cc!==true){if(cc&&ce["throws"]){b6=cc(b6)}else{try{b6=cc(b6)}catch(b9){return{state:"parsererror",error:cc?b9:"No conversion from "+b5+" to "+ca}}}}}b5=ca}}return{state:"success",data:b6}}bK.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){bK.globalEval(e);return e}}});bK.ajaxPrefilter("script",function(e){if(e.cache===aH){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});bK.ajaxTransport("script",function(b5){if(b5.crossDomain){var e,b4=l.head||bK("head")[0]||l.documentElement;return{send:function(b6,b7){e=l.createElement("script");e.async=true;if(b5.scriptCharset){e.charset=b5.scriptCharset}e.src=b5.url;e.onload=e.onreadystatechange=function(b9,b8){if(b8||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(e.parentNode){e.parentNode.removeChild(e)}e=null;if(!b8){b7(200,"success")}}};b4.insertBefore(e,b4.firstChild)},abort:function(){if(e){e.onload(aH,true)}}}}});var br=[],a6=/(=)\?(?=&|$)|\?\?/;bK.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=br.pop()||(bK.expando+"_"+(bP++));this[e]=true;return e}});bK.ajaxPrefilter("json jsonp",function(b6,e,b7){var b9,b4,b5,b8=b6.jsonp!==false&&(a6.test(b6.url)?"url":typeof b6.data==="string"&&!(b6.contentType||"").indexOf("application/x-www-form-urlencoded")&&a6.test(b6.data)&&"data");if(b8||b6.dataTypes[0]==="jsonp"){b9=b6.jsonpCallback=bK.isFunction(b6.jsonpCallback)?b6.jsonpCallback():b6.jsonpCallback;if(b8){b6[b8]=b6[b8].replace(a6,"$1"+b9)}else{if(b6.jsonp!==false){b6.url+=(aA.test(b6.url)?"&":"?")+b6.jsonp+"="+b9}}b6.converters["script json"]=function(){if(!b5){bK.error(b9+" was not called")}return b5[0]};b6.dataTypes[0]="json";b4=a3[b9];a3[b9]=function(){b5=arguments};b7.always(function(){a3[b9]=b4;if(b6[b9]){b6.jsonpCallback=e.jsonpCallback;br.push(b9)}if(b5&&bK.isFunction(b4)){b4(b5[0])}b5=b4=aH});return"script"}});var ai,ay,az=0,aQ=a3.ActiveXObject&&function(){var e;for(e in ai){ai[e](aH,true)}};function bE(){try{return new a3.XMLHttpRequest()}catch(b4){}}function be(){try{return new a3.ActiveXObject("Microsoft.XMLHTTP")}catch(b4){}}bK.ajaxSettings.xhr=a3.ActiveXObject?function(){return !this.isLocal&&bE()||be()}:bE;ay=bK.ajaxSettings.xhr();bK.support.cors=!!ay&&("withCredentials" in ay);ay=bK.support.ajax=!!ay;if(ay){bK.ajaxTransport(function(e){if(!e.crossDomain||bK.support.cors){var b4;return{send:function(ca,b5){var b8,b6,b9=e.xhr();if(e.username){b9.open(e.type,e.url,e.async,e.username,e.password)}else{b9.open(e.type,e.url,e.async)}if(e.xhrFields){for(b6 in e.xhrFields){b9[b6]=e.xhrFields[b6]}}if(e.mimeType&&b9.overrideMimeType){b9.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!ca["X-Requested-With"]){ca["X-Requested-With"]="XMLHttpRequest"}try{for(b6 in ca){b9.setRequestHeader(b6,ca[b6])}}catch(b7){}b9.send((e.hasContent&&e.data)||null);b4=function(cd,cc){var cb,ce,ch,cf;try{if(b4&&(cc||b9.readyState===4)){b4=aH;if(b8){b9.onreadystatechange=bK.noop;if(aQ){delete ai[b8]}}if(cc){if(b9.readyState!==4){b9.abort()}}else{cf={};cb=b9.status;ce=b9.getAllResponseHeaders();if(typeof b9.responseText==="string"){cf.text=b9.responseText}try{ch=b9.statusText}catch(cg){ch=""}if(!cb&&e.isLocal&&!e.crossDomain){cb=cf.text?200:404}else{if(cb===1223){cb=204}}}}}catch(ci){if(!cc){b5(-1,ci)}}if(cf){b5(cb,ch,cf,ce)}};if(!e.async){b4()}else{if(b9.readyState===4){setTimeout(b4)}else{b8=++az;if(aQ){if(!ai){ai={};bK(a3).unload(aQ)}ai[b8]=b4}b9.onreadystatechange=b4}}},abort:function(){if(b4){b4(aH,true)}}}}})}var L,ae,bS=/^(?:toggle|show|hide)$/,bL=new RegExp("^(?:([+-])=|)("+bB+")([a-z%]*)$","i"),bR=/queueHooks$/,aC=[h],a1={"*":[function(e,ca){var b6,cb,cc=this.createTween(e,ca),b7=bL.exec(ca),b8=cc.cur(),b4=+b8||0,b5=1,b9=20;if(b7){b6=+b7[2];cb=b7[3]||(bK.cssNumber[e]?"":"px");if(cb!=="px"&&b4){b4=bK.css(cc.elem,e,true)||b6||1;do{b5=b5||".5";b4=b4/b5;bK.style(cc.elem,e,b4+cb)}while(b5!==(b5=cc.cur()/b8)&&b5!==1&&--b9)}cc.unit=cb;cc.start=b4;cc.end=b7[1]?b4+(b7[1]+1)*b6:b6}return cc}]};function bn(){setTimeout(function(){L=aH});return(L=bK.now())}function bf(b4,e){bK.each(e,function(b9,b7){var b8=(a1[b9]||[]).concat(a1["*"]),b5=0,b6=b8.length;for(;b5<b6;b5++){if(b8[b5].call(b4,b9,b7)){return}}})}function f(b5,b9,cc){var cd,e,b8=0,b4=aC.length,cb=bK.Deferred().always(function(){delete b7.elem}),b7=function(){if(e){return false}var cj=L||bn(),cg=Math.max(0,b6.startTime+b6.duration-cj),ce=cg/b6.duration||0,ci=1-ce,cf=0,ch=b6.tweens.length;for(;cf<ch;cf++){b6.tweens[cf].run(ci)}cb.notifyWith(b5,[b6,ci,cg]);if(ci<1&&ch){return cg}else{cb.resolveWith(b5,[b6]);return false}},b6=cb.promise({elem:b5,props:bK.extend({},b9),opts:bK.extend(true,{specialEasing:{}},cc),originalProperties:b9,originalOptions:cc,startTime:L||bn(),duration:cc.duration,tweens:[],createTween:function(cg,ce){var cf=bK.Tween(b5,b6.opts,cg,ce,b6.opts.specialEasing[cg]||b6.opts.easing);b6.tweens.push(cf);return cf},stop:function(cf){var ce=0,cg=cf?b6.tweens.length:0;if(e){return this}e=true;for(;ce<cg;ce++){b6.tweens[ce].run(1)}if(cf){cb.resolveWith(b5,[b6,cf])}else{cb.rejectWith(b5,[b6,cf])}return this}}),ca=b6.props;an(ca,b6.opts.specialEasing);for(;b8<b4;b8++){cd=aC[b8].call(b6,b5,ca,b6.opts);if(cd){return cd}}bf(b6,ca);if(bK.isFunction(b6.opts.start)){b6.opts.start.call(b5,b6)}bK.fx.timer(bK.extend(b7,{elem:b5,anim:b6,queue:b6.opts.queue}));return b6.progress(b6.opts.progress).done(b6.opts.done,b6.opts.complete).fail(b6.opts.fail).always(b6.opts.always)}function an(b6,b8){var b7,b5,b4,b9,e;for(b4 in b6){b5=bK.camelCase(b4);b9=b8[b5];b7=b6[b4];if(bK.isArray(b7)){b9=b7[1];b7=b6[b4]=b7[0]}if(b4!==b5){b6[b5]=b7;delete b6[b4]}e=bK.cssHooks[b5];if(e&&"expand" in e){b7=e.expand(b7);delete b6[b5];for(b4 in b7){if(!(b4 in b6)){b6[b4]=b7[b4];b8[b4]=b9}}}else{b8[b5]=b9}}}bK.Animation=bK.extend(f,{tweener:function(b4,b7){if(bK.isFunction(b4)){b7=b4;b4=["*"]}else{b4=b4.split(" ")}var b6,e=0,b5=b4.length;for(;e<b5;e++){b6=b4[e];a1[b6]=a1[b6]||[];a1[b6].unshift(b7)}},prefilter:function(b4,e){if(e){aC.unshift(b4)}else{aC.push(b4)}}});function h(b7,cd,e){var b5,cc,b6,cf,cj,b9,ci,ch,cg,b8=this,b4=b7.style,ce={},cb=[],ca=b7.nodeType&&Q(b7);if(!e.queue){ch=bK._queueHooks(b7,"fx");if(ch.unqueued==null){ch.unqueued=0;cg=ch.empty.fire;ch.empty.fire=function(){if(!ch.unqueued){cg()}}}ch.unqueued++;b8.always(function(){b8.always(function(){ch.unqueued--;if(!bK.queue(b7,"fx").length){ch.empty.fire()}})})}if(b7.nodeType===1&&("height" in cd||"width" in cd)){e.overflow=[b4.overflow,b4.overflowX,b4.overflowY];if(bK.css(b7,"display")==="inline"&&bK.css(b7,"float")==="none"){if(!bK.support.inlineBlockNeedsLayout||bF(b7.nodeName)==="inline"){b4.display="inline-block"}else{b4.zoom=1}}}if(e.overflow){b4.overflow="hidden";if(!bK.support.shrinkWrapBlocks){b8.always(function(){b4.overflow=e.overflow[0];b4.overflowX=e.overflow[1];b4.overflowY=e.overflow[2]})}}for(cc in cd){cf=cd[cc];if(bS.exec(cf)){delete cd[cc];b9=b9||cf==="toggle";if(cf===(ca?"hide":"show")){continue}cb.push(cc)}}b6=cb.length;if(b6){cj=bK._data(b7,"fxshow")||bK._data(b7,"fxshow",{});if("hidden" in cj){ca=cj.hidden}if(b9){cj.hidden=!ca}if(ca){bK(b7).show()}else{b8.done(function(){bK(b7).hide()})}b8.done(function(){var ck;bK._removeData(b7,"fxshow");for(ck in ce){bK.style(b7,ck,ce[ck])}});for(cc=0;cc<b6;cc++){b5=cb[cc];ci=b8.createTween(b5,ca?cj[b5]:0);ce[b5]=cj[b5]||bK.style(b7,b5);if(!(b5 in cj)){cj[b5]=ci.start;if(ca){ci.end=ci.start;ci.start=b5==="width"||b5==="height"?1:0}}}}}function H(b5,b4,b7,e,b6){return new H.prototype.init(b5,b4,b7,e,b6)}bK.Tween=H;H.prototype={constructor:H,init:function(b6,b4,b8,e,b7,b5){this.elem=b6;this.prop=b8;this.easing=b7||"swing";this.options=b4;this.start=this.now=this.cur();this.end=e;this.unit=b5||(bK.cssNumber[b8]?"":"px")},cur:function(){var e=H.propHooks[this.prop];return e&&e.get?e.get(this):H.propHooks._default.get(this)},run:function(b5){var b4,e=H.propHooks[this.prop];if(this.options.duration){this.pos=b4=bK.easing[this.easing](b5,this.options.duration*b5,0,1,this.options.duration)}else{this.pos=b4=b5}this.now=(this.end-this.start)*b4+this.start;if(this.options.step){this.options.step.call(this.elem,this.now,this)}if(e&&e.set){e.set(this)}else{H.propHooks._default.set(this)}return this}};H.prototype.init.prototype=H.prototype;H.propHooks={_default:{get:function(b4){var e;if(b4.elem[b4.prop]!=null&&(!b4.elem.style||b4.elem.style[b4.prop]==null)){return b4.elem[b4.prop]}e=bK.css(b4.elem,b4.prop,"");return !e||e==="auto"?0:e},set:function(e){if(bK.fx.step[e.prop]){bK.fx.step[e.prop](e)}else{if(e.elem.style&&(e.elem.style[bK.cssProps[e.prop]]!=null||bK.cssHooks[e.prop])){bK.style(e.elem,e.prop,e.now+e.unit)}else{e.elem[e.prop]=e.now}}}}};H.propHooks.scrollTop=H.propHooks.scrollLeft={set:function(e){if(e.elem.nodeType&&e.elem.parentNode){e.elem[e.prop]=e.now}}};bK.each(["toggle","show","hide"],function(b4,e){var b5=bK.fn[e];bK.fn[e]=function(b6,b8,b7){return b6==null||typeof b6==="boolean"?b5.apply(this,arguments):this.animate(bJ(e,true),b6,b8,b7)}});bK.fn.extend({fadeTo:function(e,b6,b5,b4){return this.filter(Q).css("opacity",0).show().end().animate({opacity:b6},e,b5,b4)},animate:function(b9,b6,b8,b7){var b5=bK.isEmptyObject(b9),e=bK.speed(b6,b8,b7),b4=function(){var ca=f(this,bK.extend({},b9),e);b4.finish=function(){ca.stop(true)};if(b5||bK._data(this,"finish")){ca.stop(true)}};b4.finish=b4;return b5||e.queue===false?this.each(b4):this.queue(e.queue,b4)},stop:function(b5,b4,e){var b6=function(b7){var b8=b7.stop;delete b7.stop;b8(e)};if(typeof b5!=="string"){e=b4;b4=b5;b5=aH}if(b4&&b5!==false){this.queue(b5||"fx",[])}return this.each(function(){var ca=true,b7=b5!=null&&b5+"queueHooks",b9=bK.timers,b8=bK._data(this);if(b7){if(b8[b7]&&b8[b7].stop){b6(b8[b7])}}else{for(b7 in b8){if(b8[b7]&&b8[b7].stop&&bR.test(b7)){b6(b8[b7])}}}for(b7=b9.length;b7--;){if(b9[b7].elem===this&&(b5==null||b9[b7].queue===b5)){b9[b7].anim.stop(e);ca=false;b9.splice(b7,1)}}if(ca||!e){bK.dequeue(this,b5)}})},finish:function(e){if(e!==false){e=e||"fx"}return this.each(function(){var b6,b9=bK._data(this),b5=b9[e+"queue"],b4=b9[e+"queueHooks"],b8=bK.timers,b7=b5?b5.length:0;b9.finish=true;bK.queue(this,e,[]);if(b4&&b4.cur&&b4.cur.finish){b4.cur.finish.call(this)}for(b6=b8.length;b6--;){if(b8[b6].elem===this&&b8[b6].queue===e){b8[b6].anim.stop(true);b8.splice(b6,1)}}for(b6=0;b6<b7;b6++){if(b5[b6]&&b5[b6].finish){b5[b6].finish.call(this)}}delete b9.finish})}});function bJ(b5,b7){var b6,e={height:b5},b4=0;b7=b7?1:0;for(;b4<4;b4+=2-b7){b6=bU[b4];e["margin"+b6]=e["padding"+b6]=b5}if(b7){e.opacity=e.width=b5}return e}bK.each({slideDown:bJ("show"),slideUp:bJ("hide"),slideToggle:bJ("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,b4){bK.fn[e]=function(b5,b7,b6){return this.animate(b4,b5,b7,b6)}});bK.speed=function(b5,b6,b4){var e=b5&&typeof b5==="object"?bK.extend({},b5):{complete:b4||!b4&&b6||bK.isFunction(b5)&&b5,duration:b5,easing:b4&&b6||b6&&!bK.isFunction(b6)&&b6};e.duration=bK.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in bK.fx.speeds?bK.fx.speeds[e.duration]:bK.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(){if(bK.isFunction(e.old)){e.old.call(this)}if(e.queue){bK.dequeue(this,e.queue)}};return e};bK.easing={linear:function(e){return e},swing:function(e){return 0.5-Math.cos(e*Math.PI)/2}};bK.timers=[];bK.fx=H.prototype.init;bK.fx.tick=function(){var b5,b4=bK.timers,e=0;L=bK.now();for(;e<b4.length;e++){b5=b4[e];if(!b5()&&b4[e]===b5){b4.splice(e--,1)}}if(!b4.length){bK.fx.stop()}L=aH};bK.fx.timer=function(e){if(e()&&bK.timers.push(e)){bK.fx.start()}};bK.fx.interval=13;bK.fx.start=function(){if(!ae){ae=setInterval(bK.fx.tick,bK.fx.interval)}};bK.fx.stop=function(){clearInterval(ae);ae=null};bK.fx.speeds={slow:600,fast:200,_default:400};bK.fx.step={};if(bK.expr&&bK.expr.filters){bK.expr.filters.animated=function(e){return bK.grep(bK.timers,function(b4){return e===b4.elem}).length}}bK.fn.offset=function(b4){if(arguments.length){return b4===aH?this:this.each(function(b9){bK.offset.setOffset(this,b4,b9)})}var e,b8,b6={top:0,left:0},b5=this[0],b7=b5&&b5.ownerDocument;if(!b7){return}e=b7.documentElement;if(!bK.contains(e,b5)){return b6}if(typeof b5.getBoundingClientRect!==aD){b6=b5.getBoundingClientRect()}b8=bq(b7);return{top:b6.top+(b8.pageYOffset||e.scrollTop)-(e.clientTop||0),left:b6.left+(b8.pageXOffset||e.scrollLeft)-(e.clientLeft||0)}};bK.offset={setOffset:function(b6,cf,b9){var ca=bK.css(b6,"position");if(ca==="static"){b6.style.position="relative"}var b8=bK(b6),b4=b8.offset(),e=bK.css(b6,"top"),cd=bK.css(b6,"left"),ce=(ca==="absolute"||ca==="fixed")&&bK.inArray("auto",[e,cd])>-1,cc={},cb={},b5,b7;if(ce){cb=b8.position();b5=cb.top;b7=cb.left}else{b5=parseFloat(e)||0;b7=parseFloat(cd)||0}if(bK.isFunction(cf)){cf=cf.call(b6,b9,b4)}if(cf.top!=null){cc.top=(cf.top-b4.top)+b5}if(cf.left!=null){cc.left=(cf.left-b4.left)+b7}if("using" in cf){cf.using.call(b6,cc)}else{b8.css(cc)}}};bK.fn.extend({position:function(){if(!this[0]){return}var b5,b6,e={top:0,left:0},b4=this[0];if(bK.css(b4,"position")==="fixed"){b6=b4.getBoundingClientRect()}else{b5=this.offsetParent();b6=this.offset();if(!bK.nodeName(b5[0],"html")){e=b5.offset()}e.top+=bK.css(b5[0],"borderTopWidth",true);e.left+=bK.css(b5[0],"borderLeftWidth",true)}return{top:b6.top-e.top-bK.css(b4,"marginTop",true),left:b6.left-e.left-bK.css(b4,"marginLeft",true)}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||l.documentElement;while(e&&(!bK.nodeName(e,"html")&&bK.css(e,"position")==="static")){e=e.offsetParent}return e||l.documentElement})}});bK.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b5,b4){var e=/Y/.test(b4);bK.fn[b5]=function(b6){return bK.access(this,function(b7,ca,b9){var b8=bq(b7);if(b9===aH){return b8?(b4 in b8)?b8[b4]:b8.document.documentElement[ca]:b7[ca]}if(b8){b8.scrollTo(!e?b9:bK(b8).scrollLeft(),e?b9:bK(b8).scrollTop())}else{b7[ca]=b9}},b5,b6,arguments.length,null)}});function bq(e){return bK.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}bK.each({Height:"height",Width:"width"},function(e,b4){bK.each({padding:"inner"+e,content:b4,"":"outer"+e},function(b5,b6){bK.fn[b6]=function(ca,b9){var b8=arguments.length&&(b5||typeof ca!=="boolean"),b7=b5||(ca===true||b9===true?"margin":"border");return bK.access(this,function(cc,cb,cd){var ce;if(bK.isWindow(cc)){return cc.document.documentElement["client"+e]}if(cc.nodeType===9){ce=cc.documentElement;return Math.max(cc.body["scroll"+e],ce["scroll"+e],cc.body["offset"+e],ce["offset"+e],ce["client"+e])}return cd===aH?bK.css(cc,cb,b7):bK.style(cc,cb,cd,b7)},b4,b8?ca:aH,b8,null)}})});a3.jQuery=a3.$=bK;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return bK})}})(window);!function(a){a(function(){a.support.transition=(function(){var b=(function(){var e=document.createElement("bootstrap"),d={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},c;for(c in d){if(e.style[c]!==undefined){return d[c]}}}());return b&&{end:b}})()})}(window.jQuery);!function(d){var c='[data-dismiss="alert"]',b=function(e){d(e).on("click",c,this.close)};b.prototype.close=function(j){var i=d(this),g=i.attr("data-target"),h;if(!g){g=i.attr("href");g=g&&g.replace(/.*(?=#[^\s]*$)/,"")}h=d(g);j&&j.preventDefault();h.length||(h=i.hasClass("alert")?i:i.parent());h.trigger(j=d.Event("close"));if(j.isDefaultPrevented()){return}h.removeClass("in");function f(){h.trigger("closed").remove()}d.support.transition&&h.hasClass("fade")?h.on(d.support.transition.end,f):f()};var a=d.fn.alert;d.fn.alert=function(e){return this.each(function(){var g=d(this),f=g.data("alert");if(!f){g.data("alert",(f=new b(this)))}if(typeof e=="string"){f[e].call(g)}})};d.fn.alert.Constructor=b;d.fn.alert.noConflict=function(){d.fn.alert=a;return this};d(document).on("click.alert.data-api",c,b.prototype.close)}(window.jQuery);!function(c){var b=function(e,d){this.$element=c(e);this.options=c.extend({},c.fn.button.defaults,d)};b.prototype.setState=function(g){var i="disabled",e=this.$element,f=e.data(),h=e.is("input")?"val":"html";g=g+"Text";f.resetText||e.data("resetText",e[h]());e[h](f[g]||this.options[g]);setTimeout(function(){g=="loadingText"?e.addClass(i).attr(i,i):e.removeClass(i).removeAttr(i)},0)};b.prototype.toggle=function(){var d=this.$element.closest('[data-toggle="buttons-radio"]');d&&d.find(".active").removeClass("active");this.$element.toggleClass("active")};var a=c.fn.button;c.fn.button=function(d){return this.each(function(){var g=c(this),f=g.data("button"),e=typeof d=="object"&&d;if(!f){g.data("button",(f=new b(this,e)))}if(d=="toggle"){f.toggle()}else{if(d){f.setState(d)}}})};c.fn.button.defaults={loadingText:"loading..."};c.fn.button.Constructor=b;c.fn.button.noConflict=function(){c.fn.button=a;return this};c(document).on("click.button.data-api","[data-toggle^=button]",function(f){var d=c(f.target);if(!d.hasClass("btn")){d=d.closest(".btn")}d.button("toggle")})}(window.jQuery);!function(b){var c=function(e,d){this.$element=b(e);this.options=d;this.options.pause=="hover"&&this.$element.on("mouseenter",b.proxy(this.pause,this)).on("mouseleave",b.proxy(this.cycle,this))};c.prototype={cycle:function(d){if(!d){this.paused=false}this.options.interval&&!this.paused&&(this.interval=setInterval(b.proxy(this.next,this),this.options.interval));return this},to:function(h){var d=this.$element.find(".item.active"),e=d.parent().children(),f=e.index(d),g=this;if(h>(e.length-1)||h<0){return}if(this.sliding){return this.$element.one("slid",function(){g.to(h)})}if(f==h){return this.pause().cycle()}return this.slide(h>f?"next":"prev",b(e[h]))},pause:function(d){if(!d){this.paused=true}if(this.$element.find(".next, .prev").length&&b.support.transition.end){this.$element.trigger(b.support.transition.end);this.cycle()}clearInterval(this.interval);this.interval=null;return this},next:function(){if(this.sliding){return}return this.slide("next")},prev:function(){if(this.sliding){return}return this.slide("prev")},slide:function(k,f){var m=this.$element.find(".item.active"),d=f||m[k](),j=this.interval,l=k=="next"?"left":"right",g=k=="next"?"first":"last",h=this,i;this.sliding=true;j&&this.pause();d=d.length?d:this.$element.find(".item")[g]();i=b.Event("slide",{relatedTarget:d[0]});if(d.hasClass("active")){return}if(b.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(i);if(i.isDefaultPrevented()){return}d.addClass(k);d[0].offsetWidth;m.addClass(l);d.addClass(l);this.$element.one(b.support.transition.end,function(){d.removeClass([k,l].join(" ")).addClass("active");m.removeClass(["active",l].join(" "));h.sliding=false;setTimeout(function(){h.$element.trigger("slid")},0)})}else{this.$element.trigger(i);if(i.isDefaultPrevented()){return}m.removeClass("active");d.addClass("active");this.sliding=false;this.$element.trigger("slid")}j&&this.cycle();return this}};var a=b.fn.carousel;b.fn.carousel=function(d){return this.each(function(){var h=b(this),g=h.data("carousel"),e=b.extend({},b.fn.carousel.defaults,typeof d=="object"&&d),f=typeof d=="string"?d:e.slide;if(!g){h.data("carousel",(g=new c(this,e)))}if(typeof d=="number"){g.to(d)}else{if(f){g[f]()}else{if(e.interval){g.cycle()}}}})};b.fn.carousel.defaults={interval:5000,pause:"hover"};b.fn.carousel.Constructor=c;b.fn.carousel.noConflict=function(){b.fn.carousel=a;return this};b(document).on("click.carousel.data-api","[data-slide]",function(i){var h=b(this),f,d=b(h.attr("data-target")||(f=h.attr("href"))&&f.replace(/.*(?=#[^\s]+$)/,"")),g=b.extend({},d.data(),h.data());d.carousel(g);i.preventDefault()})}(window.jQuery);!function(b){var c=function(e,d){this.$element=b(e);this.options=b.extend({},b.fn.collapse.defaults,d);if(this.options.parent){this.$parent=b(this.options.parent)}this.options.toggle&&this.toggle()};c.prototype={constructor:c,dimension:function(){var d=this.$element.hasClass("width");return d?"width":"height"},show:function(){var g,d,f,e;if(this.transitioning){return}g=this.dimension();d=b.camelCase(["scroll",g].join("-"));f=this.$parent&&this.$parent.find("> .accordion-group > .in");if(f&&f.length){e=f.data("collapse");if(e&&e.transitioning){return}f.collapse("hide");e||f.data("collapse",null)}this.$element[g](0);this.transition("addClass",b.Event("show"),"shown");b.support.transition&&this.$element[g](this.$element[0][d])},hide:function(){var d;if(this.transitioning){return}d=this.dimension();this.reset(this.$element[d]());this.transition("removeClass",b.Event("hide"),"hidden");this.$element[d](0)},reset:function(d){var e=this.dimension();this.$element.removeClass("collapse")[e](d||"auto")[0].offsetWidth;this.$element[d!==null?"addClass":"removeClass"]("collapse");return this},transition:function(h,e,f){var g=this,d=function(){if(e.type=="show"){g.reset()}g.transitioning=0;g.$element.trigger(f)};this.$element.trigger(e);if(e.isDefaultPrevented()){return}this.transitioning=1;this.$element[h]("in");b.support.transition&&this.$element.hasClass("collapse")?this.$element.one(b.support.transition.end,d):d()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var a=b.fn.collapse;b.fn.collapse=function(d){return this.each(function(){var g=b(this),f=g.data("collapse"),e=typeof d=="object"&&d;if(!f){g.data("collapse",(f=new c(this,e)))}if(typeof d=="string"){f[d]()}})};b.fn.collapse.defaults={toggle:true};b.fn.collapse.Constructor=c;b.fn.collapse.noConflict=function(){b.fn.collapse=a;return this};b(document).on("click.collapse.data-api","[data-toggle=collapse]",function(i){var h=b(this),d,g=h.attr("data-target")||i.preventDefault()||(d=h.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=b(g).data("collapse")?"toggle":h.data();h[b(g).hasClass("in")?"addClass":"removeClass"]("collapsed");b(g).collapse(f)})}(window.jQuery);!function(f){var b="[data-toggle=dropdown]",a=function(h){var g=f(h).on("click.dropdown.data-api",this.toggle);f("html").on("click.dropdown.data-api",function(){g.parent().removeClass("open")})};a.prototype={constructor:a,toggle:function(j){var i=f(this),h,g;if(i.is(".disabled, :disabled")){return}h=e(i);g=h.hasClass("open");d();if(!g){h.toggleClass("open")}i.focus();return false},keydown:function(l){var k,m,g,j,i,h;if(!/(38|40|27)/.test(l.keyCode)){return}k=f(this);l.preventDefault();l.stopPropagation();if(k.is(".disabled, :disabled")){return}j=e(k);i=j.hasClass("open");if(!i||(i&&l.keyCode==27)){return k.click()}m=f("[role=menu] li:not(.divider):visible a",j);if(!m.length){return}h=m.index(m.filter(":focus"));if(l.keyCode==38&&h>0){h--}if(l.keyCode==40&&h<m.length-1){h++}if(!~h){h=0}m.eq(h).focus()}};function d(){f(b).each(function(){e(f(this)).removeClass("open")})}function e(i){var g=i.attr("data-target"),h;if(!g){g=i.attr("href");g=g&&/#/.test(g)&&g.replace(/.*(?=#[^\s]*$)/,"")}h=f(g);h.length||(h=i.parent());return h}var c=f.fn.dropdown;f.fn.dropdown=function(g){return this.each(function(){var i=f(this),h=i.data("dropdown");if(!h){i.data("dropdown",(h=new a(this)))}if(typeof g=="string"){h[g].call(i)}})};f.fn.dropdown.Constructor=a;f.fn.dropdown.noConflict=function(){f.fn.dropdown=c;return this};f(document).on("click.dropdown.data-api touchstart.dropdown.data-api",d).on("click.dropdown touchstart.dropdown.data-api",".dropdown form",function(g){g.stopPropagation()}).on("touchstart.dropdown.data-api",".dropdown-menu",function(g){g.stopPropagation()}).on("click.dropdown.data-api touchstart.dropdown.data-api",b,a.prototype.toggle).on("keydown.dropdown.data-api touchstart.dropdown.data-api",b+", [role=menu]",a.prototype.keydown)}(window.jQuery);!function(c){var b=function(e,d){this.options=d;this.$element=c(e).delegate('[data-dismiss="modal"]',"click.dismiss.modal",c.proxy(this.hide,this));this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};b.prototype={constructor:b,toggle:function(){return this[!this.isShown?"show":"hide"]()},show:function(){var d=this,f=c.Event("show");this.$element.trigger(f);if(this.isShown||f.isDefaultPrevented()){return}this.isShown=true;this.escape();this.backdrop(function(){var e=c.support.transition&&d.$element.hasClass("fade");if(!d.$element.parent().length){d.$element.appendTo(document.body)}d.$element.show();if(e){d.$element[0].offsetWidth}d.$element.addClass("in").attr("aria-hidden",false);d.enforceFocus();e?d.$element.one(c.support.transition.end,function(){d.$element.focus().trigger("shown")}):d.$element.focus().trigger("shown")})},hide:function(f){f&&f.preventDefault();var d=this;f=c.Event("hide");this.$element.trigger(f);if(!this.isShown||f.isDefaultPrevented()){return}this.isShown=false;this.escape();c(document).off("focusin.modal");this.$element.removeClass("in").attr("aria-hidden",true);c.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal()},enforceFocus:function(){var d=this;c(document).on("focusin.modal",function(f){if(d.$element[0]!==f.target&&!d.$element.has(f.target).length){d.$element.focus()}})},escape:function(){var d=this;if(this.isShown&&this.options.keyboard){this.$element.on("keyup.dismiss.modal",function(f){f.which==27&&d.hide()})}else{if(!this.isShown){this.$element.off("keyup.dismiss.modal")}}},hideWithTransition:function(){var d=this,e=setTimeout(function(){d.$element.off(c.support.transition.end);d.hideModal()},500);this.$element.one(c.support.transition.end,function(){clearTimeout(e);d.hideModal()})},hideModal:function(d){this.$element.hide().trigger("hidden");this.backdrop()},removeBackdrop:function(){this.$backdrop.remove();this.$backdrop=null},backdrop:function(g){var f=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=c.support.transition&&e;this.$backdrop=c('<div class="modal-backdrop '+e+'" />').appendTo(document.body);this.$backdrop.click(this.options.backdrop=="static"?c.proxy(this.$element[0].focus,this.$element[0]):c.proxy(this.hide,this));if(d){this.$backdrop[0].offsetWidth}this.$backdrop.addClass("in");d?this.$backdrop.one(c.support.transition.end,g):g()}else{if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");c.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(c.support.transition.end,c.proxy(this.removeBackdrop,this)):this.removeBackdrop()}else{if(g){g()}}}}};var a=c.fn.modal;c.fn.modal=function(d){return this.each(function(){var g=c(this),f=g.data("modal"),e=c.extend({},c.fn.modal.defaults,g.data(),typeof d=="object"&&d);if(!f){g.data("modal",(f=new b(this,e)))}if(typeof d=="string"){f[d]()}else{if(e.show){f.show()}}})};c.fn.modal.defaults={backdrop:true,keyboard:true,show:true};c.fn.modal.Constructor=b;c.fn.modal.noConflict=function(){c.fn.modal=a;return this};c(document).on("click.modal.data-api",'[data-toggle="modal"]',function(i){var h=c(this),f=h.attr("href"),d=c(h.attr("data-target")||(f&&f.replace(/.*(?=#[^\s]+$)/,""))),g=d.data("modal")?"toggle":c.extend({remote:!/#/.test(f)&&f},d.data(),h.data());i.preventDefault();d.modal(g).one("hide",function(){h.focus()})})}(window.jQuery);!function(c){var b=function(e,d){this.init("tooltip",e,d)};b.prototype={constructor:b,init:function(g,f,e){var h,d;this.type=g;this.$element=c(f);this.options=this.getOptions(e);this.enabled=true;if(this.options.trigger=="click"){this.$element.on("click."+this.type,this.options.selector,c.proxy(this.toggle,this))}else{if(this.options.trigger!="manual"){h=this.options.trigger=="hover"?"mouseenter":"focus";d=this.options.trigger=="hover"?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,c.proxy(this.enter,this));this.$element.on(d+"."+this.type,this.options.selector,c.proxy(this.leave,this))}}this.options.selector?(this._options=c.extend({},this.options,{trigger:"manual",selector:""})):this.fixTitle()},getOptions:function(d){d=c.extend({},c.fn[this.type].defaults,d,this.$element.data());if(d.delay&&typeof d.delay=="number"){d.delay={show:d.delay,hide:d.delay}}return d},enter:function(f){var d=c(f.currentTarget)[this.type](this._options).data(this.type);if(!d.options.delay||!d.options.delay.show){return d.show()}clearTimeout(this.timeout);d.hoverState="in";this.timeout=setTimeout(function(){if(d.hoverState=="in"){d.show()}},d.options.delay.show)},leave:function(f){var d=c(f.currentTarget)[this.type](this._options).data(this.type);if(this.timeout){clearTimeout(this.timeout)}if(!d.options.delay||!d.options.delay.hide){return d.hide()}d.hoverState="out";this.timeout=setTimeout(function(){if(d.hoverState=="out"){d.hide()}},d.options.delay.hide)},show:function(){var h,d,j,f,i,e,g;if(this.hasContent()&&this.enabled){h=this.tip();this.setContent();if(this.options.animation){h.addClass("fade")}e=typeof this.options.placement=="function"?this.options.placement.call(this,h[0],this.$element[0]):this.options.placement;d=/in/.test(e);h.detach().css({top:0,left:0,display:"block"}).insertAfter(this.$element);j=this.getPosition(d);f=h[0].offsetWidth;i=h[0].offsetHeight;switch(d?e.split(" ")[1]:e){case"bottom":g={top:j.top+j.height,left:j.left+j.width/2-f/2};break;case"top":g={top:j.top-i,left:j.left+j.width/2-f/2};break;case"left":g={top:j.top+j.height/2-i/2,left:j.left-f};break;case"right":g={top:j.top+j.height/2-i/2,left:j.left+j.width};break}h.offset(g).addClass(e).addClass("in")}},setContent:function(){var e=this.tip(),d=this.getTitle();e.find(".tooltip-inner")[this.options.html?"html":"text"](d);e.removeClass("fade in top bottom left right")},hide:function(){var d=this,e=this.tip();e.removeClass("in");function f(){var g=setTimeout(function(){e.off(c.support.transition.end).detach()},500);e.one(c.support.transition.end,function(){clearTimeout(g);e.detach()})}c.support.transition&&this.$tip.hasClass("fade")?f():e.detach();return this},fixTitle:function(){var d=this.$element;if(d.attr("title")||typeof(d.attr("data-original-title"))!="string"){d.attr("data-original-title",d.attr("title")||"").removeAttr("title")}},hasContent:function(){return this.getTitle()},getPosition:function(d){return c.extend({},(d?{top:0,left:0}:this.$element.offset()),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var f,d=this.$element,e=this.options;f=d.attr("data-original-title")||(typeof e.title=="function"?e.title.call(d[0]):e.title);return f},tip:function(){return this.$tip=this.$tip||c(this.options.template)},validate:function(){if(!this.$element[0].parentNode){this.hide();this.$element=null;this.options=null}},enable:function(){this.enabled=true},disable:function(){this.enabled=false},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(f){var d=c(f.currentTarget)[this.type](this._options).data(this.type);d[d.tip().hasClass("in")?"hide":"show"]()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var a=c.fn.tooltip;c.fn.tooltip=function(d){return this.each(function(){var g=c(this),f=g.data("tooltip"),e=typeof d=="object"&&d;if(!f){g.data("tooltip",(f=new b(this,e)))}if(typeof d=="string"){f[d]()}})};c.fn.tooltip.Constructor=b;c.fn.tooltip.defaults={animation:true,placement:"top",selector:false,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover",title:"",delay:0,html:false};c.fn.tooltip.noConflict=function(){c.fn.tooltip=a;return this}}(window.jQuery);!function(c){var b=function(e,d){this.init("popover",e,d)};b.prototype=c.extend({},c.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var f=this.tip(),e=this.getTitle(),d=this.getContent();f.find(".popover-title")[this.options.html?"html":"text"](e);f.find(".popover-content")[this.options.html?"html":"text"](d);f.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var e,d=this.$element,f=this.options;e=d.attr("data-content")||(typeof f.content=="function"?f.content.call(d[0]):f.content);return e},tip:function(){if(!this.$tip){this.$tip=c(this.options.template)}return this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var a=c.fn.popover;c.fn.popover=function(d){return this.each(function(){var g=c(this),f=g.data("popover"),e=typeof d=="object"&&d;if(!f){g.data("popover",(f=new b(this,e)))}if(typeof d=="string"){f[d]()}})};c.fn.popover.Constructor=b;c.fn.popover.defaults=c.extend({},c.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"></div></div></div>'});c.fn.popover.noConflict=function(){c.fn.popover=a;return this}}(window.jQuery);!function(c){function b(g,f){var h=c.proxy(this.process,this),d=c(g).is("body")?c(window):c(g),e;this.options=c.extend({},c.fn.scrollspy.defaults,f);this.$scrollElement=d.on("scroll.scroll-spy.data-api",h);this.selector=(this.options.target||((e=c(g).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,""))||"")+" .nav li > a";this.$body=c("body");this.refresh();this.process()}b.prototype={constructor:b,refresh:function(){var d=this,e;this.offsets=c([]);this.targets=c([]);e=this.$body.find(this.selector).map(function(){var g=c(this),f=g.data("target")||g.attr("href"),h=/^#\w/.test(f)&&c(f);return(h&&h.length&&[[h.position().top+d.$scrollElement.scrollTop(),f]])||null}).sort(function(g,f){return g[0]-f[0]}).each(function(){d.offsets.push(this[0]);d.targets.push(this[1])})},process:function(){var j=this.$scrollElement.scrollTop()+this.options.offset,f=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,h=f-this.$scrollElement.height(),g=this.offsets,d=this.targets,k=this.activeTarget,e;if(j>=h){return k!=(e=d.last()[0])&&this.activate(e)}for(e=g.length;e--;){k!=d[e]&&j>=g[e]&&(!g[e+1]||j<=g[e+1])&&this.activate(d[e])}},activate:function(f){var e,d;this.activeTarget=f;c(this.selector).parent(".active").removeClass("active");d=this.selector+'[data-target="'+f+'"],'+this.selector+'[href="'+f+'"]';e=c(d).parent("li").addClass("active");if(e.parent(".dropdown-menu").length){e=e.closest("li.dropdown").addClass("active")}e.trigger("activate")}};var a=c.fn.scrollspy;c.fn.scrollspy=function(d){return this.each(function(){var g=c(this),f=g.data("scrollspy"),e=typeof d=="object"&&d;if(!f){g.data("scrollspy",(f=new b(this,e)))}if(typeof d=="string"){f[d]()}})};c.fn.scrollspy.Constructor=b;c.fn.scrollspy.defaults={offset:10};c.fn.scrollspy.noConflict=function(){c.fn.scrollspy=a;return this};c(window).on("load",function(){c('[data-spy="scroll"]').each(function(){var d=c(this);d.scrollspy(d.data())})})}(window.jQuery);!function(c){var b=function(d){this.element=c(d)};b.prototype={constructor:b,show:function(){var j=this.element,g=j.closest("ul:not(.dropdown-menu)"),f=j.attr("data-target"),h,d,i;if(!f){f=j.attr("href");f=f&&f.replace(/.*(?=#[^\s]*$)/,"")}if(j.parent("li").hasClass("active")){return}h=g.find(".active:last a")[0];i=c.Event("show",{relatedTarget:h});j.trigger(i);if(i.isDefaultPrevented()){return}d=c(f);this.activate(j.parent("li"),g);this.activate(d,d.parent(),function(){j.trigger({type:"shown",relatedTarget:h})})},activate:function(f,e,i){var d=e.find("> .active"),h=i&&c.support.transition&&d.hasClass("fade");function g(){d.removeClass("active").find("> .dropdown-menu > .active").removeClass("active");f.addClass("active");if(h){f[0].offsetWidth;f.addClass("in")}else{f.removeClass("fade")}if(f.parent(".dropdown-menu")){f.closest("li.dropdown").addClass("active")}i&&i()}h?d.one(c.support.transition.end,g):g();d.removeClass("in")}};var a=c.fn.tab;c.fn.tab=function(d){return this.each(function(){var f=c(this),e=f.data("tab");if(!e){f.data("tab",(e=new b(this)))}if(typeof d=="string"){e[d]()}})};c.fn.tab.Constructor=b;c.fn.tab.noConflict=function(){c.fn.tab=a;return this};c(document).on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(d){d.preventDefault();c(this).tab("show")})}(window.jQuery);!function(b){var c=function(e,d){this.$element=b(e);this.options=b.extend({},b.fn.typeahead.defaults,d);this.matcher=this.options.matcher||this.matcher;this.sorter=this.options.sorter||this.sorter;this.highlighter=this.options.highlighter||this.highlighter;this.updater=this.options.updater||this.updater;this.source=this.options.source;this.$menu=b(this.options.menu);this.shown=false;this.listen()};c.prototype={constructor:c,select:function(){var d=this.$menu.find(".active").attr("data-value");this.$element.val(this.updater(d)).change();return this.hide()},updater:function(d){return d},show:function(){var d=b.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});this.$menu.insertAfter(this.$element).css({top:d.top+d.height,left:d.left}).show();this.shown=true;return this},hide:function(){this.$menu.hide();this.shown=false;return this},lookup:function(e){var d;this.query=this.$element.val();if(!this.query||this.query.length<this.options.minLength){return this.shown?this.hide():this}d=b.isFunction(this.source)?this.source(this.query,b.proxy(this.process,this)):this.source;return d?this.process(d):this},process:function(d){var e=this;d=b.grep(d,function(f){return e.matcher(f)});d=this.sorter(d);if(!d.length){return this.shown?this.hide():this}return this.render(d.slice(0,this.options.items)).show()},matcher:function(d){return ~d.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(f){var g=[],e=[],d=[],h;while(h=f.shift()){if(!h.toLowerCase().indexOf(this.query.toLowerCase())){g.push(h)}else{if(~h.indexOf(this.query)){e.push(h)}else{d.push(h)}}}return g.concat(e,d)},highlighter:function(d){var e=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return d.replace(new RegExp("("+e+")","ig"),function(f,g){return"<strong>"+g+"</strong>"})},render:function(d){var e=this;d=b(d).map(function(f,g){f=b(e.options.item).attr("data-value",g);f.find("a").html(e.highlighter(g));return f[0]});d.first().addClass("active");this.$menu.html(d);return this},next:function(e){var f=this.$menu.find(".active").removeClass("active"),d=f.next();if(!d.length){d=b(this.$menu.find("li")[0])}d.addClass("active")},prev:function(e){var f=this.$menu.find(".active").removeClass("active"),d=f.prev();if(!d.length){d=this.$menu.find("li").last()}d.addClass("active")},listen:function(){this.$element.on("blur",b.proxy(this.blur,this)).on("keypress",b.proxy(this.keypress,this)).on("keyup",b.proxy(this.keyup,this));if(this.eventSupported("keydown")){this.$element.on("keydown",b.proxy(this.keydown,this))}this.$menu.on("click",b.proxy(this.click,this)).on("mouseenter","li",b.proxy(this.mouseenter,this))},eventSupported:function(d){var e=d in this.$element;if(!e){this.$element.setAttribute(d,"return;");e=typeof this.$element[d]==="function"}return e},move:function(d){if(!this.shown){return}switch(d.keyCode){case 9:case 13:case 27:d.preventDefault();break;case 38:d.preventDefault();this.prev();break;case 40:d.preventDefault();this.next();break}d.stopPropagation()},keydown:function(d){this.suppressKeyPressRepeat=~b.inArray(d.keyCode,[40,38,9,13,27]);this.move(d)},keypress:function(d){if(this.suppressKeyPressRepeat){return}this.move(d)},keyup:function(d){switch(d.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown){return}this.select();break;case 27:if(!this.shown){return}this.hide();break;default:this.lookup()}d.stopPropagation();d.preventDefault()},blur:function(f){var d=this;setTimeout(function(){d.hide()},150)},click:function(d){d.stopPropagation();d.preventDefault();this.select()},mouseenter:function(d){this.$menu.find(".active").removeClass("active");b(d.currentTarget).addClass("active")}};var a=b.fn.typeahead;b.fn.typeahead=function(d){return this.each(function(){var g=b(this),f=g.data("typeahead"),e=typeof d=="object"&&d;if(!f){g.data("typeahead",(f=new c(this,e)))}if(typeof d=="string"){f[d]()}})};b.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1};b.fn.typeahead.Constructor=c;b.fn.typeahead.noConflict=function(){b.fn.typeahead=a;return this};b(document).on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(f){var d=b(this);if(d.data("typeahead")){return}f.preventDefault();d.typeahead(d.data())})}(window.jQuery);!function(c){var b=function(e,d){this.options=c.extend({},c.fn.affix.defaults,d);this.$window=c(window).on("scroll.affix.data-api",c.proxy(this.checkPosition,this)).on("click.affix.data-api",c.proxy(function(){setTimeout(c.proxy(this.checkPosition,this),1)},this));this.$element=c(e);this.checkPosition()};b.prototype.checkPosition=function(){if(!this.$element.is(":visible")){return}var h=c(document).height(),j=this.$window.scrollTop(),d=this.$element.offset(),k=this.options.offset,f=k.bottom,g=k.top,i="affix affix-top affix-bottom",e;if(typeof k!="object"){f=g=k}if(typeof g=="function"){g=k.top()}if(typeof f=="function"){f=k.bottom()}e=this.unpin!=null&&(j+this.unpin<=d.top)?false:f!=null&&(d.top+this.$element.height()>=h-f)?"bottom":g!=null&&j<=g?"top":false;if(this.affixed===e){return}this.affixed=e;this.unpin=e=="bottom"?d.top-j:null;this.$element.removeClass(i).addClass("affix"+(e?"-"+e:""))};var a=c.fn.affix;c.fn.affix=function(d){return this.each(function(){var g=c(this),f=g.data("affix"),e=typeof d=="object"&&d;if(!f){g.data("affix",(f=new b(this,e)))}if(typeof d=="string"){f[d]()}})};c.fn.affix.Constructor=b;c.fn.affix.defaults={offset:0};c.fn.affix.noConflict=function(){c.fn.affix=a;return this};c(window).on("load",function(){c('[data-spy="affix"]').each(function(){var e=c(this),d=e.data();d.offset=d.offset||{};d.offsetBottom&&(d.offset.bottom=d.offsetBottom);d.offsetTop&&(d.offset.top=d.offsetTop);e.affix(d)})})}(window.jQuery);var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;(function(){function d(F){function w(J){var K=J.charCodeAt(0);if(K!==92){return K}var I=J.charAt(1);return(K=k[I])?K:"0"<=I&&I<="7"?parseInt(J.substring(1),8):I==="u"||I==="x"?parseInt(J.substring(2),16):J.charCodeAt(1)}function C(I){if(I<32){return(I<16?"\\x0":"\\x")+I.toString(16)}I=String.fromCharCode(I);if(I==="\\"||I==="-"||I==="["||I==="]"){I="\\"+I}return I}function A(J){for(var M=J.substring(1,J.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),J=[],I=[],O=M[0]==="^",P=O?1:0,L=M.length;P<L;++P){var K=M[P];if(/\\[bdsw]/i.test(K)){J.push(K)}else{var K=w(K),N;P+2<L&&"-"===M[P+1]?(N=w(M[P+2]),P+=2):N=K;I.push([K,N]);N<65||K>122||(N<65||K>90||I.push([Math.max(65,K)|32,Math.min(N,90)|32]),N<97||K>122||I.push([Math.max(97,K)&-33,Math.min(N,122)&-33]))}}I.sort(function(Q,R){return Q[0]-R[0]||R[1]-Q[1]});M=[];K=[NaN,NaN];for(P=0;P<I.length;++P){L=I[P],L[0]<=K[1]+1?K[1]=Math.max(K[1],L[1]):M.push(K=L)}I=["["];O&&I.push("^");I.push.apply(I,J);for(P=0;P<M.length;++P){L=M[P],I.push(C(L[0])),L[1]>L[0]&&(L[1]+1>L[0]&&I.push("-"),I.push(C(L[1])))}I.push("]");return I.join("")}function E(J){for(var M=J.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),I=M.length,N=[],O=0,L=0;O<I;++O){var K=M[O];K==="("?++L:"\\"===K.charAt(0)&&(K=+K.substring(1))&&K<=L&&(N[K]=-1)}for(O=1;O<N.length;++O){-1===N[O]&&(N[O]=++G)}for(L=O=0;O<I;++O){K=M[O],K==="("?(++L,N[L]===void 0&&(M[O]="(?:")):"\\"===K.charAt(0)&&(K=+K.substring(1))&&K<=L&&(M[O]="\\"+N[L])}for(L=O=0;O<I;++O){"^"===M[O]&&"^"!==M[O+1]&&(M[O]="")}if(J.ignoreCase&&H){for(O=0;O<I;++O){K=M[O],J=K.charAt(0),K.length>=2&&J==="["?M[O]=A(K):J!=="\\"&&(M[O]=K.replace(/[A-Za-z]/g,function(P){P=P.charCodeAt(0);return"["+String.fromCharCode(P&-33,P|32)+"]"}))}}return M.join("")}for(var G=0,H=!1,x=!1,u=0,D=F.length;u<D;++u){var B=F[u];if(B.ignoreCase){x=!0}else{if(/[a-z]/i.test(B.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){H=!0;x=!1;break}}}for(var k={b:8,t:9,n:10,v:11,f:12,r:13},v=[],u=0,D=F.length;u<D;++u){B=F[u];if(B.global||B.multiline){throw Error(""+B)}v.push("(?:"+E(B)+")")}return RegExp(v.join("|"),x?"gi":"g")}function c(B){function u(E){switch(E.nodeType){case 1:if(x.test(E.className)){break}for(var F=E.firstChild;F;F=F.nextSibling){u(F)}F=E.nodeName;if("BR"===F||"LI"===F){w[D]="\n",C[D<<1]=A++,C[D++<<1|1]=E}break;case 3:case 4:F=E.nodeValue,F.length&&(F=k?F.replace(/\r\n?/g,"\n"):F.replace(/[\t\n\r ]+/g," "),w[D]=F,C[D<<1]=A,A+=F.length,C[D++<<1|1]=E)}}var x=/(?:^|\s)nocode(?:\s|$)/,w=[],A=0,C=[],D=0,v;B.currentStyle?v=B.currentStyle.whiteSpace:window.getComputedStyle&&(v=document.defaultView.getComputedStyle(B,q).getPropertyValue("white-space"));var k=v&&"pre"===v.substring(0,3);u(B);return{a:w.join("").replace(/\n$/,""),c:C}}function t(u,k,w,v){k&&(u={a:k,d:u},w(u),v.push.apply(v,u.e))}function h(u,k){function x(P){for(var F=P.d,C=[F,"pln"],L=0,J=P.a.match(A)||[],B={},E=0,N=J.length;E<N;++E){var K=J[E],O=B[K],D=void 0,M;if(typeof O==="string"){M=!1}else{var I=w[K.charAt(0)];if(I){D=K.match(I[1]),O=I[0]}else{for(M=0;M<v;++M){if(I=k[M],D=K.match(I[1])){O=I[0];break}}D||(O="pln")}if((M=O.length>=5&&"lang-"===O.substring(0,5))&&!(D&&typeof D[1]==="string")){M=!1,O="src"}M||(B[K]=O)}I=L;L+=K.length;if(M){M=D[1];var H=K.indexOf(M),G=H+M.length;D[2]&&(G=K.length-D[2].length,H=G-M.length);O=O.substring(5);t(F+I,K.substring(0,H),x,C);t(F+I+H,M,s(O,M),C);t(F+I+G,K.substring(G),x,C)}else{C.push(F+I,O)}}P.e=C}var w={},A;(function(){for(var G=u.concat(k),B=[],F={},H=0,E=G.length;H<E;++H){var D=G[H],I=D[3];if(I){for(var C=I.length;--C>=0;){w[I.charAt(C)]=D}}D=D[1];I=""+D;F.hasOwnProperty(I)||(B.push(D),F[I]=q)}B.push(/[\S\s]/);A=d(B)})();var v=k.length;return x}function o(u){var k=[],w=[];u.tripleQuotedStrings?k.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):u.multiLineStrings?k.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,q,"'\"`"]):k.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);u.verbatimStrings&&w.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var v=u.hashComments;v&&(u.cStyleComments?(v>1?k.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):k.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),w.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):k.push(["com",/^#[^\n\r]*/,q,"#"]));u.cStyleComments&&(w.push(["com",/^\/\/[^\n\r]*/,q]),w.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));u.regexLiterals&&w.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(v=u.types)&&w.push(["typ",v]);u=(""+u.keywords).replace(/^ | $/g,"");u.length&&w.push(["kwd",RegExp("^(?:"+u.replace(/[\s,]+/g,"|")+")\\b"),q]);k.push(["pln",/^\s+/,q," \r\n\t\xa0"]);w.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return h(k,w)}function r(H,x){function E(K){switch(K.nodeType){case 1:if(B.test(K.className)){break}if("BR"===K.nodeName){C(K),K.parentNode&&K.parentNode.removeChild(K)}else{for(K=K.firstChild;K;K=K.nextSibling){E(K)}}break;case 3:case 4:if(v){var k=K.nodeValue,L=k.match(I);if(L){var M=k.substring(0,L.index);K.nodeValue=M;(k=k.substring(L.index+L[0].length))&&K.parentNode.insertBefore(J.createTextNode(k),K.nextSibling);C(K);M||K.parentNode.removeChild(K)}}}}function C(K){function k(M,R){var Q=R?M.cloneNode(!1):M,P=M.parentNode;if(P){var P=k(P,1),O=M.nextSibling;P.appendChild(Q);for(var N=O;N;N=O){O=N.nextSibling,P.appendChild(N)}}return Q}for(;!K.nextSibling;){if(K=K.parentNode,!K){return}}for(var K=k(K.nextSibling,0),L;(L=K.parentNode)&&L.nodeType===1;){K=L}F.push(K)}var B=/(?:^|\s)nocode(?:\s|$)/,I=/\r\n?|\n/,J=H.ownerDocument,A;H.currentStyle?A=H.currentStyle.whiteSpace:window.getComputedStyle&&(A=J.defaultView.getComputedStyle(H,q).getPropertyValue("white-space"));var v=A&&"pre"===A.substring(0,3);for(A=J.createElement("LI");H.firstChild;){A.appendChild(H.firstChild)}for(var F=[A],D=0;D<F.length;++D){E(F[D])}x===(x|0)&&F[0].setAttribute("value",x);var u=J.createElement("OL");u.className="linenums";for(var w=Math.max(0,x-1|0)||0,D=0,G=F.length;D<G;++D){A=F[D],A.className="L"+(D+w)%10,A.firstChild||A.appendChild(J.createTextNode("\xa0")),u.appendChild(A)}H.appendChild(u)}function z(u,k){for(var w=k.length;--w>=0;){var v=k[w];y.hasOwnProperty(v)?window.console&&console.warn("cannot override language handler %s",v):y[v]=u}}function s(u,k){if(!u||!y.hasOwnProperty(u)){u=/^\s*</.test(k)?"default-markup":"default-code"}return y[u]}function p(X){var L=X.g;try{var T=c(X.h),Q=T.a;X.a=Q;X.c=T.c;X.d=0;s(L,Q)(X);var N=/\bMSIE\b/.test(navigator.userAgent),L=/\n/g,F=X.a,G=F.length,T=0,M=X.c,I=M.length,Q=0,U=X.e,R=U.length,X=0;U[R]=G;var H,K;for(K=H=0;K<R;){U[K]!==U[K+2]?(U[H++]=U[K++],U[H++]=U[K++]):K+=2}R=H;for(K=H=0;K<R;){for(var A=U[K],S=U[K+1],W=K+2;W+2<=R&&U[W+1]===S;){W+=2}U[H++]=A;U[H++]=S;K=W}for(U.length=H;Q<I;){var J=M[Q+2]||G,V=U[X+2]||G,W=Math.min(J,V),P=M[Q+1],O;if(P.nodeType!==1&&(O=F.substring(T,W))){N&&(O=O.replace(L,"\r"));P.nodeValue=O;var E=P.ownerDocument,D=E.createElement("SPAN");D.className=U[X+1];var B=P.parentNode;B.replaceChild(D,P);D.appendChild(P);T<J&&(M[Q+1]=P=E.createTextNode(F.substring(W,J)),B.insertBefore(P,D.nextSibling))}T=W;T>=J&&(Q+=2);T>=V&&(X+=2)}}catch(C){"console" in window&&console.log(C&&C.stack?C.stack:C)}}var m=["break,continue,do,else,for,if,return,while"],j=[[m,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],n=[j,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],l=[j,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],i=[l,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],j=[j,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],g=[m,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],f=[m,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],m=[m,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,b=/\S/,a=o({keywords:[n,i,j,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+g,f,m],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),y={};z(a,["default-code"]);z(h([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);z(h([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);z(h([],[["atv",/^[\S\s]+/]]),["uq.val"]);z(o({keywords:n,hashComments:!0,cStyleComments:!0,types:e}),["c","cc","cpp","cxx","cyc","m"]);z(o({keywords:"null,true,false"}),["json"]);z(o({keywords:i,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:e}),["cs"]);z(o({keywords:l,cStyleComments:!0}),["java"]);z(o({keywords:m,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);z(o({keywords:g,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py"]);z(o({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);z(o({keywords:f,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);z(o({keywords:j,cStyleComments:!0,regexLiterals:!0}),["js"]);z(o({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);z(h([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(u,k,w){var v=document.createElement("PRE");v.innerHTML=u;w&&r(v,w);p({g:k,i:w,h:v});return v.innerHTML};window.prettyPrint=function(E){function v(){for(var L=window.PR_SHOULD_USE_CONTINUATION?w.now()+250:Infinity;u<A.length&&w.now()<L;u++){var O=A[u],I=O.className;if(I.indexOf("prettyprint")>=0){var I=I.match(B),K,H;if(H=!I){H=O;for(var M=void 0,N=H.firstChild;N;N=N.nextSibling){var J=N.nodeType,M=J===1?M?H:N:J===3?b.test(N.nodeValue)?H:M:M}H=(K=M===H?void 0:M)&&"CODE"===K.tagName}H&&(I=K.className.match(B));I&&(I=I[1]);H=!1;for(M=O.parentNode;M;M=M.parentNode){if((M.tagName==="pre"||M.tagName==="code"||M.tagName==="xmp")&&M.className&&M.className.indexOf("prettyprint")>=0){H=!0;break}}H||((H=(H=O.className.match(/\blinenums\b(?::(\d+))?/))?H[1]&&H[1].length?+H[1]:!0:!1)&&r(O,H),D={g:I,h:O,i:H},p(D))}}u<A.length?setTimeout(v,250):E&&E()}for(var C=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],A=[],x=0;x<C.length;++x){for(var F=0,G=C[x].length;F<G;++F){A.push(C[x][F])}}var C=q,w=Date;w.now||(w={now:function(){return +new Date}});var u=0,D,B=/\blang(?:uage)?-([\w.]+)(?!\S)/;v()};window.PR={createSimpleLexer:h,registerLangHandler:z,sourceDecorator:o,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();jQuery(document).ready(function(){$(".topbar").dropdown();prettyPrint()});
\ No newline at end of file
diff --git a/js/fancy-box-activation.js b/js/fancy-box-activation.js
index 45e7ab8..b417ffc 100644
--- a/js/fancy-box-activation.js
+++ b/js/fancy-box-activation.js
@@ -1,17 +1,17 @@
-$(document).ready(function(){
- $("a.single_image").fancybox({
-   'transitionIn'	:	'elastic',
-   'transitionOut'	:	'elastic',
-   'speedIn'		:	600,
-   'speedOut'		:	200,
-   'overlayShow'	:	true
- });
- $("a.gallery_image").fancybox({
-   'transitionIn'	:	'elastic',
-   'transitionOut'	:	'elastic',
-   'speedIn'		:	600,
-   'speedOut'		:	200,
-   'overlayShow'	:	true,
-   'titlePosition': 'inside'
- });
-});
+$(document).ready(function(){
+ $("a.single_image").fancybox({
+   'transitionIn'	:	'elastic',
+   'transitionOut'	:	'elastic',
+   'speedIn'		:	600,
+   'speedOut'		:	200,
+   'overlayShow'	:	true
+ });
+ $("a.gallery_image").fancybox({
+   'transitionIn'	:	'elastic',
+   'transitionOut'	:	'elastic',
+   'speedIn'		:	600,
+   'speedOut'		:	200,
+   'overlayShow'	:	true,
+   'titlePosition': 'inside'
+ });
+});
diff --git a/js/fancybox.js b/js/fancybox.js
index 25e4e02..405602c 100644
--- a/js/fancybox.js
+++ b/js/fancybox.js
@@ -1,24 +1,24 @@
-$(document).ready(function(){
- /*rel gallery_image not define for html 5 introduce by js for fancybox */
- $("a.gallery_image").attr('rel', 'gallery_image');
-
- $("a#single_image").fancybox({
-   'transitionIn'	:	'elastic',
-   'transitionOut'	:	'elastic',
-   'speedIn'		:	600,
-   'speedOut'		:	200,
-   'overlayShow'	:	true
- });
- $("a.gallery_image").fancybox({
-   'openEffect'	:	'elastic',
-   'closeEffect'	:	'elastic',
-   'nextEffect'	:	'elastic',
-   'previousEffect'	:	'elastic',
-   'nextSpeed'		:	'normal',
-   'prevSpeed'		:	'normal',
-   'openSpeed'      : 'normal',
-   'closeSpeed'      : 'normal',
-   'overlayShow'	:	true,
-   'titlePosition': 'inside'
- });
+$(document).ready(function(){
+ /*rel gallery_image not define for html 5 introduce by js for fancybox */
+ $("a.gallery_image").attr('rel', 'gallery_image');
+
+ $("a#single_image").fancybox({
+   'transitionIn'	:	'elastic',
+   'transitionOut'	:	'elastic',
+   'speedIn'		:	600,
+   'speedOut'		:	200,
+   'overlayShow'	:	true
+ });
+ $("a.gallery_image").fancybox({
+   'openEffect'	:	'elastic',
+   'closeEffect'	:	'elastic',
+   'nextEffect'	:	'elastic',
+   'previousEffect'	:	'elastic',
+   'nextSpeed'		:	'normal',
+   'prevSpeed'		:	'normal',
+   'openSpeed'      : 'normal',
+   'closeSpeed'      : 'normal',
+   'overlayShow'	:	true,
+   'titlePosition': 'inside'
+ });
 });
\ No newline at end of file
diff --git a/js/index.js b/js/index.js
index e9e4a36..a562769 100644
--- a/js/index.js
+++ b/js/index.js
@@ -1,25 +1,25 @@
-$(document).ready(function(){
-  $('#screenshots-carousel').carousel({
-    interval: 4000
-  })
-
-  $('#carousel-prev' ).on("click", function(){
-    $('#screenshots-carousel').carousel('prev');
-  })
-
-  $('#carousel-next' ).on("click", function(){
-    $('#screenshots-carousel').carousel('next');
-  })
-  
- $("#openDialogRelease" ).on("click",function(){
-   $('#dialogRelease').modal('show');
- })
-   
- $("#openDialogPreview" ).on("click",function(){
-    $('#dialogPreview').modal('show');
-  })
-
-  $("#carousel-main" ).addClass("features-preview");
-
-
-});
+$(document).ready(function(){
+  $('#screenshots-carousel').carousel({
+    interval: 4000
+  })
+
+  $('#carousel-prev' ).on("click", function(){
+    $('#screenshots-carousel').carousel('prev');
+  })
+
+  $('#carousel-next' ).on("click", function(){
+    $('#screenshots-carousel').carousel('next');
+  })
+  
+ $("#openDialogRelease" ).on("click",function(){
+   $('#dialogRelease').modal('show');
+ })
+   
+ $("#openDialogPreview" ).on("click",function(){
+    $('#dialogPreview').modal('show');
+  })
+
+  $("#carousel-main" ).addClass("features-preview");
+
+
+});
diff --git a/js/jquery.fancybox.pack.2.1.5.js b/js/jquery.fancybox.pack.2.1.5.js
index 520782d..73f7578 100644
--- a/js/jquery.fancybox.pack.2.1.5.js
+++ b/js/jquery.fancybox.pack.2.1.5.js
@@ -1,46 +1,46 @@
-/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
-(function(r,G,f,v){var J=f("html"),n=f(r),p=f(G),b=f.fancybox=function(){b.open.apply(this,arguments)},I=navigator.userAgent.match(/msie/i),B=null,s=G.createTouch!==v,t=function(a){return a&&a.hasOwnProperty&&a instanceof f},q=function(a){return a&&"string"===f.type(a)},E=function(a){return q(a)&&0<a.indexOf("%")},l=function(a,d){var e=parseInt(a,10)||0;d&&E(a)&&(e*=b.getViewport()[d]/100);return Math.ceil(e)},w=function(a,b){return l(a,b)+"px"};f.extend(b,{version:"2.1.5",defaults:{padding:15,margin:20,
-width:800,height:600,minWidth:100,minHeight:100,maxWidth:9999,maxHeight:9999,pixelRatio:1,autoSize:!0,autoHeight:!1,autoWidth:!1,autoResize:!0,autoCenter:!s,fitToView:!0,aspectRatio:!1,topRatio:0.5,leftRatio:0.5,scrolling:"auto",wrapCSS:"",arrows:!0,closeBtn:!0,closeClick:!1,nextClick:!1,mouseWheel:!0,autoPlay:!1,playSpeed:3E3,preload:3,modal:!1,loop:!0,ajax:{dataType:"html",headers:{"X-fancyBox":!0}},iframe:{scrolling:"auto",preload:!0},swf:{wmode:"transparent",allowfullscreen:"true",allowscriptaccess:"always"},
-keys:{next:{13:"left",34:"up",39:"left",40:"up"},prev:{8:"right",33:"down",37:"right",38:"down"},close:[27],play:[32],toggle:[70]},direction:{next:"left",prev:"right"},scrollOutside:!0,index:0,type:null,href:null,content:null,title:null,tpl:{wrap:'<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',image:'<img class="fancybox-image" src="{href}" alt="" />',iframe:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen'+
-(I?' allowtransparency="true"':"")+"></iframe>",error:'<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',closeBtn:'<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>',next:'<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>',prev:'<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>'},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0,
-openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1,
-isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=t(a)?f(a).get():[a]),f.each(a,function(e,c){var k={},g,h,j,m,l;"object"===f.type(c)&&(c.nodeType&&(c=f(c)),t(c)?(k={href:c.data("fancybox-href")||c.attr("href"),title:c.data("fancybox-title")||c.attr("title"),isDom:!0,element:c},f.metadata&&f.extend(!0,k,
-c.metadata())):k=c);g=d.href||k.href||(q(c)?c:null);h=d.title!==v?d.title:k.title||"";m=(j=d.content||k.content)?"html":d.type||k.type;!m&&k.isDom&&(m=c.data("fancybox-type"),m||(m=(m=c.prop("class").match(/fancybox\.(\w+)/))?m[1]:null));q(g)&&(m||(b.isImage(g)?m="image":b.isSWF(g)?m="swf":"#"===g.charAt(0)?m="inline":q(c)&&(m="html",j=c)),"ajax"===m&&(l=g.split(/\s+/,2),g=l.shift(),l=l.shift()));j||("inline"===m?g?j=f(q(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):k.isDom&&(j=c):"html"===m?j=g:!m&&(!g&&
-k.isDom)&&(m="inline",j=c));f.extend(k,{href:g,type:m,content:j,title:h,selector:l});a[e]=k}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==v&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1!==b.trigger("onCancel")&&(b.hideLoading(),b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(),b.coming=null,b.current||
-b._afterZoomOut(a))},close:function(a){b.cancel();!1!==b.trigger("beforeClose")&&(b.unbindEvents(),b.isActive&&(!b.isOpen||!0===a?(f(".fancybox-wrap").stop(!0).trigger("onReset").remove(),b._afterZoomOut()):(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(".fancybox-item, .fancybox-nav").remove(),b.wrap.stop(!0,!0).removeClass("fancybox-opened"),b.transitions[b.current.closeMethod]())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&&(b.player.timer=
-setTimeout(b.next,b.current.playSpeed))},c=function(){d();p.unbind(".player");b.player.isActive=!1;b.trigger("onPlayEnd")};if(!0===a||!b.player.isActive&&!1!==a){if(b.current&&(b.current.loop||b.current.index<b.group.length-1))b.player.isActive=!0,p.bind({"onCancel.player beforeClose.player":c,"onUpdate.player":e,"beforeLoad.player":d}),e(),b.trigger("onPlayStart")}else c()},next:function(a){var d=b.current;d&&(q(a)||(a=d.direction.next),b.jumpto(d.index+1,a,"next"))},prev:function(a){var d=b.current;
-d&&(q(a)||(a=d.direction.prev),b.jumpto(d.index-1,a,"prev"))},jumpto:function(a,d,e){var c=b.current;c&&(a=l(a),b.direction=d||c.direction[a>=c.index?"next":"prev"],b.router=e||"jumpto",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==v&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,k;c&&(k=b._getPosition(d),a&&"scroll"===a.type?(delete k.position,c.stop(!0,!0).animate(k,200)):(c.css(k),e.pos=f.extend({},e.dim,k)))},update:function(a){var d=
-a&&a.type,e=!d||"orientationchange"===d;e&&(clearTimeout(B),B=null);b.isOpen&&!B&&(B=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass("fancybox-tmp"),(e||"load"===d||"resize"===d&&c.autoResize)&&b._setDimension(),"scroll"===d&&c.canShrink||b.reposition(a),b.trigger("onUpdate"),B=null)},e&&!s?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView="boolean"===f.type(a)?a:!b.current.fitToView,s&&(b.wrap.removeAttr("style").addClass("fancybox-tmp"),b.trigger("onUpdate")),
-b.update())},hideLoading:function(){p.unbind(".loading");f("#fancybox-loading").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('<div id="fancybox-loading"><div></div></div>').click(b.cancel).appendTo("body");p.bind("keydown.loading",function(a){if(27===(a.which||a.keyCode))a.preventDefault(),b.cancel()});b.defaults.fixed||(d=b.getViewport(),a.css({position:"absolute",top:0.5*d.h+d.y,left:0.5*d.w+d.x}))},getViewport:function(){var a=b.current&&b.current.locked||!1,d={x:n.scrollLeft(),
-y:n.scrollTop()};a?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=s&&r.innerWidth?r.innerWidth:n.width(),d.h=s&&r.innerHeight?r.innerHeight:n.height());return d},unbindEvents:function(){b.wrap&&t(b.wrap)&&b.wrap.unbind(".fb");p.unbind(".fb");n.unbind(".fb")},bindEvents:function(){var a=b.current,d;a&&(n.bind("orientationchange.fb"+(s?"":" resize.fb")+(a.autoCenter&&!a.locked?" scroll.fb":""),b.update),(d=a.keys)&&p.bind("keydown.fb",function(e){var c=e.which||e.keyCode,k=e.target||e.srcElement;
-if(27===c&&b.coming)return!1;!e.ctrlKey&&(!e.altKey&&!e.shiftKey&&!e.metaKey&&(!k||!k.type&&!f(k).is("[contenteditable]")))&&f.each(d,function(d,k){if(1<a.group.length&&k[c]!==v)return b[d](k[c]),e.preventDefault(),!1;if(-1<f.inArray(c,k))return b[d](),e.preventDefault(),!1})}),f.fn.mousewheel&&a.mouseWheel&&b.wrap.bind("mousewheel.fb",function(d,c,k,g){for(var h=f(d.target||null),j=!1;h.length&&!j&&!h.is(".fancybox-skin")&&!h.is(".fancybox-wrap");)j=h[0]&&!(h[0].style.overflow&&"hidden"===h[0].style.overflow)&&
-(h[0].clientWidth&&h[0].scrollWidth>h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();if(0!==c&&!j&&1<b.group.length&&!a.canShrink){if(0<g||0<k)b.prev(0<g?"down":"left");else if(0>g||0>k)b.next(0>g?"up":"right");d.preventDefault()}}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d,e){if(e&&b.helpers[d]&&f.isFunction(b.helpers[d][a]))b.helpers[d][a](f.extend(!0,
-{},b.helpers[d].defaults,e),c)});p.trigger(a)}},isImage:function(a){return q(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)},isSWF:function(a){return q(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var d={},e,c;a=l(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;"number"===f.type(e)&&(d.margin=[e,e,e,e]);"number"===f.type(c)&&(d.padding=[c,c,c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,
-mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);"auto"===d.width&&(d.autoWidth=!0);"auto"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger("beforeLoad"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&"jumpto"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive=!0;if("image"===c||"swf"===c)d.autoHeight=d.autoWidth=!1,d.scrolling="visible";"image"===c&&(d.aspectRatio=
-!0);"iframe"===c&&s&&(d.scrolling="scroll");d.wrap=f(d.tpl.wrap).addClass("fancybox-"+(s?"mobile":"desktop")+" fancybox-type-"+c+" fancybox-tmp "+d.wrapCSS).appendTo(d.parent||"body");f.extend(d,{skin:f(".fancybox-skin",d.wrap),outer:f(".fancybox-outer",d.wrap),inner:f(".fancybox-inner",d.wrap)});f.each(["Top","Right","Bottom","Left"],function(a,b){d.skin.css("padding"+b,w(d.padding[a]))});b.trigger("onReady");if("inline"===c||"html"===c){if(!d.content||!d.content.length)return b._error("content")}else if(!e)return b._error("href");
-"image"===c?b._loadImage():"ajax"===c?b._loadAjax():"iframe"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width=this.width/b.opts.pixelRatio;b.coming.height=this.height/b.opts.pixelRatio;b._afterLoad()};a.onerror=function(){this.onload=
-this.onerror=null;b._error("image")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&"abort"!==e?b._error("ajax",a):b.hideLoading()},success:function(d,e){"success"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming,d=f(a.tpl.iframe.replace(/\{rnd\}/g,(new Date).getTime())).attr("scrolling",s?"auto":a.iframe.scrolling).attr("src",a.href);
-f(a.wrap).bind("onReset",function(){try{f(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one("load",function(){f(this).data("ready",1);s||f(this).bind("load.fb",b.update);f(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload||b._afterLoad()},_preloadImages:function(){var a=b.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,
-e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],"image"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,k,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger("afterLoad",a,d))a.wrap.stop(!0).trigger("onReset").remove(),b.coming=null;else{d&&(b.trigger("beforeChange",d),d.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove());b.unbindEvents();e=a.content;c=a.type;k=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,
-outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case "inline":case "ajax":case "html":a.selector?e=f("<div>").html(e).find(a.selector):t(e)&&(e.data("fancybox-placeholder")||e.data("fancybox-placeholder",f('<div class="fancybox-placeholder"></div>').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind("onReset",function(){f(this).find(e).length&&e.hide().replaceAll(e.data("fancybox-placeholder")).data("fancybox-placeholder",!1)}));break;case "image":e=a.tpl.image.replace("{href}",
-g);break;case "swf":e='<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="'+g+'"></param>',h="",f.each(a.swf,function(a,b){e+='<param name="'+a+'" value="'+b+'"></param>';h+=" "+a+'="'+b+'"'}),e+='<embed src="'+g+'" type="application/x-shockwave-flash" width="100%" height="100%"'+h+"></embed></object>"}(!t(e)||!e.parent().is(a.inner))&&a.inner.append(e);b.trigger("beforeShow");a.inner.css("overflow","yes"===k?"scroll":
-"no"===k?"hidden":k);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(b.isOpened){if(d.prevMethod)b.transitions[d.prevMethod]()}else f(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,k=b.skin,g=b.inner,h=b.current,c=h.width,j=h.height,m=h.minWidth,u=h.minHeight,n=h.maxWidth,p=h.maxHeight,s=h.scrolling,q=h.scrollOutside?
-h.scrollbarWidth:0,x=h.margin,y=l(x[1]+x[3]),r=l(x[0]+x[2]),v,z,t,C,A,F,B,D,H;e.add(k).add(g).width("auto").height("auto").removeClass("fancybox-tmp");x=l(k.outerWidth(!0)-k.width());v=l(k.outerHeight(!0)-k.height());z=y+x;t=r+v;C=E(c)?(a.w-z)*l(c)/100:c;A=E(j)?(a.h-t)*l(j)/100:j;if("iframe"===h.type){if(H=h.content,h.autoHeight&&1===H.data("ready"))try{H[0].contentWindow.document.location&&(g.width(C).height(9999),F=H.contents().find("body"),q&&F.css("overflow-x","hidden"),A=F.outerHeight(!0))}catch(G){}}else if(h.autoWidth||
-h.autoHeight)g.addClass("fancybox-tmp"),h.autoWidth||g.width(C),h.autoHeight||g.height(A),h.autoWidth&&(C=g.width()),h.autoHeight&&(A=g.height()),g.removeClass("fancybox-tmp");c=l(C);j=l(A);D=C/A;m=l(E(m)?l(m,"w")-z:m);n=l(E(n)?l(n,"w")-z:n);u=l(E(u)?l(u,"h")-t:u);p=l(E(p)?l(p,"h")-t:p);F=n;B=p;h.fitToView&&(n=Math.min(a.w-z,n),p=Math.min(a.h-t,p));z=a.w-y;r=a.h-r;h.aspectRatio?(c>n&&(c=n,j=l(c/D)),j>p&&(j=p,c=l(j*D)),c<m&&(c=m,j=l(c/D)),j<u&&(j=u,c=l(j*D))):(c=Math.max(m,Math.min(c,n)),h.autoHeight&&
-"iframe"!==h.type&&(g.width(c),j=g.height()),j=Math.max(u,Math.min(j,p)));if(h.fitToView)if(g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height(),h.aspectRatio)for(;(a>z||y>r)&&(c>m&&j>u)&&!(19<d++);)j=Math.max(u,Math.min(p,j-10)),c=l(j*D),c<m&&(c=m,j=l(c/D)),c>n&&(c=n,j=l(c/D)),g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height();else c=Math.max(m,Math.min(c,c-(a-z))),j=Math.max(u,Math.min(j,j-(y-r)));q&&("auto"===s&&j<A&&c+x+q<z)&&(c+=q);g.width(c).height(j);e.width(c+x);a=e.width();
-y=e.height();e=(a>z||y>r)&&c>m&&j>u;c=h.aspectRatio?c<F&&j<B&&c<C&&j<A:(c<F||j<B)&&(c<C||j<A);f.extend(h,{dim:{width:w(a),height:w(y)},origWidth:C,origHeight:A,canShrink:e,canExpand:c,wPadding:x,hPadding:v,wrapSpace:y-k.outerHeight(!0),skinSpace:k.height()-j});!H&&(h.autoHeight&&j>u&&j<p&&!c)&&g.height("auto")},_getPosition:function(a){var d=b.current,e=b.getViewport(),c=d.margin,f=b.wrap.width()+c[1]+c[3],g=b.wrap.height()+c[0]+c[2],c={position:"absolute",top:c[0],left:c[3]};d.autoCenter&&d.fixed&&
-!a&&g<=e.h&&f<=e.w?c.position="fixed":d.locked||(c.top+=e.y,c.left+=e.x);c.top=w(Math.max(c.top,c.top+(e.h-g)*d.topRatio));c.left=w(Math.max(c.left,c.left+(e.w-f)*d.leftRatio));return c},_afterZoomIn:function(){var a=b.current;a&&(b.isOpen=b.isOpened=!0,b.wrap.css("overflow","visible").addClass("fancybox-opened"),b.update(),(a.closeClick||a.nextClick&&1<b.group.length)&&b.inner.css("cursor","pointer").bind("click.fb",function(d){!f(d.target).is("a")&&!f(d.target).parent().is("a")&&(d.preventDefault(),
-b[a.closeClick?"close":"next"]())}),a.closeBtn&&f(a.tpl.closeBtn).appendTo(b.skin).bind("click.fb",function(a){a.preventDefault();b.close()}),a.arrows&&1<b.group.length&&((a.loop||0<a.index)&&f(a.tpl.prev).appendTo(b.outer).bind("click.fb",b.prev),(a.loop||a.index<b.group.length-1)&&f(a.tpl.next).appendTo(b.outer).bind("click.fb",b.next)),b.trigger("afterShow"),!a.loop&&a.index===a.group.length-1?b.play(!1):b.opts.autoPlay&&!b.player.isActive&&(b.opts.autoPlay=!1,b.play()))},_afterZoomOut:function(a){a=
-a||b.current;f(".fancybox-wrap").trigger("onReset").remove();f.extend(b,{group:{},opts:{},router:!1,current:null,isActive:!1,isOpened:!1,isOpen:!1,isClosing:!1,wrap:null,skin:null,outer:null,inner:null});b.trigger("afterClose",a)}});b.transitions={getOrigPosition:function(){var a=b.current,d=a.element,e=a.orig,c={},f=50,g=50,h=a.hPadding,j=a.wPadding,m=b.getViewport();!e&&(a.isDom&&d.is(":visible"))&&(e=d.find("img:first"),e.length||(e=d));t(e)?(c=e.offset(),e.is("img")&&(f=e.outerWidth(),g=e.outerHeight())):
-(c.top=m.y+(m.h-g)*a.topRatio,c.left=m.x+(m.w-f)*a.leftRatio);if("fixed"===b.wrap.css("position")||a.locked)c.top-=m.y,c.left-=m.x;return c={top:w(c.top-h*a.topRatio),left:w(c.left-j*a.leftRatio),width:w(f+j),height:w(g+h)}},step:function(a,d){var e,c,f=d.prop;c=b.current;var g=c.wrapSpace,h=c.skinSpace;if("width"===f||"height"===f)e=d.end===d.start?1:(a-d.start)/(d.end-d.start),b.isClosing&&(e=1-e),c="width"===f?c.wPadding:c.hPadding,c=a-c,b.skin[f](l("width"===f?c:c-g*e)),b.inner[f](l("width"===
-f?c:c-g*e-h*e))},zoomIn:function(){var a=b.current,d=a.pos,e=a.openEffect,c="elastic"===e,k=f.extend({opacity:1},d);delete k.position;c?(d=this.getOrigPosition(),a.openOpacity&&(d.opacity=0.1)):"fade"===e&&(d.opacity=0.1);b.wrap.css(d).animate(k,{duration:"none"===e?0:a.openSpeed,easing:a.openEasing,step:c?this.step:null,complete:b._afterZoomIn})},zoomOut:function(){var a=b.current,d=a.closeEffect,e="elastic"===d,c={opacity:0.1};e&&(c=this.getOrigPosition(),a.closeOpacity&&(c.opacity=0.1));b.wrap.animate(c,
-{duration:"none"===d?0:a.closeSpeed,easing:a.closeEasing,step:e?this.step:null,complete:b._afterZoomOut})},changeIn:function(){var a=b.current,d=a.nextEffect,e=a.pos,c={opacity:1},f=b.direction,g;e.opacity=0.1;"elastic"===d&&(g="down"===f||"up"===f?"top":"left","down"===f||"right"===f?(e[g]=w(l(e[g])-200),c[g]="+=200px"):(e[g]=w(l(e[g])+200),c[g]="-=200px"));"none"===d?b._afterZoomIn():b.wrap.css(e).animate(c,{duration:a.nextSpeed,easing:a.nextEasing,complete:b._afterZoomIn})},changeOut:function(){var a=
-b.previous,d=a.prevEffect,e={opacity:0.1},c=b.direction;"elastic"===d&&(e["down"===c||"up"===c?"top":"left"]=("up"===c||"left"===c?"-":"+")+"=200px");a.wrap.animate(e,{duration:"none"===d?0:a.prevSpeed,easing:a.prevEasing,complete:function(){f(this).trigger("onReset").remove()}})}};b.helpers.overlay={defaults:{closeClick:!0,speedOut:200,showEarly:!0,css:{},locked:!s,fixed:!0},overlay:null,fixed:!1,el:f("html"),create:function(a){a=f.extend({},this.defaults,a);this.overlay&&this.close();this.overlay=
-f('<div class="fancybox-overlay"></div>').appendTo(b.coming?b.coming.parent:a.parent);this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var d=this;a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a);this.fixed||(n.bind("resize.overlay",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind("click.overlay",function(a){if(f(a.target).hasClass("fancybox-overlay"))return b.isActive?
-b.close():d.close(),!1});this.overlay.css(a.css).show()},close:function(){var a,b;n.unbind("resize.overlay");this.el.hasClass("fancybox-lock")&&(f(".fancybox-margin").removeClass("fancybox-margin"),a=n.scrollTop(),b=n.scrollLeft(),this.el.removeClass("fancybox-lock"),n.scrollTop(a).scrollLeft(b));f(".fancybox-overlay").remove().hide();f.extend(this,{overlay:null,fixed:!1})},update:function(){var a="100%",b;this.overlay.width(a).height("100%");I?(b=Math.max(G.documentElement.offsetWidth,G.body.offsetWidth),
-p.width()>b&&(a=p.width())):p.width()>n.width()&&(a=p.width());this.overlay.width(a).height(p.height())},onReady:function(a,b){var e=this.overlay;f(".fancybox-overlay").stop(!0,!0);e||this.create(a);a.locked&&(this.fixed&&b.fixed)&&(e||(this.margin=p.height()>n.height()?f("html").css("margin-right").replace("px",""):!1),b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){var e,c;b.locked&&(!1!==this.margin&&(f("*").filter(function(){return"fixed"===
-f(this).css("position")&&!f(this).hasClass("fancybox-overlay")&&!f(this).hasClass("fancybox-wrap")}).addClass("fancybox-margin"),this.el.addClass("fancybox-margin")),e=n.scrollTop(),c=n.scrollLeft(),this.el.addClass("fancybox-lock"),n.scrollTop(e).scrollLeft(c));this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!b.coming&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:"float",position:"bottom"},beforeShow:function(a){var d=
-b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(q(e)&&""!==f.trim(e)){d=f('<div class="fancybox-title fancybox-title-'+c+'-wrap">'+e+"</div>");switch(c){case "inside":c=b.skin;break;case "outside":c=b.wrap;break;case "over":c=b.inner;break;default:c=b.skin,d.appendTo("body"),I&&d.width(d.width()),d.wrapInner('<span class="child"></span>'),b.current.margin[2]+=Math.abs(l(d.css("margin-bottom")))}d["top"===a.position?"prependTo":"appendTo"](c)}}};f.fn.fancybox=function(a){var d,
-e=f(this),c=this.selector||"",k=function(g){var h=f(this).blur(),j=d,k,l;!g.ctrlKey&&(!g.altKey&&!g.shiftKey&&!g.metaKey)&&!h.is(".fancybox-wrap")&&(k=a.groupAttr||"data-fancybox-group",l=h.attr(k),l||(k="rel",l=h.get(0)[k]),l&&(""!==l&&"nofollow"!==l)&&(h=c.length?f(c):e,h=h.filter("["+k+'="'+l+'"]'),j=h.index(this)),a.index=j,!1!==b.open(h,a)&&g.preventDefault())};a=a||{};d=a.index||0;!c||!1===a.live?e.unbind("click.fb-start").bind("click.fb-start",k):p.undelegate(c,"click.fb-start").delegate(c+
-":not('.fancybox-item, .fancybox-nav')","click.fb-start",k);this.filter("[data-fancybox-start=1]").trigger("click");return this};p.ready(function(){var a,d;f.scrollbarWidth===v&&(f.scrollbarWidth=function(){var a=f('<div style="width:50px;height:50px;overflow:auto"><div/></div>').appendTo("body"),b=a.children(),b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});if(f.support.fixedPosition===v){a=f.support;d=f('<div style="position:fixed;top:20px;"></div>').appendTo("body");var e=20===
+/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
+(function(r,G,f,v){var J=f("html"),n=f(r),p=f(G),b=f.fancybox=function(){b.open.apply(this,arguments)},I=navigator.userAgent.match(/msie/i),B=null,s=G.createTouch!==v,t=function(a){return a&&a.hasOwnProperty&&a instanceof f},q=function(a){return a&&"string"===f.type(a)},E=function(a){return q(a)&&0<a.indexOf("%")},l=function(a,d){var e=parseInt(a,10)||0;d&&E(a)&&(e*=b.getViewport()[d]/100);return Math.ceil(e)},w=function(a,b){return l(a,b)+"px"};f.extend(b,{version:"2.1.5",defaults:{padding:15,margin:20,
+width:800,height:600,minWidth:100,minHeight:100,maxWidth:9999,maxHeight:9999,pixelRatio:1,autoSize:!0,autoHeight:!1,autoWidth:!1,autoResize:!0,autoCenter:!s,fitToView:!0,aspectRatio:!1,topRatio:0.5,leftRatio:0.5,scrolling:"auto",wrapCSS:"",arrows:!0,closeBtn:!0,closeClick:!1,nextClick:!1,mouseWheel:!0,autoPlay:!1,playSpeed:3E3,preload:3,modal:!1,loop:!0,ajax:{dataType:"html",headers:{"X-fancyBox":!0}},iframe:{scrolling:"auto",preload:!0},swf:{wmode:"transparent",allowfullscreen:"true",allowscriptaccess:"always"},
+keys:{next:{13:"left",34:"up",39:"left",40:"up"},prev:{8:"right",33:"down",37:"right",38:"down"},close:[27],play:[32],toggle:[70]},direction:{next:"left",prev:"right"},scrollOutside:!0,index:0,type:null,href:null,content:null,title:null,tpl:{wrap:'<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',image:'<img class="fancybox-image" src="{href}" alt="" />',iframe:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen'+
+(I?' allowtransparency="true"':"")+"></iframe>",error:'<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',closeBtn:'<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>',next:'<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>',prev:'<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>'},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0,
+openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1,
+isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=t(a)?f(a).get():[a]),f.each(a,function(e,c){var k={},g,h,j,m,l;"object"===f.type(c)&&(c.nodeType&&(c=f(c)),t(c)?(k={href:c.data("fancybox-href")||c.attr("href"),title:c.data("fancybox-title")||c.attr("title"),isDom:!0,element:c},f.metadata&&f.extend(!0,k,
+c.metadata())):k=c);g=d.href||k.href||(q(c)?c:null);h=d.title!==v?d.title:k.title||"";m=(j=d.content||k.content)?"html":d.type||k.type;!m&&k.isDom&&(m=c.data("fancybox-type"),m||(m=(m=c.prop("class").match(/fancybox\.(\w+)/))?m[1]:null));q(g)&&(m||(b.isImage(g)?m="image":b.isSWF(g)?m="swf":"#"===g.charAt(0)?m="inline":q(c)&&(m="html",j=c)),"ajax"===m&&(l=g.split(/\s+/,2),g=l.shift(),l=l.shift()));j||("inline"===m?g?j=f(q(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):k.isDom&&(j=c):"html"===m?j=g:!m&&(!g&&
+k.isDom)&&(m="inline",j=c));f.extend(k,{href:g,type:m,content:j,title:h,selector:l});a[e]=k}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==v&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1!==b.trigger("onCancel")&&(b.hideLoading(),b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(),b.coming=null,b.current||
+b._afterZoomOut(a))},close:function(a){b.cancel();!1!==b.trigger("beforeClose")&&(b.unbindEvents(),b.isActive&&(!b.isOpen||!0===a?(f(".fancybox-wrap").stop(!0).trigger("onReset").remove(),b._afterZoomOut()):(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(".fancybox-item, .fancybox-nav").remove(),b.wrap.stop(!0,!0).removeClass("fancybox-opened"),b.transitions[b.current.closeMethod]())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&&(b.player.timer=
+setTimeout(b.next,b.current.playSpeed))},c=function(){d();p.unbind(".player");b.player.isActive=!1;b.trigger("onPlayEnd")};if(!0===a||!b.player.isActive&&!1!==a){if(b.current&&(b.current.loop||b.current.index<b.group.length-1))b.player.isActive=!0,p.bind({"onCancel.player beforeClose.player":c,"onUpdate.player":e,"beforeLoad.player":d}),e(),b.trigger("onPlayStart")}else c()},next:function(a){var d=b.current;d&&(q(a)||(a=d.direction.next),b.jumpto(d.index+1,a,"next"))},prev:function(a){var d=b.current;
+d&&(q(a)||(a=d.direction.prev),b.jumpto(d.index-1,a,"prev"))},jumpto:function(a,d,e){var c=b.current;c&&(a=l(a),b.direction=d||c.direction[a>=c.index?"next":"prev"],b.router=e||"jumpto",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==v&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,k;c&&(k=b._getPosition(d),a&&"scroll"===a.type?(delete k.position,c.stop(!0,!0).animate(k,200)):(c.css(k),e.pos=f.extend({},e.dim,k)))},update:function(a){var d=
+a&&a.type,e=!d||"orientationchange"===d;e&&(clearTimeout(B),B=null);b.isOpen&&!B&&(B=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass("fancybox-tmp"),(e||"load"===d||"resize"===d&&c.autoResize)&&b._setDimension(),"scroll"===d&&c.canShrink||b.reposition(a),b.trigger("onUpdate"),B=null)},e&&!s?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView="boolean"===f.type(a)?a:!b.current.fitToView,s&&(b.wrap.removeAttr("style").addClass("fancybox-tmp"),b.trigger("onUpdate")),
+b.update())},hideLoading:function(){p.unbind(".loading");f("#fancybox-loading").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('<div id="fancybox-loading"><div></div></div>').click(b.cancel).appendTo("body");p.bind("keydown.loading",function(a){if(27===(a.which||a.keyCode))a.preventDefault(),b.cancel()});b.defaults.fixed||(d=b.getViewport(),a.css({position:"absolute",top:0.5*d.h+d.y,left:0.5*d.w+d.x}))},getViewport:function(){var a=b.current&&b.current.locked||!1,d={x:n.scrollLeft(),
+y:n.scrollTop()};a?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=s&&r.innerWidth?r.innerWidth:n.width(),d.h=s&&r.innerHeight?r.innerHeight:n.height());return d},unbindEvents:function(){b.wrap&&t(b.wrap)&&b.wrap.unbind(".fb");p.unbind(".fb");n.unbind(".fb")},bindEvents:function(){var a=b.current,d;a&&(n.bind("orientationchange.fb"+(s?"":" resize.fb")+(a.autoCenter&&!a.locked?" scroll.fb":""),b.update),(d=a.keys)&&p.bind("keydown.fb",function(e){var c=e.which||e.keyCode,k=e.target||e.srcElement;
+if(27===c&&b.coming)return!1;!e.ctrlKey&&(!e.altKey&&!e.shiftKey&&!e.metaKey&&(!k||!k.type&&!f(k).is("[contenteditable]")))&&f.each(d,function(d,k){if(1<a.group.length&&k[c]!==v)return b[d](k[c]),e.preventDefault(),!1;if(-1<f.inArray(c,k))return b[d](),e.preventDefault(),!1})}),f.fn.mousewheel&&a.mouseWheel&&b.wrap.bind("mousewheel.fb",function(d,c,k,g){for(var h=f(d.target||null),j=!1;h.length&&!j&&!h.is(".fancybox-skin")&&!h.is(".fancybox-wrap");)j=h[0]&&!(h[0].style.overflow&&"hidden"===h[0].style.overflow)&&
+(h[0].clientWidth&&h[0].scrollWidth>h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();if(0!==c&&!j&&1<b.group.length&&!a.canShrink){if(0<g||0<k)b.prev(0<g?"down":"left");else if(0>g||0>k)b.next(0>g?"up":"right");d.preventDefault()}}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d,e){if(e&&b.helpers[d]&&f.isFunction(b.helpers[d][a]))b.helpers[d][a](f.extend(!0,
+{},b.helpers[d].defaults,e),c)});p.trigger(a)}},isImage:function(a){return q(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)},isSWF:function(a){return q(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var d={},e,c;a=l(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;"number"===f.type(e)&&(d.margin=[e,e,e,e]);"number"===f.type(c)&&(d.padding=[c,c,c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,
+mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);"auto"===d.width&&(d.autoWidth=!0);"auto"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger("beforeLoad"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&"jumpto"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive=!0;if("image"===c||"swf"===c)d.autoHeight=d.autoWidth=!1,d.scrolling="visible";"image"===c&&(d.aspectRatio=
+!0);"iframe"===c&&s&&(d.scrolling="scroll");d.wrap=f(d.tpl.wrap).addClass("fancybox-"+(s?"mobile":"desktop")+" fancybox-type-"+c+" fancybox-tmp "+d.wrapCSS).appendTo(d.parent||"body");f.extend(d,{skin:f(".fancybox-skin",d.wrap),outer:f(".fancybox-outer",d.wrap),inner:f(".fancybox-inner",d.wrap)});f.each(["Top","Right","Bottom","Left"],function(a,b){d.skin.css("padding"+b,w(d.padding[a]))});b.trigger("onReady");if("inline"===c||"html"===c){if(!d.content||!d.content.length)return b._error("content")}else if(!e)return b._error("href");
+"image"===c?b._loadImage():"ajax"===c?b._loadAjax():"iframe"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width=this.width/b.opts.pixelRatio;b.coming.height=this.height/b.opts.pixelRatio;b._afterLoad()};a.onerror=function(){this.onload=
+this.onerror=null;b._error("image")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&"abort"!==e?b._error("ajax",a):b.hideLoading()},success:function(d,e){"success"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming,d=f(a.tpl.iframe.replace(/\{rnd\}/g,(new Date).getTime())).attr("scrolling",s?"auto":a.iframe.scrolling).attr("src",a.href);
+f(a.wrap).bind("onReset",function(){try{f(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one("load",function(){f(this).data("ready",1);s||f(this).bind("load.fb",b.update);f(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload||b._afterLoad()},_preloadImages:function(){var a=b.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,
+e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],"image"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,k,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger("afterLoad",a,d))a.wrap.stop(!0).trigger("onReset").remove(),b.coming=null;else{d&&(b.trigger("beforeChange",d),d.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove());b.unbindEvents();e=a.content;c=a.type;k=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,
+outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case "inline":case "ajax":case "html":a.selector?e=f("<div>").html(e).find(a.selector):t(e)&&(e.data("fancybox-placeholder")||e.data("fancybox-placeholder",f('<div class="fancybox-placeholder"></div>').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind("onReset",function(){f(this).find(e).length&&e.hide().replaceAll(e.data("fancybox-placeholder")).data("fancybox-placeholder",!1)}));break;case "image":e=a.tpl.image.replace("{href}",
+g);break;case "swf":e='<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="'+g+'"></param>',h="",f.each(a.swf,function(a,b){e+='<param name="'+a+'" value="'+b+'"></param>';h+=" "+a+'="'+b+'"'}),e+='<embed src="'+g+'" type="application/x-shockwave-flash" width="100%" height="100%"'+h+"></embed></object>"}(!t(e)||!e.parent().is(a.inner))&&a.inner.append(e);b.trigger("beforeShow");a.inner.css("overflow","yes"===k?"scroll":
+"no"===k?"hidden":k);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(b.isOpened){if(d.prevMethod)b.transitions[d.prevMethod]()}else f(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,k=b.skin,g=b.inner,h=b.current,c=h.width,j=h.height,m=h.minWidth,u=h.minHeight,n=h.maxWidth,p=h.maxHeight,s=h.scrolling,q=h.scrollOutside?
+h.scrollbarWidth:0,x=h.margin,y=l(x[1]+x[3]),r=l(x[0]+x[2]),v,z,t,C,A,F,B,D,H;e.add(k).add(g).width("auto").height("auto").removeClass("fancybox-tmp");x=l(k.outerWidth(!0)-k.width());v=l(k.outerHeight(!0)-k.height());z=y+x;t=r+v;C=E(c)?(a.w-z)*l(c)/100:c;A=E(j)?(a.h-t)*l(j)/100:j;if("iframe"===h.type){if(H=h.content,h.autoHeight&&1===H.data("ready"))try{H[0].contentWindow.document.location&&(g.width(C).height(9999),F=H.contents().find("body"),q&&F.css("overflow-x","hidden"),A=F.outerHeight(!0))}catch(G){}}else if(h.autoWidth||
+h.autoHeight)g.addClass("fancybox-tmp"),h.autoWidth||g.width(C),h.autoHeight||g.height(A),h.autoWidth&&(C=g.width()),h.autoHeight&&(A=g.height()),g.removeClass("fancybox-tmp");c=l(C);j=l(A);D=C/A;m=l(E(m)?l(m,"w")-z:m);n=l(E(n)?l(n,"w")-z:n);u=l(E(u)?l(u,"h")-t:u);p=l(E(p)?l(p,"h")-t:p);F=n;B=p;h.fitToView&&(n=Math.min(a.w-z,n),p=Math.min(a.h-t,p));z=a.w-y;r=a.h-r;h.aspectRatio?(c>n&&(c=n,j=l(c/D)),j>p&&(j=p,c=l(j*D)),c<m&&(c=m,j=l(c/D)),j<u&&(j=u,c=l(j*D))):(c=Math.max(m,Math.min(c,n)),h.autoHeight&&
+"iframe"!==h.type&&(g.width(c),j=g.height()),j=Math.max(u,Math.min(j,p)));if(h.fitToView)if(g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height(),h.aspectRatio)for(;(a>z||y>r)&&(c>m&&j>u)&&!(19<d++);)j=Math.max(u,Math.min(p,j-10)),c=l(j*D),c<m&&(c=m,j=l(c/D)),c>n&&(c=n,j=l(c/D)),g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height();else c=Math.max(m,Math.min(c,c-(a-z))),j=Math.max(u,Math.min(j,j-(y-r)));q&&("auto"===s&&j<A&&c+x+q<z)&&(c+=q);g.width(c).height(j);e.width(c+x);a=e.width();
+y=e.height();e=(a>z||y>r)&&c>m&&j>u;c=h.aspectRatio?c<F&&j<B&&c<C&&j<A:(c<F||j<B)&&(c<C||j<A);f.extend(h,{dim:{width:w(a),height:w(y)},origWidth:C,origHeight:A,canShrink:e,canExpand:c,wPadding:x,hPadding:v,wrapSpace:y-k.outerHeight(!0),skinSpace:k.height()-j});!H&&(h.autoHeight&&j>u&&j<p&&!c)&&g.height("auto")},_getPosition:function(a){var d=b.current,e=b.getViewport(),c=d.margin,f=b.wrap.width()+c[1]+c[3],g=b.wrap.height()+c[0]+c[2],c={position:"absolute",top:c[0],left:c[3]};d.autoCenter&&d.fixed&&
+!a&&g<=e.h&&f<=e.w?c.position="fixed":d.locked||(c.top+=e.y,c.left+=e.x);c.top=w(Math.max(c.top,c.top+(e.h-g)*d.topRatio));c.left=w(Math.max(c.left,c.left+(e.w-f)*d.leftRatio));return c},_afterZoomIn:function(){var a=b.current;a&&(b.isOpen=b.isOpened=!0,b.wrap.css("overflow","visible").addClass("fancybox-opened"),b.update(),(a.closeClick||a.nextClick&&1<b.group.length)&&b.inner.css("cursor","pointer").bind("click.fb",function(d){!f(d.target).is("a")&&!f(d.target).parent().is("a")&&(d.preventDefault(),
+b[a.closeClick?"close":"next"]())}),a.closeBtn&&f(a.tpl.closeBtn).appendTo(b.skin).bind("click.fb",function(a){a.preventDefault();b.close()}),a.arrows&&1<b.group.length&&((a.loop||0<a.index)&&f(a.tpl.prev).appendTo(b.outer).bind("click.fb",b.prev),(a.loop||a.index<b.group.length-1)&&f(a.tpl.next).appendTo(b.outer).bind("click.fb",b.next)),b.trigger("afterShow"),!a.loop&&a.index===a.group.length-1?b.play(!1):b.opts.autoPlay&&!b.player.isActive&&(b.opts.autoPlay=!1,b.play()))},_afterZoomOut:function(a){a=
+a||b.current;f(".fancybox-wrap").trigger("onReset").remove();f.extend(b,{group:{},opts:{},router:!1,current:null,isActive:!1,isOpened:!1,isOpen:!1,isClosing:!1,wrap:null,skin:null,outer:null,inner:null});b.trigger("afterClose",a)}});b.transitions={getOrigPosition:function(){var a=b.current,d=a.element,e=a.orig,c={},f=50,g=50,h=a.hPadding,j=a.wPadding,m=b.getViewport();!e&&(a.isDom&&d.is(":visible"))&&(e=d.find("img:first"),e.length||(e=d));t(e)?(c=e.offset(),e.is("img")&&(f=e.outerWidth(),g=e.outerHeight())):
+(c.top=m.y+(m.h-g)*a.topRatio,c.left=m.x+(m.w-f)*a.leftRatio);if("fixed"===b.wrap.css("position")||a.locked)c.top-=m.y,c.left-=m.x;return c={top:w(c.top-h*a.topRatio),left:w(c.left-j*a.leftRatio),width:w(f+j),height:w(g+h)}},step:function(a,d){var e,c,f=d.prop;c=b.current;var g=c.wrapSpace,h=c.skinSpace;if("width"===f||"height"===f)e=d.end===d.start?1:(a-d.start)/(d.end-d.start),b.isClosing&&(e=1-e),c="width"===f?c.wPadding:c.hPadding,c=a-c,b.skin[f](l("width"===f?c:c-g*e)),b.inner[f](l("width"===
+f?c:c-g*e-h*e))},zoomIn:function(){var a=b.current,d=a.pos,e=a.openEffect,c="elastic"===e,k=f.extend({opacity:1},d);delete k.position;c?(d=this.getOrigPosition(),a.openOpacity&&(d.opacity=0.1)):"fade"===e&&(d.opacity=0.1);b.wrap.css(d).animate(k,{duration:"none"===e?0:a.openSpeed,easing:a.openEasing,step:c?this.step:null,complete:b._afterZoomIn})},zoomOut:function(){var a=b.current,d=a.closeEffect,e="elastic"===d,c={opacity:0.1};e&&(c=this.getOrigPosition(),a.closeOpacity&&(c.opacity=0.1));b.wrap.animate(c,
+{duration:"none"===d?0:a.closeSpeed,easing:a.closeEasing,step:e?this.step:null,complete:b._afterZoomOut})},changeIn:function(){var a=b.current,d=a.nextEffect,e=a.pos,c={opacity:1},f=b.direction,g;e.opacity=0.1;"elastic"===d&&(g="down"===f||"up"===f?"top":"left","down"===f||"right"===f?(e[g]=w(l(e[g])-200),c[g]="+=200px"):(e[g]=w(l(e[g])+200),c[g]="-=200px"));"none"===d?b._afterZoomIn():b.wrap.css(e).animate(c,{duration:a.nextSpeed,easing:a.nextEasing,complete:b._afterZoomIn})},changeOut:function(){var a=
+b.previous,d=a.prevEffect,e={opacity:0.1},c=b.direction;"elastic"===d&&(e["down"===c||"up"===c?"top":"left"]=("up"===c||"left"===c?"-":"+")+"=200px");a.wrap.animate(e,{duration:"none"===d?0:a.prevSpeed,easing:a.prevEasing,complete:function(){f(this).trigger("onReset").remove()}})}};b.helpers.overlay={defaults:{closeClick:!0,speedOut:200,showEarly:!0,css:{},locked:!s,fixed:!0},overlay:null,fixed:!1,el:f("html"),create:function(a){a=f.extend({},this.defaults,a);this.overlay&&this.close();this.overlay=
+f('<div class="fancybox-overlay"></div>').appendTo(b.coming?b.coming.parent:a.parent);this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var d=this;a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a);this.fixed||(n.bind("resize.overlay",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind("click.overlay",function(a){if(f(a.target).hasClass("fancybox-overlay"))return b.isActive?
+b.close():d.close(),!1});this.overlay.css(a.css).show()},close:function(){var a,b;n.unbind("resize.overlay");this.el.hasClass("fancybox-lock")&&(f(".fancybox-margin").removeClass("fancybox-margin"),a=n.scrollTop(),b=n.scrollLeft(),this.el.removeClass("fancybox-lock"),n.scrollTop(a).scrollLeft(b));f(".fancybox-overlay").remove().hide();f.extend(this,{overlay:null,fixed:!1})},update:function(){var a="100%",b;this.overlay.width(a).height("100%");I?(b=Math.max(G.documentElement.offsetWidth,G.body.offsetWidth),
+p.width()>b&&(a=p.width())):p.width()>n.width()&&(a=p.width());this.overlay.width(a).height(p.height())},onReady:function(a,b){var e=this.overlay;f(".fancybox-overlay").stop(!0,!0);e||this.create(a);a.locked&&(this.fixed&&b.fixed)&&(e||(this.margin=p.height()>n.height()?f("html").css("margin-right").replace("px",""):!1),b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){var e,c;b.locked&&(!1!==this.margin&&(f("*").filter(function(){return"fixed"===
+f(this).css("position")&&!f(this).hasClass("fancybox-overlay")&&!f(this).hasClass("fancybox-wrap")}).addClass("fancybox-margin"),this.el.addClass("fancybox-margin")),e=n.scrollTop(),c=n.scrollLeft(),this.el.addClass("fancybox-lock"),n.scrollTop(e).scrollLeft(c));this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!b.coming&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:"float",position:"bottom"},beforeShow:function(a){var d=
+b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(q(e)&&""!==f.trim(e)){d=f('<div class="fancybox-title fancybox-title-'+c+'-wrap">'+e+"</div>");switch(c){case "inside":c=b.skin;break;case "outside":c=b.wrap;break;case "over":c=b.inner;break;default:c=b.skin,d.appendTo("body"),I&&d.width(d.width()),d.wrapInner('<span class="child"></span>'),b.current.margin[2]+=Math.abs(l(d.css("margin-bottom")))}d["top"===a.position?"prependTo":"appendTo"](c)}}};f.fn.fancybox=function(a){var d,
+e=f(this),c=this.selector||"",k=function(g){var h=f(this).blur(),j=d,k,l;!g.ctrlKey&&(!g.altKey&&!g.shiftKey&&!g.metaKey)&&!h.is(".fancybox-wrap")&&(k=a.groupAttr||"data-fancybox-group",l=h.attr(k),l||(k="rel",l=h.get(0)[k]),l&&(""!==l&&"nofollow"!==l)&&(h=c.length?f(c):e,h=h.filter("["+k+'="'+l+'"]'),j=h.index(this)),a.index=j,!1!==b.open(h,a)&&g.preventDefault())};a=a||{};d=a.index||0;!c||!1===a.live?e.unbind("click.fb-start").bind("click.fb-start",k):p.undelegate(c,"click.fb-start").delegate(c+
+":not('.fancybox-item, .fancybox-nav')","click.fb-start",k);this.filter("[data-fancybox-start=1]").trigger("click");return this};p.ready(function(){var a,d;f.scrollbarWidth===v&&(f.scrollbarWidth=function(){var a=f('<div style="width:50px;height:50px;overflow:auto"><div/></div>').appendTo("body"),b=a.children(),b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});if(f.support.fixedPosition===v){a=f.support;d=f('<div style="position:fixed;top:20px;"></div>').appendTo("body");var e=20===
 d[0].offsetTop||15===d[0].offsetTop;d.remove();a.fixedPosition=e}f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f("body")});a=f(r).width();J.addClass("fancybox-lock-test");d=f(r).width();J.removeClass("fancybox-lock-test");f("<style type='text/css'>.fancybox-margin{margin-right:"+(d-a)+"px;}</style>").appendTo("head")})})(window,document,jQuery);
\ No newline at end of file
diff --git a/js/jquery.mousewheel-3.0.6.pack.js b/js/jquery.mousewheel-3.0.6.pack.js
index 8adf44d..e39a83a 100644
--- a/js/jquery.mousewheel-3.0.6.pack.js
+++ b/js/jquery.mousewheel-3.0.6.pack.js
@@ -1,13 +1,13 @@
-/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
- * Licensed under the MIT License (LICENSE.txt).
- *
- * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
- * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
- * Thanks to: Seamus Leahy for adding deltaX and deltaY
- *
- * Version: 3.0.6
- * 
- * Requires: 1.2.2+
- */
-(function(d){function e(a){var b=a||window.event,c=[].slice.call(arguments,1),f=0,e=0,g=0,a=d.event.fix(b);a.type="mousewheel";b.wheelDelta&&(f=b.wheelDelta/120);b.detail&&(f=-b.detail/3);g=f;b.axis!==void 0&&b.axis===b.HORIZONTAL_AXIS&&(g=0,e=-1*f);b.wheelDeltaY!==void 0&&(g=b.wheelDeltaY/120);b.wheelDeltaX!==void 0&&(e=-1*b.wheelDeltaX/120);c.unshift(a,f,e,g);return(d.event.dispatch||d.event.handle).apply(this,c)}var c=["DOMMouseScroll","mousewheel"];if(d.event.fixHooks)for(var h=c.length;h;)d.event.fixHooks[c[--h]]=
+/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
+ * Licensed under the MIT License (LICENSE.txt).
+ *
+ * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
+ * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
+ * Thanks to: Seamus Leahy for adding deltaX and deltaY
+ *
+ * Version: 3.0.6
+ * 
+ * Requires: 1.2.2+
+ */
+(function(d){function e(a){var b=a||window.event,c=[].slice.call(arguments,1),f=0,e=0,g=0,a=d.event.fix(b);a.type="mousewheel";b.wheelDelta&&(f=b.wheelDelta/120);b.detail&&(f=-b.detail/3);g=f;b.axis!==void 0&&b.axis===b.HORIZONTAL_AXIS&&(g=0,e=-1*f);b.wheelDeltaY!==void 0&&(g=b.wheelDeltaY/120);b.wheelDeltaX!==void 0&&(e=-1*b.wheelDeltaX/120);c.unshift(a,f,e,g);return(d.event.dispatch||d.event.handle).apply(this,c)}var c=["DOMMouseScroll","mousewheel"];if(d.event.fixHooks)for(var h=c.length;h;)d.event.fixHooks[c[--h]]=
 d.event.mouseHooks;d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=c.length;a;)this.addEventListener(c[--a],e,false);else this.onmousewheel=e},teardown:function(){if(this.removeEventListener)for(var a=c.length;a;)this.removeEventListener(c[--a],e,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery);
\ No newline at end of file
diff --git a/jsui/generics-js.html b/jsui/generics-js.html
index e4e3ce7..acf186e 100644
--- a/jsui/generics-js.html
+++ b/jsui/generics-js.html
@@ -1,366 +1,366 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="author" content="Olivier Lamy" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - 
-    Generics Javascript</title>
-    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="../css/site.css" />
-    <link rel="stylesheet" href="../css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="../security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../"  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="../redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="../index.html" id="bannerLeft">
-                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-            <li class="">
-                    <a href="../" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">
-    Generics Javascript</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <!-- ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License. -->
-  
-
-    <script src="../js/jquery.fancybox.pack.2.1.5.js" type="text/javascript"></script>
-    <script src="../js/jquery.mousewheel-3.0.6.pack.js" type="text/javascript"></script>
-    <link rel="stylesheet" href="../css/jquery.fancybox.2.1.5.css" type="text/css" media="screen" />
-    <script type="text/javascript" src="../js/fancy-box-activation.js"></script>
-
-    
-<ul>
-<li><a href="#Generics_Javascript">Generics Javascript</a>
-<ul>
-<li><a href="#User_messages">User messages</a></li>
-<li><a href="#Success_message">Success message</a></li>
-<li><a href="#Error_message">Error message</a></li>
-<li><a href="#Modal_Confirm_dialog">Modal Confirm dialog</a></li></ul></li></ul>
-
-    
-<div class="section">
-<h2>Generics Javascript<a name="Generics_Javascript"></a></h2>
-      
-<p>Some common/generic javascript methods are available.</p>
-      
-<div class="section">
-<h3>User messages<a name="User_messages"></a></h3>
-      
-<p>A div &quot;user-messages&quot; is reserved for user messages.</p>
-        </div>
-<div class="section">
-<h3>Success message<a name="Success_message"></a></h3>
-          
-<p>
-            Javascript function:
-            </p>
-<div class="source">
-<pre>
-displaySuccessMessage($.i18n.prop('managedrepository.added'));
-// the second parameter is optionnal by default #user-messages id is used
-displaySuccessMessage=function(text,idToAppend){
-            </pre></div>
-            <a href="../images/success-message.png" class="single_image" title="Success Message">
-              <img src="../images/success-message.png" width="150" height="93" style="border: 1px solid silver; margin-left: 0.25em; margin-bottom: 0.25em" alt="" /><br />
-              Success Message
-            </a>
-          
-        </div>
-
-        
-<div class="section">
-<h3>Error message<a name="Error_message"></a></h3>
-          
-<p>
-            Javascript function:
-            </p>
-<div class="source">
-<pre>
-displayErrorMessage($.i18n.prop('managedrepository.added'));
-// the second parameter is optionnal by default #user-messages id is used
-displayErrorMessage=function(text,idToAppend){
-            </pre></div>
-            <a href="../images/error-message.png" class="single_image" title="Error Message">
-              <img src="../images/error-message.png" width="150" height="93" style="border: 1px solid silver; margin-left: 0.25em; margin-bottom: 0.25em" alt="" /><br />
-              Error Message
-            </a>
-          
-        </div>
-      
-      
-<div class="section">
-<h3>Modal Confirm dialog<a name="Modal_Confirm_dialog"></a></h3>
-        
-<p>
-          Javascript function:
-          </p>
-<div class="source">
-<pre>
-  /**
-   * open a confirm dialog based on bootstrap modal
-   * @param okFn callback function to call on ok confirm
-   * @param okMessage message in the ok button
-   * @param cancelMessage message in the cancel button
-   * @param title title of the modal box
-   * @param bodyText html content of the modal box
-   */
-  openDialogConfirm=function(okFn, okMessage, cancelMessage, title,bodyText){
-          </pre></div>
-          <a href="../images/modal-confirm-dialog.png" class="single_image" title="Modal Confirm dialog">
-            <img src="../images/modal-confirm-dialog.png" width="150" height="93" style="border: 1px solid silver; margin-left: 0.25em; margin-bottom: 0.25em" alt="" /><br />
-            Modal Confirm dialog
-          </a>
-        
-      </div>
-    </div>
-  
-
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="author" content="Olivier Lamy" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - 
+    Generics Javascript</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="../security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../"  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="../redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="../index.html" id="bannerLeft">
+                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+            <li class="">
+                    <a href="../" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">
+    Generics Javascript</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License. -->
+  
+
+    <script src="../js/jquery.fancybox.pack.2.1.5.js" type="text/javascript"></script>
+    <script src="../js/jquery.mousewheel-3.0.6.pack.js" type="text/javascript"></script>
+    <link rel="stylesheet" href="../css/jquery.fancybox.2.1.5.css" type="text/css" media="screen" />
+    <script type="text/javascript" src="../js/fancy-box-activation.js"></script>
+
+    
+<ul>
+<li><a href="#Generics_Javascript">Generics Javascript</a>
+<ul>
+<li><a href="#User_messages">User messages</a></li>
+<li><a href="#Success_message">Success message</a></li>
+<li><a href="#Error_message">Error message</a></li>
+<li><a href="#Modal_Confirm_dialog">Modal Confirm dialog</a></li></ul></li></ul>
+
+    
+<div class="section">
+<h2>Generics Javascript<a name="Generics_Javascript"></a></h2>
+      
+<p>Some common/generic javascript methods are available.</p>
+      
+<div class="section">
+<h3>User messages<a name="User_messages"></a></h3>
+      
+<p>A div &quot;user-messages&quot; is reserved for user messages.</p>
+        </div>
+<div class="section">
+<h3>Success message<a name="Success_message"></a></h3>
+          
+<p>
+            Javascript function:
+            </p>
+<div class="source">
+<pre>
+displaySuccessMessage($.i18n.prop('managedrepository.added'));
+// the second parameter is optionnal by default #user-messages id is used
+displaySuccessMessage=function(text,idToAppend){
+            </pre></div>
+            <a href="../images/success-message.png" class="single_image" title="Success Message">
+              <img src="../images/success-message.png" width="150" height="93" style="border: 1px solid silver; margin-left: 0.25em; margin-bottom: 0.25em" alt="" /><br />
+              Success Message
+            </a>
+          
+        </div>
+
+        
+<div class="section">
+<h3>Error message<a name="Error_message"></a></h3>
+          
+<p>
+            Javascript function:
+            </p>
+<div class="source">
+<pre>
+displayErrorMessage($.i18n.prop('managedrepository.added'));
+// the second parameter is optionnal by default #user-messages id is used
+displayErrorMessage=function(text,idToAppend){
+            </pre></div>
+            <a href="../images/error-message.png" class="single_image" title="Error Message">
+              <img src="../images/error-message.png" width="150" height="93" style="border: 1px solid silver; margin-left: 0.25em; margin-bottom: 0.25em" alt="" /><br />
+              Error Message
+            </a>
+          
+        </div>
+      
+      
+<div class="section">
+<h3>Modal Confirm dialog<a name="Modal_Confirm_dialog"></a></h3>
+        
+<p>
+          Javascript function:
+          </p>
+<div class="source">
+<pre>
+  /**
+   * open a confirm dialog based on bootstrap modal
+   * @param okFn callback function to call on ok confirm
+   * @param okMessage message in the ok button
+   * @param cancelMessage message in the cancel button
+   * @param title title of the modal box
+   * @param bodyText html content of the modal box
+   */
+  openDialogConfirm=function(okFn, okMessage, cancelMessage, title,bodyText){
+          </pre></div>
+          <a href="../images/modal-confirm-dialog.png" class="single_image" title="Modal Confirm dialog">
+            <img src="../images/modal-confirm-dialog.png" width="150" height="93" style="border: 1px solid silver; margin-left: 0.25em; margin-bottom: 0.25em" alt="" /><br />
+            Modal Confirm dialog
+          </a>
+        
+      </div>
+    </div>
+  
+
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/jsui/i18n.html b/jsui/i18n.html
index c4d0bb2..afb03ff 100644
--- a/jsui/i18n.html
+++ b/jsui/i18n.html
@@ -1,280 +1,278 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="author" content="Olivier Lamy" />
-    <meta name="Date-Creation-yyyymmdd" content="20120119" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - i18n</title>
-    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="../css/site.css" />
-    <link rel="stylesheet" href="../css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="../security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../"  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="../redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="../index.html" id="bannerLeft">
-                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-            <li class="">
-                    <a href="../" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">i18n</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
-<h2>i18n management<a name="i18n_management"></a></h2>
-<p>The js library <a class="externalLink" href="http://code.google.com/p/jquery-i18n-properties">jquery-i18n-properties</a> is used for i18n.</p>
-<p>On application loading, i18n properties are loaded by calling a REST services with the browser lang or with the requested language specified by the request parameter : ?request_lang=en.</p>
-<p>This service will load properties in this order:</p>
-<ul>
-<li>redback properties in en then in specified language</li>
-<li>archiva properties (from org/apache/archiva/i18n/default.properties) in en then in specified language</li></ul>
-<div class="section">
-<h3>Javascript method<a name="Javascript_method"></a></h3>
-<p>Simple i18n value without any value</p>
-<div class="source">
-<pre>Javascript code :
-$.i18n.prop(&quot;save&quot;)  will return the value for key save
-</pre></div>
-<p>You can pass some values too (sample for property managedrepository.deleted=Managed Repository &quot; {0} &quot; deleted. )</p>
-<div class="source">
-<pre>Javascript code :
-$.i18n.prop(&quot;managedrepository.deleted&quot;,managedRepository.name())
-if  managedRepository.name() is &quot;foo&quot;
-response will be Managed Repository &quot; foo &quot; deleted.
-</pre></div></div>
-<div class="section">
-<h3>Missing properties<a name="Missing_properties"></a></h3>
-<p>In case of missing property, the key is returned.</p></div></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="author" content="Olivier Lamy" />
+    <meta name="Date-Creation-yyyymmdd" content="20120119" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - i18n</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="../security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../"  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="../redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="../index.html" id="bannerLeft">
+                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+            <li class="">
+                    <a href="../" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">i18n</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
+<h2>i18n management<a name="i18n_management"></a></h2>
+<p>The js library <a class="externalLink" href="http://code.google.com/p/jquery-i18n-properties">jquery-i18n-properties</a> is used for i18n.</p>
+<p>On application loading, i18n properties are loaded by calling a REST services with the browser lang or with the requested language specified by the request parameter : ?request_lang=en.</p>
+<p>This service will load properties in this order:</p>
+<ul>
+<li>redback properties in en then in specified language</li>
+<li>archiva properties (from org/apache/archiva/i18n/default.properties) in en then in specified language</li></ul>
+<div class="section">
+<h3>Javascript method<a name="Javascript_method"></a></h3>
+<p>Simple i18n value without any value</p>
+<div class="source">
+<pre>Javascript code :
+$.i18n.prop(&quot;save&quot;)  will return the value for key save</pre></div>
+<p>You can pass some values too (sample for property managedrepository.deleted=Managed Repository &quot; {0} &quot; deleted. )</p>
+<div class="source">
+<pre>Javascript code :
+$.i18n.prop(&quot;managedrepository.deleted&quot;,managedRepository.name())
+if  managedRepository.name() is &quot;foo&quot;
+response will be Managed Repository &quot; foo &quot; deleted.</pre></div></div>
+<div class="section">
+<h3>Missing properties<a name="Missing_properties"></a></h3>
+<p>In case of missing property, the key is returned.</p></div></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/jsui/index.html b/jsui/index.html
index c250ec7..1f00643 100644
--- a/jsui/index.html
+++ b/jsui/index.html
@@ -1,474 +1,474 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="author" content="Olivier Lamy" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - 
-    Archiva Javascript application General design</title>
-    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="../css/site.css" />
-    <link rel="stylesheet" href="../css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="../security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../"  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="../redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="../index.html" id="bannerLeft">
-                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-            <li class="">
-                    <a href="../" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">
-    Archiva Javascript application General design</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <!-- ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License. -->
-  
-
-    <script src="../js/jquery.fancybox.pack.2.1.5.js" type="text/javascript"></script>
-    <script src="../js/jquery.mousewheel-3.0.6.pack.js" type="text/javascript"></script>
-    <link rel="stylesheet" href="../css/jquery.fancybox.2.1.5.css" type="text/css" media="screen" />
-    <script type="text/javascript" src="../js/fancy-box-activation.js"></script>
-
-
-    
-<ul>
-<li><a href="#Archiva_Javascript_Web_Application">Archiva Javascript Web Application</a>
-<ul>
-<li><a href="#General_design">General design</a></li>
-<li><a href="#Runtime_Properties">Runtime Properties</a></li>
-<li><a href="#Used_Javascript_frameworks">Used Javascript frameworks</a></li>
-<li><a href="#Sources_organisation">Sources organisation</a></li>
-<li><a href="#js_directory">js directory</a></li>
-<li><a href="#Start_page">Start page</a></li>
-<li><a href="#Gridedit_model">Grid/edit model</a></li></ul></li></ul>
-
-    
-<div class="section">
-<h2>Archiva Javascript Web Application<a name="Archiva_Javascript_Web_Application"></a></h2>
-      
-<div class="section">
-<h3>General design<a name="General_design"></a></h3>
-        
-<p>
-          The goal is to have a &quot;one page loading&quot; javascript application.
-          <br />
-          For this the only html page will contains a div with id &quot;main-content&quot; this div will be populated
-          by jquery template execution (see <a href="./template-loading.html">template loading</a>).
-          <br />
-          The server will be contacted only for REST request/response (see <a href="./rest.html">details</a>).
-          <br />
-          <b>All UI rendering will be done only on client side.</b>
-          <br />
-          As we are not designer :-), the application will use the <a class="externalLink" href="http://twitter.github.com/bootstrap" target="_blank">twitter bootstrap css</a>.
-        </p>
-      </div>
-      
-<div class="section">
-<h3>Runtime Properties<a name="Runtime_Properties"></a></h3>
-        
-<p>The application is designed to use http cache mechanism for css, javascript. Except REST call to get datas which will never use cache as a query timestamp parameter is used.
-          But as this can cause issue in developpement phase, two system properties (disabled by default) prevent can prevent caching and/or help debuging
-          </p>
-<ul>
-            
-<li>archiva.devMode=true/false: if true will add a timestamp query parameter for loading js and html templates.</li>
-            
-<li>archiva.javascriptLog=true/false: will activate javascript log, method available with $.log(msg)</li>
-            
-<li>archiva.logMissingI18n=true/false: will activate remote logging of missing i18n key in the servlet container log:  INFO  archivaMissingi18n.logger  - missing i18n key : 'proxy-connectors.grid.managedrepo.title'</li>
-          </ul>
-        
-      </div>
-      
-<div class="section">
-<h3>Used Javascript frameworks<a name="Used_Javascript_frameworks"></a></h3>
-        
-<p>
-        We use some well known javascript framework librairies :
-        </p>
-<ul>
-          
-<li><a class="externalLink" href="http://jquery.com/" target="_blank">jquery</a>.</li>
-
-          
-<li><a class="externalLink" href="http://sammyjs.org" target="_blank">sammyjs for hash navigation</a></li>
-
-          
-<li><a class="externalLink" href="http://requirejs.org" target="_blank">requirejs</a> for template loading (see <a href="./template-loading.html">details</a>).</li>
-
-          
-<li><a class="externalLink" href="http://code.google.com/p/jquery-i18n-properties" target="_blank">jquery-i18n-properties</a> for i18n loading (see <a href="./i18n.html">details</a>).</li>
-
-          
-<li><a class="externalLink" href="http://knockoutjs.com" target="_blank">knockoutjs</a> as we use a MVVM pattern (see <a href="./knockout-binding.html">knockout binding</a>).</li>
-
-          
-<li><a class="externalLink" href="http://twitter.github.com/bootstrap/javascript.html" target="_blank">twitter bootstrap js</a> to magnify the ui.</li>
-
-          
-<li><a class="externalLink" href="http://bassistance.de/jquery-plugins/jquery-plugin-validation" target="_blank">jquery validate</a> for form validation.</li>
-        </ul>
-        
-      </div>
-      
-<div class="section">
-<h3>Sources organisation<a name="Sources_organisation"></a></h3>
-        
-<p>
-          Sources are located in src/main/webapp of the archiva-webapp module :
-          </p>
-<ul>
-            
-<li>css</li>
-            
-<li>images</li>
-            
-<li>js</li>
-          </ul>
-        
-        </div>
-<div class="section">
-<h3>js directory<a name="js_directory"></a></h3>
-          
-<p>
-            Root directory contains external libraries.
-          </p>
-          
-<p>
-            archiva directory contains archiva js files with a subdirectory templates which contains templates
-          </p>
-          
-<p>
-            redback directory contains redback js files with a subdirectory templates which contains templates
-          </p>
-        </div>
-      
-
-      
-<div class="section">
-<h3>Start page<a name="Start_page"></a></h3>
-        
-<p>
-          The main page will load javascript files, load <a href="./i18n.html">i18n</a>, <a href="./template-loading.html">load templates</a> and insert menu.
-          <br />
-          This main page is divided in 3 parts:
-          
-<p>
-            <a href="../images/start-screen.png" class="single_image" title="Start Page">
-              <img src="../images/start-screen.png" width="150" height="93" style="border: 1px solid silver; margin-left: 0.25em; margin-bottom: 0.25em" alt="" /><br />
-              Start Page
-            </a>
-          </p>
-          
-<p>
-            </p>
-<ul>
-              
-<li>#topbar-menu-container is populated with the template js/archiva/templates/topbar.html.</li>
-              
-<li>#sidebar-content is populated with the template js/archiva/templates/menu.html.</li>
-              
-<li>#main-content is the place where screen will appear.</li>
-              
-<li>hidden #html-fragments will contains loaded templates.</li>
-            </ul>
-          
-          
-<p>
-            Link are visible/hide depending on needed redback karmas.
-            You can configure redback operations needed for a link using the attribute redback-permissions in your html element
-            (by default element needed karma must be marked display: none):
-            </p>
-<div class="source">
-<pre>
-
-Support array: at least one operation is needed:
-&lt;div .... redback-permissions=&quot;{permissions: ['archiva-manage-users','archiva-manage-configuration']}&quot; style=&quot;display: none&quot;&gt;
-Support single value:
-&lt;li style=&quot;display: none&quot; redback-permissions=&quot;{permissions: ['archiva-manage-users']}&quot;&gt;
-
-            </pre></div>
-
-          
-        
-      </div>
-
-      
-<div class="section">
-<h3>Grid/edit model<a name="Gridedit_model"></a></h3>
-        
-<p>We use a tab/pill models to display grid of datas and edit/add form:
-          </p>
-<ul>
-            
-<li>
-              One tab/pill display the grid
-              <a href="../images/repo-grids.png" class="single_image" title="Repositories Grid">
-                <img src="../images/repo-grids.png" width="150" height="93" style="border: 1px solid silver; margin-left: 0.25em; margin-bottom: 0.25em" alt="" /><br />
-                Repositories Grid
-              </a>
-            </li>
-            
-<li>
-              One tab/pill display the edit/add form. <b>As we use knockout framework grid will be updated with new value from add/edit form automatically.</b>
-              <a href="../images/repo-edit.png" class="single_image" title="Repositories Edit/Add">
-                <img src="../images/repo-edit.png" width="150" height="93" style="border: 1px solid silver; margin-left: 0.25em; margin-bottom: 0.25em" alt="" /><br />
-                Repositories Edit/Add
-              </a>
-            </li>
-          </ul>
-          Have a look at the page <a href="./knockout-binding.html">knockout-binding</a> for more explanation.
-        
-      </div>
-
-    </div>
-  
-
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="author" content="Olivier Lamy" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - 
+    Archiva Javascript application General design</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="../security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../"  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="../redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="../index.html" id="bannerLeft">
+                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+            <li class="">
+                    <a href="../" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">
+    Archiva Javascript application General design</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License. -->
+  
+
+    <script src="../js/jquery.fancybox.pack.2.1.5.js" type="text/javascript"></script>
+    <script src="../js/jquery.mousewheel-3.0.6.pack.js" type="text/javascript"></script>
+    <link rel="stylesheet" href="../css/jquery.fancybox.2.1.5.css" type="text/css" media="screen" />
+    <script type="text/javascript" src="../js/fancy-box-activation.js"></script>
+
+
+    
+<ul>
+<li><a href="#Archiva_Javascript_Web_Application">Archiva Javascript Web Application</a>
+<ul>
+<li><a href="#General_design">General design</a></li>
+<li><a href="#Runtime_Properties">Runtime Properties</a></li>
+<li><a href="#Used_Javascript_frameworks">Used Javascript frameworks</a></li>
+<li><a href="#Sources_organisation">Sources organisation</a></li>
+<li><a href="#js_directory">js directory</a></li>
+<li><a href="#Start_page">Start page</a></li>
+<li><a href="#Gridedit_model">Grid/edit model</a></li></ul></li></ul>
+
+    
+<div class="section">
+<h2>Archiva Javascript Web Application<a name="Archiva_Javascript_Web_Application"></a></h2>
+      
+<div class="section">
+<h3>General design<a name="General_design"></a></h3>
+        
+<p>
+          The goal is to have a &quot;one page loading&quot; javascript application.
+          <br />
+          For this the only html page will contains a div with id &quot;main-content&quot; this div will be populated
+          by jquery template execution (see <a href="./template-loading.html">template loading</a>).
+          <br />
+          The server will be contacted only for REST request/response (see <a href="./rest.html">details</a>).
+          <br />
+          <b>All UI rendering will be done only on client side.</b>
+          <br />
+          As we are not designer :-), the application will use the <a class="externalLink" href="http://twitter.github.com/bootstrap" target="_blank">twitter bootstrap css</a>.
+        </p>
+      </div>
+      
+<div class="section">
+<h3>Runtime Properties<a name="Runtime_Properties"></a></h3>
+        
+<p>The application is designed to use http cache mechanism for css, javascript. Except REST call to get datas which will never use cache as a query timestamp parameter is used.
+          But as this can cause issue in developpement phase, two system properties (disabled by default) prevent can prevent caching and/or help debuging
+          </p>
+<ul>
+            
+<li>archiva.devMode=true/false: if true will add a timestamp query parameter for loading js and html templates.</li>
+            
+<li>archiva.javascriptLog=true/false: will activate javascript log, method available with $.log(msg)</li>
+            
+<li>archiva.logMissingI18n=true/false: will activate remote logging of missing i18n key in the servlet container log:  INFO  archivaMissingi18n.logger  - missing i18n key : 'proxy-connectors.grid.managedrepo.title'</li>
+          </ul>
+        
+      </div>
+      
+<div class="section">
+<h3>Used Javascript frameworks<a name="Used_Javascript_frameworks"></a></h3>
+        
+<p>
+        We use some well known javascript framework librairies :
+        </p>
+<ul>
+          
+<li><a class="externalLink" href="http://jquery.com/" target="_blank">jquery</a>.</li>
+
+          
+<li><a class="externalLink" href="http://sammyjs.org" target="_blank">sammyjs for hash navigation</a></li>
+
+          
+<li><a class="externalLink" href="http://requirejs.org" target="_blank">requirejs</a> for template loading (see <a href="./template-loading.html">details</a>).</li>
+
+          
+<li><a class="externalLink" href="http://code.google.com/p/jquery-i18n-properties" target="_blank">jquery-i18n-properties</a> for i18n loading (see <a href="./i18n.html">details</a>).</li>
+
+          
+<li><a class="externalLink" href="http://knockoutjs.com" target="_blank">knockoutjs</a> as we use a MVVM pattern (see <a href="./knockout-binding.html">knockout binding</a>).</li>
+
+          
+<li><a class="externalLink" href="http://twitter.github.com/bootstrap/javascript.html" target="_blank">twitter bootstrap js</a> to magnify the ui.</li>
+
+          
+<li><a class="externalLink" href="http://bassistance.de/jquery-plugins/jquery-plugin-validation" target="_blank">jquery validate</a> for form validation.</li>
+        </ul>
+        
+      </div>
+      
+<div class="section">
+<h3>Sources organisation<a name="Sources_organisation"></a></h3>
+        
+<p>
+          Sources are located in src/main/webapp of the archiva-webapp module :
+          </p>
+<ul>
+            
+<li>css</li>
+            
+<li>images</li>
+            
+<li>js</li>
+          </ul>
+        
+        </div>
+<div class="section">
+<h3>js directory<a name="js_directory"></a></h3>
+          
+<p>
+            Root directory contains external libraries.
+          </p>
+          
+<p>
+            archiva directory contains archiva js files with a subdirectory templates which contains templates
+          </p>
+          
+<p>
+            redback directory contains redback js files with a subdirectory templates which contains templates
+          </p>
+        </div>
+      
+
+      
+<div class="section">
+<h3>Start page<a name="Start_page"></a></h3>
+        
+<p>
+          The main page will load javascript files, load <a href="./i18n.html">i18n</a>, <a href="./template-loading.html">load templates</a> and insert menu.
+          <br />
+          This main page is divided in 3 parts:
+          
+<p>
+            <a href="../images/start-screen.png" class="single_image" title="Start Page">
+              <img src="../images/start-screen.png" width="150" height="93" style="border: 1px solid silver; margin-left: 0.25em; margin-bottom: 0.25em" alt="" /><br />
+              Start Page
+            </a>
+          </p>
+          
+<p>
+            </p>
+<ul>
+              
+<li>#topbar-menu-container is populated with the template js/archiva/templates/topbar.html.</li>
+              
+<li>#sidebar-content is populated with the template js/archiva/templates/menu.html.</li>
+              
+<li>#main-content is the place where screen will appear.</li>
+              
+<li>hidden #html-fragments will contains loaded templates.</li>
+            </ul>
+          
+          
+<p>
+            Link are visible/hide depending on needed redback karmas.
+            You can configure redback operations needed for a link using the attribute redback-permissions in your html element
+            (by default element needed karma must be marked display: none):
+            </p>
+<div class="source">
+<pre>
+
+Support array: at least one operation is needed:
+&lt;div .... redback-permissions=&quot;{permissions: ['archiva-manage-users','archiva-manage-configuration']}&quot; style=&quot;display: none&quot;&gt;
+Support single value:
+&lt;li style=&quot;display: none&quot; redback-permissions=&quot;{permissions: ['archiva-manage-users']}&quot;&gt;
+
+            </pre></div>
+
+          
+        
+      </div>
+
+      
+<div class="section">
+<h3>Grid/edit model<a name="Gridedit_model"></a></h3>
+        
+<p>We use a tab/pill models to display grid of datas and edit/add form:
+          </p>
+<ul>
+            
+<li>
+              One tab/pill display the grid
+              <a href="../images/repo-grids.png" class="single_image" title="Repositories Grid">
+                <img src="../images/repo-grids.png" width="150" height="93" style="border: 1px solid silver; margin-left: 0.25em; margin-bottom: 0.25em" alt="" /><br />
+                Repositories Grid
+              </a>
+            </li>
+            
+<li>
+              One tab/pill display the edit/add form. <b>As we use knockout framework grid will be updated with new value from add/edit form automatically.</b>
+              <a href="../images/repo-edit.png" class="single_image" title="Repositories Edit/Add">
+                <img src="../images/repo-edit.png" width="150" height="93" style="border: 1px solid silver; margin-left: 0.25em; margin-bottom: 0.25em" alt="" /><br />
+                Repositories Edit/Add
+              </a>
+            </li>
+          </ul>
+          Have a look at the page <a href="./knockout-binding.html">knockout-binding</a> for more explanation.
+        
+      </div>
+
+    </div>
+  
+
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/jsui/knockout-binding.html b/jsui/knockout-binding.html
index 19d88b3..34ca31e 100644
--- a/jsui/knockout-binding.html
+++ b/jsui/knockout-binding.html
@@ -1,443 +1,437 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="author" content="Olivier Lamy" />
-    <meta name="Date-Creation-yyyymmdd" content="20120119" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Knockout binding</title>
-    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="../css/site.css" />
-    <link rel="stylesheet" href="../css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="../security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../"  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="../redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="../index.html" id="bannerLeft">
-                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-            <li class="">
-                    <a href="../" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Knockout binding</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
-<h2>Knockout binding<a name="Knockout_binding"></a></h2>
-<p>Explanation on the managed repositories list/edit/add screen.</p>
-<ul>
-<li><a href="#Knockout_binding">Knockout binding</a>
-<ul>
-<li><a href="#Javascript_Beans">Javascript Beans</a></li>
-<li><a href="#View_Model">View Model</a>
-<ul>
-<li><a href="#First_you_must_insert_your_template_in_the_main-content_div">First you must insert your template in the #main-content div</a></li>
-<li><a href="#You_can_now_create_your_view_model.">You can now create your view model.</a></li>
-<li><a href="#Grid_binding">Grid binding</a></li></ul></li>
-<li><a href="#View_definition">View definition</a>
-<ul>
-<li><a href="#Binding_definition">Binding definition</a></li>
-<li><a href="#Template_content">Template content</a></li></ul></li></ul></li></ul>
-<div class="section">
-<h3>Javascript Beans<a name="Javascript_Beans"></a></h3>
-<p>First you must map the json response on a Javascript bean (a bit borying task :-) )</p>
-<div class="source">
-<pre>Java class with fields
-
-public class ManagedRepository
-  //private String id;
-
-  //private String name;
-  ....
-
-Javascript
-ManagedRepository=function(id,name,.....){
-
-  this.id=ko.observable(id);
-
-  this.name=ko.observable(name);
-
-mapping function (to map the json result to your javascript beans)
-
-  mapManagedRepositories=function(data){
-    var mappedManagedRepositories = $.map(data.managedRepository, function(item) {
-      return mapManagedRepository(item);
-    });
-    return mappedManagedRepositories;
-  }
-  mapManagedRepository=function(data){
-    if (data==null){
-      return null;
-    }
-    return new ManagedRepository(data.id,data.name,data.layout,data.indexDirectory,data.location,data.snapshots,data.releases,
-                                 data.blockRedeployments,data.cronExpression,
-                                 data.scanned,data.daysOlder,data.retentionCount,data.deleteReleasedSnapshots,data.stageRepoNeeded);
-  }
-
-</pre></div>
-<p><tt>NOTE to have access to field values you must now managedRepository.name() </tt></p></div>
-<div class="section">
-<h3>View Model<a name="View_Model"></a></h3>
-<div class="section">
-<h4>First you must insert your template in the #main-content div<a name="First_you_must_insert_your_template_in_the_main-content_div"></a></h4>
-<div class="source">
-<pre>// it's a jquery template as we do some i18n transformations
-$(&quot;#main-content&quot;).html($(&quot;#repositoriesMain&quot;).tmpl());
-</pre></div></div>
-<div class="section">
-<h4>You can now create your view model.<a name="You_can_now_create_your_view_model."></a></h4>
-<div class="source">
-<pre>ManagedRepositoriesViewModel=function(){
-  //field which will receive values
-  this.managedRepositories=ko.observableArray([]);
-  // method which will edit an entry: an other view model is created
-  editManagedRepository=function(managedRepository){
-    var viewModel = new ManagedRepositoryViewModel(managedRepository,true,self);
-    ...
-    ko.applyBindings(viewModel,$(&quot;#main-content #managed-repository-edit&quot;).get(0));
-    ..
-  }
-  // method which will delete an entry
-  removeManagedRepository=function(managedRepository){
-    ......
-  }
-}
-</pre></div></div>
-<div class="section">
-<h4>Grid binding<a name="Grid_binding"></a></h4>
-<p>The ManagedRepositoriesViewModel is used as it with a custom grid binding (knockout has a feature to create own binding so we use one called <tt>simpleGrid</tt> which will display grids.</p>
-<p>Grid view initialisation code (some details omitted) :</p>
-<div class="source">
-<pre>    var managedRepositoriesViewModel = new ManagedRepositoriesViewModel();
-
-    $.ajax(&quot;restServices/archivaServices/managedRepositoriesService/getManagedRepositories&quot;, {
-        type: &quot;GET&quot;,
-        dataType: 'json',
-        success: function(data) {
-          // data mapping json -&gt; javascript
-          managedRepositoriesViewModel.managedRepositories(mapManagedRepositories(data));
-          // we define here our grid view model for fields only displayed
-          managedRepositoriesViewModel.gridViewModel = new ko.simpleGrid.viewModel({
-            data: managedRepositoriesViewModel.managedRepositories,
-            columns: [
-              {
-                headerText: $.i18n.prop('identifier'),
-                rowText: &quot;id&quot;
-              },
-              {
-                headerText: $.i18n.prop('name'),
-                rowText: &quot;name&quot;
-              },
-              {
-              headerText: $.i18n.prop('type'),
-              rowText: &quot;getTypeLabel&quot;,
-              // FIXME i18n
-              title: &quot;Repository type (default is Maven 2)&quot;
-              }
-            ],
-            // max items per size, the binding has a pagination feature
-            pageSize: 5,
-            // we can define here a callback function which be called on all grid change (adding/updating/removing values from the array)
-            gridUpdateCallBack: function(){
-              $(&quot;#main-content #managed-repositories-table [title]&quot;).tooltip();
-            }
-          });
-          // apply the binding on the specified node
-          ko.applyBindings(managedRepositoriesViewModel,$(&quot;#main-content #managed-repositories-table&quot;).get(0));
-        }
-      }
-    );
-</pre></div></div></div>
-<div class="section">
-<h3>View definition<a name="View_definition"></a></h3>
-<div class="section">
-<h4>Binding definition<a name="Binding_definition"></a></h4>
-<p>We have applyed binding on the node with id &quot;#managed-repositories-table&quot;. The binding definition is:</p>
-<div class="source">
-<pre>  &lt;table class=&quot;bordered-table zebra-striped&quot; id=&quot;managed-repositories-table&quot;
-         data-bind=&quot;simpleGrid: gridViewModel,simpleGridTemplate:'ko_managed-repositoriesGrid',pageLinksId:'managed-repositoriesPagination',data:'managedRepositories'&quot;&gt;
-  &lt;/table&gt;
-</pre></div>
-<ul>
-<li>simpleGrid: gridViewModel = field name for the view model (see sample above)</li>
-<li>simpleGridTemplate:'ko_managed-repositoriesGrid' = name of the template to use (see below)</li>
-<li>pageLinksId:'managed-repositoriesPagination' = name of the template to use for pagination.</li>
-<li>data:'managedRepositories' = fields which contains data to pass to pass to the template</li></ul></div>
-<div class="section">
-<h4>Template content<a name="Template_content"></a></h4>
-<p>Template used for grid display (some details omitted).</p>
-<div class="source">
-<pre>&lt;script id='ko_managed-repositoriesGrid' type='text/x-jquery-tmpl'&gt;
-  &lt;thead&gt;
-      &lt;tr&gt;
-        // display read only fields defined in ko.simpleGrid.viewModel.columns (see above)
-        {{each(i, columnDefinition) columns}}
-          &lt;th title=&quot;${ columnDefinition.title }&quot;&gt;${ columnDefinition.headerText }&lt;/th&gt;
-        {{/each}}
-        &lt;th&gt;Releases&lt;/th&gt;
-        .....
-        // custom columns
-        &lt;th&gt;${$.i18n.prop('edit')}&lt;/th&gt;
-        &lt;th&gt;${$.i18n.prop('delete')}&lt;/th&gt;
-      &lt;/tr&gt;
-  &lt;/thead&gt;
-  &lt;tbody&gt;
-      {{each(i, row) itemsOnCurrentPage()}}
-          &lt;tr&gt;
-            // display read only fields defined in ko.simpleGrid.viewModel.columns (see above)
-            {{each(j, columnDefinition) columns}}
-              &lt;td&gt;${ typeof columnDefinition.rowText == 'function' ? columnDefinition.rowText(row) : row[columnDefinition.rowText] }&lt;/td&gt;
-            {{/each}}
-            // custom columns which images depending on a value
-            &lt;td&gt;
-            {{if row.releases() == true}}
-              &lt;img src=&quot;images/weather-clear.png&quot; title=&quot;${$.i18n.prop('release.included')}&quot;/&gt;
-            {{else}}
-              &lt;img src=&quot;images/dialog-error.png&quot; title=&quot;${$.i18n.prop('release.notincluded')}&quot;/&gt;
-            {{/if}}
-            &lt;/td&gt;
-            .....
-            // custom columns with binding mapped to ManagedRepositoriesViewModel methods
-            &lt;td&gt;&lt;a href=&quot;#&quot; data-bind=&quot;click: function(){ editManagedRepository(row) }&quot;&gt;${$.i18n.prop('edit')}&lt;/a&gt;&lt;/td&gt;
-            &lt;td&gt;
-              &lt;a href=&quot;#&quot; data-bind=&quot;click: function(){ removeManagedRepository(row) }&quot;&gt;
-                &lt;img src=&quot;images/edit-cut.png&quot; title=&quot;${$.i18n.prop('delete')}&quot;/&gt;
-              &lt;/a&gt;
-            &lt;/td&gt;
-            .....
-          &lt;/tr&gt;
-      {{/each}}
-  &lt;/tbody&gt;
-
-</pre></div></div></div></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="author" content="Olivier Lamy" />
+    <meta name="Date-Creation-yyyymmdd" content="20120119" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Knockout binding</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="../security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../"  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="../redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="../index.html" id="bannerLeft">
+                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+            <li class="">
+                    <a href="../" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Knockout binding</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
+<h2>Knockout binding<a name="Knockout_binding"></a></h2>
+<p>Explanation on the managed repositories list/edit/add screen.</p>
+<ul>
+<li><a href="#Knockout_binding">Knockout binding</a>
+<ul>
+<li><a href="#Javascript_Beans">Javascript Beans</a></li>
+<li><a href="#View_Model">View Model</a>
+<ul>
+<li><a href="#First_you_must_insert_your_template_in_the_main-content_div">First you must insert your template in the #main-content div</a></li>
+<li><a href="#You_can_now_create_your_view_model.">You can now create your view model.</a></li>
+<li><a href="#Grid_binding">Grid binding</a></li></ul></li>
+<li><a href="#View_definition">View definition</a>
+<ul>
+<li><a href="#Binding_definition">Binding definition</a></li>
+<li><a href="#Template_content">Template content</a></li></ul></li></ul></li></ul>
+<div class="section">
+<h3>Javascript Beans<a name="Javascript_Beans"></a></h3>
+<p>First you must map the json response on a Javascript bean (a bit borying task :-) )</p>
+<div class="source">
+<pre>Java class with fields
+
+public class ManagedRepository
+  //private String id;
+
+  //private String name;
+  ....
+
+Javascript
+ManagedRepository=function(id,name,.....){
+
+  this.id=ko.observable(id);
+
+  this.name=ko.observable(name);
+
+mapping function (to map the json result to your javascript beans)
+
+  mapManagedRepositories=function(data){
+    var mappedManagedRepositories = $.map(data.managedRepository, function(item) {
+      return mapManagedRepository(item);
+    });
+    return mappedManagedRepositories;
+  }
+  mapManagedRepository=function(data){
+    if (data==null){
+      return null;
+    }
+    return new ManagedRepository(data.id,data.name,data.layout,data.indexDirectory,data.location,data.snapshots,data.releases,
+                                 data.blockRedeployments,data.cronExpression,
+                                 data.scanned,data.daysOlder,data.retentionCount,data.deleteReleasedSnapshots,data.stageRepoNeeded);
+  }
+</pre></div>
+<p><tt>NOTE to have access to field values you must now managedRepository.name() </tt></p></div>
+<div class="section">
+<h3>View Model<a name="View_Model"></a></h3>
+<div class="section">
+<h4>First you must insert your template in the #main-content div<a name="First_you_must_insert_your_template_in_the_main-content_div"></a></h4>
+<div class="source">
+<pre>// it's a jquery template as we do some i18n transformations
+$(&quot;#main-content&quot;).html($(&quot;#repositoriesMain&quot;).tmpl());</pre></div></div>
+<div class="section">
+<h4>You can now create your view model.<a name="You_can_now_create_your_view_model."></a></h4>
+<div class="source">
+<pre>ManagedRepositoriesViewModel=function(){
+  //field which will receive values
+  this.managedRepositories=ko.observableArray([]);
+  // method which will edit an entry: an other view model is created
+  editManagedRepository=function(managedRepository){
+    var viewModel = new ManagedRepositoryViewModel(managedRepository,true,self);
+    ...
+    ko.applyBindings(viewModel,$(&quot;#main-content #managed-repository-edit&quot;).get(0));
+    ..
+  }
+  // method which will delete an entry
+  removeManagedRepository=function(managedRepository){
+    ......
+  }
+}</pre></div></div>
+<div class="section">
+<h4>Grid binding<a name="Grid_binding"></a></h4>
+<p>The ManagedRepositoriesViewModel is used as it with a custom grid binding (knockout has a feature to create own binding so we use one called <tt>simpleGrid</tt> which will display grids.</p>
+<p>Grid view initialisation code (some details omitted) :</p>
+<div class="source">
+<pre>    var managedRepositoriesViewModel = new ManagedRepositoriesViewModel();
+
+    $.ajax(&quot;restServices/archivaServices/managedRepositoriesService/getManagedRepositories&quot;, {
+        type: &quot;GET&quot;,
+        dataType: 'json',
+        success: function(data) {
+          // data mapping json -&gt; javascript
+          managedRepositoriesViewModel.managedRepositories(mapManagedRepositories(data));
+          // we define here our grid view model for fields only displayed
+          managedRepositoriesViewModel.gridViewModel = new ko.simpleGrid.viewModel({
+            data: managedRepositoriesViewModel.managedRepositories,
+            columns: [
+              {
+                headerText: $.i18n.prop('identifier'),
+                rowText: &quot;id&quot;
+              },
+              {
+                headerText: $.i18n.prop('name'),
+                rowText: &quot;name&quot;
+              },
+              {
+              headerText: $.i18n.prop('type'),
+              rowText: &quot;getTypeLabel&quot;,
+              // FIXME i18n
+              title: &quot;Repository type (default is Maven 2)&quot;
+              }
+            ],
+            // max items per size, the binding has a pagination feature
+            pageSize: 5,
+            // we can define here a callback function which be called on all grid change (adding/updating/removing values from the array)
+            gridUpdateCallBack: function(){
+              $(&quot;#main-content #managed-repositories-table [title]&quot;).tooltip();
+            }
+          });
+          // apply the binding on the specified node
+          ko.applyBindings(managedRepositoriesViewModel,$(&quot;#main-content #managed-repositories-table&quot;).get(0));
+        }
+      }
+    );</pre></div></div></div>
+<div class="section">
+<h3>View definition<a name="View_definition"></a></h3>
+<div class="section">
+<h4>Binding definition<a name="Binding_definition"></a></h4>
+<p>We have applyed binding on the node with id &quot;#managed-repositories-table&quot;. The binding definition is:</p>
+<div class="source">
+<pre>  &lt;table class=&quot;bordered-table zebra-striped&quot; id=&quot;managed-repositories-table&quot;
+         data-bind=&quot;simpleGrid: gridViewModel,simpleGridTemplate:'ko_managed-repositoriesGrid',pageLinksId:'managed-repositoriesPagination',data:'managedRepositories'&quot;&gt;
+  &lt;/table&gt;</pre></div>
+<ul>
+<li>simpleGrid: gridViewModel = field name for the view model (see sample above)</li>
+<li>simpleGridTemplate:'ko_managed-repositoriesGrid' = name of the template to use (see below)</li>
+<li>pageLinksId:'managed-repositoriesPagination' = name of the template to use for pagination.</li>
+<li>data:'managedRepositories' = fields which contains data to pass to pass to the template</li></ul></div>
+<div class="section">
+<h4>Template content<a name="Template_content"></a></h4>
+<p>Template used for grid display (some details omitted).</p>
+<div class="source">
+<pre>&lt;script id='ko_managed-repositoriesGrid' type='text/x-jquery-tmpl'&gt;
+  &lt;thead&gt;
+      &lt;tr&gt;
+        // display read only fields defined in ko.simpleGrid.viewModel.columns (see above)
+        {{each(i, columnDefinition) columns}}
+          &lt;th title=&quot;${ columnDefinition.title }&quot;&gt;${ columnDefinition.headerText }&lt;/th&gt;
+        {{/each}}
+        &lt;th&gt;Releases&lt;/th&gt;
+        .....
+        // custom columns
+        &lt;th&gt;${$.i18n.prop('edit')}&lt;/th&gt;
+        &lt;th&gt;${$.i18n.prop('delete')}&lt;/th&gt;
+      &lt;/tr&gt;
+  &lt;/thead&gt;
+  &lt;tbody&gt;
+      {{each(i, row) itemsOnCurrentPage()}}
+          &lt;tr&gt;
+            // display read only fields defined in ko.simpleGrid.viewModel.columns (see above)
+            {{each(j, columnDefinition) columns}}
+              &lt;td&gt;${ typeof columnDefinition.rowText == 'function' ? columnDefinition.rowText(row) : row[columnDefinition.rowText] }&lt;/td&gt;
+            {{/each}}
+            // custom columns which images depending on a value
+            &lt;td&gt;
+            {{if row.releases() == true}}
+              &lt;img src=&quot;images/weather-clear.png&quot; title=&quot;${$.i18n.prop('release.included')}&quot;/&gt;
+            {{else}}
+              &lt;img src=&quot;images/dialog-error.png&quot; title=&quot;${$.i18n.prop('release.notincluded')}&quot;/&gt;
+            {{/if}}
+            &lt;/td&gt;
+            .....
+            // custom columns with binding mapped to ManagedRepositoriesViewModel methods
+            &lt;td&gt;&lt;a href=&quot;#&quot; data-bind=&quot;click: function(){ editManagedRepository(row) }&quot;&gt;${$.i18n.prop('edit')}&lt;/a&gt;&lt;/td&gt;
+            &lt;td&gt;
+              &lt;a href=&quot;#&quot; data-bind=&quot;click: function(){ removeManagedRepository(row) }&quot;&gt;
+                &lt;img src=&quot;images/edit-cut.png&quot; title=&quot;${$.i18n.prop('delete')}&quot;/&gt;
+              &lt;/a&gt;
+            &lt;/td&gt;
+            .....
+          &lt;/tr&gt;
+      {{/each}}
+  &lt;/tbody&gt;
+</pre></div></div></div></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/jsui/rest.html b/jsui/rest.html
index 6cb1ec6..b09650a 100644
--- a/jsui/rest.html
+++ b/jsui/rest.html
@@ -1,385 +1,379 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="author" content="Olivier Lamy" />
-    <meta name="Date-Creation-yyyymmdd" content="20120119" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - REST Services</title>
-    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="../css/site.css" />
-    <link rel="stylesheet" href="../css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="../security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../"  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="../redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="../index.html" id="bannerLeft">
-                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-            <li class="">
-                    <a href="../" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">REST Services</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
-<h2>Expose Rest Services<a name="Expose_Rest_Services"></a></h2>
-<p>The <a class="externalLink" href="http://cxf.apache.org">Apache CXF</a> is used to expose some classes/methods as REST Services.</p>
-<p>Services use the standard interface/implementation pattern:</p>
-<ul>
-<li>interfaces and beans are located in archiva-rest-api maven module</li>
-<li>implementation are located in archiva-rest-services maven module</li></ul>
-<ul>
-<li><a href="#Expose_Rest_Services">Expose Rest Services</a>
-<ul>
-<li><a href="#Steps_to_expose_your_class_as_a_REST_Service.">Steps to expose your class as a REST Service.</a>
-<ul>
-<li><a href="#Interface_and_data_beans">Interface and data beans</a>
-<ul>
-<li><a href="#Beans">Beans</a></li>
-<li><a href="#JAXRS_annotations">JAXRS annotations</a></li></ul></li>
-<li><a href="#CXFSpring_configuration">CXF/Spring configuration</a></li>
-<li><a href="#Redback_security_annotation">Redback security annotation</a></li></ul></li></ul></li></ul>
-<div class="section">
-<h3>Steps to expose your class as a REST Service.<a name="Steps_to_expose_your_class_as_a_REST_Service."></a></h3>
-<p>Here all the steps to expose a new class as a REST service.</p>
-<div class="section">
-<h4>Interface and data beans<a name="Interface_and_data_beans"></a></h4>
-<p>All interfaces and data beans are added in the module archiva-rest-api:</p>
-<ul>
-<li>interface in the package: org.apache.archiva.rest.api.services .</li>
-<li>data beans in the package: org.apache.archiva.rest.api.model .</li></ul>
-<div class="section">
-<h5>Beans<a name="Beans"></a></h5>
-<p>As we want to be able to expose result as json or xml type, all beans use javax.xml.bind.annotation root element :</p>
-<div class="source">
-<pre>@XmlRootElement( name = &quot;artifact&quot; )
-public class Artifact
-    implements Serializable
-
-All services will be able to return json or xml
-@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
-</pre></div></div>
-<div class="section">
-<h5>JAXRS annotations<a name="JAXRS_annotations"></a></h5>
-<p>As we use interfaces/implementations pattern jaxrs annotations are only in interfaces level.</p>
-<div class="source">
-<pre>@Path( &quot;/managedRepositoriesService/&quot; )
-public interface ManagedRepositoriesService
-{
-    // simple GET method no parameter
-    @Path( &quot;getManagedRepositories&quot; )
-    @GET
-    @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
-    List&lt;ManagedRepository&gt; getManagedRepositories()
-        throws ArchivaRestServiceException;
-
-    // GET method with a path parameter
-    @Path( &quot;getManagedRepository/{repositoryId}&quot; )
-    @GET
-    @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
-    @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
-    ManagedRepository getManagedRepository( @PathParam( &quot;repositoryId&quot; ) String repositoryId )
-        throws ArchivaRestServiceException;
-
-    // POST  method to pass a data bean
-    @Path( &quot;addManagedRepository&quot; )
-    @POST
-    @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
-    @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
-    @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
-    ManagedRepository addManagedRepository( ManagedRepository managedRepository )
-        throws ArchivaRestServiceException;
-</pre></div></div></div>
-<div class="section">
-<h4>CXF/Spring configuration<a name="CXFSpring_configuration"></a></h4>
-<p>REST services implementations are marked with the Spring annotation @Service</p>
-<div class="source">
-<pre>package org.apache.archiva.rest.services;
-......
-@Service( &quot;managedRepositoriesService#rest&quot; )
-public class DefaultManagedRepositoriesService
-    extends AbstractRestService
-    implements ManagedRepositoriesService
-</pre></div>
-<p>Spring beans are declared as REST/CXF services in the Spring configuration</p>
-<div class="source">
-<pre>  &lt;jaxrs:server id=&quot;archivaServices&quot; address=&quot;/archivaServices&quot;&gt;
-    .....
-    &lt;jaxrs:serviceBeans&gt;
-      &lt;ref bean=&quot;managedRepositoriesService#rest&quot;/&gt;
-    &lt;/jaxrs:serviceBeans&gt;
-    .....
-  &lt;/jaxrs:server&gt;
-
-  Note as we use @Service annotation package scanning must declared in spring configuration
-
-&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
-       xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
-       xmlns:context=&quot;http://www.springframework.org/schema/context&quot;
-       xsi:schemaLocation=&quot;http://www.springframework.org/schema/context
-           http://www.springframework.org/schema/context/spring-context-3.0.xsd ....&quot;&gt;
-...
-  &lt;context:annotation-config/&gt;
-  &lt;context:component-scan
-      base-package=&quot;org.apache.archiva.rest.services&quot;/&gt;
-
-...
-&lt;/beans&gt;
-</pre></div>
-<p>CXF servlet is declared as:</p>
-<div class="source">
-<pre>  &lt;servlet&gt;
-    &lt;servlet-name&gt;CXFServlet&lt;/servlet-name&gt;
-    &lt;servlet-class&gt;org.apache.cxf.transport.servlet.CXFServlet&lt;/servlet-class&gt;
-    &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
-  &lt;/servlet&gt;
-
-  &lt;servlet-mapping&gt;
-    &lt;servlet-name&gt;CXFServlet&lt;/servlet-name&gt;
-    &lt;url-pattern&gt;/restServices/*&lt;/url-pattern&gt;
-  &lt;/servlet-mapping&gt;
-</pre></div>
-<p>So as it, REST services are availble in the following url <b>restServices/archivaServices/</b>.</p></div>
-<div class="section">
-<h4>Redback security annotation<a name="Redback_security_annotation"></a></h4>
-<p>Some REST methods need some karma, so to prevent anonymous access methods can be marked as it:</p>
-<div class="source">
-<pre>
-    @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
-    ManagedRepository addManagedRepository( ManagedRepository managedRepository )
-        throws ArchivaRestServiceException;
-</pre></div>
-<p>This method will need the current user to have the operation manage-configuration level.</p>
-<p>For more details, have a look at <a class="externalLink" href="http://archiva.apache.org/redback/integration/rest.html">Redback REST</a>.</p></div></div></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="author" content="Olivier Lamy" />
+    <meta name="Date-Creation-yyyymmdd" content="20120119" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - REST Services</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="../security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../"  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="../redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="../index.html" id="bannerLeft">
+                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+            <li class="">
+                    <a href="../" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">REST Services</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
+<h2>Expose Rest Services<a name="Expose_Rest_Services"></a></h2>
+<p>The <a class="externalLink" href="http://cxf.apache.org">Apache CXF</a> is used to expose some classes/methods as REST Services.</p>
+<p>Services use the standard interface/implementation pattern:</p>
+<ul>
+<li>interfaces and beans are located in archiva-rest-api maven module</li>
+<li>implementation are located in archiva-rest-services maven module</li></ul>
+<ul>
+<li><a href="#Expose_Rest_Services">Expose Rest Services</a>
+<ul>
+<li><a href="#Steps_to_expose_your_class_as_a_REST_Service.">Steps to expose your class as a REST Service.</a>
+<ul>
+<li><a href="#Interface_and_data_beans">Interface and data beans</a>
+<ul>
+<li><a href="#Beans">Beans</a></li>
+<li><a href="#JAXRS_annotations">JAXRS annotations</a></li></ul></li>
+<li><a href="#CXFSpring_configuration">CXF/Spring configuration</a></li>
+<li><a href="#Redback_security_annotation">Redback security annotation</a></li></ul></li></ul></li></ul>
+<div class="section">
+<h3>Steps to expose your class as a REST Service.<a name="Steps_to_expose_your_class_as_a_REST_Service."></a></h3>
+<p>Here all the steps to expose a new class as a REST service.</p>
+<div class="section">
+<h4>Interface and data beans<a name="Interface_and_data_beans"></a></h4>
+<p>All interfaces and data beans are added in the module archiva-rest-api:</p>
+<ul>
+<li>interface in the package: org.apache.archiva.rest.api.services .</li>
+<li>data beans in the package: org.apache.archiva.rest.api.model .</li></ul>
+<div class="section">
+<h5>Beans<a name="Beans"></a></h5>
+<p>As we want to be able to expose result as json or xml type, all beans use javax.xml.bind.annotation root element :</p>
+<div class="source">
+<pre>@XmlRootElement( name = &quot;artifact&quot; )
+public class Artifact
+    implements Serializable
+
+All services will be able to return json or xml
+@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )</pre></div></div>
+<div class="section">
+<h5>JAXRS annotations<a name="JAXRS_annotations"></a></h5>
+<p>As we use interfaces/implementations pattern jaxrs annotations are only in interfaces level.</p>
+<div class="source">
+<pre>@Path( &quot;/managedRepositoriesService/&quot; )
+public interface ManagedRepositoriesService
+{
+    // simple GET method no parameter
+    @Path( &quot;getManagedRepositories&quot; )
+    @GET
+    @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+    List&lt;ManagedRepository&gt; getManagedRepositories()
+        throws ArchivaRestServiceException;
+
+    // GET method with a path parameter
+    @Path( &quot;getManagedRepository/{repositoryId}&quot; )
+    @GET
+    @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+    @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+    ManagedRepository getManagedRepository( @PathParam( &quot;repositoryId&quot; ) String repositoryId )
+        throws ArchivaRestServiceException;
+
+    // POST  method to pass a data bean
+    @Path( &quot;addManagedRepository&quot; )
+    @POST
+    @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+    @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+    @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+    ManagedRepository addManagedRepository( ManagedRepository managedRepository )
+        throws ArchivaRestServiceException;</pre></div></div></div>
+<div class="section">
+<h4>CXF/Spring configuration<a name="CXFSpring_configuration"></a></h4>
+<p>REST services implementations are marked with the Spring annotation @Service</p>
+<div class="source">
+<pre>package org.apache.archiva.rest.services;
+......
+@Service( &quot;managedRepositoriesService#rest&quot; )
+public class DefaultManagedRepositoriesService
+    extends AbstractRestService
+    implements ManagedRepositoriesService</pre></div>
+<p>Spring beans are declared as REST/CXF services in the Spring configuration</p>
+<div class="source">
+<pre>  &lt;jaxrs:server id=&quot;archivaServices&quot; address=&quot;/archivaServices&quot;&gt;
+    .....
+    &lt;jaxrs:serviceBeans&gt;
+      &lt;ref bean=&quot;managedRepositoriesService#rest&quot;/&gt;
+    &lt;/jaxrs:serviceBeans&gt;
+    .....
+  &lt;/jaxrs:server&gt;
+
+  Note as we use @Service annotation package scanning must declared in spring configuration
+
+&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
+       xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
+       xmlns:context=&quot;http://www.springframework.org/schema/context&quot;
+       xsi:schemaLocation=&quot;http://www.springframework.org/schema/context
+           http://www.springframework.org/schema/context/spring-context-3.0.xsd ....&quot;&gt;
+...
+  &lt;context:annotation-config/&gt;
+  &lt;context:component-scan
+      base-package=&quot;org.apache.archiva.rest.services&quot;/&gt;
+
+...
+&lt;/beans&gt;</pre></div>
+<p>CXF servlet is declared as:</p>
+<div class="source">
+<pre>  &lt;servlet&gt;
+    &lt;servlet-name&gt;CXFServlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.apache.cxf.transport.servlet.CXFServlet&lt;/servlet-class&gt;
+    &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
+  &lt;/servlet&gt;
+
+  &lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;CXFServlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;/restServices/*&lt;/url-pattern&gt;
+  &lt;/servlet-mapping&gt;</pre></div>
+<p>So as it, REST services are availble in the following url <b>restServices/archivaServices/</b>.</p></div>
+<div class="section">
+<h4>Redback security annotation<a name="Redback_security_annotation"></a></h4>
+<p>Some REST methods need some karma, so to prevent anonymous access methods can be marked as it:</p>
+<div class="source">
+<pre>
+    @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+    ManagedRepository addManagedRepository( ManagedRepository managedRepository )
+        throws ArchivaRestServiceException;</pre></div>
+<p>This method will need the current user to have the operation manage-configuration level.</p>
+<p>For more details, have a look at <a class="externalLink" href="http://archiva.apache.org/redback/integration/rest.html">Redback REST</a>.</p></div></div></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/jsui/template-loading.html b/jsui/template-loading.html
index ffb7100..27d1cff 100644
--- a/jsui/template-loading.html
+++ b/jsui/template-loading.html
@@ -1,300 +1,298 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="author" content="Olivier Lamy" />
-    <meta name="Date-Creation-yyyymmdd" content="20120914" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Javascript template loading</title>
-    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="../css/site.css" />
-    <link rel="stylesheet" href="../css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="../security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../"  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="../redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="../index.html" id="bannerLeft">
-                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-            <li class="">
-                    <a href="../" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Javascript template loading</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
-<h2>Html/Javascript templates loading<a name="HtmlJavascript_templates_loading"></a></h2>
-<p>Templates are loaded on application loaded and added in the hidden div <b>#html-fragments</b>.</p>
-<p>They are loaded using requirejs and the text plugin.</p>
-<p>archiva templates are loaded as it <tt>NOTE: the no cache is activated only on dev mode</tt></p>
-<div class="source">
-<pre>require(['jquery',&quot;jquery.tmpl&quot;,'i18n',&quot;utils&quot;,&quot;text!templates/archiva/menu.html&quot;,
-          &quot;text!templates/archiva/generics.html&quot;,
-          &quot;text!templates/archiva/modal.html&quot;,
-          &quot;text!templates/archiva/repositories.html&quot;,
-          &quot;text!templates/archiva/search.html&quot;,
-          &quot;text!templates/archiva/general-admin.html&quot;],
-  function(jquery,jqueryTmpl,i18n,utils,menu,generics,modal,repositories,
-           search,general_admin) {
-    loadArchivaTemplate=function(){
-      var htmlFragment=$(&quot;#html-fragments&quot;);
-      // template loading
-      htmlFragment.append(menu);
-      htmlFragment.append(generics);
-      $.tmpl( modal ).appendTo(htmlFragment);
-      htmlFragment.append(repositories);
-      htmlFragment.append(search);
-      htmlFragment.append(general_admin);
-      $.log(&quot;main-tmpl.js loaded&quot;);
-    }
-  }
-);
-</pre></div>
-<div class="section">
-<h3>i18n in templates<a name="i18n_in_templates"></a></h3>
-<div class="section">
-<h4>static templates<a name="static_templates"></a></h4>
-<p>Some templates which are only simple html which only need i18n are executed immediatly.</p>
-<p>Simply use:</p>
-<div class="source">
-<pre>  $.tmpl( menu, $.i18n.map ).appendTo(&quot;#html-fragments&quot;);
-  to get i18n values in your template you can use
-  ${register} or ${$.i18n.prop('register')}
-
-  Note if you use the simple form ${register} and the property is not available, the template system will try to use if exists the function register
-
-</pre></div></div>
-<div class="section">
-<h4>dynamic templates<a name="dynamic_templates"></a></h4>
-<p>The others are only inserted in #html-fragments.</p></div></div></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="author" content="Olivier Lamy" />
+    <meta name="Date-Creation-yyyymmdd" content="20120914" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Javascript template loading</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="../download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="../versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="../security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../"  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="../docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="../docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="../get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="../developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="../redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="../redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="../jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="../jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="../jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="../jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="../jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="../developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="../developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="../project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="../integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="../mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="../issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="../license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="../team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="../source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="../index.html" id="bannerLeft">
+                                                                                                <img src="../images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+            <li class="">
+                    <a href="../" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Javascript template loading</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
+<h2>Html/Javascript templates loading<a name="HtmlJavascript_templates_loading"></a></h2>
+<p>Templates are loaded on application loaded and added in the hidden div <b>#html-fragments</b>.</p>
+<p>They are loaded using requirejs and the text plugin.</p>
+<p>archiva templates are loaded as it <tt>NOTE: the no cache is activated only on dev mode</tt></p>
+<div class="source">
+<pre>require(['jquery',&quot;jquery.tmpl&quot;,'i18n',&quot;utils&quot;,&quot;text!templates/archiva/menu.html&quot;,
+          &quot;text!templates/archiva/generics.html&quot;,
+          &quot;text!templates/archiva/modal.html&quot;,
+          &quot;text!templates/archiva/repositories.html&quot;,
+          &quot;text!templates/archiva/search.html&quot;,
+          &quot;text!templates/archiva/general-admin.html&quot;],
+  function(jquery,jqueryTmpl,i18n,utils,menu,generics,modal,repositories,
+           search,general_admin) {
+    loadArchivaTemplate=function(){
+      var htmlFragment=$(&quot;#html-fragments&quot;);
+      // template loading
+      htmlFragment.append(menu);
+      htmlFragment.append(generics);
+      $.tmpl( modal ).appendTo(htmlFragment);
+      htmlFragment.append(repositories);
+      htmlFragment.append(search);
+      htmlFragment.append(general_admin);
+      $.log(&quot;main-tmpl.js loaded&quot;);
+    }
+  }
+);</pre></div>
+<div class="section">
+<h3>i18n in templates<a name="i18n_in_templates"></a></h3>
+<div class="section">
+<h4>static templates<a name="static_templates"></a></h4>
+<p>Some templates which are only simple html which only need i18n are executed immediatly.</p>
+<p>Simply use:</p>
+<div class="source">
+<pre>  $.tmpl( menu, $.i18n.map ).appendTo(&quot;#html-fragments&quot;);
+  to get i18n values in your template you can use
+  ${register} or ${$.i18n.prop('register')}
+
+  Note if you use the simple form ${register} and the property is not available, the template system will try to use if exists the function register
+</pre></div></div>
+<div class="section">
+<h4>dynamic templates<a name="dynamic_templates"></a></h4>
+<p>The others are only inserted in #html-fragments.</p></div></div></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/known-issues.html b/known-issues.html
index 84d8fec..bbb59e9 100644
--- a/known-issues.html
+++ b/known-issues.html
@@ -1,257 +1,257 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Creation-yyyymmdd" content="20120119" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Known Issues and Errata</title>
-    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="./css/site.css" />
-    <link rel="stylesheet" href="./css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href=""  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="index.html" id="bannerLeft">
-                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-                <li class="">
-                    <a href="./" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Known Issues and Errata</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
-<h2>Known Issues and Errata<a name="Known_Issues_and_Errata"></a></h2>
-<p>For a list of all JIRA issues reported against released versions of Archiva, see <a class="externalLink" href="http://jira.codehaus.org/secure/IssueNavigator.jspa?reset=true&amp;jqlQuery=project+%3D+MRM+AND+resolution+%3D+Unresolved+and+affectedVersion+in+releasedVersions()"> JIRA</a>.</p></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Creation-yyyymmdd" content="20120119" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Known Issues and Errata</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="./css/site.css" />
+    <link rel="stylesheet" href="./css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href=""  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="index.html" id="bannerLeft">
+                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+                <li class="">
+                    <a href="./" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Known Issues and Errata</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
+<h2>Known Issues and Errata<a name="Known_Issues_and_Errata"></a></h2>
+<p>For a list of all JIRA issues reported against released versions of Archiva, see <a class="externalLink" href="http://jira.codehaus.org/secure/IssueNavigator.jspa?reset=true&amp;jqlQuery=project+%3D+MRM+AND+resolution+%3D+Unresolved+and+affectedVersion+in+releasedVersions()"> JIRA</a>.</p></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/license.html b/license.html
index 5ccbc13..6189051 100644
--- a/license.html
+++ b/license.html
@@ -1,463 +1,463 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Project License</title>
-    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="./css/site.css" />
-    <link rel="stylesheet" href="./css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href=""  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="index.html" id="bannerLeft">
-                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-                <li class="">
-                    <a href="./" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Project License</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                      <div class="section">
-<h2>Overview<a name="Overview"></a></h2><a name="Overview"></a>
-<p>Typically the licenses listed for the project are that of the project itself, and not of dependencies.</p></div>
-<div class="section">
-<h2>Project License<a name="Project_License"></a></h2><a name="Project_License"></a>
-<div class="section">
-<h3>The Apache Software License, Version 2.0<a name="The_Apache_Software_License_Version_2.0"></a></h3><a name="The_Apache_Software_License_Version_2.0"></a>
-<div class="source">
-<pre>
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      &quot;License&quot; shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      &quot;Licensor&quot; shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      &quot;Legal Entity&quot; shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      &quot;control&quot; means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      &quot;You&quot; (or &quot;Your&quot;) shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      &quot;Source&quot; form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      &quot;Object&quot; form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      &quot;Work&quot; shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      &quot;Derivative Works&quot; shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      &quot;Contribution&quot; shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, &quot;submitted&quot;
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as &quot;Not a Contribution.&quot;
-
-      &quot;Contributor&quot; shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a &quot;NOTICE&quot; text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an &quot;AS IS&quot; BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets &quot;[]&quot;
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same &quot;printed page&quot; as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-</pre></div></div></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Project License</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="./css/site.css" />
+    <link rel="stylesheet" href="./css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href=""  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="index.html" id="bannerLeft">
+                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+                <li class="">
+                    <a href="./" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Project License</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                      <div class="section">
+<h2>Overview<a name="Overview"></a></h2><a name="Overview"></a>
+<p>Typically the licenses listed for the project are that of the project itself, and not of dependencies.</p></div>
+<div class="section">
+<h2>Project License<a name="Project_License"></a></h2><a name="Project_License"></a>
+<div class="section">
+<h3>The Apache Software License, Version 2.0<a name="The_Apache_Software_License_Version_2.0"></a></h3><a name="The_Apache_Software_License_Version_2.0"></a>
+<div class="source">
+<pre>
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      &quot;License&quot; shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      &quot;Licensor&quot; shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      &quot;Legal Entity&quot; shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      &quot;control&quot; means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      &quot;You&quot; (or &quot;Your&quot;) shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      &quot;Source&quot; form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      &quot;Object&quot; form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      &quot;Work&quot; shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      &quot;Derivative Works&quot; shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      &quot;Contribution&quot; shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, &quot;submitted&quot;
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as &quot;Not a Contribution.&quot;
+
+      &quot;Contributor&quot; shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a &quot;NOTICE&quot; text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an &quot;AS IS&quot; BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets &quot;[]&quot;
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same &quot;printed page&quot; as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+</pre></div></div></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/mail-lists.html b/mail-lists.html
index 921d0c7..5cce355 100644
--- a/mail-lists.html
+++ b/mail-lists.html
@@ -1,348 +1,348 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Project Mailing Lists</title>
-    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="./css/site.css" />
-    <link rel="stylesheet" href="./css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href=""  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="index.html" id="bannerLeft">
-                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-                <li class="">
-                    <a href="./" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Project Mailing Lists</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <div class="section">
-<h2>Project Mailing Lists<a name="Project_Mailing_Lists"></a></h2><a name="Project_Mailing_Lists"></a>
-<p>These are the mailing lists that have been established for this project. For each list, there is a subscribe, unsubscribe, and an archive link.</p>
-<table border="0" class="table table-striped">
-<tr class="a">
-<th>Name</th>
-<th>Subscribe</th>
-<th>Unsubscribe</th>
-<th>Post</th>
-<th>Archive</th>
-<th>Other Archives</th></tr>
-<tr class="b">
-<td>Archiva User List</td>
-<td><a class="externalLink" href="mailto:users-subscribe@archiva.apache.org">Subscribe</a></td>
-<td><a class="externalLink" href="mailto:users-unsubscribe@archiva.apache.org">Unsubscribe</a></td>
-<td><a class="externalLink" href="mailto:users@archiva.apache.org">Post</a></td>
-<td><a class="externalLink" href="http://mail-archives.apache.org/mod_mbox/archiva-users/">mail-archives.apache.org</a></td>
-<td><a class="externalLink" href="http://www.mail-archive.com/users@archiva.apache.org">www.mail-archive.com</a></td></tr>
-<tr class="a">
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td><a class="externalLink" href="http://old.nabble.com/archiva-users-f16426.html">old.nabble.com</a></td></tr>
-<tr class="b">
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td><a class="externalLink" href="http://markmail.org/list/org.apache.archiva.users">markmail.org</a></td></tr>
-<tr class="a">
-<td>Archiva Developer List</td>
-<td><a class="externalLink" href="mailto:dev-subscribe@archiva.apache.org">Subscribe</a></td>
-<td><a class="externalLink" href="mailto:dev-unsubscribe@archiva.apache.org">Unsubscribe</a></td>
-<td><a class="externalLink" href="mailto:dev@archiva.apache.org">Post</a></td>
-<td><a class="externalLink" href="http://mail-archives.apache.org/mod_mbox/archiva-dev">mail-archives.apache.org</a></td>
-<td><a class="externalLink" href="http://www.mail-archive.com/dev@archiva.apache.org">www.mail-archive.com</a></td></tr>
-<tr class="b">
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td><a class="externalLink" href="http://old.nabble.com/archiva-dev-f16427.html">old.nabble.com</a></td></tr>
-<tr class="a">
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td><a class="externalLink" href="http://markmail.org/list/org.apache.archiva.dev">markmail.org</a></td></tr>
-<tr class="b">
-<td>Archiva Commits List</td>
-<td><a class="externalLink" href="mailto:commits-subscribe@archiva.apache.org">Subscribe</a></td>
-<td><a class="externalLink" href="mailto:commits-unsubscribe@archiva.apache.org">Unsubscribe</a></td>
-<td>-</td>
-<td><a class="externalLink" href="http://mail-archives.apache.org/mod_mbox/archiva-commits">mail-archives.apache.org</a></td>
-<td><a class="externalLink" href="http://www.mail-archive.com/commits@archiva.apache.org">www.mail-archive.com</a></td></tr>
-<tr class="a">
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td><a class="externalLink" href="http://markmail.org/list/org.apache.archiva.commits">markmail.org</a></td></tr>
-<tr class="b">
-<td>Archiva Issues List</td>
-<td><a class="externalLink" href="mailto:issues-subscribe@archiva.apache.org">Subscribe</a></td>
-<td><a class="externalLink" href="mailto:issues-unsubscribe@archiva.apache.org">Unsubscribe</a></td>
-<td>-</td>
-<td><a class="externalLink" href="http://mail-archives.apache.org/mod_mbox/archiva-issues">mail-archives.apache.org</a></td>
-<td><a class="externalLink" href="http://www.mail-archive.com/issues@archiva.apache.org">www.mail-archive.com</a></td></tr>
-<tr class="a">
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td><a class="externalLink" href="http://old.nabble.com/Archiva---Issues-f29617.html">old.nabble.com</a></td></tr>
-<tr class="b">
-<td>Archiva Notifications List</td>
-<td><a class="externalLink" href="mailto:notifications-subscribe@archiva.apache.org">Subscribe</a></td>
-<td><a class="externalLink" href="mailto:notifications-unsubscribe@archiva.apache.org">Unsubscribe</a></td>
-<td>-</td>
-<td><a class="externalLink" href="http://mail-archives.apache.org/mod_mbox/archiva-notifications/">mail-archives.apache.org</a></td>
-<td><a class="externalLink" href="http://www.mail-archive.com/notifications@archiva.apache.org">www.mail-archive.com</a></td></tr>
-<tr class="a">
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td>-</td>
-<td><a class="externalLink" href="http://archiva.notifications.markmail.org/">archiva.notifications.markmail.org</a></td></tr></table></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Project Mailing Lists</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="./css/site.css" />
+    <link rel="stylesheet" href="./css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href=""  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="index.html" id="bannerLeft">
+                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+                <li class="">
+                    <a href="./" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Project Mailing Lists</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <div class="section">
+<h2>Project Mailing Lists<a name="Project_Mailing_Lists"></a></h2><a name="Project_Mailing_Lists"></a>
+<p>These are the mailing lists that have been established for this project. For each list, there is a subscribe, unsubscribe, and an archive link.</p>
+<table border="0" class="table table-striped">
+<tr class="a">
+<th>Name</th>
+<th>Subscribe</th>
+<th>Unsubscribe</th>
+<th>Post</th>
+<th>Archive</th>
+<th>Other Archives</th></tr>
+<tr class="b">
+<td>Archiva User List</td>
+<td><a class="externalLink" href="mailto:users-subscribe@archiva.apache.org">Subscribe</a></td>
+<td><a class="externalLink" href="mailto:users-unsubscribe@archiva.apache.org">Unsubscribe</a></td>
+<td><a class="externalLink" href="mailto:users@archiva.apache.org">Post</a></td>
+<td><a class="externalLink" href="http://mail-archives.apache.org/mod_mbox/archiva-users/">mail-archives.apache.org</a></td>
+<td><a class="externalLink" href="http://www.mail-archive.com/users@archiva.apache.org">www.mail-archive.com</a></td></tr>
+<tr class="a">
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td><a class="externalLink" href="http://old.nabble.com/archiva-users-f16426.html">old.nabble.com</a></td></tr>
+<tr class="b">
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td><a class="externalLink" href="http://markmail.org/list/org.apache.archiva.users">markmail.org</a></td></tr>
+<tr class="a">
+<td>Archiva Developer List</td>
+<td><a class="externalLink" href="mailto:dev-subscribe@archiva.apache.org">Subscribe</a></td>
+<td><a class="externalLink" href="mailto:dev-unsubscribe@archiva.apache.org">Unsubscribe</a></td>
+<td><a class="externalLink" href="mailto:dev@archiva.apache.org">Post</a></td>
+<td><a class="externalLink" href="http://mail-archives.apache.org/mod_mbox/archiva-dev">mail-archives.apache.org</a></td>
+<td><a class="externalLink" href="http://www.mail-archive.com/dev@archiva.apache.org">www.mail-archive.com</a></td></tr>
+<tr class="b">
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td><a class="externalLink" href="http://old.nabble.com/archiva-dev-f16427.html">old.nabble.com</a></td></tr>
+<tr class="a">
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td><a class="externalLink" href="http://markmail.org/list/org.apache.archiva.dev">markmail.org</a></td></tr>
+<tr class="b">
+<td>Archiva Commits List</td>
+<td><a class="externalLink" href="mailto:commits-subscribe@archiva.apache.org">Subscribe</a></td>
+<td><a class="externalLink" href="mailto:commits-unsubscribe@archiva.apache.org">Unsubscribe</a></td>
+<td>-</td>
+<td><a class="externalLink" href="http://mail-archives.apache.org/mod_mbox/archiva-commits">mail-archives.apache.org</a></td>
+<td><a class="externalLink" href="http://www.mail-archive.com/commits@archiva.apache.org">www.mail-archive.com</a></td></tr>
+<tr class="a">
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td><a class="externalLink" href="http://markmail.org/list/org.apache.archiva.commits">markmail.org</a></td></tr>
+<tr class="b">
+<td>Archiva Issues List</td>
+<td><a class="externalLink" href="mailto:issues-subscribe@archiva.apache.org">Subscribe</a></td>
+<td><a class="externalLink" href="mailto:issues-unsubscribe@archiva.apache.org">Unsubscribe</a></td>
+<td>-</td>
+<td><a class="externalLink" href="http://mail-archives.apache.org/mod_mbox/archiva-issues">mail-archives.apache.org</a></td>
+<td><a class="externalLink" href="http://www.mail-archive.com/issues@archiva.apache.org">www.mail-archive.com</a></td></tr>
+<tr class="a">
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td><a class="externalLink" href="http://old.nabble.com/Archiva---Issues-f29617.html">old.nabble.com</a></td></tr>
+<tr class="b">
+<td>Archiva Notifications List</td>
+<td><a class="externalLink" href="mailto:notifications-subscribe@archiva.apache.org">Subscribe</a></td>
+<td><a class="externalLink" href="mailto:notifications-unsubscribe@archiva.apache.org">Unsubscribe</a></td>
+<td>-</td>
+<td><a class="externalLink" href="http://mail-archives.apache.org/mod_mbox/archiva-notifications/">mail-archives.apache.org</a></td>
+<td><a class="externalLink" href="http://www.mail-archive.com/notifications@archiva.apache.org">www.mail-archive.com</a></td></tr>
+<tr class="a">
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td>-</td>
+<td><a class="externalLink" href="http://archiva.notifications.markmail.org/">archiva.notifications.markmail.org</a></td></tr></table></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/privacy-policy.html b/privacy-policy.html
index b358159..657136c 100644
--- a/privacy-policy.html
+++ b/privacy-policy.html
@@ -1,267 +1,267 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="author" content="Vincent Siveton" />
-    <meta name="Date-Creation-yyyymmdd" content="20081203" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Privacy Policy</title>
-    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="./css/site.css" />
-    <link rel="stylesheet" href="./css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href=""  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="index.html" id="bannerLeft">
-                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-                <li class="">
-                    <a href="./" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Privacy Policy</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><div class="section">
-<h2>Privacy Policy<a name="Privacy_Policy"></a></h2>
-<p>Information about your use of this website is collected using server access logs and a tracking cookie. The collected information consists of the following:</p>
-<ol style="list-style-type: decimal">
-<li>The IP address from which you access the website;</li>
-<li>The type of browser and operating system you use to access our site;</li>
-<li>The date and time you access our site;</li>
-<li>The pages you visit; and</li>
-<li>The addresses of pages from where you followed a link to our site.</li></ol>
-<p>Part of this information is gathered using a tracking cookie set by the <a class="externalLink" href="http://www.google.com/analytics/">Google Analytics</a> service and handled by Google as described in their <a class="externalLink" href="http://www.google.com/privacy.html">privacy policy</a>. See your browser documentation for instructions on how to disable the cookie if you prefer not to share this data with Google.</p>
-<p>We use the gathered information to help us make our site more useful to visitors and to better understand how and when our site is used. We do not track or collect personally identifiable information or associate gathered data with any personally identifying information from other sources.</p>
-<p>By using this website, you consent to the collection of this data in the manner and for the purpose described above.</p></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="author" content="Vincent Siveton" />
+    <meta name="Date-Creation-yyyymmdd" content="20081203" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Privacy Policy</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="./css/site.css" />
+    <link rel="stylesheet" href="./css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href=""  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="index.html" id="bannerLeft">
+                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+                <li class="">
+                    <a href="./" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Privacy Policy</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><div class="section">
+<h2>Privacy Policy<a name="Privacy_Policy"></a></h2>
+<p>Information about your use of this website is collected using server access logs and a tracking cookie. The collected information consists of the following:</p>
+<ol style="list-style-type: decimal">
+<li>The IP address from which you access the website;</li>
+<li>The type of browser and operating system you use to access our site;</li>
+<li>The date and time you access our site;</li>
+<li>The pages you visit; and</li>
+<li>The addresses of pages from where you followed a link to our site.</li></ol>
+<p>Part of this information is gathered using a tracking cookie set by the <a class="externalLink" href="http://www.google.com/analytics/">Google Analytics</a> service and handled by Google as described in their <a class="externalLink" href="http://www.google.com/privacy.html">privacy policy</a>. See your browser documentation for instructions on how to disable the cookie if you prefer not to share this data with Google.</p>
+<p>We use the gathered information to help us make our site more useful to visitors and to better understand how and when our site is used. We do not track or collect personally identifiable information or associate gathered data with any personally identifying information from other sources.</p>
+<p>By using this website, you consent to the collection of this data in the manner and for the purpose described above.</p></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/project-info.html b/project-info.html
index f8ff1c3..eadc950 100644
--- a/project-info.html
+++ b/project-info.html
@@ -1,280 +1,280 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Project Information</title>
-    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="./css/site.css" />
-    <link rel="stylesheet" href="./css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href=""  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="index.html" id="bannerLeft">
-                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-                <li class="">
-                    <a href="./" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Project Information</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <div class="section">
-<h2>Project Information<a name="Project_Information"></a></h2>
-<p>This document provides an overview of the various documents and links that are part of this project's general information. All of this content is automatically generated by <a class="externalLink" href="http://maven.apache.org">Maven</a> on behalf of the project.</p>
-<div class="section">
-<h3>Overview<a name="Overview"></a></h3>
-<table border="0" class="table table-striped">
-<tr class="a">
-<th>Document</th>
-<th>Description</th></tr>
-<tr class="b">
-<td><a href="integration.html">Continuous Integration</a></td>
-<td>This is a link to the definitions of all continuous integration processes that builds and tests code on a frequent, regular basis.</td></tr>
-<tr class="a">
-<td><a href="mail-lists.html">Mailing Lists</a></td>
-<td>This document provides subscription and archive information for this project's mailing lists.</td></tr>
-<tr class="b">
-<td><a href="issue-tracking.html">Issue Tracking</a></td>
-<td>This is a link to the issue management system for this project. Issues (bugs, features, change requests) can be created and queried using this link.</td></tr>
-<tr class="a">
-<td><a href="license.html">Project License</a></td>
-<td>This is a link to the definitions of project licenses.</td></tr>
-<tr class="b">
-<td><a href="team-list.html">Project Team</a></td>
-<td>This document provides information on the members of this project. These are the individuals who have contributed to the project in one form or another.</td></tr>
-<tr class="a">
-<td><a href="source-repository.html">Source Repository</a></td>
-<td>This is a link to the online source repository that can be viewed via a web browser.</td></tr></table></div></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Project Information</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="./css/site.css" />
+    <link rel="stylesheet" href="./css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href=""  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="index.html" id="bannerLeft">
+                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+                <li class="">
+                    <a href="./" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Project Information</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <div class="section">
+<h2>Project Information<a name="Project_Information"></a></h2>
+<p>This document provides an overview of the various documents and links that are part of this project's general information. All of this content is automatically generated by <a class="externalLink" href="http://maven.apache.org">Maven</a> on behalf of the project.</p>
+<div class="section">
+<h3>Overview<a name="Overview"></a></h3>
+<table border="0" class="table table-striped">
+<tr class="a">
+<th>Document</th>
+<th>Description</th></tr>
+<tr class="b">
+<td><a href="integration.html">Continuous Integration</a></td>
+<td>This is a link to the definitions of all continuous integration processes that builds and tests code on a frequent, regular basis.</td></tr>
+<tr class="a">
+<td><a href="mail-lists.html">Mailing Lists</a></td>
+<td>This document provides subscription and archive information for this project's mailing lists.</td></tr>
+<tr class="b">
+<td><a href="issue-tracking.html">Issue Tracking</a></td>
+<td>This is a link to the issue management system for this project. Issues (bugs, features, change requests) can be created and queried using this link.</td></tr>
+<tr class="a">
+<td><a href="license.html">Project License</a></td>
+<td>This is a link to the definitions of project licenses.</td></tr>
+<tr class="b">
+<td><a href="team-list.html">Project Team</a></td>
+<td>This document provides information on the members of this project. These are the individuals who have contributed to the project in one form or another.</td></tr>
+<tr class="a">
+<td><a href="source-repository.html">Source Repository</a></td>
+<td>This is a link to the online source repository that can be viewed via a web browser.</td></tr></table></div></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/security.html b/security.html
index c9bb2d4..41dba43 100644
--- a/security.html
+++ b/security.html
@@ -1,317 +1,317 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Security Vulnerabilities</title>
-    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="./css/site.css" />
-    <link rel="stylesheet" href="./css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href=""  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="index.html" id="bannerLeft">
-                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-                <li class="">
-                    <a href="./" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Security Vulnerabilities</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
-<h2>Security Vulnerabilities<a name="Security_Vulnerabilities"></a></h2>
-<p>Please note that binary patches are not produced for individual vulnerabilities. To obtain the binary fix for a particular vulnerability you should upgrade to an Apache Archiva version where that vulnerability has been fixed.</p>
-<p>For more information about reporting vulnerabilities, see the <a class="externalLink" href="http://www.apache.org/security/"> Apache Security Team</a> page.</p>
-<div class="section">
-<h3>CVE-2013-2251: Apache Archiva Remote Command Execution<a name="CVE-2013-2251:_Apache_Archiva_Remote_Command_Execution"></a></h3>
-<p>Apache Archiva is affected by a vulnerability in the version of the Struts library being used, which allows a malicious user to run code on the server remotely. More details about the vulnerability can be found at <a class="externalLink" href="http://struts.apache.org/release/2.3.x/docs/s2-016.html">http://struts.apache.org/release/2.3.x/docs/s2-016.html</a>.</p>
-<p>Versions Affected:</p>
-<ul>
-<li>Archiva 1.3 to Archiva 1.3.6</li></ul>
-<ul>
-<li>The unsupported versions Archiva 1.2 to 1.2.2 are also affected.</li></ul>
-<p>All users are recommended to upgrade to <a href="./download.cgi"> Archiva 2.0.1 or Archiva 1.3.8</a>, which are not affected by this issue.</p>
-<p>Archiva 2.0.0 and later is not affected by this issue.</p></div>
-<div class="section">
-<h3>CVE-2013-2187: Apache Archiva Cross-Site Scripting vulnerability<a name="CVE-2013-2187:_Apache_Archiva_Cross-Site_Scripting_vulnerability"></a></h3>
-<p>A request that included a specially crafted request parameter could be used to inject arbitrary HTML or Javascript into the Archiva home page.</p>
-<p>Versions Affected:</p>
-<ul>
-<li>Archiva 1.3 to Archiva 1.3.6</li></ul>
-<ul>
-<li>The unsupported versions Archiva 1.2 to 1.2.2 are also affected.</li></ul>
-<p>All users are recommended to upgrade to <a href="./download.cgi"> Archiva 2.0.1 or Archiva 1.3.8</a>, which are not affected by this issue.</p>
-<p>Archiva 2.0.0 and later is not affected by this issue.</p></div>
-<div class="section">
-<h3>CVE-2010-1870: Struts2 remote commands execution<a name="CVE-2010-1870:_Struts2_remote_commands_execution"></a></h3>
-<p>Apache Archiva is affected by a vulnerability in the version of the Struts library being used, which allows a malicious user to run code on the server remotely. More details about the vulnerability can be found at <a class="externalLink" href="http://struts.apache.org/2.2.1/docs/s2-005.html">http://struts.apache.org/2.2.1/docs/s2-005.html</a>.</p>
-<p>Versions Affected:</p>
-<ul>
-<li>Archiva 1.3 to Archiva 1.3.5</li></ul>
-<ul>
-<li>The unsupported versions Archiva 1.2 to 1.2.2 are also affected.</li></ul>
-<p>All users are recommended to upgrade to <a href="./download.cgi"> Archiva 1.3.6</a>, which configures Struts in such a way that it is not affected by this issue.</p>
-<p>Archiva 1.4-M3 and later is not affected by this issue.</p></div>
-<div class="section">
-<h3>CVE-2011-1077: Multiple XSS issues<a name="CVE-2011-1077:_Multiple_XSS_issues"></a></h3>
-<p>Apache Archiva is vulnerable to multiple XSS issues, both stored (persistent) and reflected (non-persistent). Javascript which might contain malicious code can be appended in a request parameter or stored as a value in a submitted form, and get executed.</p>
-<p>Versions Affected:</p>
-<ul>
-<li>Archiva 1.3 to 1.3.4</li>
-<li>The unsupported versions Archiva 1.0 to 1.2.2 are also affected.</li></ul></div>
-<div class="section">
-<h3>CVE-2011-1026: Multiple CSRF issues<a name="CVE-2011-1026:_Multiple_CSRF_issues"></a></h3>
-<p>An attacker can build a simple html page containing a hidden Image tag (eg: <tt>&lt;img src=vulnurl width=0 height=0 /</tt>&gt;) and entice the administrator to access the page.</p>
-<p>Versions Affected:</p>
-<ul>
-<li>Archiva 1.3 to 1.3.4</li>
-<li>The unsupported versions Archiva 1.0 to 1.2.2 are also affected.</li></ul></div>
-<div class="section">
-<h3>CVE-2011-0533: Apache Archiva cross-site scripting vulnerability<a name="CVE-2011-0533:_Apache_Archiva_cross-site_scripting_vulnerability"></a></h3>
-<p>A request that included a specially crafted request parameter could be used to inject arbitrary HTML or Javascript into the Archiva user management page. This fix is available in version <a href="./download.html"> 1.3.4</a> of Apache Archiva. All users must upgrade to this version (or higher).</p>
-<p>Versions Affected:</p>
-<ul>
-<li>Archiva 1.3 to 1.3.3</li>
-<li>The unsupported versions Archiva 1.0 to 1.2.2 are also affected.</li></ul></div>
-<div class="section">
-<h3>CVE-2010-3449: Apache Archiva CSRF Vulnerability<a name="CVE-2010-3449:_Apache_Archiva_CSRF_Vulnerability"></a></h3>
-<p>Apache Archiva doesn't check which form sends credentials. An attacker can create a specially crafted page and force archiva administrators to view it and change their credentials. To fix this, a referrer check was added to the security interceptor for all secured actions. A prompt for the administrator's password when changing a user account was also set in place. This fix is available in version <a href="./download.html"> 1.3.2</a> of Apache Archiva. All users must upgrade to this version (or higher).</p>
-<p>Versions Affected:</p>
-<ul>
-<li>Archiva 1.3 to 1.3.1</li>
-<li>Archiva 1.2 to 1.2.2 (end of life)</li>
-<li>Archiva 1.1 to 1.1.4 (end of life)</li>
-<li>Archiva 1.0 to 1.0.3 (end of life)</li></ul></div></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Security Vulnerabilities</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="./css/site.css" />
+    <link rel="stylesheet" href="./css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href=""  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="index.html" id="bannerLeft">
+                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+                <li class="">
+                    <a href="./" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Security Vulnerabilities</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
+<h2>Security Vulnerabilities<a name="Security_Vulnerabilities"></a></h2>
+<p>Please note that binary patches are not produced for individual vulnerabilities. To obtain the binary fix for a particular vulnerability you should upgrade to an Apache Archiva version where that vulnerability has been fixed.</p>
+<p>For more information about reporting vulnerabilities, see the <a class="externalLink" href="http://www.apache.org/security/"> Apache Security Team</a> page.</p>
+<div class="section">
+<h3>CVE-2013-2251: Apache Archiva Remote Command Execution<a name="CVE-2013-2251:_Apache_Archiva_Remote_Command_Execution"></a></h3>
+<p>Apache Archiva is affected by a vulnerability in the version of the Struts library being used, which allows a malicious user to run code on the server remotely. More details about the vulnerability can be found at <a class="externalLink" href="http://struts.apache.org/release/2.3.x/docs/s2-016.html">http://struts.apache.org/release/2.3.x/docs/s2-016.html</a>.</p>
+<p>Versions Affected:</p>
+<ul>
+<li>Archiva 1.3 to Archiva 1.3.6</li></ul>
+<ul>
+<li>The unsupported versions Archiva 1.2 to 1.2.2 are also affected.</li></ul>
+<p>All users are recommended to upgrade to <a href="./download.cgi"> Archiva 2.0.1 or Archiva 1.3.8</a>, which are not affected by this issue.</p>
+<p>Archiva 2.0.0 and later is not affected by this issue.</p></div>
+<div class="section">
+<h3>CVE-2013-2187: Apache Archiva Cross-Site Scripting vulnerability<a name="CVE-2013-2187:_Apache_Archiva_Cross-Site_Scripting_vulnerability"></a></h3>
+<p>A request that included a specially crafted request parameter could be used to inject arbitrary HTML or Javascript into the Archiva home page.</p>
+<p>Versions Affected:</p>
+<ul>
+<li>Archiva 1.3 to Archiva 1.3.6</li></ul>
+<ul>
+<li>The unsupported versions Archiva 1.2 to 1.2.2 are also affected.</li></ul>
+<p>All users are recommended to upgrade to <a href="./download.cgi"> Archiva 2.0.1 or Archiva 1.3.8</a>, which are not affected by this issue.</p>
+<p>Archiva 2.0.0 and later is not affected by this issue.</p></div>
+<div class="section">
+<h3>CVE-2010-1870: Struts2 remote commands execution<a name="CVE-2010-1870:_Struts2_remote_commands_execution"></a></h3>
+<p>Apache Archiva is affected by a vulnerability in the version of the Struts library being used, which allows a malicious user to run code on the server remotely. More details about the vulnerability can be found at <a class="externalLink" href="http://struts.apache.org/2.2.1/docs/s2-005.html">http://struts.apache.org/2.2.1/docs/s2-005.html</a>.</p>
+<p>Versions Affected:</p>
+<ul>
+<li>Archiva 1.3 to Archiva 1.3.5</li></ul>
+<ul>
+<li>The unsupported versions Archiva 1.2 to 1.2.2 are also affected.</li></ul>
+<p>All users are recommended to upgrade to <a href="./download.cgi"> Archiva 1.3.6</a>, which configures Struts in such a way that it is not affected by this issue.</p>
+<p>Archiva 1.4-M3 and later is not affected by this issue.</p></div>
+<div class="section">
+<h3>CVE-2011-1077: Multiple XSS issues<a name="CVE-2011-1077:_Multiple_XSS_issues"></a></h3>
+<p>Apache Archiva is vulnerable to multiple XSS issues, both stored (persistent) and reflected (non-persistent). Javascript which might contain malicious code can be appended in a request parameter or stored as a value in a submitted form, and get executed.</p>
+<p>Versions Affected:</p>
+<ul>
+<li>Archiva 1.3 to 1.3.4</li>
+<li>The unsupported versions Archiva 1.0 to 1.2.2 are also affected.</li></ul></div>
+<div class="section">
+<h3>CVE-2011-1026: Multiple CSRF issues<a name="CVE-2011-1026:_Multiple_CSRF_issues"></a></h3>
+<p>An attacker can build a simple html page containing a hidden Image tag (eg: <tt>&lt;img src=vulnurl width=0 height=0 /</tt>&gt;) and entice the administrator to access the page.</p>
+<p>Versions Affected:</p>
+<ul>
+<li>Archiva 1.3 to 1.3.4</li>
+<li>The unsupported versions Archiva 1.0 to 1.2.2 are also affected.</li></ul></div>
+<div class="section">
+<h3>CVE-2011-0533: Apache Archiva cross-site scripting vulnerability<a name="CVE-2011-0533:_Apache_Archiva_cross-site_scripting_vulnerability"></a></h3>
+<p>A request that included a specially crafted request parameter could be used to inject arbitrary HTML or Javascript into the Archiva user management page. This fix is available in version <a href="./download.html"> 1.3.4</a> of Apache Archiva. All users must upgrade to this version (or higher).</p>
+<p>Versions Affected:</p>
+<ul>
+<li>Archiva 1.3 to 1.3.3</li>
+<li>The unsupported versions Archiva 1.0 to 1.2.2 are also affected.</li></ul></div>
+<div class="section">
+<h3>CVE-2010-3449: Apache Archiva CSRF Vulnerability<a name="CVE-2010-3449:_Apache_Archiva_CSRF_Vulnerability"></a></h3>
+<p>Apache Archiva doesn't check which form sends credentials. An attacker can create a specially crafted page and force archiva administrators to view it and change their credentials. To fix this, a referrer check was added to the security interceptor for all secured actions. A prompt for the administrator's password when changing a user account was also set in place. This fix is available in version <a href="./download.html"> 1.3.2</a> of Apache Archiva. All users must upgrade to this version (or higher).</p>
+<p>Versions Affected:</p>
+<ul>
+<li>Archiva 1.3 to 1.3.1</li>
+<li>Archiva 1.2 to 1.2.2 (end of life)</li>
+<li>Archiva 1.1 to 1.1.4 (end of life)</li>
+<li>Archiva 1.0 to 1.0.3 (end of life)</li></ul></div></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/source-repository.html b/source-repository.html
index 0f334fd..7b34b9b 100644
--- a/source-repository.html
+++ b/source-repository.html
@@ -1,274 +1,274 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Source Repository</title>
-    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="./css/site.css" />
-    <link rel="stylesheet" href="./css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href=""  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="index.html" id="bannerLeft">
-                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-                <li class="">
-                    <a href="./" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Source Repository</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <div class="section">
-<h2>Overview<a name="Overview"></a></h2><a name="Overview"></a>
-<p>This project uses <a class="externalLink" href="http://git-scm.com/">GIT</a> to manage its source code. Instructions on GIT use can be found at <a class="externalLink" href="http://git-scm.com/documentation">http://git-scm.com/documentation</a>.</p></div>
-<div class="section">
-<h2>Web Access<a name="Web_Access"></a></h2><a name="Web_Access"></a>
-<p>The following is a link to the online source repository.</p>
-<div class="source">
-<pre><a class="externalLink" href="https://github.com/apache/archiva">https://github.com/apache/archiva</a></pre></div></div>
-<div class="section">
-<h2>Anonymous access<a name="Anonymous_access"></a></h2><a name="Anonymous_access"></a>
-<p>The source can be checked out anonymously from GIT with this command (See <a class="externalLink" href="http://git-scm.com/docs/git-clone">http://git-scm.com/docs/git-clone</a>):</p>
-<div class="source">
-<pre>$ git clone https://git-wip-us.apache.org/repos/asf/archiva.git</pre></div></div>
-<div class="section">
-<h2>Developer access<a name="Developer_access"></a></h2><a name="Developer_access"></a>
-<p>Only project developers can access the GIT tree via this method (See <a class="externalLink" href="http://git-scm.com/docs/git-clone">http://git-scm.com/docs/git-clone</a>).</p>
-<div class="source">
-<pre>$ git clone https://git-wip-us.apache.org/repos/asf/archiva.git</pre></div></div>
-<div class="section">
-<h2>Access from behind a firewall<a name="Access_from_behind_a_firewall"></a></h2><a name="Access_from_behind_a_firewall"></a>
-<p>Refer to the documentation of the SCM used for more information about access behind a firewall.</p></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Source Repository</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="./css/site.css" />
+    <link rel="stylesheet" href="./css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href=""  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="index.html" id="bannerLeft">
+                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+                <li class="">
+                    <a href="./" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Source Repository</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <div class="section">
+<h2>Overview<a name="Overview"></a></h2><a name="Overview"></a>
+<p>This project uses <a class="externalLink" href="http://git-scm.com/">GIT</a> to manage its source code. Instructions on GIT use can be found at <a class="externalLink" href="http://git-scm.com/documentation">http://git-scm.com/documentation</a>.</p></div>
+<div class="section">
+<h2>Web Access<a name="Web_Access"></a></h2><a name="Web_Access"></a>
+<p>The following is a link to the online source repository.</p>
+<div class="source">
+<pre><a class="externalLink" href="https://github.com/apache/archiva">https://github.com/apache/archiva</a></pre></div></div>
+<div class="section">
+<h2>Anonymous access<a name="Anonymous_access"></a></h2><a name="Anonymous_access"></a>
+<p>The source can be checked out anonymously from GIT with this command (See <a class="externalLink" href="http://git-scm.com/docs/git-clone">http://git-scm.com/docs/git-clone</a>):</p>
+<div class="source">
+<pre>$ git clone https://git-wip-us.apache.org/repos/asf/archiva.git</pre></div></div>
+<div class="section">
+<h2>Developer access<a name="Developer_access"></a></h2><a name="Developer_access"></a>
+<p>Only project developers can access the GIT tree via this method (See <a class="externalLink" href="http://git-scm.com/docs/git-clone">http://git-scm.com/docs/git-clone</a>).</p>
+<div class="source">
+<pre>$ git clone https://git-wip-us.apache.org/repos/asf/archiva.git</pre></div></div>
+<div class="section">
+<h2>Access from behind a firewall<a name="Access_from_behind_a_firewall"></a></h2><a name="Access_from_behind_a_firewall"></a>
+<p>Refer to the documentation of the SCM used for more information about access behind a firewall.</p></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/team-list.html b/team-list.html
index f867610..8454a81 100644
--- a/team-list.html
+++ b/team-list.html
@@ -1,648 +1,648 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Team list</title>
-    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="./css/site.css" />
-    <link rel="stylesheet" href="./css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href=""  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="index.html" id="bannerLeft">
-                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-                <li class="">
-                    <a href="./" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Team list</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <div class="section">
-<h2>The Team<a name="The_Team"></a></h2><a name="The_Team"></a>
-<p>A successful project requires many people to play many roles. Some members write code or documentation, while others are valuable as testers, submitting patches and suggestions.</p>
-<p>The team is comprised of Members and Contributors. Members have direct access to the source of a project and actively evolve the code-base. Contributors improve the project through submission of patches and suggestions to the Members. The number of Contributors to the project is unbounded. Get involved today. All contributions to the project are greatly appreciated.</p>
-<div class="section">
-<h3>Members<a name="Members"></a></h3><a name="Members"></a>
-<p>The following is a list of developers with commit privileges that have directly contributed to the project in one way or another.</p>
-<table border="0" class="table table-striped">
-<tr class="a">
-<th>Image</th>
-<th>Id</th>
-<th>Name</th>
-<th>Email</th>
-<th>Organization</th>
-<th>Roles</th>
-<th>Time Zone</th>
-<th>Actual Time (GMT)</th></tr>
-<tr class="b">
-<td><img src="http://www.gravatar.com/avatar/bab29f762bea8e578505424443d8cd41?d=mm&amp;s=60" alt="" /></td>
-<td><a name="olamy"></a>olamy</td>
-<td>Olivier Lamy</td>
-<td><a class="externalLink" href="mailto:olamy@apache.org">olamy@apache.org</a></td>
-<td>Ecetera.com.au</td>
-<td>PMC Chair</td>
-<td>Australia/Melbourne</td>
-<td><span id="developer-0">Australia/Melbourne</span></td></tr>
-<tr class="a">
-<td><img src="http://www.gravatar.com/avatar/a49e2c09c4c36374c40e6cb819157eda?d=mm&amp;s=60" alt="" /></td>
-<td><a name="oching"></a>oching</td>
-<td>Maria Odea B. Ching</td>
-<td><a class="externalLink" href="mailto:oching@apache.org">oching@apache.org</a></td>
-<td>-</td>
-<td>PMC Member</td>
-<td>+8</td>
-<td><span id="developer-1">+8</span></td></tr>
-<tr class="b">
-<td><img src="http://www.gravatar.com/avatar/1db61ec29963d4a77ef2275140144fd4?d=mm&amp;s=60" alt="" /></td>
-<td><a name="brett"></a>brett</td>
-<td>Brett Porter</td>
-<td><a class="externalLink" href="mailto:brett@apache.org">brett@apache.org</a></td>
-<td>ASF</td>
-<td>PMC Member</td>
-<td>+10</td>
-<td><span id="developer-2">+10</span></td></tr>
-<tr class="a">
-<td><img src="http://www.gravatar.com/avatar/6559d4b2de15cb1433fc13c34599e4c7?d=mm&amp;s=60" alt="" /></td>
-<td><a name="carlos"></a>carlos</td>
-<td>Carlos Sanchez</td>
-<td><a class="externalLink" href="mailto:carlos@apache.org">carlos@apache.org</a></td>
-<td>ASF</td>
-<td>PMC Member</td>
-<td>+1</td>
-<td><span id="developer-3">+1</span></td></tr>
-<tr class="b">
-<td><img src="http://www.gravatar.com/avatar/89d1772a8f19085482a13decc709cda2?d=mm&amp;s=60" alt="" /></td>
-<td><a name="epunzalan"></a>epunzalan</td>
-<td>Edwin Punzalan</td>
-<td><a class="externalLink" href="mailto:epunzalan@apache.org">epunzalan@apache.org</a></td>
-<td>-</td>
-<td>PMC Member</td>
-<td>-8</td>
-<td><span id="developer-4">-8</span></td></tr>
-<tr class="a">
-<td><img src="http://www.gravatar.com/avatar/3fe23ff82e7920b5941e18515adf9bba?d=mm&amp;s=60" alt="" /></td>
-<td><a name="nicolas"></a>nicolas</td>
-<td>Nicolas De Loof</td>
-<td><a class="externalLink" href="mailto:nicolas@apache.org">nicolas@apache.org</a></td>
-<td>-</td>
-<td>PMC Member</td>
-<td>+1</td>
-<td><span id="developer-5">+1</span></td></tr>
-<tr class="b">
-<td><img src="http://www.gravatar.com/avatar/030e414fc478d45703ba0cbf6fa431f9?d=mm&amp;s=60" alt="" /></td>
-<td><a name="skygo"></a>skygo</td>
-<td>Eric Barboni</td>
-<td><a class="externalLink" href="mailto:skygo@apache.org">skygo@apache.org</a></td>
-<td>IRIT</td>
-<td>PMC Member</td>
-<td>Europe/Paris</td>
-<td><span id="developer-6">Europe/Paris</span></td></tr>
-<tr class="a">
-<td><img src="http://www.gravatar.com/avatar/27790393b874159fe05609ca7ed812f9?d=mm&amp;s=60" alt="" /></td>
-<td><a name="jbonofre"></a>jbonofre</td>
-<td>Jean-Baptiste Onofr&#xe9;</td>
-<td><a class="externalLink" href="mailto:jbonofre@apache.org">jbonofre@apache.org</a></td>
-<td>Talend</td>
-<td>PMC Member</td>
-<td>Europe/Paris</td>
-<td><span id="developer-7">Europe/Paris</span></td></tr>
-<tr class="b">
-<td><img src="http://www.gravatar.com/avatar/c8686cad245196c9e392201ad7bb364f?d=mm&amp;s=60" alt="" /></td>
-<td><a name="dennisl"></a>dennisl</td>
-<td>Dennis Lundberg</td>
-<td><a class="externalLink" href="mailto:dennisl@apache.org">dennisl@apache.org</a></td>
-<td>ASF</td>
-<td>Committer</td>
-<td>+1</td>
-<td><span id="developer-8">+1</span></td></tr>
-<tr class="a">
-<td><img src="http://www.gravatar.com/avatar/76f1823568e5f31931bd32415a4cffa7?d=mm&amp;s=60" alt="" /></td>
-<td><a name="martinc"></a>martinc</td>
-<td>Martin Cooper</td>
-<td><a class="externalLink" href="mailto:martinc@apache.org">martinc@apache.org</a></td>
-<td>ASF</td>
-<td>Committer</td>
-<td>-</td>
-<td><span id="developer-9">-</span></td></tr>
-<tr class="b">
-<td><img src="http://www.gravatar.com/avatar/07a0055c4259569aff19ee558ee3999d?d=mm&amp;s=60" alt="" /></td>
-<td><a name="mbaclay"></a>mbaclay</td>
-<td>Marecor M. Baclay</td>
-<td><a class="externalLink" href="mailto:mbaclay@apache.org">mbaclay@apache.org</a></td>
-<td>-</td>
-<td>Committer</td>
-<td>+8</td>
-<td><span id="developer-10">+8</span></td></tr>
-<tr class="a">
-<td><img src="http://www.gravatar.com/avatar/026acc6fb60c44ed137de35517837065?d=mm&amp;s=60" alt="" /></td>
-<td><a name="jzurbano"></a>jzurbano</td>
-<td>Jevica Arianne B. Zurbano</td>
-<td><a class="externalLink" href="mailto:jzurbano@apache.org">jzurbano@apache.org</a></td>
-<td>-</td>
-<td>Committer</td>
-<td>+8</td>
-<td><span id="developer-11">+8</span></td></tr>
-<tr class="b">
-<td><img src="http://www.gravatar.com/avatar/aeb4e8e65a6c91233e1a9128d8989093?d=mm&amp;s=60" alt="" /></td>
-<td><a name="alecharp"></a>alecharp</td>
-<td>Adrien Lecharpentier</td>
-<td><a class="externalLink" href="mailto:alecharp@apache.org">alecharp@apache.org</a></td>
-<td>Zenika</td>
-<td>Committer</td>
-<td>+1</td>
-<td><span id="developer-12">+1</span></td></tr>
-<tr class="a">
-<td><img src="http://www.gravatar.com/avatar/a9d812d5d37ff4b5a93671eb6648c54b?d=mm&amp;s=60" alt="" /></td>
-<td><a name="svogt"></a>svogt</td>
-<td>Sascha Vogt</td>
-<td><a class="externalLink" href="mailto:svogt@apache.org">svogt@apache.org</a></td>
-<td>-</td>
-<td>Committer</td>
-<td>Europe/Berlin</td>
-<td><span id="developer-13">Europe/Berlin</span></td></tr>
-<tr class="b">
-<td><img src="http://www.gravatar.com/avatar/38f7796e51a469f8efc08de2d88fa335?d=mm&amp;s=60" alt="" /></td>
-<td><a name="joakime"></a>joakime</td>
-<td>Joakim Erdfelt</td>
-<td><a class="externalLink" href="mailto:joakime@apache.org">joakime@apache.org</a></td>
-<td>ASF</td>
-<td>Emeritus</td>
-<td>-5</td>
-<td><span id="developer-14">-5</span></td></tr>
-<tr class="a">
-<td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td>
-<td><a name="jvanzyl"></a>jvanzyl</td>
-<td>Jason van Zyl</td>
-<td>-</td>
-<td>-</td>
-<td>Emeritus</td>
-<td>-</td>
-<td><span id="developer-15">-</span></td></tr>
-<tr class="b">
-<td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td>
-<td><a name="bayard"></a>bayard</td>
-<td>Henri Yandell</td>
-<td>-</td>
-<td>-</td>
-<td>Emeritus</td>
-<td>-</td>
-<td><span id="developer-16">-</span></td></tr>
-<tr class="a">
-<td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td>
-<td><a name="kenney"></a>kenney</td>
-<td>Kenney Westerhof</td>
-<td>-</td>
-<td>-</td>
-<td>Emeritus</td>
-<td>-</td>
-<td><span id="developer-17">-</span></td></tr>
-<tr class="b">
-<td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td>
-<td><a name="aheritier"></a>aheritier</td>
-<td>Arnaud Heritier</td>
-<td>-</td>
-<td>-</td>
-<td>Emeritus</td>
-<td>-</td>
-<td><span id="developer-18">-</span></td></tr>
-<tr class="a">
-<td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td>
-<td><a name="bellingard"></a>bellingard</td>
-<td>Fabrice Bellingard</td>
-<td>-</td>
-<td>-</td>
-<td>Emeritus</td>
-<td>-</td>
-<td><span id="developer-19">-</span></td></tr>
-<tr class="b">
-<td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td>
-<td><a name="jdumay"></a>jdumay</td>
-<td>James William Dumay</td>
-<td>-</td>
-<td>-</td>
-<td>Emeritus</td>
-<td>-</td>
-<td><span id="developer-20">-</span></td></tr>
-<tr class="a">
-<td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td>
-<td><a name="jmcconnell"></a>jmcconnell</td>
-<td>Jesse McConnell</td>
-<td>-</td>
-<td>-</td>
-<td>Emeritus</td>
-<td>-</td>
-<td><span id="developer-21">-</span></td></tr>
-<tr class="b">
-<td><img src="http://www.gravatar.com/avatar/efe7252f3b18253bf4318062ece95a3b?d=mm&amp;s=60" alt="" /></td>
-<td><a name="evenisse"></a>evenisse</td>
-<td>Emmanuel Venisse</td>
-<td><a class="externalLink" href="mailto:evenisse@apache.org">evenisse@apache.org</a></td>
-<td>-</td>
-<td>Emeritus</td>
-<td>-</td>
-<td><span id="developer-22">-</span></td></tr>
-<tr class="a">
-<td><img src="http://www.gravatar.com/avatar/b38a3be83226b10b399985496c058e4c?d=mm&amp;s=60" alt="" /></td>
-<td><a name="jtolentino"></a>jtolentino</td>
-<td>Ernesto Tolentino Jr.</td>
-<td><a class="externalLink" href="mailto:jtolentino@apache.org">jtolentino@apache.org</a></td>
-<td>-</td>
-<td>Emeritus</td>
-<td>-</td>
-<td><span id="developer-23">-</span></td></tr>
-<tr class="b">
-<td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td>
-<td><a name="wsmoak"></a>wsmoak</td>
-<td>Wendy Smoak</td>
-<td>-</td>
-<td>-</td>
-<td>Emeritus</td>
-<td>-</td>
-<td><span id="developer-24">-</span></td></tr></table></div>
-<div class="section">
-<h3>Contributors<a name="Contributors"></a></h3><a name="Contributors"></a>
-<p>The following additional people have contributed to this project through the way of suggestions, patches or documentation.</p>
-<table border="0" class="table table-striped">
-<tr class="a">
-<th>Name</th></tr>
-<tr class="b">
-<td>Steffen Grunwald</td></tr>
-<tr class="a">
-<td>Stefan Prange</td></tr>
-<tr class="b">
-<td>John Michael Luy</td></tr>
-<tr class="a">
-<td>Martin H&#xf6;ller</td></tr>
-<tr class="b">
-<td>Stephen Gargan</td></tr>
-<tr class="a">
-<td>Dario Oliveros</td></tr>
-<tr class="b">
-<td>james ahlborn</td></tr>
-<tr class="a">
-<td>Jim Jackson</td></tr>
-<tr class="b">
-<td>Daniel Harvey</td></tr>
-<tr class="a">
-<td>Aleksandr Tarutin</td></tr>
-<tr class="b">
-<td>Teodoro Cue Jr.</td></tr>
-<tr class="a">
-<td>Jan Ancajas</td></tr>
-<tr class="b">
-<td>Jens M&#xfc;hlenhoff</td></tr>
-<tr class="a">
-<td>Dawn Angelito</td></tr>
-<tr class="b">
-<td>Henry Isidro</td></tr>
-<tr class="a">
-<td>Antoine Veret</td></tr>
-<tr class="b">
-<td>Christian Gruber</td></tr>
-<tr class="a">
-<td>Allan Ramirez</td></tr>
-<tr class="b">
-<td>Pete Marvin King</td></tr>
-<tr class="a">
-<td>Joel Sudiacal</td></tr>
-<tr class="b">
-<td>Milos Kleint</td></tr>
-<tr class="a">
-<td>Nick Gonzalez</td></tr>
-<tr class="b">
-<td>Maria Catherine Tan</td></tr>
-<tr class="a">
-<td>Dan Tran</td></tr>
-<tr class="b">
-<td>Gwen Harold Autencio</td></tr>
-<tr class="a">
-<td>Mark Jeffery</td></tr>
-<tr class="b">
-<td>Fabrice Daugan</td></tr>
-<tr class="a">
-<td>Doron Solomon</td></tr>
-<tr class="b">
-<td>Michal Stochmialek</td></tr>
-<tr class="a">
-<td>Julien Henry</td></tr>
-<tr class="b">
-<td>Andreas Baumann</td></tr>
-<tr class="a">
-<td>Adelita L. Padilla</td></tr>
-<tr class="b">
-<td>Daniel Triphaus</td></tr>
-<tr class="a">
-<td>Patti Arachchige Eshan Sudharaka</td></tr>
-<tr class="b">
-<td>Shinsuke Sugaya</td></tr>
-<tr class="a">
-<td>Marcus Dimand</td></tr>
-<tr class="b">
-<td>Catalino Pineda Jr.</td></tr>
-<tr class="a">
-<td>Warner Pinero</td></tr>
-<tr class="b">
-<td>Dave Brosius</td></tr>
-<tr class="a">
-<td>Jim Sellers</td></tr>
-<tr class="b">
-<td>Igor Galic</td></tr>
-<tr class="a">
-<td>Mark Struberg</td></tr>
-<tr class="b">
-<td>Marc Jansen Tan Chua</td></tr>
-<tr class="a">
-<td>Lucien Weller</td></tr>
-<tr class="b">
-<td>Greg Michael Meneses</td></tr>
-<tr class="a">
-<td>Chris Graham</td></tr>
-<tr class="b">
-<td>Fredrik Jonson</td></tr>
-<tr class="a">
-<td>Lester Ecarma</td></tr>
-<tr class="b">
-<td>Eirik Bj&#xf8;rsn&#xf8;s</td></tr>
-<tr class="a">
-<td>Jan Ancajas</td></tr>
-<tr class="b">
-<td>Damien Blugeon</td></tr>
-<tr class="a">
-<td>John Michael Luy</td></tr>
-<tr class="b">
-<td>Wolfgang Strunk</td></tr>
-<tr class="a">
-<td>Jevica Arianne B. Zurbano</td></tr>
-<tr class="b">
-<td>Stefan Prange</td></tr>
-<tr class="a">
-<td>Napoleon Esmundo C. Ramirez</td></tr>
-<tr class="b">
-<td>Brent Atkinson</td></tr>
-<tr class="a">
-<td>Antoine ROUAZE</td></tr>
-<tr class="b">
-<td>markus innerebner</td></tr></table><script type="text/javascript">
-function offsetDate(id, offset) {
-    var now = new Date();
-    var nowTime = now.getTime();
-    var localOffset = now.getTimezoneOffset();
-    var developerTime = nowTime + ( offset * 60 * 60 * 1000 )+ ( localOffset * 60 * 1000 );
-    var developerDate = new Date(developerTime);
-
-    document.getElementById(id).innerHTML = developerDate;
-}
-
-function init(){
-    offsetDate('developer-0', '10');
-    offsetDate('developer-1', '+8');
-    offsetDate('developer-2', '+10');
-    offsetDate('developer-3', '+1');
-    offsetDate('developer-4', '-8');
-    offsetDate('developer-5', '+1');
-    offsetDate('developer-6', '1');
-    offsetDate('developer-7', '1');
-    offsetDate('developer-8', '+1');
-    offsetDate('developer-10', '+8');
-    offsetDate('developer-11', '+8');
-    offsetDate('developer-12', '+1');
-    offsetDate('developer-13', '1');
-    offsetDate('developer-14', '-5');
-}
-
-window.onLoad = init();
-</script></div></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Team list</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="./css/site.css" />
+    <link rel="stylesheet" href="./css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href=""  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="index.html" id="bannerLeft">
+                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+                <li class="">
+                    <a href="./" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Team list</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <div class="section">
+<h2>The Team<a name="The_Team"></a></h2><a name="The_Team"></a>
+<p>A successful project requires many people to play many roles. Some members write code or documentation, while others are valuable as testers, submitting patches and suggestions.</p>
+<p>The team is comprised of Members and Contributors. Members have direct access to the source of a project and actively evolve the code-base. Contributors improve the project through submission of patches and suggestions to the Members. The number of Contributors to the project is unbounded. Get involved today. All contributions to the project are greatly appreciated.</p>
+<div class="section">
+<h3>Members<a name="Members"></a></h3><a name="Members"></a>
+<p>The following is a list of developers with commit privileges that have directly contributed to the project in one way or another.</p>
+<table border="0" class="table table-striped">
+<tr class="a">
+<th>Image</th>
+<th>Id</th>
+<th>Name</th>
+<th>Email</th>
+<th>Organization</th>
+<th>Roles</th>
+<th>Time Zone</th>
+<th>Actual Time (GMT)</th></tr>
+<tr class="b">
+<td><img src="http://www.gravatar.com/avatar/bab29f762bea8e578505424443d8cd41?d=mm&amp;s=60" alt="" /></td>
+<td><a name="olamy"></a>olamy</td>
+<td>Olivier Lamy</td>
+<td><a class="externalLink" href="mailto:olamy@apache.org">olamy@apache.org</a></td>
+<td>Ecetera.com.au</td>
+<td>PMC Chair</td>
+<td>Australia/Melbourne</td>
+<td><span id="developer-0">Australia/Melbourne</span></td></tr>
+<tr class="a">
+<td><img src="http://www.gravatar.com/avatar/a49e2c09c4c36374c40e6cb819157eda?d=mm&amp;s=60" alt="" /></td>
+<td><a name="oching"></a>oching</td>
+<td>Maria Odea B. Ching</td>
+<td><a class="externalLink" href="mailto:oching@apache.org">oching@apache.org</a></td>
+<td>-</td>
+<td>PMC Member</td>
+<td>+8</td>
+<td><span id="developer-1">+8</span></td></tr>
+<tr class="b">
+<td><img src="http://www.gravatar.com/avatar/1db61ec29963d4a77ef2275140144fd4?d=mm&amp;s=60" alt="" /></td>
+<td><a name="brett"></a>brett</td>
+<td>Brett Porter</td>
+<td><a class="externalLink" href="mailto:brett@apache.org">brett@apache.org</a></td>
+<td>ASF</td>
+<td>PMC Member</td>
+<td>+10</td>
+<td><span id="developer-2">+10</span></td></tr>
+<tr class="a">
+<td><img src="http://www.gravatar.com/avatar/6559d4b2de15cb1433fc13c34599e4c7?d=mm&amp;s=60" alt="" /></td>
+<td><a name="carlos"></a>carlos</td>
+<td>Carlos Sanchez</td>
+<td><a class="externalLink" href="mailto:carlos@apache.org">carlos@apache.org</a></td>
+<td>ASF</td>
+<td>PMC Member</td>
+<td>+1</td>
+<td><span id="developer-3">+1</span></td></tr>
+<tr class="b">
+<td><img src="http://www.gravatar.com/avatar/89d1772a8f19085482a13decc709cda2?d=mm&amp;s=60" alt="" /></td>
+<td><a name="epunzalan"></a>epunzalan</td>
+<td>Edwin Punzalan</td>
+<td><a class="externalLink" href="mailto:epunzalan@apache.org">epunzalan@apache.org</a></td>
+<td>-</td>
+<td>PMC Member</td>
+<td>-8</td>
+<td><span id="developer-4">-8</span></td></tr>
+<tr class="a">
+<td><img src="http://www.gravatar.com/avatar/3fe23ff82e7920b5941e18515adf9bba?d=mm&amp;s=60" alt="" /></td>
+<td><a name="nicolas"></a>nicolas</td>
+<td>Nicolas De Loof</td>
+<td><a class="externalLink" href="mailto:nicolas@apache.org">nicolas@apache.org</a></td>
+<td>-</td>
+<td>PMC Member</td>
+<td>+1</td>
+<td><span id="developer-5">+1</span></td></tr>
+<tr class="b">
+<td><img src="http://www.gravatar.com/avatar/030e414fc478d45703ba0cbf6fa431f9?d=mm&amp;s=60" alt="" /></td>
+<td><a name="skygo"></a>skygo</td>
+<td>Eric Barboni</td>
+<td><a class="externalLink" href="mailto:skygo@apache.org">skygo@apache.org</a></td>
+<td>IRIT</td>
+<td>PMC Member</td>
+<td>Europe/Paris</td>
+<td><span id="developer-6">Europe/Paris</span></td></tr>
+<tr class="a">
+<td><img src="http://www.gravatar.com/avatar/27790393b874159fe05609ca7ed812f9?d=mm&amp;s=60" alt="" /></td>
+<td><a name="jbonofre"></a>jbonofre</td>
+<td>Jean-Baptiste Onofr&#xe9;</td>
+<td><a class="externalLink" href="mailto:jbonofre@apache.org">jbonofre@apache.org</a></td>
+<td>Talend</td>
+<td>PMC Member</td>
+<td>Europe/Paris</td>
+<td><span id="developer-7">Europe/Paris</span></td></tr>
+<tr class="b">
+<td><img src="http://www.gravatar.com/avatar/c8686cad245196c9e392201ad7bb364f?d=mm&amp;s=60" alt="" /></td>
+<td><a name="dennisl"></a>dennisl</td>
+<td>Dennis Lundberg</td>
+<td><a class="externalLink" href="mailto:dennisl@apache.org">dennisl@apache.org</a></td>
+<td>ASF</td>
+<td>Committer</td>
+<td>+1</td>
+<td><span id="developer-8">+1</span></td></tr>
+<tr class="a">
+<td><img src="http://www.gravatar.com/avatar/76f1823568e5f31931bd32415a4cffa7?d=mm&amp;s=60" alt="" /></td>
+<td><a name="martinc"></a>martinc</td>
+<td>Martin Cooper</td>
+<td><a class="externalLink" href="mailto:martinc@apache.org">martinc@apache.org</a></td>
+<td>ASF</td>
+<td>Committer</td>
+<td>-</td>
+<td><span id="developer-9">-</span></td></tr>
+<tr class="b">
+<td><img src="http://www.gravatar.com/avatar/07a0055c4259569aff19ee558ee3999d?d=mm&amp;s=60" alt="" /></td>
+<td><a name="mbaclay"></a>mbaclay</td>
+<td>Marecor M. Baclay</td>
+<td><a class="externalLink" href="mailto:mbaclay@apache.org">mbaclay@apache.org</a></td>
+<td>-</td>
+<td>Committer</td>
+<td>+8</td>
+<td><span id="developer-10">+8</span></td></tr>
+<tr class="a">
+<td><img src="http://www.gravatar.com/avatar/026acc6fb60c44ed137de35517837065?d=mm&amp;s=60" alt="" /></td>
+<td><a name="jzurbano"></a>jzurbano</td>
+<td>Jevica Arianne B. Zurbano</td>
+<td><a class="externalLink" href="mailto:jzurbano@apache.org">jzurbano@apache.org</a></td>
+<td>-</td>
+<td>Committer</td>
+<td>+8</td>
+<td><span id="developer-11">+8</span></td></tr>
+<tr class="b">
+<td><img src="http://www.gravatar.com/avatar/aeb4e8e65a6c91233e1a9128d8989093?d=mm&amp;s=60" alt="" /></td>
+<td><a name="alecharp"></a>alecharp</td>
+<td>Adrien Lecharpentier</td>
+<td><a class="externalLink" href="mailto:alecharp@apache.org">alecharp@apache.org</a></td>
+<td>Zenika</td>
+<td>Committer</td>
+<td>+1</td>
+<td><span id="developer-12">+1</span></td></tr>
+<tr class="a">
+<td><img src="http://www.gravatar.com/avatar/a9d812d5d37ff4b5a93671eb6648c54b?d=mm&amp;s=60" alt="" /></td>
+<td><a name="svogt"></a>svogt</td>
+<td>Sascha Vogt</td>
+<td><a class="externalLink" href="mailto:svogt@apache.org">svogt@apache.org</a></td>
+<td>-</td>
+<td>Committer</td>
+<td>Europe/Berlin</td>
+<td><span id="developer-13">Europe/Berlin</span></td></tr>
+<tr class="b">
+<td><img src="http://www.gravatar.com/avatar/38f7796e51a469f8efc08de2d88fa335?d=mm&amp;s=60" alt="" /></td>
+<td><a name="joakime"></a>joakime</td>
+<td>Joakim Erdfelt</td>
+<td><a class="externalLink" href="mailto:joakime@apache.org">joakime@apache.org</a></td>
+<td>ASF</td>
+<td>Emeritus</td>
+<td>-5</td>
+<td><span id="developer-14">-5</span></td></tr>
+<tr class="a">
+<td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td>
+<td><a name="jvanzyl"></a>jvanzyl</td>
+<td>Jason van Zyl</td>
+<td>-</td>
+<td>-</td>
+<td>Emeritus</td>
+<td>-</td>
+<td><span id="developer-15">-</span></td></tr>
+<tr class="b">
+<td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td>
+<td><a name="bayard"></a>bayard</td>
+<td>Henri Yandell</td>
+<td>-</td>
+<td>-</td>
+<td>Emeritus</td>
+<td>-</td>
+<td><span id="developer-16">-</span></td></tr>
+<tr class="a">
+<td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td>
+<td><a name="kenney"></a>kenney</td>
+<td>Kenney Westerhof</td>
+<td>-</td>
+<td>-</td>
+<td>Emeritus</td>
+<td>-</td>
+<td><span id="developer-17">-</span></td></tr>
+<tr class="b">
+<td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td>
+<td><a name="aheritier"></a>aheritier</td>
+<td>Arnaud Heritier</td>
+<td>-</td>
+<td>-</td>
+<td>Emeritus</td>
+<td>-</td>
+<td><span id="developer-18">-</span></td></tr>
+<tr class="a">
+<td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td>
+<td><a name="bellingard"></a>bellingard</td>
+<td>Fabrice Bellingard</td>
+<td>-</td>
+<td>-</td>
+<td>Emeritus</td>
+<td>-</td>
+<td><span id="developer-19">-</span></td></tr>
+<tr class="b">
+<td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td>
+<td><a name="jdumay"></a>jdumay</td>
+<td>James William Dumay</td>
+<td>-</td>
+<td>-</td>
+<td>Emeritus</td>
+<td>-</td>
+<td><span id="developer-20">-</span></td></tr>
+<tr class="a">
+<td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td>
+<td><a name="jmcconnell"></a>jmcconnell</td>
+<td>Jesse McConnell</td>
+<td>-</td>
+<td>-</td>
+<td>Emeritus</td>
+<td>-</td>
+<td><span id="developer-21">-</span></td></tr>
+<tr class="b">
+<td><img src="http://www.gravatar.com/avatar/efe7252f3b18253bf4318062ece95a3b?d=mm&amp;s=60" alt="" /></td>
+<td><a name="evenisse"></a>evenisse</td>
+<td>Emmanuel Venisse</td>
+<td><a class="externalLink" href="mailto:evenisse@apache.org">evenisse@apache.org</a></td>
+<td>-</td>
+<td>Emeritus</td>
+<td>-</td>
+<td><span id="developer-22">-</span></td></tr>
+<tr class="a">
+<td><img src="http://www.gravatar.com/avatar/b38a3be83226b10b399985496c058e4c?d=mm&amp;s=60" alt="" /></td>
+<td><a name="jtolentino"></a>jtolentino</td>
+<td>Ernesto Tolentino Jr.</td>
+<td><a class="externalLink" href="mailto:jtolentino@apache.org">jtolentino@apache.org</a></td>
+<td>-</td>
+<td>Emeritus</td>
+<td>-</td>
+<td><span id="developer-23">-</span></td></tr>
+<tr class="b">
+<td><img src="http://www.gravatar.com/avatar/00000000000000000000000000000000?d=blank&amp;f=y&amp;s=60" alt="" /></td>
+<td><a name="wsmoak"></a>wsmoak</td>
+<td>Wendy Smoak</td>
+<td>-</td>
+<td>-</td>
+<td>Emeritus</td>
+<td>-</td>
+<td><span id="developer-24">-</span></td></tr></table></div>
+<div class="section">
+<h3>Contributors<a name="Contributors"></a></h3><a name="Contributors"></a>
+<p>The following additional people have contributed to this project through the way of suggestions, patches or documentation.</p>
+<table border="0" class="table table-striped">
+<tr class="a">
+<th>Name</th></tr>
+<tr class="b">
+<td>Steffen Grunwald</td></tr>
+<tr class="a">
+<td>Stefan Prange</td></tr>
+<tr class="b">
+<td>John Michael Luy</td></tr>
+<tr class="a">
+<td>Martin H&#xf6;ller</td></tr>
+<tr class="b">
+<td>Stephen Gargan</td></tr>
+<tr class="a">
+<td>Dario Oliveros</td></tr>
+<tr class="b">
+<td>james ahlborn</td></tr>
+<tr class="a">
+<td>Jim Jackson</td></tr>
+<tr class="b">
+<td>Daniel Harvey</td></tr>
+<tr class="a">
+<td>Aleksandr Tarutin</td></tr>
+<tr class="b">
+<td>Teodoro Cue Jr.</td></tr>
+<tr class="a">
+<td>Jan Ancajas</td></tr>
+<tr class="b">
+<td>Jens M&#xfc;hlenhoff</td></tr>
+<tr class="a">
+<td>Dawn Angelito</td></tr>
+<tr class="b">
+<td>Henry Isidro</td></tr>
+<tr class="a">
+<td>Antoine Veret</td></tr>
+<tr class="b">
+<td>Christian Gruber</td></tr>
+<tr class="a">
+<td>Allan Ramirez</td></tr>
+<tr class="b">
+<td>Pete Marvin King</td></tr>
+<tr class="a">
+<td>Joel Sudiacal</td></tr>
+<tr class="b">
+<td>Milos Kleint</td></tr>
+<tr class="a">
+<td>Nick Gonzalez</td></tr>
+<tr class="b">
+<td>Maria Catherine Tan</td></tr>
+<tr class="a">
+<td>Dan Tran</td></tr>
+<tr class="b">
+<td>Gwen Harold Autencio</td></tr>
+<tr class="a">
+<td>Mark Jeffery</td></tr>
+<tr class="b">
+<td>Fabrice Daugan</td></tr>
+<tr class="a">
+<td>Doron Solomon</td></tr>
+<tr class="b">
+<td>Michal Stochmialek</td></tr>
+<tr class="a">
+<td>Julien Henry</td></tr>
+<tr class="b">
+<td>Andreas Baumann</td></tr>
+<tr class="a">
+<td>Adelita L. Padilla</td></tr>
+<tr class="b">
+<td>Daniel Triphaus</td></tr>
+<tr class="a">
+<td>Patti Arachchige Eshan Sudharaka</td></tr>
+<tr class="b">
+<td>Shinsuke Sugaya</td></tr>
+<tr class="a">
+<td>Marcus Dimand</td></tr>
+<tr class="b">
+<td>Catalino Pineda Jr.</td></tr>
+<tr class="a">
+<td>Warner Pinero</td></tr>
+<tr class="b">
+<td>Dave Brosius</td></tr>
+<tr class="a">
+<td>Jim Sellers</td></tr>
+<tr class="b">
+<td>Igor Galic</td></tr>
+<tr class="a">
+<td>Mark Struberg</td></tr>
+<tr class="b">
+<td>Marc Jansen Tan Chua</td></tr>
+<tr class="a">
+<td>Lucien Weller</td></tr>
+<tr class="b">
+<td>Greg Michael Meneses</td></tr>
+<tr class="a">
+<td>Chris Graham</td></tr>
+<tr class="b">
+<td>Fredrik Jonson</td></tr>
+<tr class="a">
+<td>Lester Ecarma</td></tr>
+<tr class="b">
+<td>Eirik Bj&#xf8;rsn&#xf8;s</td></tr>
+<tr class="a">
+<td>Jan Ancajas</td></tr>
+<tr class="b">
+<td>Damien Blugeon</td></tr>
+<tr class="a">
+<td>John Michael Luy</td></tr>
+<tr class="b">
+<td>Wolfgang Strunk</td></tr>
+<tr class="a">
+<td>Jevica Arianne B. Zurbano</td></tr>
+<tr class="b">
+<td>Stefan Prange</td></tr>
+<tr class="a">
+<td>Napoleon Esmundo C. Ramirez</td></tr>
+<tr class="b">
+<td>Brent Atkinson</td></tr>
+<tr class="a">
+<td>Antoine ROUAZE</td></tr>
+<tr class="b">
+<td>markus innerebner</td></tr></table><script type="text/javascript">
+function offsetDate(id, offset) {
+    var now = new Date();
+    var nowTime = now.getTime();
+    var localOffset = now.getTimezoneOffset();
+    var developerTime = nowTime + ( offset * 60 * 60 * 1000 )+ ( localOffset * 60 * 1000 );
+    var developerDate = new Date(developerTime);
+
+    document.getElementById(id).innerHTML = developerDate;
+}
+
+function init(){
+    offsetDate('developer-0', '10');
+    offsetDate('developer-1', '+8');
+    offsetDate('developer-2', '+10');
+    offsetDate('developer-3', '+1');
+    offsetDate('developer-4', '-8');
+    offsetDate('developer-5', '+1');
+    offsetDate('developer-6', '1');
+    offsetDate('developer-7', '1');
+    offsetDate('developer-8', '+1');
+    offsetDate('developer-10', '+8');
+    offsetDate('developer-11', '+8');
+    offsetDate('developer-12', '+1');
+    offsetDate('developer-13', '1');
+    offsetDate('developer-14', '-5');
+}
+
+window.onLoad = init();
+</script></div></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
diff --git a/versions.html b/versions.html
index 504373d..bed5ac3 100644
--- a/versions.html
+++ b/versions.html
@@ -1,273 +1,273 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia 
- | Rendered using Apache Maven Fluido Skin 1.3.1
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="author" content="Brett Porter" />
-    <meta name="Date-Revision-yyyymmdd" content="20150226" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Archiva - Documentation - All Versions</title>
-    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
-    <link rel="stylesheet" href="./css/site.css" />
-    <link rel="stylesheet" href="./css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
-
-                          
-        
-<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
-                      
-        
-<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
-        pageTracker._initData();
-        pageTracker._trackPageview();</script>
-          
-                  </head>
-        <body class="topBarEnabled">
-          
-                        
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                                  <div class="container"><div class="nav-collapse">
-            
-                
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="index.html"  title="About">About</a>
-</li>
-                  
-                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
-</li>
-                  
-                      <li>      <a href="versions.html"  title="Versions">Versions</a>
-</li>
-                  
-                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                  
-                      <li>      <a href="security.html"  title="Security">Security</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href=""  title="Documentation">Documentation</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
-</li>
-                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
-</li>
-                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
-</li>
-                  
-                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
-</li>
-                  
-                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
-</li>
-                  
-                      <li>      <a href="redback"  title="Redback">Redback</a>
-</li>
-                  
-                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
-</li>
-                  
-                      <li class="dropdown-submenu">
-                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
-</li>
-                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
-</li>
-                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
-</li>
-                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
-</li>
-                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
-</li>
-                              </ul>
-            </li>
-                  
-                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
-</li>
-                  
-                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
-</li>
-                  
-                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li class="dropdown-submenu">
-                                      <a href="project-info.html"  title="Project Information">Project Information</a>
-              <ul class="dropdown-menu">
-                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
-</li>
-                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
-</li>
-                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
-</li>
-                                  <li>      <a href="license.html"  title="Project License">Project License</a>
-</li>
-                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
-</li>
-                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
-</li>
-                              </ul>
-            </li>
-                          </ul>
-      </li>
-                  </ul>
-          
-                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
-    
-  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
-  <input class="search-query" name="q" id="query" type="text" />
-</form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
-          
-                                                                            
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container">
-          <div id="banner">
-        <div class="pull-left">
-                                                  <a href="index.html" id="bannerLeft">
-                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
-                </a>
-                      </div>
-        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
-                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
-                </a>
-      </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                              <li class="">
-                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
-        Apache</a>
-                    <span class="divider">/</span>
-      </li>
-                <li class="">
-                    <a href="./" title="Archiva">
-        Archiva</a>
-                    <span class="divider">/</span>
-      </li>
-        <li class="active ">Documentation - All Versions</li>
-        
-                
-                    
-                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
-            
-                            </ul>
-      </div>
-
-      
-                
-        <div id="bodyColumn" >
-                                  
-            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
-<h2>Archiva Documentation<a name="Archiva_Documentation"></a></h2>
-<div class="section">
-<h3>Current Release: Archiva 2.1.1<a name="Current_Release:_Archiva_2.1.1"></a></h3>
-<p>The current stable release of Archiva is <i>2.1.1</i>.</p>
-<ul>
-<li><a href="./docs/2.1.1/release-notes.html"> Release Notes</a></li>
-<li><a href="./docs/2.1.1/index.html"> Documentation</a></li>
-<li><a href="./ref/2.1.1/index.html"> Developer Reference</a></li></ul><!-- TODO: have more specific links than Documentation, and find a better link for developer reference --></div>
-<div class="section">
-<h3>Last serie 1.3.x Release: Archiva 1.3.9<a name="Last_serie_1.3.x_Release:_Archiva_1.3.9"></a></h3>
-<p>The current stable release of Archiva 1.3.x is <i>1.3.9</i>.</p>
-<ul>
-<li><a href="./docs/1.3.9/release-notes.html"> Release Notes</a></li>
-<li><a href="./docs/1.3.9/index.html"> Documentation</a></li>
-<li><a href="./ref/1.3.9/index.html"> Developer Reference</a></li></ul><!-- TODO: have more specific links than Documentation, and find a better link for developer reference --></div>
-<div class="section">
-<h3>Unsupported Releases<a name="Unsupported_Releases"></a></h3><!-- rough list of unsupported version because materials (RNotes,Docs,Refs are not yet available) -->
-<p>1.3.6,1.3.5,1.3.4,1.3.3,1.3.2,1.3.1,1.3,1.2.2,1.2.1,1.2,1.1.3,1.1.2,1.1.1,1.1,1.0.2,1.0.1,1.0</p></div></div>
-                  </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container">
-                      <div class="row">
-                              <p >Copyright &copy;                    2006&#x2013;2015
-                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
-            All rights reserved.      
-                    
-      </p>
-        </div>
-
-                                                                  
-<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
-                                                          
-<div class="row pull-left">
-  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
-</div>
-                  
-                <p id="poweredBy" class="pull-right">
-                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
-      </a>
-              </p>
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
-    </div>
-        </div>
-    </footer>
-        </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia 
+ | Rendered using Apache Maven Fluido Skin 1.3.1
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="author" content="Brett Porter" />
+    <meta name="Date-Revision-yyyymmdd" content="20150226" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Archiva - Documentation - All Versions</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.1.min.css" />
+    <link rel="stylesheet" href="./css/site.css" />
+    <link rel="stylesheet" href="./css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.1.min.js"></script>
+
+                          
+        
+<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+        document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
+                      
+        
+<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
+        pageTracker._initData();
+        pageTracker._trackPageview();</script>
+          
+                  </head>
+        <body class="topBarEnabled">
+          
+                        
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                                  <div class="container"><div class="nav-collapse">
+            
+                
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="index.html"  title="About">About</a>
+</li>
+                  
+                      <li>      <a href="download.html"  title="Downloads">Downloads</a>
+</li>
+                  
+                      <li>      <a href="versions.html"  title="Versions">Versions</a>
+</li>
+                  
+                      <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                  
+                      <li>      <a href="security.html"  title="Security">Security</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href=""  title="Documentation">Documentation</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="docs/2.1.1/"  title="Release 2.1.1">Release 2.1.1</a>
+</li>
+                                  <li>      <a href="docs/1.3.9/"  title="Preview 1.3.9">Preview 1.3.9</a>
+</li>
+                                  <li>      <a href="docs/2.2.0-SNAPSHOT/"  title="Dev 2.2.0-SNAPSHOT">Dev 2.2.0-SNAPSHOT</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="developers/building.html"  title="Build Apache Archiva">Build Apache Archiva</a>
+</li>
+                  
+                      <li>      <a href="get-involved.html"  title="Get involved">Get involved</a>
+</li>
+                  
+                      <li>      <a href="developers/how-we-do-things.html"  title="How we do things">How we do things</a>
+</li>
+                  
+                      <li>      <a href="redback"  title="Redback">Redback</a>
+</li>
+                  
+                      <li>      <a href="redback/components"  title="Redback Components">Redback Components</a>
+</li>
+                  
+                      <li class="dropdown-submenu">
+                                      <a href="jsui/index.html"  title="Javascript application Architecture">Javascript application Architecture</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="jsui/rest.html"  title="Rest service">Rest service</a>
+</li>
+                                  <li>      <a href="jsui/template-loading.html"  title="JS Template loading">JS Template loading</a>
+</li>
+                                  <li>      <a href="jsui/i18n.html"  title="i18n">i18n</a>
+</li>
+                                  <li>      <a href="jsui/knockout-binding.html"  title="Knockout Binding">Knockout Binding</a>
+</li>
+                                  <li>      <a href="jsui/generics-js.html"  title="Generic Javascipts">Generic Javascipts</a>
+</li>
+                              </ul>
+            </li>
+                  
+                      <li>      <a href="developers/releasing.html"  title="Releasing">Releasing</a>
+</li>
+                  
+                      <li>      <a href="developers/publishing-site.html"  title="Site Publish">Site Publish</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.apache.org/foundation/how-it-works.html"  title="How Apache Works">How Apache Works</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/"  title="Foundation">Foundation</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/sponsorship.html"  title="Sponsoring Apache">Sponsoring Apache</a>
+</li>
+                  
+                      <li>      <a href="http://www.apache.org/foundation/thanks.html"  title="Thanks">Thanks</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li class="dropdown-submenu">
+                                      <a href="project-info.html"  title="Project Information">Project Information</a>
+              <ul class="dropdown-menu">
+                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
+</li>
+                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
+</li>
+                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
+</li>
+                                  <li>      <a href="license.html"  title="Project License">Project License</a>
+</li>
+                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
+</li>
+                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
+</li>
+                              </ul>
+            </li>
+                          </ul>
+      </li>
+                  </ul>
+          
+                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
+    
+  <input value="http://archiva.apache.org/" name="sitesearch" type="hidden"/>
+  <input class="search-query" name="q" id="query" type="text" />
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
+          
+                                                                            
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container">
+          <div id="banner">
+        <div class="pull-left">
+                                                  <a href="index.html" id="bannerLeft">
+                                                                                                <img src="images/archiva.png"  alt="Apache Archiva"/>
+                </a>
+                      </div>
+        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
+                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                              <li class="">
+                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+                    <span class="divider">/</span>
+      </li>
+                <li class="">
+                    <a href="./" title="Archiva">
+        Archiva</a>
+                    <span class="divider">/</span>
+      </li>
+        <li class="active ">Documentation - All Versions</li>
+        
+                
+                    
+                  <li id="publishDate" class="pull-right">Last Published: 26 Feb 2015</li>
+            
+                            </ul>
+      </div>
+
+      
+                
+        <div id="bodyColumn" >
+                                  
+            <!-- Licensed to the Apache Software Foundation (ASF) under one --><!-- or more contributor license agreements.  See the NOTICE file --><!-- distributed with this work for additional information --><!-- regarding copyright ownership.  The ASF licenses this file --><!-- to you under the Apache License, Version 2.0 (the --><!-- "License"); you may not use this file except in compliance --><!-- with the License.  You may obtain a copy of the License at --><!--  --><!-- http://www.apache.org/licenses/LICENSE-2.0 --><!--  --><!-- Unless required by applicable law or agreed to in writing, --><!-- software distributed under the License is distributed on an --><!-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --><!-- KIND, either express or implied.  See the License for the --><!-- specific language governing permissions and limitations --><!-- under the License. --><!-- NOTE: For help with the syntax of this file, see: --><!-- http://maven.apache.org/guides/mini/guide-apt-format.html --><div class="section">
+<h2>Archiva Documentation<a name="Archiva_Documentation"></a></h2>
+<div class="section">
+<h3>Current Release: Archiva 2.1.1<a name="Current_Release:_Archiva_2.1.1"></a></h3>
+<p>The current stable release of Archiva is <i>2.1.1</i>.</p>
+<ul>
+<li><a href="./docs/2.1.1/release-notes.html"> Release Notes</a></li>
+<li><a href="./docs/2.1.1/index.html"> Documentation</a></li>
+<li><a href="./ref/2.1.1/index.html"> Developer Reference</a></li></ul><!-- TODO: have more specific links than Documentation, and find a better link for developer reference --></div>
+<div class="section">
+<h3>Last serie 1.3.x Release: Archiva 1.3.9<a name="Last_serie_1.3.x_Release:_Archiva_1.3.9"></a></h3>
+<p>The current stable release of Archiva 1.3.x is <i>1.3.9</i>.</p>
+<ul>
+<li><a href="./docs/1.3.9/release-notes.html"> Release Notes</a></li>
+<li><a href="./docs/1.3.9/index.html"> Documentation</a></li>
+<li><a href="./ref/1.3.9/index.html"> Developer Reference</a></li></ul><!-- TODO: have more specific links than Documentation, and find a better link for developer reference --></div>
+<div class="section">
+<h3>Unsupported Releases<a name="Unsupported_Releases"></a></h3><!-- rough list of unsupported version because materials (RNotes,Docs,Refs are not yet available) -->
+<p>1.3.6,1.3.5,1.3.4,1.3.3,1.3.2,1.3.1,1.3,1.2.2,1.2.1,1.2,1.1.3,1.1.2,1.1.1,1.1,1.0.2,1.0.1,1.0</p></div></div>
+                  </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container">
+                      <div class="row">
+                              <p >Copyright &copy;                    2006&#x2013;2015
+                        <a href="http://archiva.apache.org/">The Apache Software Foundation</a>.
+            All rights reserved.      
+                    
+      </p>
+        </div>
+
+                                                                  
+<div class="row pull-left">Apache Archiva, Archiva, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
+                                                          
+<div class="row pull-left">
+  <a href="http://archiva.apache.org/privacy-policy.html">Privacy Policy</a>
+</div>
+                  
+                <p id="poweredBy" class="pull-right">
+                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+              </p>
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
+    </div>
+        </div>
+    </footer>
+        </body>
 </html>
\ No newline at end of file
