diff --git a/bin/update_javadocs b/bin/update_javadocs index 1786753..7d93a1e 100755 --- a/bin/update_javadocs +++ b/bin/update_javadocs @@ -3,45 +3,48 @@ require 'tmpdir' MODULES = { - "onebusaway-gtfs-modules" => (->{ build_gtfs_modules }) + # "onebusaway-gtfs-modules" => (->{ build_gtfs_modules }) } -def build_gtfs_modules - repo_url = 'https://github.com/OneBusAway/onebusaway-gtfs-modules.git' - temp_dir = Dir.mktmpdir - - begin - # Clone the repository into the temporary directory - system("git clone --single-branch --branch gh-pages #{repo_url} #{temp_dir}") - - if $?.success? - puts "Repository cloned into temporary directory: #{temp_dir}" - else - puts "Failed to clone repository." - exit - end - - archive_path = Dir.chdir(temp_dir) do |path| - archive_command = "git archive --format=zip -o gh-pages.zip HEAD" - system(archive_command) - - archive_path = File.join(temp_dir, 'gh-pages.zip') - - if $?.success? - puts "Archive created successfully: #{archive_path}" - else - puts "Failed to create archive." - exit - end - archive_path - end - - system("unzip -o #{archive_path} -d ./src/modules/onebusaway-gtfs-modules/current") - ensure - # Clean up the temporary directory - FileUtils.remove_entry(temp_dir) - end -end +# n.b. January 2025 - this repo is no longer generating docs via Maven, but it's kept +# here as an example of how to clone a repo and extract a specific directory from it. + +# def build_gtfs_modules +# repo_url = 'https://github.com/OneBusAway/onebusaway-gtfs-modules.git' +# temp_dir = Dir.mktmpdir + +# begin +# # Clone the repository into the temporary directory +# system("git clone --single-branch --branch gh-pages #{repo_url} #{temp_dir}") + +# if $?.success? +# puts "Repository cloned into temporary directory: #{temp_dir}" +# else +# puts "Failed to clone repository." +# exit +# end + +# archive_path = Dir.chdir(temp_dir) do |path| +# archive_command = "git archive --format=zip -o gh-pages.zip HEAD" +# system(archive_command) + +# archive_path = File.join(temp_dir, 'gh-pages.zip') + +# if $?.success? +# puts "Archive created successfully: #{archive_path}" +# else +# puts "Failed to create archive." +# exit +# end +# archive_path +# end + +# system("unzip -o #{archive_path} -d ./src/modules/onebusaway-gtfs-modules/current") +# ensure +# # Clean up the temporary directory +# FileUtils.remove_entry(temp_dir) +# end +# end mod = ARGV[0]&.strip lam = MODULES[mod] diff --git a/src/_partials/_navbar.erb b/src/_partials/_navbar.erb index d388e29..1768bc7 100644 --- a/src/_partials/_navbar.erb +++ b/src/_partials/_navbar.erb @@ -28,9 +28,9 @@ )) %> <%= render(NavigationSection.new( - "Javadocs", + "Projects", children: { - "onebusaway-gtfs-modules" => '/modules/onebusaway-gtfs-modules/current/' + "onebusaway-gtfs-modules" => '/projects/onebusaway-gtfs-modules' }, current_path: resource.relative_url )) %> diff --git a/src/modules/onebusaway-gtfs-modules/current/ci-management.html b/src/modules/onebusaway-gtfs-modules/current/ci-management.html deleted file mode 100644 index 92ef8bd..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/ci-management.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – CI Management - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Overview

-

This project uses Jenkins.

-

Access

-

The following is a link to the continuous integration system used by the project:

-
-
http://ci.onebusaway.org/
-

Notifiers

-

No notifiers are defined. Please check back at a later date.

-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/css/apache-maven-fluido-1.11.1.min.css b/src/modules/onebusaway-gtfs-modules/current/css/apache-maven-fluido-1.11.1.min.css deleted file mode 100644 index 68a9ecf..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/css/apache-maven-fluido-1.11.1.min.css +++ /dev/null @@ -1,20 +0,0 @@ -/*! - * Bootstrap v2.3.2 - * - * Copyright 2013 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 by @mdo and @fat. - */.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}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}}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,a:focus{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,a.muted:focus{color:gray}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover,a.text-error:focus{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}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;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}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:17.5px;font-weight:300;line-height:1.25}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{display:inline-block;margin-bottom:10px;font-size:0;white-space:nowrap;vertical-align:middle}.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,.input-append .popover,.input-prepend .popover{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,.table-bordered tbody:first-child tr:first-child>th: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,.table-bordered tbody:first-child tr:first-child>th: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 tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th: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 tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th: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:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>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{width:16px;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,.dropdown-submenu:focus>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,.dropdown-menu>.active>a:focus{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,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{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}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{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,.close:focus{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 #ccc;*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:#b3b3b3;-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:focus,.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,.btn:focus{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-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 #04c #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:focus,.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:focus,.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:focus,.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:focus,.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:focus,.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 #222 #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:focus,.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,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{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-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.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,.nav>li>a:focus{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,.nav-list>.active>a:focus{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,.nav-tabs>li>a:focus{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{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,.nav-pills>.active>a:focus{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,.nav-tabs.nav-stacked>li>a:focus{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,.nav .dropdown-toggle:focus .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,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{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,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{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,.tabs-below>.nav-tabs>li>a:focus{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{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,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{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,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover,.nav>.disabled>a:focus{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,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover,.navbar-link:focus{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,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{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:focus,.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,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.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,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{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,.navbar-inverse .navbar-link:focus{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,.navbar-inverse .nav li.dropdown>a:focus .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:focus,.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>li>a:focus,.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,.pagination ul>.disabled>a:focus{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,.pager li>a:focus{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>a:focus,.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;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding: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;max-width:276px;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-title:empty{display:none}.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,a.thumbnail:focus{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.label:focus,a.badge:hover,a.badge:focus{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,.carousel-inner>.item>a>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,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.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}/*! - * Bootstrap Responsive v2.3.2 - * - * Copyright 2013 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 by @mdo and @fat. - */.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}@-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}.visible-phone{display:none !important}.visible-tablet{display:none !important}.hidden-desktop{display:none !important}.visible-desktop{display:inherit !important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit !important}.visible-desktop{display:none !important}.visible-tablet{display:inherit !important}.hidden-tablet{display:none !important}}@media(max-width:767px){.hidden-desktop{display:inherit !important}.visible-desktop{display:none !important}.visible-phone{display:inherit !important}.hidden-phone{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:inherit !important}.hidden-print{display:none !important}}@media(min-width:1200px){.row{margin-left:-30px;*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:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.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.564102564102564%;*margin-left:2.5109110747408616%;-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.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.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:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.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.7624309392265194%;*margin-left:2.709239449864817%;-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.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important}}.clear{clear:both;visibility:hidden}.clear hr{display:none}.section p,.section p,.section dt,.section dt{margin-right:7px;margin-left:7px}#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{width:95%}.sidebar-nav .search-query{width:calc(100% - 30px)}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:.9em;-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}.well{margin-bottom:10px}a.dropdown-toggle{cursor:pointer}.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}/*! - * "Fork me on GitHub" CSS ribbon v0.2.3 | MIT License - * https://github.com/simonwhitaker/github-fork-ribbon-css -*/.github-fork-ribbon{width:12.1em;height:12.1em;position:absolute;overflow:hidden;top:0;right:0;z-index:9999;pointer-events:none;font-size:13px;text-decoration:none;text-indent:-999999px}.github-fork-ribbon.fixed{position:fixed}.github-fork-ribbon:hover,.github-fork-ribbon:active{background-color:rgba(0,0,0,0.0)}.github-fork-ribbon:before,.github-fork-ribbon:after{position:absolute;display:block;width:15.38em;height:1.54em;top:3.23em;right:-3.23em;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.github-fork-ribbon:before{content:"";padding:.38em 0;background-color:#a00;background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,0.15)));background-image:-webkit-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,0.15));background-image:-moz-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,0.15));background-image:-ms-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,0.15));background-image:-o-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,0.15));background-image:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,0.15));-webkit-box-shadow:0 .15em .23em 0 rgba(0,0,0,0.5);-moz-box-shadow:0 .15em .23em 0 rgba(0,0,0,0.5);box-shadow:0 .15em .23em 0 rgba(0,0,0,0.5);pointer-events:auto}.github-fork-ribbon:after{content:attr(data-ribbon);color:#fff;font:700 1em "Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.54em;text-decoration:none;text-shadow:0 -.08em rgba(0,0,0,0.5);text-align:center;text-indent:0;padding:.15em 0;margin:.15em 0;border-width:.08em 0;border-style:dotted;border-color:#fff;border-color:rgba(255,255,255,0.7)}.github-fork-ribbon.left-top,.github-fork-ribbon.left-bottom{right:auto;left:0}.github-fork-ribbon.left-bottom,.github-fork-ribbon.right-bottom{top:auto;bottom:0}.github-fork-ribbon.left-top:before,.github-fork-ribbon.left-top:after,.github-fork-ribbon.left-bottom:before,.github-fork-ribbon.left-bottom:after{right:auto;left:-3.23em}.github-fork-ribbon.left-bottom:before,.github-fork-ribbon.left-bottom:after,.github-fork-ribbon.right-bottom:before,.github-fork-ribbon.right-bottom:after{top:auto;bottom:3.23em}.github-fork-ribbon.left-top:before,.github-fork-ribbon.left-top:after,.github-fork-ribbon.right-bottom:before,.github-fork-ribbon.right-bottom:after{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)} \ No newline at end of file diff --git a/src/modules/onebusaway-gtfs-modules/current/css/print.css b/src/modules/onebusaway-gtfs-modules/current/css/print.css deleted file mode 100644 index cd19a8c..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/css/print.css +++ /dev/null @@ -1,21 +0,0 @@ -/* - * 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. - */ - -#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn {display: none !important;} -#bodyColumn, body.docs div.docs {margin: 0 !important;border: none !important} diff --git a/src/modules/onebusaway-gtfs-modules/current/css/site.css b/src/modules/onebusaway-gtfs-modules/current/css/site.css deleted file mode 100644 index 055e7e2..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/css/site.css +++ /dev/null @@ -1 +0,0 @@ -/* You can override this file with your own styles */ \ No newline at end of file diff --git a/src/modules/onebusaway-gtfs-modules/current/dependency-convergence.html b/src/modules/onebusaway-gtfs-modules/current/dependency-convergence.html deleted file mode 100644 index 3503952..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/dependency-convergence.html +++ /dev/null @@ -1,279 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – Reactor Dependency Convergence - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Reactor Dependency Convergence

- - - -
- Legend: -
[Error]At least one dependency has a differing version of the dependency or has SNAPSHOT dependencies.

- - - - - - - - - - - - - - - - - - - - - -
- Statistics: -
Number of modules:9
Number of dependencies (NOD):78
Number of unique artifacts (NOA):86
Number of version-conflicting artifacts (NOC):5
Number of SNAPSHOT artifacts (NOS):0
Convergence (NOD/NOA):[Error] 90 %
Ready for release (100% convergence and no SNAPSHOTS):[Error] Error
You do not have 100% convergence.
-

Dependencies used in modules

-

com.fasterxml.jackson.core:jackson-annotations

- - - -
[Error] - - - - - - -
2.10.0 -
    -
  1. org.onebusaway:onebusaway-gtfs-hibernate-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-hibernate:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
             \- com.fasterxml.jackson.core:jackson-annotations:jar:2.10.0:compile

  2. -
  3. org.onebusaway:onebusaway-gtfs-hibernate:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
          \- com.fasterxml.jackson.core:jackson-annotations:jar:2.10.0:compile

  4. -
  5. org.onebusaway:onebusaway-gtfs-merge-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-merge:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
             \- com.fasterxml.jackson.core:jackson-annotations:jar:2.10.0:compile

  6. -
  7. org.onebusaway:onebusaway-gtfs-merge:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
          \- com.fasterxml.jackson.core:jackson-annotations:jar:2.10.0:compile

  8. -
  9. org.onebusaway:onebusaway-gtfs-transformer-cli-aws:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-transformer-cli:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT:compile
          \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
             \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
                \- com.fasterxml.jackson.core:jackson-annotations:jar:2.10.0:compile

  10. -
  11. org.onebusaway:onebusaway-gtfs-transformer-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
             \- com.fasterxml.jackson.core:jackson-annotations:jar:2.10.0:compile

  12. -
  13. org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
          \- com.fasterxml.jackson.core:jackson-annotations:jar:2.10.0:compile

  14. -
  15. org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT
    \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.10.0:compile

2.14.0 -
    -
  1. org.onebusaway:onebusaway-gtfs-hibernate-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-hibernate:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile
             \- com.fasterxml.jackson.core:jackson-annotations:jar:2.14.0:compile

  2. -
  3. org.onebusaway:onebusaway-gtfs-hibernate:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile
          \- com.fasterxml.jackson.core:jackson-annotations:jar:2.14.0:compile

  4. -
  5. org.onebusaway:onebusaway-gtfs-merge-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-merge:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile
             \- com.fasterxml.jackson.core:jackson-annotations:jar:2.14.0:compile

  6. -
  7. org.onebusaway:onebusaway-gtfs-merge:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile
          \- com.fasterxml.jackson.core:jackson-annotations:jar:2.14.0:compile

  8. -
  9. org.onebusaway:onebusaway-gtfs-transformer-cli-aws:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-transformer-cli:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT:compile
          \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
             \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile
                \- com.fasterxml.jackson.core:jackson-annotations:jar:2.14.0:compile

  10. -
  11. org.onebusaway:onebusaway-gtfs-transformer-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile
             \- com.fasterxml.jackson.core:jackson-annotations:jar:2.14.0:compile

  12. -
  13. org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile
          \- com.fasterxml.jackson.core:jackson-annotations:jar:2.14.0:compile

  14. -
  15. org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT
    \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.14.0:compile

-

com.fasterxml.jackson.core:jackson-core

- - - -
[Error] - - - - - - - - - -
2.10.0 -
    -
  1. org.onebusaway:onebusaway-gtfs-hibernate-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-hibernate:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
             \- com.fasterxml.jackson.core:jackson-core:jar:2.10.0:compile

  2. -
  3. org.onebusaway:onebusaway-gtfs-hibernate:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
          \- com.fasterxml.jackson.core:jackson-core:jar:2.10.0:compile

  4. -
  5. org.onebusaway:onebusaway-gtfs-merge-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-merge:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
             \- com.fasterxml.jackson.core:jackson-core:jar:2.10.0:compile

  6. -
  7. org.onebusaway:onebusaway-gtfs-merge:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
          \- com.fasterxml.jackson.core:jackson-core:jar:2.10.0:compile

  8. -
  9. org.onebusaway:onebusaway-gtfs-transformer-cli-aws:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-transformer-cli:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT:compile
          \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
             \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
                \- com.fasterxml.jackson.core:jackson-core:jar:2.10.0:compile

  10. -
  11. org.onebusaway:onebusaway-gtfs-transformer-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
             \- com.fasterxml.jackson.core:jackson-core:jar:2.10.0:compile

  12. -
  13. org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
          \- com.fasterxml.jackson.core:jackson-core:jar:2.10.0:compile

  14. -
  15. org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT
    \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
       \- com.fasterxml.jackson.core:jackson-core:jar:2.10.0:compile

2.14.0 -
    -
  1. org.onebusaway:onebusaway-gtfs-hibernate-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-hibernate:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile
             \- com.fasterxml.jackson.core:jackson-core:jar:2.14.0:compile

  2. -
  3. org.onebusaway:onebusaway-gtfs-hibernate:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile
          \- com.fasterxml.jackson.core:jackson-core:jar:2.14.0:compile

  4. -
  5. org.onebusaway:onebusaway-gtfs-merge-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-merge:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile
             \- com.fasterxml.jackson.core:jackson-core:jar:2.14.0:compile

  6. -
  7. org.onebusaway:onebusaway-gtfs-merge:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile
          \- com.fasterxml.jackson.core:jackson-core:jar:2.14.0:compile

  8. -
  9. org.onebusaway:onebusaway-gtfs-transformer-cli-aws:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-transformer-cli:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT:compile
          \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
             \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile
                \- com.fasterxml.jackson.core:jackson-core:jar:2.14.0:compile

  10. -
  11. org.onebusaway:onebusaway-gtfs-transformer-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile
             \- com.fasterxml.jackson.core:jackson-core:jar:2.14.0:compile

  12. -
  13. org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile
          \- com.fasterxml.jackson.core:jackson-core:jar:2.14.0:compile

  14. -
  15. org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT
    \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile
       \- com.fasterxml.jackson.core:jackson-core:jar:2.14.0:compile

2.6.7 -
    -
  1. org.onebusaway:onebusaway-gtfs-transformer-cli-aws:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-cloud-aws:jar:0.0.13:compile
       \- com.amazonaws:aws-java-sdk-sns:jar:1.11.602:compile
          \- com.amazonaws:aws-java-sdk-core:jar:1.11.602:compile
             \- com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar:2.6.7:compile
                \- com.fasterxml.jackson.core:jackson-core:jar:2.6.7:compile

-

com.fasterxml.jackson.core:jackson-databind

- - - -
[Error] - - - - - - - - - -
2.10.0 -
    -
  1. org.onebusaway:onebusaway-gtfs-hibernate-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-hibernate:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
             \- com.fasterxml.jackson.core:jackson-databind:jar:2.10.0:compile

  2. -
  3. org.onebusaway:onebusaway-gtfs-hibernate:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
          \- com.fasterxml.jackson.core:jackson-databind:jar:2.10.0:compile

  4. -
  5. org.onebusaway:onebusaway-gtfs-merge-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-merge:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
             \- com.fasterxml.jackson.core:jackson-databind:jar:2.10.0:compile

  6. -
  7. org.onebusaway:onebusaway-gtfs-merge:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
          \- com.fasterxml.jackson.core:jackson-databind:jar:2.10.0:compile

  8. -
  9. org.onebusaway:onebusaway-gtfs-transformer-cli-aws:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-transformer-cli:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT:compile
          \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
             \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
                \- com.fasterxml.jackson.core:jackson-databind:jar:2.10.0:compile

  10. -
  11. org.onebusaway:onebusaway-gtfs-transformer-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
             \- com.fasterxml.jackson.core:jackson-databind:jar:2.10.0:compile

  12. -
  13. org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
          \- com.fasterxml.jackson.core:jackson-databind:jar:2.10.0:compile

  14. -
  15. org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT
    \- de.grundid.opendatalab:geojson-jackson:jar:1.14:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.10.0:compile

2.14.0 -
    -
  1. org.onebusaway:onebusaway-gtfs-hibernate-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-hibernate:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile

  2. -
  3. org.onebusaway:onebusaway-gtfs-hibernate:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile

  4. -
  5. org.onebusaway:onebusaway-gtfs-merge-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-merge:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile

  6. -
  7. org.onebusaway:onebusaway-gtfs-merge:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile

  8. -
  9. org.onebusaway:onebusaway-gtfs-transformer-cli-aws:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-transformer-cli:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT:compile
          \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
             \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile

  10. -
  11. org.onebusaway:onebusaway-gtfs-transformer-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT:compile
       \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
          \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile

  12. -
  13. org.onebusaway:onebusaway-gtfs-transformer:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile

  14. -
  15. org.onebusaway:onebusaway-gtfs:jar:1.4.16-SNAPSHOT
    \- com.fasterxml.jackson.core:jackson-databind:jar:2.14.0:compile

2.6.7.2 -
    -
  1. org.onebusaway:onebusaway-gtfs-transformer-cli-aws:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-cloud-aws:jar:0.0.13:compile
       \- com.amazonaws:aws-java-sdk-sns:jar:1.11.602:compile
          +- com.amazonaws:aws-java-sdk-core:jar:1.11.602:compile
          |  \- com.fasterxml.jackson.core:jackson-databind:jar:2.6.7.2:compile
          \- com.amazonaws:jmespath-java:jar:1.11.602:compile
             \- com.fasterxml.jackson.core:jackson-databind:jar:2.6.7.2:compile

-

commons-logging:commons-logging

- - - -
[Error] - - - - - - - - - -
1.0.3 -
    -
  1. org.onebusaway:onebusaway-gtfs-transformer-cli-aws:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-cloud-aws:jar:0.0.13:compile
       \- commons-beanutils:commons-beanutils:jar:1.7.0:compile
          \- commons-logging:commons-logging:jar:1.0.3:compile

1.1.3 -
    -
  1. org.onebusaway:onebusaway-gtfs-transformer-cli-aws:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-cloud-aws:jar:0.0.13:compile
       \- com.amazonaws:aws-java-sdk-sns:jar:1.11.602:compile
          \- com.amazonaws:aws-java-sdk-core:jar:1.11.602:compile
             \- commons-logging:commons-logging:jar:1.1.3:compile

1.2 -
    -
  1. org.onebusaway:onebusaway-gtfs-transformer-cli-aws:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-cloud-aws:jar:0.0.13:compile
       \- org.apache.httpcomponents:httpclient:jar:4.5.9:compile
          \- commons-logging:commons-logging:jar:1.2:compile

-

org.jboss.logging:jboss-logging

- - - -
[Error] - - - - - - -
3.3.2.Final -
    -
  1. org.onebusaway:onebusaway-gtfs-hibernate-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-hibernate:jar:1.4.16-SNAPSHOT:compile
       \- org.hibernate:hibernate-core:jar:5.4.24.Final:compile
          \- org.hibernate.common:hibernate-commons-annotations:jar:5.1.2.Final:compile
             \- org.jboss.logging:jboss-logging:jar:3.3.2.Final:compile

  2. -
  3. org.onebusaway:onebusaway-gtfs-hibernate:jar:1.4.16-SNAPSHOT
    \- org.hibernate:hibernate-core:jar:5.4.24.Final:compile
       \- org.hibernate.common:hibernate-commons-annotations:jar:5.1.2.Final:compile
          \- org.jboss.logging:jboss-logging:jar:3.3.2.Final:compile

3.4.1.Final -
    -
  1. org.onebusaway:onebusaway-gtfs-hibernate-cli:jar:1.4.16-SNAPSHOT
    \- org.onebusaway:onebusaway-gtfs-hibernate:jar:1.4.16-SNAPSHOT:compile
       \- org.hibernate:hibernate-core:jar:5.4.24.Final:compile
          \- org.jboss.logging:jboss-logging:jar:3.4.1.Final:compile

  2. -
  3. org.onebusaway:onebusaway-gtfs-hibernate:jar:1.4.16-SNAPSHOT
    \- org.hibernate:hibernate-core:jar:5.4.24.Final:compile
       \- org.jboss.logging:jboss-logging:jar:3.4.1.Final:compile

-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/dependency-info.html b/src/modules/onebusaway-gtfs-modules/current/dependency-info.html deleted file mode 100644 index 3cff70d..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/dependency-info.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – Dependency Information - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Dependency Information

-

Apache Maven

-
-
<dependency>
-  <groupId>org.onebusaway</groupId>
-  <artifactId>onebusaway-gtfs-modules</artifactId>
-  <version>1.4.16-SNAPSHOT</version>
-  <type>pom</type>
-</dependency>
-

Apache Ivy

-
-
<dependency org="org.onebusaway" name="onebusaway-gtfs-modules" rev="1.4.16-SNAPSHOT">
-  <artifact name="onebusaway-gtfs-modules" type="pom" />
-</dependency>
-

Groovy Grape

-
-
@Grapes(
-@Grab(group='org.onebusaway', module='onebusaway-gtfs-modules', version='1.4.16-SNAPSHOT')
-)
-

Gradle/Grails

-
-
compile 'org.onebusaway:onebusaway-gtfs-modules:1.4.16-SNAPSHOT'
-

Scala SBT

-
-
libraryDependencies += "org.onebusaway" % "onebusaway-gtfs-modules" % "1.4.16-SNAPSHOT"
-

Leiningen

-
-
[org.onebusaway/onebusaway-gtfs-modules "1.4.16-SNAPSHOT"]
-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/dependency-management.html b/src/modules/onebusaway-gtfs-modules/current/dependency-management.html deleted file mode 100644 index 7a7fb4f..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/dependency-management.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – Project Dependency Management - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Project Dependency Management

-

compile

-

The following is a list of compile dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to compile and run the submodule:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GroupIdArtifactIdVersionTypeLicense
com.sun.xml.bindjaxb-core2.3.0jarCDDL+GPL License
com.sun.xml.bindjaxb-impl2.3.0jarCDDL+GPL License
javax.xml.bindjaxb-api2.3.0jarCDDL 1.1, GPL2 w/ CPE
org.onebusawayonebusaway-collections1.2.8jarThe Apache Software License, Version 2.0
org.onebusawayonebusaway-csv-entities1.1.7jarThe Apache Software License, Version 2.0
org.slf4jslf4j2.0.6jar-
org.slf4jslf4j-api2.0.6jarMIT License
org.slf4jslf4j-simple2.0.6jarMIT License
-

test

-

The following is a list of test dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to compile and run unit tests for the submodule:

- - - - - - - - - - - - - - - - - - -
GroupIdArtifactIdVersionTypeLicense
junitjunit4.4jarCommon Public License Version 1.0
org.mockitomockito-core1.8.0jarThe MIT License
-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/distribution-management.html b/src/modules/onebusaway-gtfs-modules/current/distribution-management.html deleted file mode 100644 index 7998c97..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/distribution-management.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – Project Distribution Management - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Overview

-

The following is the distribution management information used by this project.

-

Repository - releases-camsys-public-repo

-

s3://repo.camsys-apps.com/releases/

-

Snapshot Repository - snapshots-camsys-public-repo

-

s3://repo.camsys-apps.com/snapshots/

-

Site - developer.onebusaway.org

-

scp://developer.onebusaway.org/var/www/sites/developer/modules/onebusaway-gtfs-modules/1.4.16-SNAPSHOT

-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/fonts/glyphicons-halflings-regular.eot b/src/modules/onebusaway-gtfs-modules/current/fonts/glyphicons-halflings-regular.eot deleted file mode 100644 index 423bd5d..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/fonts/glyphicons-halflings-regular.eot and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/fonts/glyphicons-halflings-regular.svg b/src/modules/onebusaway-gtfs-modules/current/fonts/glyphicons-halflings-regular.svg deleted file mode 100644 index 4469488..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/fonts/glyphicons-halflings-regular.svg +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/modules/onebusaway-gtfs-modules/current/fonts/glyphicons-halflings-regular.ttf b/src/modules/onebusaway-gtfs-modules/current/fonts/glyphicons-halflings-regular.ttf deleted file mode 100644 index a498ef4..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/fonts/glyphicons-halflings-regular.ttf and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/fonts/glyphicons-halflings-regular.woff b/src/modules/onebusaway-gtfs-modules/current/fonts/glyphicons-halflings-regular.woff deleted file mode 100644 index d83c539..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/fonts/glyphicons-halflings-regular.woff and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/accessories-text-editor.png b/src/modules/onebusaway-gtfs-modules/current/images/accessories-text-editor.png deleted file mode 100644 index abc3366..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/accessories-text-editor.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/add.gif b/src/modules/onebusaway-gtfs-modules/current/images/add.gif deleted file mode 100644 index 1cb3dbf..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/add.gif and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/apache-maven-project-2.png b/src/modules/onebusaway-gtfs-modules/current/images/apache-maven-project-2.png deleted file mode 100644 index a44db6e..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/apache-maven-project-2.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/application-certificate.png b/src/modules/onebusaway-gtfs-modules/current/images/application-certificate.png deleted file mode 100644 index cc6aff6..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/application-certificate.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/contact-new.png b/src/modules/onebusaway-gtfs-modules/current/images/contact-new.png deleted file mode 100644 index ebc4316..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/contact-new.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/document-properties.png b/src/modules/onebusaway-gtfs-modules/current/images/document-properties.png deleted file mode 100644 index 34c2409..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/document-properties.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/drive-harddisk.png b/src/modules/onebusaway-gtfs-modules/current/images/drive-harddisk.png deleted file mode 100644 index d7ce475..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/drive-harddisk.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/fix.gif b/src/modules/onebusaway-gtfs-modules/current/images/fix.gif deleted file mode 100644 index b7eb3dc..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/fix.gif and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/icon_error_sml.gif b/src/modules/onebusaway-gtfs-modules/current/images/icon_error_sml.gif deleted file mode 100644 index 12e9a01..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/icon_error_sml.gif and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/icon_help_sml.gif b/src/modules/onebusaway-gtfs-modules/current/images/icon_help_sml.gif deleted file mode 100644 index aaf20e6..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/icon_help_sml.gif and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/icon_info_sml.gif b/src/modules/onebusaway-gtfs-modules/current/images/icon_info_sml.gif deleted file mode 100644 index b776326..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/icon_info_sml.gif and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/icon_success_sml.gif b/src/modules/onebusaway-gtfs-modules/current/images/icon_success_sml.gif deleted file mode 100644 index 0a19527..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/icon_success_sml.gif and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/icon_warning_sml.gif b/src/modules/onebusaway-gtfs-modules/current/images/icon_warning_sml.gif deleted file mode 100644 index ac6ad6a..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/icon_warning_sml.gif and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/image-x-generic.png b/src/modules/onebusaway-gtfs-modules/current/images/image-x-generic.png deleted file mode 100644 index ab49efb..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/image-x-generic.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/internet-web-browser.png b/src/modules/onebusaway-gtfs-modules/current/images/internet-web-browser.png deleted file mode 100644 index 307d6ac..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/internet-web-browser.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/logos/build-by-maven-black.png b/src/modules/onebusaway-gtfs-modules/current/images/logos/build-by-maven-black.png deleted file mode 100644 index 919fd0f..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/logos/build-by-maven-black.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/logos/build-by-maven-white.png b/src/modules/onebusaway-gtfs-modules/current/images/logos/build-by-maven-white.png deleted file mode 100644 index 7d44c9c..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/logos/build-by-maven-white.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/logos/maven-feather.png b/src/modules/onebusaway-gtfs-modules/current/images/logos/maven-feather.png deleted file mode 100644 index b5ada83..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/logos/maven-feather.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/network-server.png b/src/modules/onebusaway-gtfs-modules/current/images/network-server.png deleted file mode 100644 index 1d12e19..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/network-server.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/package-x-generic.png b/src/modules/onebusaway-gtfs-modules/current/images/package-x-generic.png deleted file mode 100644 index 8b7e9e6..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/package-x-generic.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/profiles/pre-release.png b/src/modules/onebusaway-gtfs-modules/current/images/profiles/pre-release.png deleted file mode 100644 index d448e85..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/profiles/pre-release.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/profiles/retired.png b/src/modules/onebusaway-gtfs-modules/current/images/profiles/retired.png deleted file mode 100644 index f89f6a2..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/profiles/retired.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/profiles/sandbox.png b/src/modules/onebusaway-gtfs-modules/current/images/profiles/sandbox.png deleted file mode 100644 index f88b362..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/profiles/sandbox.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/remove.gif b/src/modules/onebusaway-gtfs-modules/current/images/remove.gif deleted file mode 100644 index fc65631..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/remove.gif and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/rss.png b/src/modules/onebusaway-gtfs-modules/current/images/rss.png deleted file mode 100644 index a9850ee..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/rss.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/update.gif b/src/modules/onebusaway-gtfs-modules/current/images/update.gif deleted file mode 100644 index b2a6d0b..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/update.gif and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/images/window-new.png b/src/modules/onebusaway-gtfs-modules/current/images/window-new.png deleted file mode 100644 index 0e12ef9..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/images/window-new.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/img/glyphicons-halflings-white.png b/src/modules/onebusaway-gtfs-modules/current/img/glyphicons-halflings-white.png deleted file mode 100644 index 3bf6484..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/img/glyphicons-halflings-white.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/img/glyphicons-halflings.png b/src/modules/onebusaway-gtfs-modules/current/img/glyphicons-halflings.png deleted file mode 100644 index a996999..0000000 Binary files a/src/modules/onebusaway-gtfs-modules/current/img/glyphicons-halflings.png and /dev/null differ diff --git a/src/modules/onebusaway-gtfs-modules/current/index.html b/src/modules/onebusaway-gtfs-modules/current/index.html deleted file mode 100644 index 33dd035..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/index.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – - - - - - - -
-
- - - -
-
-
- - -
-
-
-

onebusaway-gtfs-modules

-

We provide a Java library for reading and writing GTFS feeds, including database support.

-

Current Version: 1.4.16-SNAPSHOT

-

Details on all releases can be found in the Release Notes.

-

The library is broken up into a few key modules:

-
    -
  • onebusaway-gtfs - The core library for reading and writing GTFS
  • -
  • onebusaway-gtfs-hibernate - Support for Hibernate database persistence of GTFS data
  • -
  • onebusaway-gtfs-hibernate-cli - Command-line utilty for loading GTFS feeds into a database - see the full documentation.
  • -
  • onebusaway-gtfs-transformer - Tools for transforming GTFS data
  • -
  • onebusaway-gtfs-transformer-cli - Command-line utility for transforming GTFS - see the full documentation.
  • -
  • onebusaway-gtfs-merge - Tools for merging GTFS data
  • -
  • onebusaway-gtfs-merge-cli - Command-line utility for merging GTFS feeds - see the full documentation.
-

Documentation

-

You can access the latest Javadoc for the library. Also, see example source code below.

-

Using in Maven

-

The library is available as a Maven module. Simply add the following dependencies:

-
<dependencies>
-    <!-- Core GTFS Library -->
-    <dependency>
-        <groupId>org.onebusaway</groupId>
-        <artifactId>onebusaway-gtfs</artifactId>
-        <version>1.4.16-SNAPSHOT</version>
-    </dependency>
-    <!-- Optional Hibernate GTFS Database Persistence -->
-    <dependency>
-        <groupId>org.onebusaway</groupId>
-        <artifactId>onebusaway-gtfs-hibernate</artifactId>
-        <version>1.4.16-SNAPSHOT</version>
-    </dependency>
-    <!-- Optional GTFS Transformation Library -->
-    <dependency>
-        <groupId>org.onebusaway</groupId>
-        <artifactId>onebusaway-gtfs-transformer</artifactId>
-        <version>1.4.16-SNAPSHOT</version>
-    </dependency>
-</dependencies>
-

To use a SNAPSHOT version of the library, you'll need to add a reference to the OneBusAway Maven repository.

-

Example Code

-

Basic Reading

-

Let's introduce basic code for reading a GTFS feed and handling the resulting entities:

-
public class GtfsReaderExampleMain {
-
-  public static void main(String[] args) throws IOException {
-
-    if (args.length != 1) {
-      System.err.println("usage: gtfs_feed_path");
-      System.exit(-1);
-    }
-
-    GtfsReader reader = new GtfsReader();
-    reader.setInputLocation(new File(args[0]));
-
-    /**
-     * You can register an entity handler that listens for new objects as they
-     * are read
-     */
-    reader.addEntityHandler(new GtfsEntityHandler());
-
-    /**
-     * Or you can use the internal entity store, which has references to all the
-     * loaded entities
-     */
-    GtfsDaoImpl store = new GtfsDaoImpl();
-    reader.setEntityStore(store);
-
-    reader.run();
-
-    // Access entities through the store
-    for (Route route : store.getAllRoutes()) {
-      System.out.println("route: " + route.getShortName());
-    }
-  }
-
-  private static class GtfsEntityHandler implements EntityHandler {
-
-    public void handleEntity(Object bean) {
-      if (bean instanceof Stop) {
-        Stop stop = (Stop) bean;
-        System.out.println("stop: " + stop.getName());
-      }
-    }
-  }
-}
-

Notice that the GtfsReader does the bulk of the work of reading the GTFS feed. The general pattern is to create the reader, set the input file, and call `run()` to start the reading process. You can manage the resulting GTFS entities in a couple of ways:

-
    -
  • Register an EntityHandler to handle entities as they are read
  • -
  • Use an instance of GenericMutableDao to examine the loaded entities after reading is complete
-

Basic Writing

-
public class GtfsWriterExampleMain {
-
-  public static void main(String[] args) throws IOException {
-
-    if (args.length != 1) {
-      System.err.println("usage: gtfs_feed_path");
-      System.exit(-1);
-    }
-
-
-    GtfsWriter writer = new GtfsWriter();
-    writer.setOutputLocation(new File(args[0]));
-
-    Agency agency = new Agency();
-    agency.setName("My agency!");
-    
-    writer.handleEntity(agency);
-
-    Route route = new Route();
-    route.setShortName("A");
-    route.setAgency(agency);
-
-    writer.handleEntity(route);
-
-    writer.close();
-  }
-}
-

Basic Database Reading

-

The class org.onebusaway.gtfs.examples.GtfsHibernateReaderExampleMain in the onebusaway-gtfs-hibernate/src/test/java directory includes basic code for reading a GTFS feed into a database and querying the resulting entities.

-

The sample code has been summarized for length and clarity:

-
public class GtfsHibernateReaderExampleMain {
-
-  public static void main(String[] args) throws IOException {
-
-    // Check args and construct application resource paths
-    ...
-
-    HibernateGtfsFactory factory = createHibernateGtfsFactory(resource);
-
-    GtfsReader reader = new GtfsReader();
-    reader.setInputLocation(new File(args[0]));
-
-    GtfsMutableRelationalDao dao = factory.getDao();
-    reader.setEntityStore(dao);
-    reader.run();
-
-    Collection<Stop> stops = dao.getAllStops();
-
-    for (Stop stop : stops)
-      System.out.println(stop.getName());
-
-    ...
-  }
-
-  // Other methods
-  private static HibernateGtfsFactory createHibernateGtfsFactory(String resource) {
-
-    Configuration config = new Configuration();
-
-    if (resource.startsWith(KEY_CLASSPATH)) {
-      resource = resource.substring(KEY_CLASSPATH.length());
-      config = config.configure(resource);
-    } else if (resource.startsWith(KEY_FILE)) {
-      resource = resource.substring(KEY_FILE.length());
-      config = config.configure(new File(resource));
-    } else {
-      config = config.configure(new File(resource));
-    }
-
-    SessionFactory sessionFactory = config.buildSessionFactory();
-    return new HibernateGtfsFactory(sessionFactory);
-  }
-}
-

This code is roughly similar to the example reader code for onebusaway-gtfs, with the main difference being the use of HibernateGtfsFactory, which is a convenience factory for creating database-aware DAOs.

-

Configuring Your Database

-

By default, the example above is setup to run with an in-memory HSQLDB database. Obviously, it'd be great to configure it to use a different database and you totally can. See http://hibernate.org/ for more documentation on configuring Hibernate, but also check out the default hibernate config file used in the example above. It's located in the following directory:

-
onebusaway-gtfs-hibernate/src/test/resources/org/onebusaway/gtfs/examples/hibernate-configuration-examples.xml
-

The contents look like:

-
<?xml version='1.0' encoding='utf-8'?>
-<hibernate-configuration>
-    <session-factory>
-        <!-- Database connection settings -->
-        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
-        <property name="connection.url">jdbc:hsqldb:mem:org_onebusaway_temporary</property>
-        <property name="connection.username">sa</property>
-        <property name="connection.password"></property>
-
-        <!-- SQL dialect -->
-        <property name="dialect">org.hibernate.dialect.HSQLDialect</property>
-
-        <!-- More config options removed for brevity -->
-    </session-factory>
-</hibernate-configuration>
-

Here you can configure the data source used for the database connection along with the Hibernate dialect.

-

Reading Custom Fields

-

Does your GTFS feed have custom fields not defined by the core onebusaway-gtfs library? It's possible to read and write this data without modify OBA source code using the "extensions" mechanism. Consider a stops.txt file with a custom extra_stop_info field:

-
stop_id,stop_name,stop_lat,stop_lon,extra_stop_info
-123,Some Station,47.0,-122.0,This is a cool transit station
-

The extra_stop_info field isn't included in the the Stop data model by default. So instead, we define a special StopExtension Java bean type with the new field:

-
public static class StopExtension {
-  @CsvField(optional = true)
-  private String extraStopInfo;
-
-  public String getExtraStopInfo() { ... }
-  public void setExtraStopInfo(String info) { ... }
-}
-

We can now register our class as an extension of the default stop data model:

-
DefaultEntitySchemaFactory factory = GtfsEntitySchemaFactory.createEntitySchemaFactory();
-factory.addExtension(Stop.class, StopExtension.class);
-    
-GtfsReader reader = new GtfsReader();
-reader.setEntitySchemaFactory(factory);
-

Now when you read your GTFS feed with the GtfsReader instance, StopExtension objects will automatically be created, populated, and attached to stops as they are read:

-
Stop stop = dao.getStopForId(...);
-StopExtension extension = stop.getExtension(StopExtension.class);
-System.out.println(extension.getExtraStopInfo());
-

For more information on defining the mapping from GTFS fields to Java beans, see documentation for the onebusaway-csv-entities project, including the @CsvField annotation documentation.

-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/issue-management.html b/src/modules/onebusaway-gtfs-modules/current/issue-management.html deleted file mode 100644 index c571f06..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/issue-management.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – Issue Management - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Overview

-

This project uses GitHub to manage its issues.

-

Issue Management

-

Issues, bugs, and feature requests should be submitted to the following issue management system for this project.

-
-
https://github.com/OneBusAway/onebusaway-gtfs-modules/issues
-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/js/apache-maven-fluido-1.11.1.min.js b/src/modules/onebusaway-gtfs-modules/current/js/apache-maven-fluido-1.11.1.min.js deleted file mode 100644 index 7a84154..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/js/apache-maven-fluido-1.11.1.min.js +++ /dev/null @@ -1,287 +0,0 @@ -(function(e,p){"object"===typeof module&&"object"===typeof module.exports?module.exports=e.document?p(e,!0):function(e){if(!e.document)throw Error("jQuery requires a window with a document");return p(e)}:p(e)})("undefined"!==typeof window?window:this,function(e,p){function x(a){var b=a.length,f=d.type(a);return"function"===f||d.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===f||0===b||"number"===typeof b&&0b;b+=2)"margin"=== -f&&(u+=d.css(a,f+oa[b],!0,l)),k?("content"===f&&(u-=d.css(a,"padding"+oa[b],!0,l)),"margin"!==f&&(u-=d.css(a,"border"+oa[b]+"Width",!0,l))):(u+=d.css(a,"padding"+oa[b],!0,l),"padding"!==f&&(u+=d.css(a,"border"+oa[b]+"Width",!0,l)));return u}function U(a,b,f){var k=!0,l="width"===b?a.offsetWidth:a.offsetHeight,u=ga(a),c=w.boxSizing&&"border-box"===d.css(a,"boxSizing",!1,u);if(0>=l||null==l){l=pa(a,b,u);if(0>l||null==l)l=a.style[b];if(Ja.test(l))return l;k=c&&(w.boxSizingReliable()||l===a.style[b]); -l=parseFloat(l)||0}return l+S(a,b,f||(c?"border":"content"),k,u)+"px"}function H(a,b,f,d,l){return new H.prototype.init(a,b,f,d,l)}function J(){setTimeout(function(){wa=void 0});return wa=d.now()}function v(a,b){var f,d={height:a},l=0;for(b=b?1:0;4>l;l+=2-b)f=oa[l],d["margin"+f]=d["padding"+f]=a;b&&(d.opacity=d.width=a);return d}function da(a,b,f){for(var d,l=(xa[b]||[]).concat(xa["*"]),c=0,e=l.length;cf&&l)return b;e.resolveWith(a,[h]);return!1}, -h=e.promise({elem:a,props:d.extend({},b),opts:d.extend(!0,{specialEasing:{}},f),originalProperties:b,originalOptions:f,startTime:wa||J(),duration:f.duration,tweens:[],createTween:function(b,f){b=d.Tween(a,h.opts,b,f,h.opts.specialEasing[b]||h.opts.easing);h.tweens.push(b);return b},stop:function(b){var f=0,d=b?h.tweens.length:0;if(k)return this;for(k=!0;fa?this[a+this.length]:this[a]:ba.call(this)},pushStack:function(a){a=d.merge(this.constructor(),a);a.prevObject=this;a.context=this.context;return a},each:function(a,b){return d.each(this,a,b)},map:function(a){return this.pushStack(d.map(this,function(b,f){return a.call(b,f,b)}))},slice:function(){return this.pushStack(ba.apply(this,arguments))},first:function(){return this.eq(0)}, -last:function(){return this.eq(-1)},eq:function(a){var b=this.length;a=+a+(0>a?b:0);return this.pushStack(0<=a&&af?Math.max(0,d+f):f:0;fF.cacheLength&&delete a[b.shift()];return a[d+" "]=f}var b=[];return a}function k(a){a[Q]=!0;return a}function l(a){var b=I.createElement("div");try{return!!a(b)}catch(ma){return!1}finally{b.parentNode&&b.parentNode.removeChild(b)}}function c(a,b){var d=a.split("|");for(a=a.length;a--;)F.attrHandle[d[a]]=b}function e(a,b){var d=b&&a,f=d&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex|| --2147483648)-(~a.sourceIndex||-2147483648);if(f)return f;if(d)for(;d=d.nextSibling;)if(d===b)return-1;return a?1:-1}function g(a){return function(b){return"input"===b.nodeName.toLowerCase()&&b.type===a}}function h(a){return function(b){var d=b.nodeName.toLowerCase();return("input"===d||"button"===d)&&b.type===a}}function m(a){return k(function(b){b=+b;return k(function(d,f){for(var k,l=a([],d.length,b),c=l.length;c--;)d[k=l[c]]&&(d[k]=!(f[k]=d[k]))})})}function t(a){return a&&"undefined"!==typeof a.getElementsByTagName&& -a}function n(){}function v(a){for(var b=0,d=a.length,f="";b+~]|[\x20\t\r\n\f])[\x20\t\r\n\f]*/,ta=/=[\x20\t\r\n\f]*([^\]'"]*?)[\x20\t\r\n\f]*\]/g,ua=new RegExp(ia),wa=new RegExp("^"+ka+"$"),ja={ID:/^#((?:\\.|[\w-]|[^\x00-\xa0])+)/,CLASS:/^\.((?:\\.|[\w-]|[^\x00-\xa0])+)/,TAG:new RegExp("^("+"(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+".replace("w","w*")+")"),ATTR:new RegExp("^"+la),PSEUDO:new RegExp("^"+ia), -CHILD:/^:(only|first|last|nth|nth-last)-(child|of-type)(?:\([\x20\t\r\n\f]*(even|odd|(([+-]|)(\d*)n|)[\x20\t\r\n\f]*(?:([+-]|)[\x20\t\r\n\f]*(\d+)|))[\x20\t\r\n\f]*\)|)/i,bool:/^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$/i,needsContext:/^[\x20\t\r\n\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\([\x20\t\r\n\f]*((?:-\d)?\d*)[\x20\t\r\n\f]*\)|)(?=[^-]|$)/i},ya=/^(?:input|select|textarea|button)$/i,za=/^h\d$/i,ha= -/^[^{]+\{\s*\[native \w/,Aa=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,na=/[+~]/,Ca=/'|\\/g,qa=/\\([\da-f]{1,6}[\x20\t\r\n\f]?|([\x20\t\r\n\f])|.)/ig,ra=function(a,b,d){a="0x"+b-65536;return a!==a||d?b:0>a?String.fromCharCode(a+65536):String.fromCharCode(a>>10|55296,a&1023|56320)},xa=function(){R()};try{Y.apply(V=Ga.call(E.childNodes),E.childNodes),V[E.childNodes.length].nodeType}catch(T){Y={apply:V.length?function(a,b){La.apply(a,Ga.call(b))}:function(a,b){for(var d=a.length,f=0;a[d++]=b[f++];);a.length= -d-1}}}B=b.support={};G=b.isXML=function(a){return(a=a&&(a.ownerDocument||a).documentElement)?"HTML"!==a.nodeName:!1};R=b.setDocument=function(a){var b=a?a.ownerDocument||a:E;if(b===I||9!==b.nodeType||!b.documentElement)return I;I=b;O=b.documentElement;(a=b.defaultView)&&a!==a.top&&(a.addEventListener?a.addEventListener("unload",xa,!1):a.attachEvent&&a.attachEvent("onunload",xa));H=!G(b);B.attributes=l(function(a){a.className="i";return!a.getAttribute("className")});B.getElementsByTagName=l(function(a){a.appendChild(b.createComment("")); -return!a.getElementsByTagName("*").length});B.getElementsByClassName=ha.test(b.getElementsByClassName);B.getById=l(function(a){O.appendChild(a).id=Q;return!b.getElementsByName||!b.getElementsByName(Q).length});B.getById?(F.find.ID=function(a,b){if("undefined"!==typeof b.getElementById&&H)return(a=b.getElementById(a))&&a.parentNode?[a]:[]},F.filter.ID=function(a){var b=a.replace(qa,ra);return function(a){return a.getAttribute("id")===b}}):(delete F.find.ID,F.filter.ID=function(a){var b=a.replace(qa, -ra);return function(a){return(a="undefined"!==typeof a.getAttributeNode&&a.getAttributeNode("id"))&&a.value===b}});F.find.TAG=B.getElementsByTagName?function(a,b){if("undefined"!==typeof b.getElementsByTagName)return b.getElementsByTagName(a);if(B.qsa)return b.querySelectorAll(a)}:function(a,b){var d=[],f=0;b=b.getElementsByTagName(a);if("*"===a){for(;a=b[f++];)1===a.nodeType&&d.push(a);return d}return b};F.find.CLASS=B.getElementsByClassName&&function(a,b){if(H)return b.getElementsByClassName(a)}; -J=[];r=[];if(B.qsa=ha.test(b.querySelectorAll))l(function(a){O.appendChild(a).innerHTML="\x3ca id\x3d'"+Q+"'\x3e\x3c/a\x3e\x3cselect id\x3d'"+Q+"-\f]' msallowcapture\x3d''\x3e\x3coption selected\x3d''\x3e\x3c/option\x3e\x3c/select\x3e";a.querySelectorAll("[msallowcapture^\x3d'']").length&&r.push("[*^$]\x3d[\\x20\\t\\r\\n\\f]*(?:''|\"\")");a.querySelectorAll("[selected]").length||r.push("\\[[\\x20\\t\\r\\n\\f]*(?:value|checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)"); -a.querySelectorAll("[id~\x3d"+Q+"-]").length||r.push("~\x3d");a.querySelectorAll(":checked").length||r.push(":checked");a.querySelectorAll("a#"+Q+"+*").length||r.push(".#.+[+~]")}),l(function(a){var d=b.createElement("input");d.setAttribute("type","hidden");a.appendChild(d).setAttribute("name","D");a.querySelectorAll("[name\x3dd]").length&&r.push("name[\\x20\\t\\r\\n\\f]*[*^$|!~]?\x3d");a.querySelectorAll(":enabled").length||r.push(":enabled",":disabled");a.querySelectorAll("*,:x");r.push(",.*:")}); -(B.matchesSelector=ha.test(Ba=O.matches||O.webkitMatchesSelector||O.mozMatchesSelector||O.oMatchesSelector||O.msMatchesSelector))&&l(function(a){B.disconnectedMatch=Ba.call(a,"div");Ba.call(a,"[s!\x3d'']:x");J.push("!\x3d",ia)});r=r.length&&new RegExp(r.join("|"));J=J.length&&new RegExp(J.join("|"));va=(a=ha.test(O.compareDocumentPosition))||ha.test(O.contains)?function(a,b){var d=9===a.nodeType?a.documentElement:a;b=b&&b.parentNode;return a===b||!!(b&&1===b.nodeType&&(d.contains?d.contains(b):a.compareDocumentPosition&& -a.compareDocumentPosition(b)&16))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1};ca=a?function(a,d){if(a===d)return x=!0,0;var f=!a.compareDocumentPosition-!d.compareDocumentPosition;if(f)return f;f=(a.ownerDocument||a)===(d.ownerDocument||d)?a.compareDocumentPosition(d):1;return f&1||!B.sortDetached&&d.compareDocumentPosition(a)===f?a===b||a.ownerDocument===E&&va(E,a)?-1:d===b||d.ownerDocument===E&&va(E,d)?1:P?ba(P,a)-ba(P,d):0:f&4?-1:1}:function(a,d){if(a===d)return x=!0,0; -var f=0,k=a.parentNode,l=d.parentNode,c=[a],u=[d];if(!k||!l)return a===b?-1:d===b?1:k?-1:l?1:P?ba(P,a)-ba(P,d):0;if(k===l)return e(a,d);for(;a=a.parentNode;)c.unshift(a);for(a=d;a=a.parentNode;)u.unshift(a);for(;c[f]===u[f];)f++;return f?e(c[f],u[f]):c[f]===E?-1:u[f]===E?1:0};return b};b.matches=function(a,d){return b(a,null,null,d)};b.matchesSelector=function(a,d){(a.ownerDocument||a)!==I&&R(a);d=d.replace(ta,"\x3d'$1']");if(!(!B.matchesSelector||!H||J&&J.test(d)||r&&r.test(d)))try{var f=Ba.call(a, -d);if(f||B.disconnectedMatch||a.document&&11!==a.document.nodeType)return f}catch(Da){}return 0a.nodeType)return!1;return!0},parent:function(a){return!F.pseudos.empty(a)},header:function(a){return za.test(a.nodeName)},input:function(a){return ya.test(a.nodeName)}, -button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:m(function(){return[0]}),last:m(function(a,b){return[b-1]}),eq:m(function(a,b,d){return[0>d?d+b:d]}),even:m(function(a,b){for(var d=0;dd?d+b:d;0<=--b;)a.push(b);return a}),gt:m(function(a,b,d){for(d=0>d?d+b:d;++d(?:<\/\1>|)$/,Gb=/^.[^:#\[\.,]*$/;d.filter=function(a,b,f){var k=b[0];f&&(a=":not("+a+")");return 1===b.length&&1===k.nodeType?d.find.matchesSelector(k,a)?[k]:[]:d.find.matches(a,d.grep(b,function(a){return 1===a.nodeType}))};d.fn.extend({find:function(a){var b,f=[],k=this,l=k.length;if("string"!==typeof a)return this.pushStack(d(a).filter(function(){for(b= -0;b)[^>]*|#([\w-]*))$/;(d.fn.init=function(a,b){var f;if(!a)return this;if("string"=== -typeof a){f="\x3c"===a.charAt(0)&&"\x3e"===a.charAt(a.length-1)&&3<=a.length?[null,a,null]:Vb.exec(a);if(!f||!f[1]&&b)return!b||b.jquery?(b||Ha).find(a):this.constructor(b).find(a);if(f[1]){if(b=b instanceof d?b[0]:b,d.merge(this,d.parseHTML(f[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),mb.test(f[1])&&d.isPlainObject(b))for(f in b)if(d.isFunction(this[f]))this[f](b[f]);else this.attr(f,b[f])}else{if((b=z.getElementById(f[2]))&&b.parentNode){if(b.id!==f[2])return Ha.find(a);this.length=1;this[0]=b}this.context= -z;this.selector=a}return this}if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(d.isFunction(a))return"undefined"!==typeof Ha.ready?Ha.ready(a):a(d);void 0!==a.selector&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)}).prototype=d.fn;Ha=d(z);var Wb=/^(?:parents|prev(?:Until|All))/,Xb={children:!0,contents:!0,next:!0,prev:!0};d.extend({dir:function(a,b,f){var k=[];for(a=a[b];a&&9!==a.nodeType&&(void 0===f||1!==a.nodeType||!d(a).is(f));)1===a.nodeType&& -k.push(a),a=a[b];return k},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&d.push(a);return d}});d.fn.extend({has:function(a){var b,f=d(a,this),k=f.length;return this.filter(function(){for(b=0;bf.nodeType&&(e?-1p.indexOf(":")&&"on"+p,a=a[d.expando]?a: -new d.Event(p,"object"===typeof a&&a),a.isTrigger=k?2:3,a.namespace=n.join("."),a.namespace_re=a.namespace?new RegExp("(^|\\.)"+n.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,a.result=void 0,a.target||(a.target=f),b=null==b?[a]:d.makeArray(b,[a]),n=d.event.special[p]||{},k||!n.trigger||!1!==n.trigger.apply(f,b))){if(!k&&!n.noBubble&&!d.isWindow(f)){m=n.delegateType||p;nb.test(m+p)||(h=h.parentNode);for(;h;h=h.parentNode)t.push(h),c=h;c===(f.ownerDocument||z)&&t.push(c.defaultView||c.parentWindow||e)}for(v= -0;(h=t[v++])&&!a.isPropagationStopped();)a.type=1]*)\/>/gi,rb=/<([\w:]+)/,sb=/\s*$/g,ca={option:[1,"\x3cselect multiple\x3d'multiple'\x3e","\x3c/select\x3e"],legend:[1,"\x3cfieldset\x3e","\x3c/fieldset\x3e"],area:[1, -"\x3cmap\x3e","\x3c/map\x3e"],param:[1,"\x3cobject\x3e","\x3c/object\x3e"],thead:[1,"\x3ctable\x3e","\x3c/table\x3e"],tr:[2,"\x3ctable\x3e\x3ctbody\x3e","\x3c/tbody\x3e\x3c/table\x3e"],col:[2,"\x3ctable\x3e\x3ctbody\x3e\x3c/tbody\x3e\x3ccolgroup\x3e","\x3c/colgroup\x3e\x3c/table\x3e"],td:[3,"\x3ctable\x3e\x3ctbody\x3e\x3ctr\x3e","\x3c/tr\x3e\x3c/tbody\x3e\x3c/table\x3e"],_default:w.htmlSerialize?[0,"",""]:[1,"X\x3cdiv\x3e","\x3c/div\x3e"]},Za=Aa(z).appendChild(z.createElement("div"));ca.optgroup= -ca.option;ca.tbody=ca.tfoot=ca.colgroup=ca.caption=ca.thead;ca.th=ca.td;d.extend({clone:function(a,b,f){var c,l,e,g,h,m=d.contains(a.ownerDocument,a);w.html5Clone||d.isXMLDoc(a)||!pb.test("\x3c"+a.nodeName+"\x3e")?e=a.cloneNode(!0):(Za.innerHTML=a.outerHTML,Za.removeChild(e=Za.firstChild));if(!(w.noCloneEvent&&w.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||d.isXMLDoc(a)))for(c=N(e),h=N(a),g=0;null!=(l=h[g]);++g)if(c[g]){var n=c[g],t,p=void 0,v;if(1===n.nodeType){t=n.nodeName.toLowerCase();if(!w.noCloneEvent&& -n[d.expando]){v=d._data(n);for(p in v.events)d.removeEvent(n,p,v.handle);n.removeAttribute(d.expando)}if("script"===t&&n.text!==l.text)ia(n).text=l.text,A(n);else if("object"===t)n.parentNode&&(n.outerHTML=l.outerHTML),w.html5Clone&&l.innerHTML&&!d.trim(n.innerHTML)&&(n.innerHTML=l.innerHTML);else if("input"===t&&Ua.test(l.type))n.defaultChecked=n.checked=l.checked,n.value!==l.value&&(n.value=l.value);else if("option"===t)n.defaultSelected=n.selected=l.defaultSelected;else if("input"===t||"textarea"=== -t)n.defaultValue=l.defaultValue}}if(b)if(f)for(h=h||N(a),c=c||N(e),g=0;null!=(l=h[g]);g++)P(l,c[g]);else P(a,e);c=N(e,"script");0f;f++)c[a+oa[f]+b]=d[f]||d[f-2]||d[0];return c}};ub.test(a)||(d.cssHooks[a+b].set=va)});d.fn.extend({css:function(a,b){return sa(this,function(a,b,c){var f,e={},k=0;if(d.isArray(b)){c=ga(a);for(f=b.length;kc)?null:[],g=a?c+1:f.length,h=0>c?g:a?c:0;hc.indexOf(" "+e+" ")&&(c+=e+" ");c=d.trim(c);f.className!==c&&(f.className=c)}return this},removeClass:function(a){var b, -f,c,e,g,h=0,m=this.length;b=0===arguments.length||"string"===typeof a&&a;if(d.isFunction(a))return this.each(function(b){d(this).removeClass(a.call(this,b,this.className))});if(b)for(b=(a||"").match(Y)||[];ha||304===a;if(c){l=t;for(var p=B,I,z,r,D,G=l.contents,K=l.dataTypes;"*"===K[0];)K.shift(),void 0===z&&(z=l.mimeType||p.getResponseHeader("Content-Type"));if(z)for(D in G)if(G[D]&&G[D].test(z)){K.unshift(D);break}if(K[0]in c)r=K[0];else{for(D in c){if(!K[0]||l.converters[D+" "+K[0]]){r=D;break}I||(I=D)}r=r||I}r?(r!==K[0]&&K.unshift(r),l=c[r]):l=void 0}a:{c=t;I=l;z=B;r=f;var P, -O,F,p={},G=c.dataTypes.slice();if(G[1])for(O in c.converters)p[O.toLowerCase()]=c.converters[O];for(D=G.shift();D;)if(c.responseFields[D]&&(z[c.responseFields[D]]=I),!F&&r&&c.dataFilter&&(I=c.dataFilter(I,c.dataType)),F=D,D=G.shift())if("*"===D)D=F;else if("*"!==F&&F!==D){O=p[F+" "+D]||p["* "+D];if(!O)for(P in p)if(l=P.split(" "),l[1]===D&&(O=p[F+" "+l[0]]||p["* "+l[0]])){!0===O?O=p[P]:!0!==p[P]&&(D=l[0],G.unshift(l[1]));break}if(!0!==O)if(O&&c["throws"])I=O(I);else try{I=O(I)}catch(Tb){l={state:"parsererror", -error:O?Tb:"No conversion from "+F+" to "+D};break a}}l={state:"success",data:I}}if(f)t.ifModified&&((u=B.getResponseHeader("Last-Modified"))&&(d.lastModified[g]=u),(u=B.getResponseHeader("etag"))&&(d.etag[g]=u)),204===a||"HEAD"===t.type?u="nocontent":304===a?u="notmodified":(u=l.state,e=l.data,k=l.error,f=!k);else if(k=u,a||!u)u="error",0>a&&(a=0);B.status=a;B.statusText=(b||u)+"";f?w.resolveWith(y,[e,u,B]):w.rejectWith(y,[B,u,k]);B.statusCode(da);da=void 0;n&&C.trigger(f?"ajaxSuccess":"ajaxError", -[B,t,f?e:k]);A.fireWith(y,[B,u]);n&&(C.trigger("ajaxComplete",[B,t]),--d.active||d.event.trigger("ajaxStop"))}}"object"===typeof a&&(b=a,a=void 0);b=b||{};var e,g,h,m,n,v,p,t=d.ajaxSetup({},b),y=t.context||t,C=t.context&&(y.nodeType||y.jquery)?d(y):d.event,w=d.Deferred(),A=d.Callbacks("once memory"),da=t.statusCode||{},I={},z={},L=0,r="canceled",B={readyState:0,getResponseHeader:function(a){var b;if(2===L){if(!p)for(p={};b=rc.exec(h);)p[b[1].toLowerCase()]=b[2];b=p[a.toLowerCase()]}return null==b? -null:b},getAllResponseHeaders:function(){return 2===L?h:null},setRequestHeader:function(a,b){var d=a.toLowerCase();L||(a=z[d]=z[d]||a,I[a]=b);return this},overrideMimeType:function(a){L||(t.mimeType=a);return this},statusCode:function(a){var b;if(a)if(2>L)for(b in a)da[b]=[da[b],a[b]];else B.always(a[B.status]);return this},abort:function(a){a=a||r;v&&v.abort(a);c(0,a);return this}};w.promise(B).complete=A.add;B.success=B.done;B.error=B.fail;t.url=((a||t.url||la)+"").replace(qc,"").replace(tc,ua[1]+ -"//");t.type=b.method||b.type||t.method||t.type;t.dataTypes=d.trim(t.dataType||"*").toLowerCase().match(Y)||[""];null==t.crossDomain&&(a=zb.exec(t.url.toLowerCase()),t.crossDomain=!(!a||a[1]===ua[1]&&a[2]===ua[2]&&(a[3]||("http:"===a[1]?"80":"443"))===(ua[3]||("http:"===ua[1]?"80":"443"))));t.data&&t.processData&&"string"!==typeof t.data&&(t.data=d.param(t.data,t.traditional));D(Ab,t,b,B);if(2===L)return B;(n=d.event&&t.global)&&0===d.active++&&d.event.trigger("ajaxStart");t.type=t.type.toUpperCase(); -t.hasContent=!sc.test(t.type);g=t.url;t.hasContent||(t.data&&(g=t.url+=(db.test(g)?"\x26":"?")+t.data,delete t.data),!1===t.cache&&(t.url=yb.test(g)?g.replace(yb,"$1_\x3d"+cb++):g+(db.test(g)?"\x26":"?")+"_\x3d"+cb++));t.ifModified&&(d.lastModified[g]&&B.setRequestHeader("If-Modified-Since",d.lastModified[g]),d.etag[g]&&B.setRequestHeader("If-None-Match",d.etag[g]));(t.data&&t.hasContent&&!1!==t.contentType||b.contentType)&&B.setRequestHeader("Content-Type",t.contentType);B.setRequestHeader("Accept", -t.dataTypes[0]&&t.accepts[t.dataTypes[0]]?t.accepts[t.dataTypes[0]]+("*"!==t.dataTypes[0]?", "+Bb+"; q\x3d0.01":""):t.accepts["*"]);for(e in t.headers)B.setRequestHeader(e,t.headers[e]);if(t.beforeSend&&(!1===t.beforeSend.call(y,B,t)||2===L))return B.abort();r="abort";for(e in{success:1,error:1,complete:1})B[e](t[e]);if(v=D(Va,t,b,B)){B.readyState=1;n&&C.trigger("ajaxSend",[B,t]);t.async&&0L)c(-1, -F);else throw F;}}else c(-1,"No Transport");return B},getJSON:function(a,b,c){return d.get(a,b,c,"json")},getScript:function(a,b){return d.get(a,void 0,b,"script")}});d.each(["get","post"],function(a,b){d[b]=function(a,c,e,g){d.isFunction(c)&&(g=g||e,e=c,c=void 0);return d.ajax({url:a,type:b,dataType:g,data:c,success:e})}});d._evalUrl=function(a){return d.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})};d.fn.extend({wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this, -b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var a=this;a.firstChild&&1===a.firstChild.nodeType;)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return d.isFunction(a)?this.each(function(b){d(this).wrapInner(a.call(this,b))}):this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=d.isFunction(a);return this.each(function(c){d(this).wrapAll(b? -a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()}});d.expr.filters.hidden=function(a){return 0>=a.offsetWidth&&0>=a.offsetHeight||!w.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||d.css(a,"display"))};d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)};var uc=/%20/g,Nb=/\[\]$/,Cb=/\r?\n/g,vc=/^(?:submit|button|image|reset|file)$/i,wc=/^(?:input|select|textarea|keygen)/i;d.param= -function(a,b){var c,e=[],g=function(a,b){b=d.isFunction(b)?b():null==b?"":b;e[e.length]=encodeURIComponent(a)+"\x3d"+encodeURIComponent(b)};void 0===b&&(b=d.ajaxSettings&&d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery&&!d.isPlainObject(a))d.each(a,function(){g(this.name,this.value)});else for(c in a)ea(c,a[c],b,g);return e.join("\x26").replace(uc,"+")};d.fn.extend({serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=d.prop(this, -"elements");return a?d.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!d(this).is(":disabled")&&wc.test(this.nodeName)&&!vc.test(a)&&(this.checked||!Ua.test(a))}).map(function(a,b){a=d(this).val();return null==a?null:d.isArray(a)?d.map(a,function(a){return{name:b.name,value:a.replace(Cb,"\r\n")}}):{name:b.name,value:a.replace(Cb,"\r\n")}}).get()}});d.ajaxSettings.xhr=void 0!==e.ActiveXObject?function(){var a;if(!(a=!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&& -La()))a:{try{a=new e.ActiveXObject("Microsoft.XMLHTTP");break a}catch(b){}a=void 0}return a}:La;var xc=0,Ra={},Sa=d.ajaxSettings.xhr();e.attachEvent&&e.attachEvent("onunload",function(){for(var a in Ra)Ra[a](void 0,!0)});w.cors=!!Sa&&"withCredentials"in Sa;(Sa=w.ajax=!!Sa)&&d.ajaxTransport(function(a){if(!a.crossDomain||w.cors){var b;return{send:function(c,e){var f,g=a.xhr(),k=++xc;g.open(a.type,a.url,a.async,a.username,a.password);if(a.xhrFields)for(f in a.xhrFields)g[f]=a.xhrFields[f];a.mimeType&& -g.overrideMimeType&&g.overrideMimeType(a.mimeType);a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(f in c)void 0!==c[f]&&g.setRequestHeader(f,c[f]+"");g.send(a.hasContent&&a.data||null);b=function(c,f){var h,l,m;if(b&&(f||4===g.readyState))if(delete Ra[k],b=void 0,g.onreadystatechange=d.noop,f)4!==g.readyState&&g.abort();else{m={};h=g.status;"string"===typeof g.responseText&&(m.text=g.responseText);try{l=g.statusText}catch(Mb){l=""}h||!a.isLocal||a.crossDomain?1223=== -h&&(h=204):h=m.text?200:404}m&&e(h,l,m,g.getAllResponseHeaders())};a.async?4===g.readyState?setTimeout(b):g.onreadystatechange=Ra[k]=b:b()},abort:function(){b&&b(void 0,!0)}}}});d.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){d.globalEval(a);return a}}});d.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1);a.crossDomain&&(a.type="GET", -a.global=!1)});d.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||d("head")[0]||z.documentElement;return{send:function(d,f){b=z.createElement("script");b.async=!0;a.scriptCharset&&(b.charset=a.scriptCharset);b.src=a.url;b.onload=b.onreadystatechange=function(a,d){if(d||!b.readyState||/loaded|complete/.test(b.readyState))b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,d||f(200,"success")};c.insertBefore(b,c.firstChild)},abort:function(){if(b)b.onload(void 0, -!0)}}}});var Db=[],eb=/(=)\?(?=&|$)|\?\?/;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Db.pop()||d.expando+"_"+cb++;this[a]=!0;return a}});d.ajaxPrefilter("json jsonp",function(a,b,c){var f,g,h,m=!1!==a.jsonp&&(eb.test(a.url)?"url":"string"===typeof a.data&&!(a.contentType||"").indexOf("application/x-www-form-urlencoded")&&eb.test(a.data)&&"data");if(m||"jsonp"===a.dataTypes[0])return f=a.jsonpCallback=d.isFunction(a.jsonpCallback)?a.jsonpCallback():a.jsonpCallback,m?a[m]=a[m].replace(eb, -"$1"+f):!1!==a.jsonp&&(a.url+=(db.test(a.url)?"\x26":"?")+a.jsonp+"\x3d"+f),a.converters["script json"]=function(){h||d.error(f+" was not called");return h[0]},a.dataTypes[0]="json",g=e[f],e[f]=function(){h=arguments},c.always(function(){e[f]=g;a[f]&&(a.jsonpCallback=b.jsonpCallback,Db.push(f));h&&d.isFunction(g)&&g(h[0]);h=g=void 0}),"script"});d.parseHTML=function(a,b,c){if(!a||"string"!==typeof a)return null;"boolean"===typeof b&&(c=b,b=!1);b=b||z;var f=mb.exec(a);c=!c&&[];if(f)return[b.createElement(f[1])]; -f=d.buildFragment([a],b,c);c&&c.length&&d(c).remove();return d.merge([],f.childNodes)};var Eb=d.fn.load;d.fn.load=function(a,b,c){if("string"!==typeof a&&Eb)return Eb.apply(this,arguments);var f,e,g,h=this,m=a.indexOf(" ");0<=m&&(f=d.trim(a.slice(m,a.length)),a=a.slice(0,m));d.isFunction(b)?(c=b,b=void 0):b&&"object"===typeof b&&(g="POST");0this.$items.length-1||0>c))return this.sliding?this.$element.one("slid",function(){h.to(c)}):g==c?this.pause().cycle():this.slide(c>g?"next":"prev",e(this.$items[c]))},pause:function(c){c||(this.paused=!0);this.$element.find(".next, .prev").length&&e.support.transition.end&&(this.$element.trigger(e.support.transition.end), -this.cycle(!0));clearInterval(this.interval);this.interval=null;return this},next:function(){if(!this.sliding)return this.slide("next")},prev:function(){if(!this.sliding)return this.slide("prev")},slide:function(c,g){var h=this.$element.find(".item.active"),m=g||h[c]();g=this.interval;var n="next"==c?"left":"right",p="next"==c?"first":"last",r=this;this.sliding=!0;g&&this.pause();m=m.length?m:this.$element.find(".item")[p]();p=e.Event("slide",{relatedTarget:m[0],direction:n});if(!m.hasClass("active")){this.$indicators.length&& -(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var c=e(r.$indicators.children()[r.getActiveIndex()]);c&&c.addClass("active")}));if(e.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(p);if(p.isDefaultPrevented())return;m.addClass(c);m[0].offsetWidth;h.addClass(n);m.addClass(n);this.$element.one(e.support.transition.end,function(){m.removeClass([c,n].join(" ")).addClass("active");h.removeClass(["active",n].join(" "));r.sliding=!1; -setTimeout(function(){r.$element.trigger("slid")},0)})}else{this.$element.trigger(p);if(p.isDefaultPrevented())return;h.removeClass("active");m.addClass("active");this.sliding=!1;this.$element.trigger("slid")}g&&this.cycle();return this}}};var x=e.fn.carousel;e.fn.carousel=function(c){return this.each(function(){var g=e(this),h=g.data("carousel"),m=e.extend({},e.fn.carousel.defaults,"object"==typeof c&&c),n="string"==typeof c?c:m.slide;h||g.data("carousel",h=new p(this,m));if("number"==typeof c)h.to(c); -else if(n)h[n]();else m.interval&&h.pause().cycle()})};e.fn.carousel.defaults={interval:5E3,pause:"hover"};e.fn.carousel.Constructor=p;e.fn.carousel.noConflict=function(){e.fn.carousel=x;return this};e(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(c){var g=e(this),h,m=e(g.attr("data-target")||(h=g.attr("href"))&&h.replace(/.*(?=#[^\s]+$)/,""));h=e.extend({},m.data(),g.data());var n;m.carousel(h);(n=g.attr("data-slide-to"))&&m.data("carousel").pause().to(n).cycle(); -c.preventDefault()})}(window.jQuery); -!function(e){var p=function(c,g){this.$element=e(c);this.options=e.extend({},e.fn.collapse.defaults,g);this.options.parent&&(this.$parent=e(this.options.parent));this.options.toggle&&this.toggle()};p.prototype={constructor:p,dimension:function(){return this.$element.hasClass("width")?"width":"height"},show:function(){var c,g,h,m;if(!this.transitioning&&!this.$element.hasClass("in")){c=this.dimension();g=e.camelCase(["scroll",c].join("-"));if((h=this.$parent&&this.$parent.find("\x3e .accordion-group \x3e .in"))&&h.length){if((m= -h.data("collapse"))&&m.transitioning)return;h.collapse("hide");m||h.data("collapse",null)}this.$element[c](0);this.transition("addClass",e.Event("show"),"shown");e.support.transition&&this.$element[c](this.$element[0][g])}},hide:function(){var c;!this.transitioning&&this.$element.hasClass("in")&&(c=this.dimension(),this.reset(this.$element[c]()),this.transition("removeClass",e.Event("hide"),"hidden"),this.$element[c](0))},reset:function(c){var e=this.dimension();this.$element.removeClass("collapse")[e](c|| -"auto")[0].offsetWidth;this.$element[null!==c?"addClass":"removeClass"]("collapse");return this},transition:function(c,g,h){var m=this,n=function(){"show"==g.type&&m.reset();m.transitioning=0;m.$element.trigger(h)};this.$element.trigger(g);g.isDefaultPrevented()||(this.transitioning=1,this.$element[c]("in"),e.support.transition&&this.$element.hasClass("collapse")?this.$element.one(e.support.transition.end,n):n())},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var x=e.fn.collapse; -e.fn.collapse=function(c){return this.each(function(){var g=e(this),h=g.data("collapse"),m=e.extend({},e.fn.collapse.defaults,g.data(),"object"==typeof c&&c);h||g.data("collapse",h=new p(this,m));if("string"==typeof c)h[c]()})};e.fn.collapse.defaults={toggle:!0};e.fn.collapse.Constructor=p;e.fn.collapse.noConflict=function(){e.fn.collapse=x;return this};e(document).on("click.collapse.data-api","[data-toggle\x3dcollapse]",function(c){var g=e(this),h;c=g.attr("data-target")||c.preventDefault()||(h= -g.attr("href"))&&h.replace(/.*(?=#[^\s]+$)/,"");h=e(c).data("collapse")?"toggle":g.data();g[e(c).hasClass("in")?"addClass":"removeClass"]("collapsed");e(c).collapse(h)})}(window.jQuery); -!function(e){function p(){e(".dropdown-backdrop").remove();e("[data-toggle\x3ddropdown]").each(function(){x(e(this)).removeClass("open")})}function x(c){var g=c.attr("data-target");g||(g=(g=c.attr("href"))&&/#/.test(g)&&g.replace(/.*(?=#[^\s]*$)/,""));(g=g&&e(g))&&g.length||(g=c.parent());return g}var c=function(c){var g=e(c).on("click.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",function(){g.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(c){c= -e(this);var g,h;if(!c.is(".disabled, :disabled")){g=x(c);h=g.hasClass("open");p();if(!h){if("ontouchstart"in document.documentElement)e('\x3cdiv class\x3d"dropdown-backdrop"/\x3e').insertBefore(e(this)).on("click",p);g.toggleClass("open")}c.focus();return!1}},keydown:function(c){var g,h,p;if(/(38|40|27)/.test(c.keyCode)&&(g=e(this),c.preventDefault(),c.stopPropagation(),!g.is(".disabled, :disabled"))){h=x(g);p=h.hasClass("open");if(!p||p&&27==c.keyCode)return 27==c.which&&h.find("[data-toggle\x3ddropdown]").focus(), -g.click();g=e("[role\x3dmenu] li:not(.divider):visible a",h);g.length&&(h=g.index(g.filter(":focus")),38==c.keyCode&&0c.left&&(e=-2*c.left,c.left=0,g.offset(c),p=g[0].offsetWidth),this.replaceArrow(e-m+p,p,"left")):this.replaceArrow(r-n,r,"top");x&&g.offset(c)},replaceArrow:function(c,e,h){this.arrow().css(h,c?50*(1-c/e)+"%":"")},setContent:function(){var c=this.tip(),e=this.getTitle();c.find(".tooltip-inner")[this.options.html?"html":"text"](e);c.removeClass("fade in top bottom left right")},hide:function(){function c(){var c= -setTimeout(function(){g.off(e.support.transition.end).detach()},500);g.one(e.support.transition.end,function(){clearTimeout(c);g.detach()})}var g=this.tip(),h=e.Event("hide");this.$element.trigger(h);if(!h.isDefaultPrevented())return g.removeClass("in"),e.support.transition&&this.$tip.hasClass("fade")?c():g.detach(),this.$element.trigger("hidden"),this},fixTitle:function(){var c=this.$element;(c.attr("title")||"string"!=typeof c.attr("data-original-title"))&&c.attr("data-original-title",c.attr("title")|| -"").attr("title","")},hasContent:function(){return this.getTitle()},getPosition:function(){var c=this.$element[0];return e.extend({},"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():{width:c.offsetWidth,height:c.offsetHeight},this.$element.offset())},getTitle:function(){var c=this.$element,e=this.options;return c.attr("data-original-title")||("function"==typeof e.title?e.title.call(c[0]):e.title)},tip:function(){return this.$tip=this.$tip||e(this.options.template)},arrow:function(){return this.$arrow= -this.$arrow||this.tip().find(".tooltip-arrow")},validate:function(){this.$element[0].parentNode||(this.hide(),this.options=this.$element=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(c){c=c?e(c.currentTarget)[this.type](this._options).data(this.type):this;c.tip().hasClass("in")?c.hide():c.show()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var x=e.fn.tooltip; -e.fn.tooltip=function(c){return this.each(function(){var g=e(this),h=g.data("tooltip"),m="object"==typeof c&&c;h||g.data("tooltip",h=new p(this,m));if("string"==typeof c)h[c]()})};e.fn.tooltip.Constructor=p;e.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'\x3cdiv class\x3d"tooltip"\x3e\x3cdiv class\x3d"tooltip-arrow"\x3e\x3c/div\x3e\x3cdiv class\x3d"tooltip-inner"\x3e\x3c/div\x3e\x3c/div\x3e',trigger:"hover focus",title:"",delay:0,html:!1,container:!1};e.fn.tooltip.noConflict= -function(){e.fn.tooltip=x;return this}}(window.jQuery); -!function(e){var p=function(c,e){this.init("popover",c,e)};p.prototype=e.extend({},e.fn.tooltip.Constructor.prototype,{constructor:p,setContent:function(){var c=this.tip(),e=this.getTitle(),h=this.getContent();c.find(".popover-title")[this.options.html?"html":"text"](e);c.find(".popover-content")[this.options.html?"html":"text"](h);c.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var c=this.$element,e=this.options; -return("function"==typeof e.content?e.content.call(c[0]):e.content)||c.attr("data-content")},tip:function(){this.$tip||(this.$tip=e(this.options.template));return this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var x=e.fn.popover;e.fn.popover=function(c){return this.each(function(){var g=e(this),h=g.data("popover"),m="object"==typeof c&&c;h||g.data("popover",h=new p(this,m));if("string"==typeof c)h[c]()})};e.fn.popover.Constructor=p;e.fn.popover.defaults= -e.extend({},e.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'\x3cdiv class\x3d"popover"\x3e\x3cdiv class\x3d"arrow"\x3e\x3c/div\x3e\x3ch3 class\x3d"popover-title"\x3e\x3c/h3\x3e\x3cdiv class\x3d"popover-content"\x3e\x3c/div\x3e\x3c/div\x3e'});e.fn.popover.noConflict=function(){e.fn.popover=x;return this}}(window.jQuery); -!function(e){function p(c,g){var h=e.proxy(this.process,this),m=e(c).is("body")?e(window):e(c),n;this.options=e.extend({},e.fn.scrollspy.defaults,g);this.$scrollElement=m.on("scroll.scroll-spy.data-api",h);this.selector=(this.options.target||(n=e(c).attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li \x3e a";this.$body=e("body");this.refresh();this.process()}p.prototype={constructor:p,refresh:function(){var c=this;this.offsets=e([]);this.targets=e([]);this.$body.find(this.selector).map(function(){var g= -e(this),g=g.data("target")||g.attr("href"),h=/^#\w/.test(g)&&e(g);return h&&h.length&&[[h.position().top+(!e.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),g]]||null}).sort(function(c,e){return c[0]-e[0]}).each(function(){c.offsets.push(this[0]);c.targets.push(this[1])})},process:function(){var c=this.$scrollElement.scrollTop()+this.options.offset,e=(this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight)-this.$scrollElement.height(),h=this.offsets,m=this.targets,n=this.activeTarget, -p;if(c>=e)return n!=(p=m.last()[0])&&this.activate(p);for(p=h.length;p--;)n!=m[p]&&c>=h[p]&&(!h[p+1]||c<=h[p+1])&&this.activate(m[p])},activate:function(c){this.activeTarget=c;e(this.selector).parent(".active").removeClass("active");c=e(this.selector+'[data-target\x3d"'+c+'"],'+this.selector+'[href\x3d"'+c+'"]').parent("li").addClass("active");c.parent(".dropdown-menu").length&&(c=c.closest("li.dropdown").addClass("active"));c.trigger("activate")}};var x=e.fn.scrollspy;e.fn.scrollspy=function(c){return this.each(function(){var g= -e(this),h=g.data("scrollspy"),m="object"==typeof c&&c;h||g.data("scrollspy",h=new p(this,m));if("string"==typeof c)h[c]()})};e.fn.scrollspy.Constructor=p;e.fn.scrollspy.defaults={offset:10};e.fn.scrollspy.noConflict=function(){e.fn.scrollspy=x;return this};e(window).on("load",function(){e('[data-spy\x3d"scroll"]').each(function(){var c=e(this);c.scrollspy(c.data())})})}(window.jQuery); -!function(e){var p=function(c){this.element=e(c)};p.prototype={constructor:p,show:function(){var c=this.element,g=c.closest("ul:not(.dropdown-menu)"),h=c.attr("data-target"),m,n;h||(h=(h=c.attr("href"))&&h.replace(/.*(?=#[^\s]*$)/,""));c.parent("li").hasClass("active")||(m=g.find(".active:last a")[0],n=e.Event("show",{relatedTarget:m}),c.trigger(n),n.isDefaultPrevented()||(h=e(h),this.activate(c.parent("li"),g),this.activate(h,h.parent(),function(){c.trigger({type:"shown",relatedTarget:m})})))},activate:function(c, -g,h){function m(){n.removeClass("active").find("\x3e .dropdown-menu \x3e .active").removeClass("active");c.addClass("active");p?(c[0].offsetWidth,c.addClass("in")):c.removeClass("fade");c.parent(".dropdown-menu")&&c.closest("li.dropdown").addClass("active");h&&h()}var n=g.find("\x3e .active"),p=h&&e.support.transition&&n.hasClass("fade");p?n.one(e.support.transition.end,m):m();n.removeClass("in")}};var x=e.fn.tab;e.fn.tab=function(c){return this.each(function(){var g=e(this),h=g.data("tab");h||g.data("tab", -h=new p(this));if("string"==typeof c)h[c]()})};e.fn.tab.Constructor=p;e.fn.tab.noConflict=function(){e.fn.tab=x;return this};e(document).on("click.tab.data-api",'[data-toggle\x3d"tab"], [data-toggle\x3d"pill"]',function(c){c.preventDefault();e(this).tab("show")})}(window.jQuery); -!function(e){var p=function(c,g){this.$element=e(c);this.options=e.extend({},e.fn.typeahead.defaults,g);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=e(this.options.menu);this.shown=!1;this.listen()};p.prototype={constructor:p,select:function(){var c=this.$menu.find(".active").attr("data-value");this.$element.val(this.updater(c)).change(); -return this.hide()},updater:function(c){return c},show:function(){var c=e.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});this.$menu.insertAfter(this.$element).css({top:c.top+c.height,left:c.left}).show();this.shown=!0;return this},hide:function(){this.$menu.hide();this.shown=!1;return this},lookup:function(c){this.query=this.$element.val();return!this.query||this.query.length=c-n?"bottom":null!=p&&g<=p?"top":!1;this.affixed!==c&&(this.affixed=c,this.unpin="bottom"==c?h.top-g:null,this.$element.removeClass("affix affix-top affix-bottom").addClass("affix"+(c?"-"+c:"")))}};var x=e.fn.affix;e.fn.affix=function(c){return this.each(function(){var g=e(this),h=g.data("affix"),m="object"==typeof c&&c;h||g.data("affix", -h=new p(this,m));if("string"==typeof c)h[c]()})};e.fn.affix.Constructor=p;e.fn.affix.defaults={offset:0};e.fn.affix.noConflict=function(){e.fn.affix=x;return this};e(window).on("load",function(){e('[data-spy\x3d"affix"]').each(function(){var c=e(this),g=c.data();g.offset=g.offset||{};g.offsetBottom&&(g.offset.bottom=g.offsetBottom);g.offsetTop&&(g.offset.top=g.offsetTop);c.affix(g)})})}(window.jQuery);var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; -(function(){function e(c){function e(c){var e=c.charCodeAt(0);if(92!==e)return e;var g=c.charAt(1);return(e=H[g])?e:"0"<=g&&"7">=g?parseInt(c.substring(1),8):"u"===g||"x"===g?parseInt(c.substring(2),16):c.charCodeAt(1)}function g(c){if(32>c)return(16>c?"\\x0":"\\x")+c.toString(16);c=String.fromCharCode(c);if("\\"===c||"-"===c||"["===c||"]"===c)c="\\"+c;return c}function h(c){var h=c.substring(1,c.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);c= -[];for(var m=[],n="^"===h[0],p=n?1:0,v=h.length;pr||122r||90r||122v[0]&&(v[1]+1>v[0]&&m.push("-"),m.push(g(v[1])));m.push("]");return m.join("")}function m(c){for(var e=c.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),g=e.length,m=[],v=0,A=0;v/, -q])):g.push(["com",/^#[^\n\r]*/,q,"#"]));e.cStyleComments&&(h.push(["com",/^\/\/[^\n\r]*/,q]),h.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));e.regexLiterals&&h.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(m=e.types)&& -h.push(["typ",m]);e=(""+e.keywords).replace(/^ | $/g,"");e.length&&h.push(["kwd",RegExp("^(?:"+e.replace(/[\s,]+/g,"|")+")\\b"),q]);g.push(["pln",/^\s+/,q," \r\n\t "]);h.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 c(g,h)}function h(c,e){function g(c){switch(c.nodeType){case 1:if(m.test(c.className))break; -if("BR"===c.nodeName)h(c),c.parentNode&&c.parentNode.removeChild(c);else for(c=c.firstChild;c;c=c.nextSibling)g(c);break;case 3:case 4:if(A){var e=c.nodeValue,r=e.match(p);if(r){var v=e.substring(0,r.index);c.nodeValue=v;(e=e.substring(r.index+r[0].length))&&c.parentNode.insertBefore(n.createTextNode(e),c.nextSibling);h(c);v||c.parentNode.removeChild(c)}}}}function h(c){function e(c,g){g=g?c.cloneNode(!1):c;var h=c.parentNode;if(h){h=e(h,1);c=c.nextSibling;h.appendChild(g);for(var m=c;m;m=c)c=m.nextSibling, -h.appendChild(m)}return g}for(;!c.nextSibling;)if(c=c.parentNode,!c)return;c=e(c.nextSibling,0);for(var g;(g=c.parentNode)&&1===g.nodeType;)c=g;x.push(c)}var m=/(?:^|\s)nocode(?:\s|$)/,p=/\r\n?|\n/,n=c.ownerDocument,r;c.currentStyle?r=c.currentStyle.whiteSpace:window.getComputedStyle&&(r=n.defaultView.getComputedStyle(c,q).getPropertyValue("white-space"));var A=r&&"pre"===r.substring(0,3);for(r=n.createElement("LI");c.firstChild;)r.appendChild(c.firstChild);for(var x=[r],E=0;E=G&&(h+=2);g>=C&&(c+=2)}}catch(Z){"console"in window&&console.log(Z&&Z.stack?Z.stack:Z)}}var r=["break,continue,do,else,for,if,return,while"],E=[[r,"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"],fa=[E,"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"],aa=[E,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], -V=[aa,"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"],E=[E,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],ha=[r,"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"], -Aa=[r,"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"],r=[r,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],N=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,Ta=/\S/,Ia=g({keywords:[fa,V,E,"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"+ -ha,Aa,r],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),ia={};m(Ia,["default-code"]);m(c([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), -"default-markup htm html mxml xhtml xml xsl".split(" "));m(c([["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"]);m(c([],[["atv",/^[\S\s]+/]]),["uq.val"]);m(g({keywords:fa,hashComments:!0,cStyleComments:!0,types:N}),"c cc cpp cxx cyc m".split(" "));m(g({keywords:"null,true,false"}),["json"]);m(g({keywords:V,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:N}),["cs"]);m(g({keywords:aa,cStyleComments:!0}),["java"]);m(g({keywords:r,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);m(g({keywords:ha,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), -["cv","py"]);m(g({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"]);m(g({keywords:Aa,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);m(g({keywords:E,cStyleComments:!0,regexLiterals:!0}),["js"]);m(g({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"]);m(c([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(c,e,g){var m=document.createElement("PRE");m.innerHTML=c;g&&h(m,g);W({g:e,i:g,h:m});return m.innerHTML};window.prettyPrint=function(c){function e(){for(var g=window.PR_SHOULD_USE_CONTINUATION?x.now()+250:Infinity;A\]\.\/\(\)\*\\\n\t\b\v]/g, -"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()};this.hasAnchorJSLink=function(c){var e=c.firstChild&&-1<(" "+c.firstChild.className+" ").indexOf(" anchorjs-link ");c=c.lastChild&&-1<(" "+c.lastChild.className+" ").indexOf(" anchorjs-link ");return e||c||!1}}}); \ No newline at end of file diff --git a/src/modules/onebusaway-gtfs-modules/current/licenses.html b/src/modules/onebusaway-gtfs-modules/current/licenses.html deleted file mode 100644 index fccde00..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/licenses.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – Project Licenses - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Overview

-

Typically the licenses listed for the project are that of the project itself, and not of dependencies.

-

Project Licenses

-

The Apache Software License, Version 2.0

-
-
-
-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/mailing-lists.html b/src/modules/onebusaway-gtfs-modules/current/mailing-lists.html deleted file mode 100644 index b06de60..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/mailing-lists.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – Project Mailing Lists - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Project Mailing Lists

-

These are the mailing lists that have been established for this project. For each list, there is a subscribe, unsubscribe, and an archive link.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameSubscribeUnsubscribePostArchive
onebusaway-users---groups.google.com
onebusaway-developers---groups.google.com
onebusaway-api---groups.google.com
onebusaway-issues---groups.google.com
onebusaway-commits---groups.google.com
onebusaway-ci---groups.google.com
-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/modules.html b/src/modules/onebusaway-gtfs-modules/current/modules.html deleted file mode 100644 index 5923e5a..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/modules.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – Project Modules - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Project Modules

-

This project has declared the following modules:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescription
onebusaway-gtfsA Java library for reading and writing General Transit Feed Spec feeds
onebusaway-gtfs-hibernateA Java library for reading and writing General Transit Feed Spec feeds into a database
onebusaway-gtfs-hibernate-cliA command-line utility for loading GTFS data into a database.
onebusaway-gtfs-transformerA Java library for transforming Google Transit Feed Spec feeds
onebusaway-gtfs-transformer-cliA Java application for transforming Google Transit Feed Spec feeds
onebusaway-gtfs-transformer-cli-awsA Java application for transforming Google Transit Feed Spec feeds with AWS extensions
onebusaway-gtfs-mergeA tool for merging GTFS feeds.
onebusaway-gtfs-merge-cliCommand-line interface to the GTFS merge tool.
-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/onebusaway-gtfs-hibernate-cli.html b/src/modules/onebusaway-gtfs-modules/current/onebusaway-gtfs-hibernate-cli.html deleted file mode 100644 index ba04b84..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/onebusaway-gtfs-hibernate-cli.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – GTFS Hibernate Command-Line Utility - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Introduction

-

The onebusaway-gtfs-hibernate-cli command-line utility is a simple command-line tool for loading a GTFS feed into a database.

-

Getting the Application

-

You can download the application here:

-

onebusaway-gtfs-hibernate-cli-1.4.16-SNAPSHOT.jar

-

Using the Application

-

You'll need a Java 11 runtime installed to run the client. To run the application:

-
java -classpath onebusaway-gtfs-hiberante-cli.jar:your-database-jdbc.jar \
- org.onebusaway.gtfs.GtfsDatabaseLoaderMain \
- --driverClass=... \
- --url=... \
- --username=... \
- --password=... \
- gtfs_path
-

Note that the utility doesn't include any JDBC client jars for any databases by default. You will need to download an appropriate JDBC client for your database and include it on the classpath when running the utilty. You will also need to specify the appropriate JDBC driver class and url for your database using the command-line arguments specified below.

-

Arguments

-
    -
  • --driverClass=... : JDBC driver class for your JDBC provider (eg. "org.hsqldb.jdbcDriver")
  • -
  • --url=... : JDBC connection url for your database (eg. "jdbc:hsqldb:mem:temp_db")
  • -
  • --username=... : JDBC connection username
  • -
  • --password=... : JDBC connection password
-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/onebusaway-gtfs-merge-cli.html b/src/modules/onebusaway-gtfs-modules/current/onebusaway-gtfs-merge-cli.html deleted file mode 100644 index aa61fcd..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/onebusaway-gtfs-merge-cli.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – GTFS Merge Command-Line Application - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Introduction

-

NOTE: This tool is a work in progress! This documentation may not be up-to-date.

-

The onebusaway-gtfs-merge-cli command-line application is a simple command-line tool for merging GTFS feeds.

-

Getting the Application

-

You can download the application Maven Central.

-

Go tohttps://repo1.maven.org/maven2/org/onebusaway/onebusaway-gtfs-merge-cli/. Select the version you want and get the URL for the largest jar file. An example would be https://repo1.maven.org/maven2/org/onebusaway/onebusaway-gtfs-merge-cli/3.2.2/onebusaway-gtfs-merge-cli-3.2.2.jar

-

Using the Application

-

You'll need a Java 11 runtime installed to run the client. To run the application:

-
java -jar onebusaway-gtfs-merge-cli.jar [--args] input_gtfs_path_a input_gtfs_path_b ... output_gtfs_path
-

Note: Merging large GTFS feeds is often processor and memory intensive. You'll likely need to increase the max amount of memory allocated to Java with an option like -Xmx1G (adjust the limit as needed). I also recommend adding the -server argument if you are running the Oracle or OpenJDK, as it can really increase performance.

-

Configuring the Application

-

The merge application supports a number of options and arguments for configuring the application's behavior. The general pattern is to specify options for each type of file in a GTFS feed using the --file option, specifying specific options for each file type after the --file option. Here's a quick example:

-
--file=routes.txt --duplicateDetection=identity --file=calendar.txt --logDroppedDuplicates ...
-

The merge application supports merging the following files:

-
    -
  • agency.txt
  • -
  • stops.txt
  • -
  • routes.txt
  • -
  • trips.txt and stop_times.txt
  • -
  • calendar.txt and calendar_dates.txt
  • -
  • shapes.txt
  • -
  • fare_attributes.txt
  • -
  • fare_rules.txt
  • -
  • frequencies.txt
  • -
  • transfers.txt
-

You can specify merge options for each of these files using the --file=gtfs_file.txt option. File types listed together (eg. trips.txt>> and <<<stop_times.txt) are handled by the same merge strategy, so specifying options for either will have the same effect. For details on options you might specify, read on.

-

Handling Duplicates

-

The main issue to considering when merging GTFS feeds is the handling of duplicate entries between the two feeds, including how to identify duplicates and what to do with duplicates when they are found.

-

Identifying Duplicates

-

We support a couple of methods for determining when entries from two different feeds are actually duplicates. By default, the merge tool will attempt to automatically determine the best merge strategy to use. You can also control the specific strategy used on a per-file basis using the --duplicateDetection argument. You can specify any of the following strategies for duplicate detection.

-
    -
  • --duplicateDetection=identity - If two entries have the same id (eg. stop id, route id, trip id), then they are considered the same. This is the more strict matching policy.
  • -
  • --duplicateDetection=fuzzy - If two entries have common elements (eg. stop name or location, route short name, trip stop sequence), then they are considered the same. This is the more lenient matching policy, and is highly dependent on the type of GTFS entry being matched.
  • -
  • --duplicateDetection=none - Entries between two feeds are never considered to be duplicates, even if they have the same id or similar properties.
-

Logging Duplicates

-

Sometimes your feed might have unexpected duplicates. You can tell the merge tool to log duplicates it finds or even immediately exit with the following arguments:

-
    -
  • --logDroppedDuplicates - log a message when a duplicate is found
  • -
  • --errorOnDroppedDuplicates - throw an exception when a duplicate is found, stopping the program
-

Examples

-

Handling a Service Change

-

Agencies often schedule major changes to their system around a particular date, with one GTFS feed for before the service change and a different GTFS feed for after. We'd like to be able to merge these disjoint feeds into one feed with continuous coverage.

-

In our example, an agency produces two feeds where the entries in agency.txt and stops.txt are exactly the same, so the default policy of identifying and dropping duplicates will work fine there. The routes.txt file is a bit trickier, since the route ids are different between the two feeds but the entries are largely the same. We will use fuzzy duplicate detection to match the routes between the two feeds.

-

The next issue is the calendar.txt file. The agency uses the same service_id values in both feeds (eg. WEEK, SAT, SUN) with different start and end dates in the two feeds. If the default policy of dropping duplicate entries was used, we'd lose the dates in one of the service periods. Instead, we rename duplicates such that the service ids from the second feed will be renamed to b-WEEK, b-SAT, etc. and all trips.txt entries in the second feed will be updated appropriately. The result is that trips from the first and second feed will both have the proper calendar entries in the merged feed.

-

Putting it all together, here is what the command-line options for the application would look like:

-
--file=routes.txt --fuzzyDuplicates --file=calendar.txt --renameDuplicates
-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/onebusaway-gtfs-transformer-cli.html b/src/modules/onebusaway-gtfs-modules/current/onebusaway-gtfs-transformer-cli.html deleted file mode 100644 index 5584245..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/onebusaway-gtfs-transformer-cli.html +++ /dev/null @@ -1,302 +0,0 @@ - - - - - - - - - - - - onebusaway-gtfs-modules – GTFS Transformation Command-Line Application - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Introduction

-

The onebusaway-gtfs-transformer-cli command-line application is a simple command-line tool for transforming GTFS feeds.

-
-

Requirements

-
    -
  • Java 11 or greater
-

Getting the Application

-

You can download the application Maven Central.

-

Go to https://repo1.maven.org/maven2/org/onebusaway/onebusaway-gtfs-transformer-cli/and select the largest jar file from the version you would like to use, for example https://repo1.maven.org/maven2/org/onebusaway/onebusaway-gtfs-transformer-cli/2.0.0/onebusaway-gtfs-transformer-cli-2.0.0.jar

-

Using the Application

-

To run the application:

-
java -jar onebusaway-gtfs-transformer-cli.jar [-args] input_gtfs_path ... output_gtfs_path
-

input_gtfs_path and output_gtfs_path can be either a directory containing a GTFS feed or a .zip file.

-

Note: Transforming large GTFS feeds is processor and memory intensive. You'll likely need to increase the max amount of memory allocated to Java with an option like -Xmx1G or greater. Adding the -server argument if you are running the Oracle or OpenJDK can also increase performance.

-

Arguments

-
    -
  • --transform=... : specify a transformation to apply to the input GTFS feed (see syntax below)
  • -
  • --agencyId=id : specify a default agency id for the input GTFS feed
  • -
  • --overwriteDuplicates : specify that duplicate GTFS entities should overwrite each other when read
-

Transform Syntax

-

Transforms are specified as snippets of example. A simple example to remove a stop might look like:

-
{"op":"remove","match":{"file":"stops.txt","stop_name":"Stop NameP"}}
-

You can pass those snippets to the application in a couple of ways. The simplest is directly on the command line.

-
--transform='{...}'
-

You can have multiple --transform arguments to specify multiple transformations. However, if you have a LOT of transformations that you wish to apply, it can be easier to put them in a file, with a JSON snippet per line. Then specify the file on the command-line:

-
  --transform=path/to/local-file
-

You can even specify a URL where the transformations will be read:

-
--transform=http://server/path
-

Matching

-

We provide a number of configurable transformations out-of-the-box that can do simple operations like adding, updating, retaining, and removing GTFS entities. Many of the transforms accept a "`match`" term that controls how the rule matches against entities:

-
{"op":..., "match":{"file":"routes.txt", "route_short_name":"574"}}
-

Here, the match snippet at minimum requires a `file` property that specifies the type of GTFS entity to match. Any file name defined in the GTFS specification can be used.

-

You can specify additional properties and values to match against as needed. Again, use the field names defined for each file name in the GTFS specification. For example, the snippet above will match any entry in `routes.txt` with a `route_short_name` value of `574`.

-

Regular Expressions

-

Property matching also supports regular expressions that allow you to match property values conforming to a regexp pattern. For example, the snippet below will match any entry in `stops.txt` with a `stop_id` starting with `de:08`.

-
{"op":..., "match":{"file":"stops.txt", "stop_id":"m/^de:08.*/"}}
-

Compound Property Expressions

-

Property matching also supports compound property expressions that allow you to match across GTFS relational references. Let's look at a simple example:

-
{"op":..., "match":{"file":"trips.txt", "route.route_short_name":"10"}}
-

Here the special `routes` property references the route entry associated with each trip, allowing you to match the properties of the route. You can even chain references, like `route.agency` to match against the agency associated with the trip. Here is the full list of supported compound property references:

-
{"op":..., "match":{"file":"routes.txt", "agency.name":"Metro"}}
-{"op":..., "match":{"file":"trips.txt", "route.route_short_name":"10"}}
-{"op":..., "match":{"file":"stop_times.txt", "stop.stop_id":"153"}}
-{"op":..., "match":{"file":"stop_times.txt", "trip.route.route_type":3}}
-{"op":..., "match":{"file":"frequencies.txt", "trip.service_id":"WEEKDAY"}}
-{"op":..., "match":{"file":"transfers.txt", "fromStop.stop_id":"173"}}
-{"op":..., "match":{"file":"transfers.txt", "toStop.stop_id":"173"}}
-{"op":..., "match":{"file":"fare_rules.txt", "fare.currencyType":"USD"}}
-{"op":..., "match":{"file":"fare_rules.txt", "route.route_short_name":"10"}}
-

Multi-Value Matches

-

The compound property expressions shown above are all for 1-to-1 relations, but matching also supports a limited form of multi-value matching for 1-to-N relations. Let's look at a simple example:

-
{"op":..., "match":{"file":"routes.txt", "any(trips.trip_headsign)":"Downtown"}}
-

Notice the addition of `any(...)` around the property name. Here we are using a special `trips` property that expands to include all trips associated with each route. Now, if *any* trip belonging to the route has the specified `trip_headsign` value, then the route matches. Here is the full list of supported multi-value property matches:

-
{"op":..., "match":{"file":"agency.txt", "any(routes.X)":"Y"}}
-{"op":..., "match":{"file":"routes.txt", "any(trips.X)":"Y"}}
-{"op":..., "match":{"file":"trips.txt", "any(stop_times.X)":"Y"}}
-

Collection-Like Entities

-

There are a number of GTFS entites that are more effectively collections identified by a common key. For example, shape points in `shapes.txt` linked by a common `shape_id` value or `calendar.txt` and `calendar_dates.txt` entries linked by a common `service_id` value. You can use a special `collection `match clause to match against the entire collection.

-
{"op":..., "match":{"collection":"shape", "shape_id":"XYZ"}}
-{"op":..., "match":{"collection":"calendar", "service_id":"XYZ"}}
-

You can use the calendar collection matches, for example, to retain a calendar, including all `calendar.txt`, `calendar_dates.txt`, and `trip.txt` entries that reference the specified `service_id` value. This convenient short-hand is easier than writing the equivalent expression using references to the three file types separately.

-

Types of Transforms

-

Add an Entity

-

Create and add a new entity to the feed.

-
{"op":"add","obj":{"file":"agency.txt", "agency_id":"ST", "agency_name":"Sound Transit",
-"agency_url":"http://www.soundtransit.org", "agency_timezone":"America/Los_Angeles"}}
-

Update an Entity

-

You can update arbitrary fields of a GTFS entity.

-
{"op":"update", "match":{"file":"routes.txt", "route_short_name":"574"}, "update":{"agency_id":"ST"}}
-

Normally, update values are used as-is. However, we support a number of special update operations:

-

Find/Replace

-
{"op":"update", "match":{"file":"trips.txt"}, "update":{"trip_short_name":"s/North/N/"}}
-

By using s/.../.../ syntax in the update value, the update will perform a find-replace operation on the specified property value. Consider the following example:

-
{"op":"update", "match":{"file":"trips.txt"}, "update":{"trip_short_name":"s/North/N/"}}
-

Here, a trip with a headsign of North Seattle will be updated to N Seattle.

-

Path Expressions

-

By using path(...) syntax in the update value, the expression will be treated as a compound Java bean properties path expression. This path expression will be evaluated against the target entity to produce the update value. Consider the following example:

-
{"op":"update", "match":{"file":"trips.txt"}, "update":{"trip_short_name":"path(route.longName)"}}
-

Here, the trip_short_name field is updated for each trip in the feed. The value will be copied from the route_long_name field of each trip's associated route.

-

Retain an Entity

-

We also provide a powerful mechanism for selecting just a sub-set of a feed. You can apply retain operations to entities you wish to keep and all the supporting entities referenced by the retained entity will be retained as well. Unreferenced entities will be pruned.

-

In the following example, only route B15 will be retained, along with all the stops, trips, stop times, shapes, and agencies linked to directly by that route.

-
{"op":"retain", "match":{"file":"routes.txt", "route_short_name":"B15"}}
-

By default, we retain across block_id values specified in trips.txt. That means if a particular trip is retained (perhaps because its parent route is retained), and the trip specifies a block_id, then all the trips referencing that block_id will be retained as well, along with their own routes, stop times, and shapes. This can potentially lead to unexpected results if you retain one route and suddenly see other routes included because they are linked by block_id.

-

You can disable this feature by specifying retainBlocks: false in the JSON transformer snippet. Here is an example:

-
{"op":"retain","match":{"file":"routes.txt", "route_short_name":"B15"}, "retainBlocks":false}
-

Remove an Entity

-

You can remove a specific entity from a feed.

-
{"op":"remove", "match":{"file":"stops.txt", "stop_name":"Stop Name"}}
-

Note that removing an entity has a cascading effect. If you remove a trip, all the stop times that depend on that trip will also be removed. If you remove a route, all the trips and stop times for that route will be removed.

-

Trim a Trip

-

You can remove stop times from the beginning or end of a trip using the "trim_trip" operation. Example:

-
{"op":"trim_trip", "match":{"file":"trips.txt", "route_id":"R10"}, "from_stop_id":"138S"}
-

For any trip belonging to the specified route and passing through the specified stop, all stop times from the specified stop onward will be removed from the trip. You can also remove stop times from the beginning of the trip as well:

-
{"op":"trim_trip", "match":{"file":"trips.txt", "route_id":"R10"}, "to_stop_id":"138S"}
-

Or both:

-
{"op":"trim_trip", "match":{"file":"trips.txt", "route_id":"R10"}, "to_stop_id":"125S", "from_stop_id":"138S"}
-

Generate Stop Times

-

You can generate stop time entries for a trip. Example:

-
{"op":"stop_times_factory", "trip_id":"TRIP01", "start_time":"06:00:00", "end_time":"06:20:00", "stop_ids":["S01", "S02", "S03"]}
-

A series of entries in `stop_times.txt` will be generated for the specified trip, traveling along the specified sequence of stops. The departure time for the first stop will be set from the `start_time` field, the arrival time for the last stop will be set from the `end_time` field, and the times for intermediate stops will be interpolated based on their distance along the trip.

-

Extend Service Calendars

-

Sometimes you need to extend the service dates in a GTFS feed, perhaps in order to temporarily extend an expired feed. Extending the feed by hand can be a tedious task, especially when the feed uses a complex combination of `calendar.txt` and `calendar_dates.txt` entries. Fortunately, the GTFS tranformer tool supports a `calendar_extension` operation that can help simplify the work. Example:

-
{"op":"calendar_extension", "end_date":"20130331"}
-

The operation requires just one argument by default: `end_date` to specify the new end-date for the feed. The operation does its best to intelligently extend each service calendar, as identified by a `service_id` in `calendar.txt` or `calendar_dates.txt`. There are a few wrinkles to be aware of, however.

-

Extending a `calendar.txt` entry is usually just a matter of setting a new `end_date` value in the feed. Extending a service calendar represented only through `calendar_dates.txt` entries is a bit more complex. For such a service calendar, we attempt to determine which days of the week are typically active for the calendar and extend only those. For example, is the calendar is always active on Saturday but has one or two Sunday entries, we will only add entries for Saturday when extending the calendar.

-

Also note that we will not extend "inactive" service calendars. A service calendar is considered inactive if its last active service date is already in the past. By default, any calendar that's been expired for more than two weeks is considered inactive. This helps handle feeds that have merged two service periods in one feed. For example, one calendar active from June 1 - July 31 and a second calendar active from August 1 to September 31. If it's the last week of September and you are extending the feed, you typically only mean to extend the second service calendar. You can control this inactive calendar cutoff with an optional argument:

-
{"op":"calendar_extension", "end_date":"20130331", "inactive_calendar_cutoff":"20121031"}
-

Calendars that have expired before the specified date will be considered inactive and won't be extended.

-

Note: We don't make any effort to extend canceled service dates, as specified in `calendar_dates.txt` for holidays and other special events. It's too tricky to automatically determine how they should be handled. You may need to still handle those manually.

-

Deduplicate Calendar Entries

-

Finds GTFS service_ids that have the exact same set of active days and consolidates each set of duplicated ids to a single service_id entry.

-
{"op":"deduplicate_service_ids"}
-

Merge Trips and Simplify Calendar Entries

-

Some agencies model their transit schedule favoring multiple entries in calendar_dates.txt as opposed to a more concise entry in calendar.txt. A smaller number of agencies take this scheme even further, creating trips.txt entries for each service date, even when the underlying trips are exactly the same. This can cause the size of the GTFS to grow dramatically as trips and stop times are duplicated.

-

We provide a simple transformer that can attempt to detect these duplicate trips, remove them, and simplify the underlying calendar entries to match. To run it, apply the following transform:

-
{"op":"calendar_simplification"}
-

The transform takes additional optional arguments to control its behavior:

-
    -
  • min_number_of_weeks_for_calendar_entry - how many weeks does a service id need to span before it gets its own entry in calendar.txt (default=3)
  • -
  • day_of_the_week_inclusion_ratio - if a service id is being modeled with a calendar.txt entry, how frequent does a day of the week need to before it's modeled positively in calendar.txt with any negative exceptions noted in calendar_dates.txt, vs making no entry for that day of the week in calendar.txt and instead noting any positive exceptions in calendar_dates.txt. This is useful for filtering out a calendar that is always active on Sunday, but has one or two Mondays for a holiday. Frequency is defined as how often the target day of the week occurs vs the count for day of the week appearing MOST frequently for the service id (default=0.5)
  • -
  • undo_google_transit_data_feed_merge_tool - set to true to indicate that merged trip ids, as produced by the GoogleTransitDataFeedMergeTool, should be un-mangled where possible. Merged trip ids will often have the form OriginalTripId_merged_1234567. We attempt to set the trip id back to OrginalTripId where appropriate.
-

Shift Negative Stop Times

-

Some agencies have trips that they model as starting BEFORE midnight on a given service date. For these agencies, it would be convenient to represent these trips with negative arrival and departure times in stop_times.txt. The GTFS spec and many GTFS consumers do not support negative stop times, however.

-

To help these agencies, we provide a transform to "fix" GTFS feeds with negative stop times by identifying such trips, shifting the arrival and departure times to make them positive, and updating the service calendar entries for these trips such that the resulting schedule is semantically the same.

-

To run it, apply the following transform:

-
{"op":"shift_negative_stop_times"}
-

A note on negative stop times: When writing negative stop times, the negative value ONLY applies to the hour portion of the time. Here are a few examples:

-
    -
  • "-01:45:00" => "23:45:00" on the previous day
  • -
  • "-05:13:32" => "19:13:32" on the previous day
-

Remove non-revenue stops

-

Stop_times which do not allow pick up or drop off are also known as non-revenue stops. Some GTFS consumers display these stops as if they were stops that passengers can use, at which point it is helpful to remove them.

-

To remove them, apply the following transform:

-
{"op":"remove_non_revenue_stops"}
-

Terminals (the first and last stop_time of a trip) can be excluded from removal with the following transform:

-
{"op":"remove_non_revenue_stops_excluding_terminals"}}
-

Replacing trip_headsign with the last stop

-

Certain feeds contain unhelpful or incorrect trip_headsign. They can be replaced with the last stop's stop_name.

-
{"op":"last_stop_to_headsign"}
-

Arbitrary Transform

-

We also allow you to specify arbitrary transformations as well. Here, you specify your transformation class and we will automatically instantiate it for use in the transform pipeline.

-
{"op":"transform", "class":"some.class.implementing.GtfsTranformStrategy"}
-

We additionally provide a mechanism for setting additional properties of the transform. For all additional properties specified in the JSON snippet, we will attempt to set that Java bean property value on the instantiated transformation object. See for example:

-
{"op":"transform", "class":"org.onebusaway.gtfs_transformer.updates.ShapeTransformStrategy", "shape_id":"6010031", \
-"shape":"wjb~G|abmVpAz]v_@@?wNE_GDaFs@?@dFX`GGjN__@A"}
-

Here, we set additional properties on the `ShapeTransformStrategy`, making it possible to reuse and configure a generic transformer to your needs.

-

Additional Examples

-

How to Reduce your GTFS

-

We can apply a modification that retains certain GTFS entities and all other entities required directly or indirectly by those entities. For example, create a file with the following contents (call it modifications.txt, as an example):

-
{"op":"retain", "match":{"file":"routes.txt", "route_short_name":"B15"}}
-{"op":"retain", "match":{"file":"routes.txt", "route_short_name":"B62"}}
-{"op":"retain", "match":{"file":"routes.txt", "route_short_name":"B63"}}
-{"op":"retain", "match":{"file":"routes.txt", "route_short_name":"BX19"}}
-{"op":"retain", "match":{"file":"routes.txt", "route_short_name":"Q54"}}
-{"op":"retain", "match":{"file":"routes.txt", "route_short_name":"S53"}}
-

Then run:

-
java -jar onebusaway-gtfs-transformer-cli.jar --transform=modifications.txt source-gtfs.zip target-gtfs.zip
-

The resulting GTFS will have the retained only the routes with the matching short names and all other entities required to support those routes.

-

Add a Full Schedule to an Existing Feed

-

Consider an existing feed with a number of routes and stops. We can add an entirely new route, with trips and stop-times and frequency-based service, using the transform. This can be handy to add temporary service to an existing feed.

-
{"op":"add", "obj":{"file":"routes.txt", "route_id":"r0", "route_long_name":"Temporary Shuttle", "route_type":3}}
-
-{"op":"add", "obj":{"file":"calendar.txt", "service_id":"WEEKDAY", "start_date":"20120601", "end_date":"20130630", "monday":1, "tuesday":1, "wednesday":1, "thursday":1, "friday":1}}
-
-{"op":"add", "obj":{"file":"trips.txt", "trip_id":"t0", "route_id":"r0", "service_id":"WEEKDAY", "trip_headsign":"Inbound"}}
-{"op":"add", "obj":{"file":"trips.txt", "trip_id":"t1", "route_id":"r0", "service_id":"WEEKDAY", "trip_headsign":"Outbound"}}
-
-{"op":"add","obj":{"file":"frequencies.txt","trip_id":"t0","start_time":"06:00:00","end_time":"22:00:00","headway_secs":900}}
-{"op":"add","obj":{"file":"frequencies.txt","trip_id":"t1","start_time":"06:00:00","end_time":"22:00:00","headway_secs":900}}
-
-{"op":"stop_times_factory", "trip_id":"t0", "start_time":"06:00:00", "end_time":"06:20:00", "stop_ids":["s0", "s1", "s2", "s3"]}
-{"op":"stop_times_factory", "trip_id":"t1", "start_time":"06:00:00", "end_time":"06:20:00", "stop_ids":["s3", "s2", "s1", "s0"]}
-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/plugin-management.html b/src/modules/onebusaway-gtfs-modules/current/plugin-management.html deleted file mode 100644 index d8fc5ea..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/plugin-management.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – Project Plugin Management - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Project Plugin Management

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GroupIdArtifactIdVersion
org.apache.maven.pluginsmaven-antrun-plugin1.3
org.apache.maven.pluginsmaven-assembly-plugin2.5.5
org.apache.maven.pluginsmaven-clean-plugin2.6.1
org.apache.maven.pluginsmaven-compiler-plugin3.8.0
org.apache.maven.pluginsmaven-dependency-plugin2.10
org.apache.maven.pluginsmaven-deploy-plugin2.8.2
org.apache.maven.pluginsmaven-gpg-plugin1.1
org.apache.maven.pluginsmaven-install-plugin2.5.2
org.apache.maven.pluginsmaven-jar-plugin2.6
org.apache.maven.pluginsmaven-javadoc-plugin2.7
org.apache.maven.pluginsmaven-project-info-reports-plugin2.4
org.apache.maven.pluginsmaven-release-plugin2.5.3
org.apache.maven.pluginsmaven-resources-plugin2.7
org.apache.maven.pluginsmaven-shade-plugin1.7.1
org.apache.maven.pluginsmaven-site-plugin3.7.1
org.apache.maven.pluginsmaven-source-plugin2.4
org.apache.maven.pluginsmaven-surefire-plugin2.22.1
org.apache.maven.pluginsmaven-war-plugin2.6
-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/plugins.html b/src/modules/onebusaway-gtfs-modules/current/plugins.html deleted file mode 100644 index 40b063b..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/plugins.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – Project Plugins - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Project Build Plugins

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GroupIdArtifactIdVersion
com.mycilalicense-maven-plugin2.11
org.apache.maven.pluginsmaven-clean-plugin2.6.1
org.apache.maven.pluginsmaven-compiler-plugin3.10.1
org.apache.maven.pluginsmaven-deploy-plugin2.8.2
org.apache.maven.pluginsmaven-install-plugin2.5.2
org.apache.maven.pluginsmaven-jar-plugin3.0.1
org.apache.maven.pluginsmaven-javadoc-plugin3.4.1
org.apache.maven.pluginsmaven-release-plugin2.5.3
org.apache.maven.pluginsmaven-site-plugin3.12.1
-

Project Report Plugins

- - - - - - - - -
GroupIdArtifactIdVersion
org.apache.maven.pluginsmaven-project-info-reports-plugin3.4.2
-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/project-info.html b/src/modules/onebusaway-gtfs-modules/current/project-info.html deleted file mode 100644 index d782273..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/project-info.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – Project Information - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Project Information

-

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 Maven on behalf of the project.

-

Overview

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DocumentDescription
CI ManagementThis document lists the continuous integration management system of this project for building and testing code on a frequent, regular basis.
Dependency ConvergenceThis document presents the convergence of dependency versions across the entire project, and its sub modules.
Dependency InformationThis document describes how to include this project as a dependency using various dependency management tools.
Dependency ManagementThis document lists the dependencies that are defined through dependencyManagement.
Distribution ManagementThis document provides informations on the distribution management of this project.
AboutA collection of GTFS libraries and tools.
Issue ManagementThis document provides information on the issue management system used in this project.
LicensesThis document lists the project license(s).
Mailing ListsThis document provides subscription and archive information for this project's mailing lists.
Project ModulesThis document lists the modules (sub-projects) of this project.
Plugin ManagementThis document lists the plugins that are defined through pluginManagement.
PluginsThis document lists the build plugins and the report plugins used by this project.
Source Code ManagementThis document lists ways to access the online source repository.
SummaryThis document lists other related information of this project
TeamThis document provides information on the members of this project. These are the individuals who have contributed to the project in one form or another.
-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/release-notes.html b/src/modules/onebusaway-gtfs-modules/current/release-notes.html deleted file mode 100644 index 9e8cf76..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/release-notes.html +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Release Notes

-

1.4.16-SNAPSHOT

-
    -
  • Support for "extensions", allowing users of the library to add new GTFS fields for existing files, for reading and writing, without needing to modify OneBusAway source code. For more details, see Reading Custom Fields.
  • -
  • Support for the proposed route_sort_order field in routes.txt.
  • -
  • Support for the pathway_type field in pathways.txt.
  • -
  • Bug fix for default-value timepoint field in stop_times.txt - issue
  • -
  • Bug fix to ensure fare_attributes.txt transfers column is always included in GTFS output - issue
  • -
  • Support for "path" expressions in GTFS transformer update ops - issue
  • -
  • Support for "substitute" expressions in GTFS transformer update ops - issue
  • -
  • Full Documentation: http://developer.onebusaway.org/modules/onebusaway-gtfs-modules/1.4.16-SNAPSHOT/
-

1.3.3

-
    -
  • Support for the proposed timepoint field in stop_times.txt.
  • -
  • Support for bikes_allowed field in both routes.txt and trips.txt, with 0 = undefined, 1 = bikes allowed, 2 = bikes NOT allowed. Matches the wheel-chair accessibility semantics.
  • -
  • New transformer to simply calendar.txt and calendar_dates.txt entries, combining service_ids that resolve to the exact same set of service dates.
  • -
  • New transform strategy to fix shapes which are used for the wrong direction of travel.
  • -
  • Fix to properly handle using the library in non-English locales. issue
  • -
  • Full Documentation: http://developer.onebusaway.org/modules/onebusaway-gtfs-modules/1.3.3/
-

1.3.2

-
    -
  • Introduce onebusaway-gtfs-hibernate-cli, a utility for loading GTFS into a database - details
  • -
  • Support for stops.txt platform_code field - issue
  • -
  • Support for negative arrival and departure times in stop_times.txt, along with a "shift_negative_stop_times" GTFS transformer operation for normalizing feeds with negative stop-times.
  • -
  • Fix workaround for Java timezone bug - issue
  • -
  • Introduce RemoveRepeatedStopTimesInSameTripStrategy, a GTFS transformer strategy - javadoc
  • -
  • Full Documentation: http://developer.onebusaway.org/modules/onebusaway-gtfs-modules/1.3.2/
-

1.3.1

-
    -
  • Support for stops.txt stop_timezone field - issue
  • -
  • Support trip-2-trip transfers extension to transfers.txt - issue
  • -
  • Reduced memory consumption for ShapePoints and StopTimes - issue
  • -
  • Always include route_short_name and route_long_name in routes.txt output - issue
  • -
  • onebusaway-gtfs-transformer-cli: -
      -
    • Use GTFS file and field names instead of OBA Java object and property names in matchers and updaters.
    • -
    • Support for "any(...)" matches.
    • -
    • New transforms: "trim_trip", "stop_times_factory", "calendar_extension", and "calendar_simplification".
  • -
  • onebusaway-gtfs-merge-cli: -
      -
    • Introduce a new OneBusAway GTFS merge tool for combining GTFS feeds.
  • -
  • Bug fixes: -
      -
    • NPE in ServiceDateUserType - issue
    • -
    • Better handling of routes.txt agency resolution - issue
    • -
    • Crash with calendar simplification transform for service_id with no active dates - issue
    • -
    • More useful file name when throwing CsvEntityIOException -issue
  • -
  • Full Documentation: http://developer.onebusaway.org/modules/onebusaway-gtfs-modules/1.3.1/
-

1.3.0

-
-

1.2.6

-
    -
  • Migrate to GitHub.
  • -
  • When doing GTFS graph retention, allow the agency id referenced by stops, shapes, and service ids to refer to a non-existent agency. These elements don't technically require an agency in the same way routes do, so it's ok if they have a non-existent reference.
  • -
  • Add a custom field mapping for stop_lat and stop_lon in stops.txt that will better serialize their values when writing back to the output file. We ran into an issue when working with stop locations very close to the prime meridian where the stop_lon value was serialized using scientific notation. The new field mapping introduces a custom formatter that will enforce a more normal decimal representation when the value is written to the output file.
  • -
  • Allow input of multiple GTFS files to GTFS importer.
  • -
  • Better support for missing values when reading entity ids in the CSV-to-Object serialization library.
  • -
  • Support for frequencies.txt label_only field.
  • -
  • Better support for injecting new entities with the GtfsTransformer.
  • -
  • Full Documentation: http://developer.onebusaway.org/modules/onebusaway-gtfs-modules/1.2.6/
-

1.2.5

-
-

1.2.4

-
-

1.2.3

-
-

1.2.2

-
-

1.2.1

-
-

1.2.0

-
-

1.1.11

-

1.1.10

-

1.1.9

-

1.1.8

-

1.1.7

-

1.1.6

-

1.1.5

-

1.1.4

-

1.1.3

-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/scm.html b/src/modules/onebusaway-gtfs-modules/current/scm.html deleted file mode 100644 index 0476d74..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/scm.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – Source Code Management - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Overview

-

This project uses Git to manage its source code. Instructions on Git use can be found at https://git-scm.com/documentation.

-

Web Browser Access

-

The following is a link to a browsable version of the source repository:

-
-

Anonymous Access

-

The source can be checked out anonymously from Git with this command (See https://git-scm.com/docs/git-clone):

-
-
$ git clone https://github.com/OneBusAway/onebusaway-gtfs-modules.git
-

Developer Access

-

Only project developers can access the Git tree via this method (See https://git-scm.com/docs/git-clone).

-
-
$ git clone ssh://git@github.com/OneBusAway/onebusaway-gtfs-modules.git
-

Access from Behind a Firewall

-

Refer to the documentation of the SCM used for more information about access behind a firewall.

-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/summary.html b/src/modules/onebusaway-gtfs-modules/current/summary.html deleted file mode 100644 index 9898603..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/summary.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – Project Summary - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Project Summary

-

Project Information

- - - - - - - - - - - - -
FieldValue
Nameonebusaway-gtfs-modules
DescriptionA collection of GTFS libraries and tools.
Homepagehttps://github.com/OneBusAway/onebusaway-gtfs-modules/wiki/
-

Project Organization

- - - - - - - - - -
FieldValue
NameOneBusAway
URLhttp://onebusaway.org/
-

Build Information

- - - - - - - - - - - - - - - -
FieldValue
GroupIdorg.onebusaway
ArtifactIdonebusaway-gtfs-modules
Version1.4.16-SNAPSHOT
Typepom
-
-
-
-
- - - - diff --git a/src/modules/onebusaway-gtfs-modules/current/team.html b/src/modules/onebusaway-gtfs-modules/current/team.html deleted file mode 100644 index 59480be..0000000 --- a/src/modules/onebusaway-gtfs-modules/current/team.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - - - onebusaway-gtfs-modules – Project Team - - - - - - -
-
- - - -
-
-
- - -
-
-
-

Project Team

-

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.

-

The project 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.

-

Members

-

The following is a list of developers with commit privileges that have directly contributed to the project in one way or another.

- - - - - - - - - - - - - - - -
ImageIdNameEmail
bdferrisBrian Ferrisbdferris@onebusaway.org
sheldonabrownSheldon A. Brownsheldonb@gmail.com
-

Contributors

-

There are no contributors listed for this project. Please check back again later.

-
-
-
-
- - - - diff --git a/src/projects/onebusaway-gtfs-modules/index.md b/src/projects/onebusaway-gtfs-modules/index.md new file mode 100644 index 0000000..278e884 --- /dev/null +++ b/src/projects/onebusaway-gtfs-modules/index.md @@ -0,0 +1,296 @@ +--- +title: onebusaway-gtfs-modules +layout: page +--- + + + We provide a Java library for reading and writing [ GTFS](https://developers.google.com/transit/gtfs) feeds, including database support. + + The library is broken up into a few key modules: + + * `onebusaway-gtfs` - The core library for reading and writing GTFS + + * `onebusaway-gtfs-hibernate` - Support for [Hibernate](http://www.hibernate.org/) database persistence of GTFS data + + * `onebusaway-gtfs-hibernate-cli` - Command-line utilty for loading GTFS feeds into a database - see [the full documentation](/projects/onebusaway-gtfs-modules/onebusaway-gtfs-hibernate-cli). + + * `onebusaway-gtfs-transformer` - Tools for transforming GTFS data + + * `onebusaway-gtfs-transformer-cli` - Command-line utility for transforming GTFS - see [the full documentation](/projects/onebusaway-gtfs-modules/onebusaway-gtfs-transformer-cli). + + * `onebusaway-gtfs-merge` - Tools for merging GTFS data + + * `onebusaway-gtfs-merge-cli` - Command-line utility for merging GTFS feeds - see [the full documentation](/projects/onebusaway-gtfs-modules/onebusaway-gtfs-merge-cli). + +## Using in Maven + + The library is available as a Maven module. Simply add the following dependencies: + +``` + + + + org.onebusaway + onebusaway-gtfs + ${currentVersion} + + + + org.onebusaway + onebusaway-gtfs-hibernate + ${currentVersion} + + + + org.onebusaway + onebusaway-gtfs-transformer + ${currentVersion} + + +``` + +## Docker images + +There are automatically generated docker images available at [https://registry.hub.docker.com/u/opentransitsoftwarefoundation](https://registry.hub.docker.com/u/opentransitsoftwarefoundation). + +Contributions to image-specific documentation are welcome. + +### `onebusaway-gtfs-transformer-cli` + +See [the full documentation](./onebusaway-gtfs-transformer-cli.md) for more configuration options. + +For example, assuming that all the following files are in the `/path/to/local/data/directory` directory, to run the `remove-matching-route.rule` rule against `gtfs-data.zip` to generate `gtfs-data-out.zip` you can use: +```bash +docker run -v /path/to/local/data/directory:/data --rm opentransitsoftwarefoundation/onebusaway-gtfs-transformer-cli:4.4.0 --transform=/data/remove-matching-route.rule /data/gtfs-data.zip /data/gtfs-data-out.zip +``` +The `gtfs-data-out.zip` file will be in the `/path/to/local/data/directory` directory. + +## Example Code + +### Basic Reading + +Let's introduce basic code for reading a GTFS feed and handling the resulting entities: + +``` +public class GtfsReaderExampleMain { + + public static void main(String[] args) throws IOException { + + if (args.length != 1) { + System.err.println("usage: gtfs_feed_path"); + System.exit(-1); + } + + GtfsReader reader = new GtfsReader(); + reader.setInputLocation(new File(args[0])); + + /** + * You can register an entity handler that listens for new objects as they + * are read + */ + reader.addEntityHandler(new GtfsEntityHandler()); + + /** + * Or you can use the internal entity store, which has references to all the + * loaded entities + */ + GtfsDaoImpl store = new GtfsDaoImpl(); + reader.setEntityStore(store); + + reader.run(); + + // Access entities through the store + for (Route route : store.getAllRoutes()) { + System.out.println("route: " + route.getShortName()); + } + } + + private static class GtfsEntityHandler implements EntityHandler { + + public void handleEntity(Object bean) { + if (bean instanceof Stop) { + Stop stop = (Stop) bean; + System.out.println("stop: " + stop.getName()); + } + } + } +} +``` + + Notice that the [GtfsReader](./apidocs/org/onebusaway/gtfs/serialization/GtfsReader.html) does the bulk of the work of reading the GTFS feed. The general pattern is to create the reader, set the input file, and call `run()` to start the reading process. You can manage the resulting GTFS entities in a couple of ways: + + * Register an [EntityHandler](../../onebusaway-csv-entities/${onebusaway_csv_entities_version}/apidocs/org/onebusaway/csv_entities/EntityHandler.html) to handle entities as they are read + + * Use an instance of [GenericMutableDao](./apidocs/org/onebusaway/gtfs/services/GenericMutableDao.html) to examine the loaded entities after reading is complete + + +### Basic Writing + +``` +public class GtfsWriterExampleMain { + + public static void main(String[] args) throws IOException { + + if (args.length != 1) { + System.err.println("usage: gtfs_feed_path"); + System.exit(-1); + } + + + GtfsWriter writer = new GtfsWriter(); + writer.setOutputLocation(new File(args[0])); + + Agency agency = new Agency(); + agency.setName("My agency!"); + + writer.handleEntity(agency); + + Route route = new Route(); + route.setShortName("A"); + route.setAgency(agency); + + writer.handleEntity(route); + + writer.close(); + } +} +``` + +### Basic Database Reading + + The class `org.onebusaway.gtfs.examples.GtfsHibernateReaderExampleMain` in the +`onebusaway-gtfs-hibernate/src/test/java` directory includes basic code for reading +a GTFS feed into a database and querying the resulting entities. + + The sample code has been summarized for length and clarity: + +``` +public class GtfsHibernateReaderExampleMain { + + public static void main(String[] args) throws IOException { + + // Check args and construct application resource paths + ... + + HibernateGtfsFactory factory = createHibernateGtfsFactory(resource); + + GtfsReader reader = new GtfsReader(); + reader.setInputLocation(new File(args[0])); + + GtfsMutableRelationalDao dao = factory.getDao(); + reader.setEntityStore(dao); + reader.run(); + + Collection stops = dao.getAllStops(); + + for (Stop stop : stops) + System.out.println(stop.getName()); + + ... + } + + // Other methods + private static HibernateGtfsFactory createHibernateGtfsFactory(String resource) { + + Configuration config = new Configuration(); + + if (resource.startsWith(KEY_CLASSPATH)) { + resource = resource.substring(KEY_CLASSPATH.length()); + config = config.configure(resource); + } else if (resource.startsWith(KEY_FILE)) { + resource = resource.substring(KEY_FILE.length()); + config = config.configure(new File(resource)); + } else { + config = config.configure(new File(resource)); + } + + SessionFactory sessionFactory = config.buildSessionFactory(); + return new HibernateGtfsFactory(sessionFactory); + } +} +``` + + This code is roughly similar to the example reader code for +`onebusaway-gtfs`, with the main difference being the use of `HibernateGtfsFactory`, which is a convenience +factory for creating database-aware DAOs. + +### Configuring Your Database + + By default, the example above is setup to run with an in-memory HSQLDB database. Obviously, it'd be great to configure +it to use a different database and you totally can. See {{http://hibernate.org/}} for more documentation on configuring +Hibernate, but also check out the default hibernate config file used in the example above. It's located in the following +directory: + +``` +onebusaway-gtfs-hibernate/src/test/resources/org/onebusaway/gtfs/examples/hibernate-configuration-examples.xml +``` + +The contents look like: + +``` + + + + + org.hsqldb.jdbcDriver + jdbc:hsqldb:mem:org_onebusaway_temporary + sa + + + + org.hibernate.dialect.HSQLDialect + + + + +``` + + Here you can configure the data source used for the database connection along with the Hibernate dialect. + +### Reading Custom Fields + + Does your GTFS feed have custom fields not defined by the core `onebusaway-gtfs` library? It's possible +to read and write this data without modify OBA source code using the "extensions" mechanism. Consider a +`stops.txt` file with a custom `extra_stop_info` field: + +``` +stop_id,stop_name,stop_lat,stop_lon,extra_stop_info +123,Some Station,47.0,-122.0,This is a cool transit station +``` + + The `extra_stop_info` field isn't included in the the [Stop](./apidocs/org/onebusaway/gtfs/model/Stop.html) data +model by default. So instead, we define a special `StopExtension` Java bean type with the new field: + +``` +public static class StopExtension { + @CsvField(optional = true) + private String extraStopInfo; + + public String getExtraStopInfo() { ... } + public void setExtraStopInfo(String info) { ... } +} +``` + + We can now register our class as an extension of the default stop data model: + +``` +DefaultEntitySchemaFactory factory = GtfsEntitySchemaFactory.createEntitySchemaFactory(); +factory.addExtension(Stop.class, StopExtension.class); + +GtfsReader reader = new GtfsReader(); +reader.setEntitySchemaFactory(factory); +``` + + Now when you read your GTFS feed with the `GtfsReader` instance, `StopExtension` objects +will automatically be created, populated, and attached to stops as they are read: + +``` +Stop stop = dao.getStopForId(...); +StopExtension extension = stop.getExtension(StopExtension.class); +System.out.println(extension.getExtraStopInfo()); +``` + + For more information on defining the mapping from GTFS fields to Java beans, see documentation for +the [onebusaway-csv-entities](https://github.com/OneBusAway/onebusaway-csv-entities) project, +including the [@CsvField](../../onebusaway-csv-entities/${onebusaway_csv_entities_version}/apidocs/org/onebusaway/csv_entities/schema/annotations/CsvField.html) +annotation documentation. \ No newline at end of file diff --git a/src/projects/onebusaway-gtfs-modules/onebusaway-gtfs-hibernate-cli.md b/src/projects/onebusaway-gtfs-modules/onebusaway-gtfs-hibernate-cli.md new file mode 100644 index 0000000..c3e25c3 --- /dev/null +++ b/src/projects/onebusaway-gtfs-modules/onebusaway-gtfs-hibernate-cli.md @@ -0,0 +1,54 @@ +--- +title: GTFS Hibernate Command-Line Utility +layout: page +--- + +## Introduction + + The `onebusaway-gtfs-hibernate-cli` command-line utility is a simple command-line tool for loading a +[GTFS](https://developers.google.com/transit/gtfs) feed into a database. + +## Getting the Application + + You can download the application here: + +``` +#if( $currentVersion.endsWith("-SNAPSHOT")) + #set( $repository = 'snapshots' ) +#else + #set( $repository = 'releases' ) +#end + +#set( $url = 'https://repo.camsys-apps.com/' + $repository + '/org/onebusaway/onebusaway-gtfs-hibernate-cli/' + ${currentVersion} + '/onebusaway-gtfs-hibernate-cli-' + ${currentVersion} + '.jar' ) + +``` + +## Using the Application + + You'll need a Java 11 runtime installed to run the client. To run the application: + +``` +java -classpath onebusaway-gtfs-hiberante-cli.jar:your-database-jdbc.jar \ + org.onebusaway.gtfs.GtfsDatabaseLoaderMain \ + --driverClass=... \ + --url=... \ + --username=... \ + --password=... \ + gtfs_path +``` + + Note that the utility doesn't include any JDBC client jars for any databases by default. You will need +to download an appropriate JDBC client for your database and include it on the classpath when running +the utilty. You will also need to specify the appropriate JDBC driver class and url for your database +using the command-line arguments specified below. + +### Arguments + + * `--driverClass=...` : JDBC driver class for your JDBC provider (eg. "org.hsqldb.jdbcDriver") + + * `--url=...` : JDBC connection url for your database (eg. "jdbc:hsqldb:mem:temp_db") + + * `--username=...` : JDBC connection username + + * `--password=...` : JDBC connection password + \ No newline at end of file diff --git a/src/projects/onebusaway-gtfs-modules/onebusaway-gtfs-merge-cli.md b/src/projects/onebusaway-gtfs-modules/onebusaway-gtfs-merge-cli.md new file mode 100644 index 0000000..5e096c0 --- /dev/null +++ b/src/projects/onebusaway-gtfs-modules/onebusaway-gtfs-merge-cli.md @@ -0,0 +1,117 @@ +--- +title: GTFS Merge Command-Line Application +layout: page +--- + +## Introduction + +The `onebusaway-gtfs-merge-cli` command-line application is a simple command-line tool for merging +[GTFS](https://developers.google.com/transit/gtfs) feeds. + +## Getting the Application + +You can download the application from Maven Central. + +* Go to [https://repo1.maven.org/maven2/org/onebusaway/onebusaway-gtfs-merge-cli/](https://repo1.maven.org/maven2/org/onebusaway/onebusaway-gtfs-merge-cli/), +* select the version you want and get the URL for the largest jar file. + +An example would be +`https://repo1.maven.org/maven2/org/onebusaway/onebusaway-gtfs-merge-cli/3.2.2/onebusaway-gtfs-merge-cli-3.2.2.jar` + +## Using the Application + +You'll need a Java 17 runtime installed to run the client. + +To run the application: + +``` +java -jar onebusaway-gtfs-merge-cli.jar [--args] input_gtfs_path_a input_gtfs_path_b ... output_gtfs_path +``` + +**Note**: Merging large GTFS feeds is often processor and memory intensive. You'll likely need to increase the +max amount of memory allocated to Java with an option like `-Xmx1G` (adjust the limit as needed). I also recommend +adding the `-server` argument if you are running the Oracle or OpenJDK, as it can really increase performance. + +## Configuring the Application + +The merge application supports a number of options and arguments for configuring the application's behavior. The +general pattern is to specify options for each type of file in a GTFS feed using the `--file` option, specifying +specific options for each file type after the `--file` option. Here's a quick example: + +``` +--file=routes.txt --duplicateDetection=identity --file=calendar.txt --logDroppedDuplicates ... +``` + + The merge application supports merging the following files: + + - `agency.txt` + - `stops.txt` + - `routes.txt` + - `trips.txt` and `stop_times.txt` + - `calendar.txt` and `calendar_dates.txt` + - `shapes.txt` + - `fare_attributes.txt` + - `fare_rules.txt` + - `frequencies.txt` + - `transfers.txt` + +You can specify merge options for each of these files using the `--file=gtfs_file.txt` option. File types listed +together (e.g. `trips.txt` and `stop_times.txt`) are handled by the same merge strategy, so specifying options for +either will have the same effect. For details on options you might specify, read on. + +## Handling Duplicates + +The main issue to considering when merging GTFS feeds is the handling of duplicate entries between the two feeds, +including how to identify duplicates and what to do with duplicates when they are found. + +### Identifying Duplicates + +We support a couple of methods for determining when entries from two different feeds are actually duplicates. By default, +the merge tool will attempt to automatically determine the best merge strategy to use. You can also control the specific +strategy used on a per-file basis using the `--duplicateDetection` argument. You can specify any of the following +strategies for duplicate detection. + + - `--duplicateDetection=identity` - If two entries have the same id (eg. stop id, route id, trip id), then they are + considered the same. This is the more strict matching policy. + + - `--duplicateDetection=fuzzy` - If two entries have common elements (eg. stop name or location, route short name, + trip stop sequence), then they are considered the same. This is the more lenient matching policy, and is highly + dependent on the type of GTFS entry being matched. + + - `--duplicateDetection=none` - Entries between two feeds are never considered to be duplicates, even if they have + the same id or similar properties. + +### Logging Duplicates + +Sometimes your feed might have unexpected duplicates. You can tell the merge tool to log duplicates it finds or even +immediately exit with the following arguments: + + - `--logDroppedDuplicates` - log a message when a duplicate is found + + - `--errorOnDroppedDuplicates` - throw an exception when a duplicate is found, stopping the program + +## Examples + +### Handling a Service Change + +Agencies often schedule major changes to their system around a particular date, with one GTFS feed for before the +service change and a different GTFS feed for after. We'd like to be able to merge these disjoint feeds into one +feed with continuous coverage. + +In our example, an agency produces two feeds where the entries in `agency.txt` and `stops.txt` are exactly +the same, so the default policy of identifying and dropping duplicates will work fine there. The `routes.txt` file +is a bit trickier, since the route ids are different between the two feeds but the entries are largely the same. We +will use fuzzy duplicate detection to match the routes between the two feeds. + +The next issue is the `calendar.txt` file. The agency uses the same `service_id` values in both feeds +(eg. `WEEK`, `SAT`, `SUN`) with different start and end dates in the two feeds. If the default policy of +dropping duplicate entries was used, we'd lose the dates in one of the service periods. Instead, we rename duplicates +such that the service ids from the second feed will be renamed to `b-WEEK`, `b-SAT`, etc. and all +`trips.txt` entries in the second feed will be updated appropriately. The result is that trips from the first +and second feed will both have the proper calendar entries in the merged feed. + +Putting it all together, here is what the command-line options for the application would look like: + +``` +--file=routes.txt --fuzzyDuplicates --file=calendar.txt --renameDuplicates +``` \ No newline at end of file diff --git a/src/projects/onebusaway-gtfs-modules/onebusaway-gtfs-transformer-cli-sample1.png b/src/projects/onebusaway-gtfs-modules/onebusaway-gtfs-transformer-cli-sample1.png new file mode 100644 index 0000000..eec7807 Binary files /dev/null and b/src/projects/onebusaway-gtfs-modules/onebusaway-gtfs-transformer-cli-sample1.png differ diff --git a/src/projects/onebusaway-gtfs-modules/onebusaway-gtfs-transformer-cli.md b/src/projects/onebusaway-gtfs-modules/onebusaway-gtfs-transformer-cli.md new file mode 100644 index 0000000..7694d85 --- /dev/null +++ b/src/projects/onebusaway-gtfs-modules/onebusaway-gtfs-transformer-cli.md @@ -0,0 +1,642 @@ +--- +title: GTFS Transformation Command-Line Application +layout: page +--- + + +* [GTFS Transformation Command-Line Application](#gtfs-transformation-command-line-application) + * [Introduction](#introduction) + * [Requirements](#requirements) + * [Getting the Application](#getting-the-application) + * [Using the Application](#using-the-application) + * [Arguments](#arguments) + * [Transform Syntax](#transform-syntax) + * [Matching](#matching-) + * [Regular Expressions](#regular-expressions) + * [Compound Property Expressions](#compound-property-expressions) + * [Multi-Value Matches](#multi-value-matches) + * [Collection-Like Entities](#collection-like-entities) + * [Types of Transforms](#types-of-transforms) + * [Add an Entity](#add-an-entity) + * [Update an Entity](#update-an-entity) + * [Find/Replace](#findreplace) + * [Path Expressions](#path-expressions-) + * [Retain an Entity](#retain-an-entity) + * [Remove an Entity](#remove-an-entity) + * [Retain Up From Polygon](#retain-up-from-polygon) + * [Trim Trip From Polygon](#trim-trip-from-polygon) + * [Trim a Trip](#trim-a-trip) + * [Generate Stop Times](#generate-stop-times) + * [Extend Service Calendars](#extend-service-calendars) + * [Remove Old Calendar Statements](#remove-old-calendar-statements) + * [Deduplicate Calendar Entries](#deduplicate-calendar-entries) + * [Truncate New Calendar Statements](#truncate-new-calendar-statements) + * [Merge Trips and Simplify Calendar Entries](#merge-trips-and-simplify-calendar-entries) + * [Shift Negative Stop Times](#shift-negative-stop-times) + * [Arbitrary Transform](#arbitrary-transform) + * [How to Reduce your GTFS](#how-to-reduce-your-gtfs) + * [Clip National GTFS for Regional Integration and Consistency](#clip-national-gtfs-for-regional-integration-and-consistency) + + +## Introduction + +The `onebusaway-gtfs-transformer-cli` command-line application is a simple command-line tool for transforming +[GTFS](https://developers.google.com/transit/gtfs) feeds. + +### Requirements + + * Java 17 or greater + +### Getting the Application + +You can download the application from Maven Central: https://repo1.maven.org/maven2/org/onebusaway/onebusaway-gtfs-transformer-cli/ + +Select the largest jar file from the version you would like to use, for example https://repo1.maven.org/maven2/org/onebusaway/onebusaway-gtfs-transformer-cli/2.0.0/onebusaway-gtfs-transformer-cli-2.0.0.jar + +### Using the Application + +To run the application: + +``` +java -jar onebusaway-gtfs-transformer-cli.jar [-args] input_gtfs_path ... output_gtfs_path +``` + +`input_gtfs_path` and `output_gtfs_path` can be either a directory containing a GTFS feed or a .zip file. + +_Note_: Transforming large GTFS feeds is processor and memory intensive. You'll likely need to increase the +max amount of memory allocated to Java with an option like `-Xmx1G` or greater. Adding the `-server` argument +if you are running the Oracle or OpenJDK can also increase performance. + +### Arguments + + * `--transform=...` : specify a transformation to apply to the input GTFS feed (see syntax below) + * `--agencyId=id` : specify a default agency id for the input GTFS feed + * `--overwriteDuplicates` : specify that duplicate GTFS entities should overwrite each other when read + + +### Transform Syntax + +Transforms are specified as snippets of example. A simple example to remove a stop might look like: + +``` +{"op":"remove","match":{"file":"stops.txt","stop_name":"Stop NameP"}} +``` + +You can pass those snippets to the application in a couple of ways. The simplest is directly on the command line. + +``` +--transform='{...}' +``` + +You can have multiple `--transform` arguments to specify multiple transformations. However, if you have a LOT of +transformations that you wish to apply, it can be easier to put them in a file, with a JSON snippet per line. Then +specify the file on the command-line: + +``` + --transform=path/to/local-file +``` + +You can even specify a URL where the transformations will be read: + +``` +--transform=http://server/path +``` + +### Matching + +We provide a number of configurable transformations out-of-the-box that can do simple operations like adding, +updating, retaining, and removing GTFS entities. Many of the transforms accept a "`match`" term that controls how the +rule matches against entities: + +``` +{"op":..., "match":{"file":"routes.txt", "route_short_name":"574"}} +``` + +Here, the match snippet at minimum requires a `file` property that specifies the type of GTFS entity to match. +Any file name defined in the [GTFS specification](https://developers.google.com/transit/gtfs/reference#FeedFiles) +can be used. + +You can specify additional properties and values to match against as needed. Again, use the field names defined for +each file name in the GTFS specification. For example, the snippet above will match any entry in `routes.txt` with a +`route_short_name` value of `574`. + +### Regular Expressions + + Property matching also supports regular expressions that allow you to match property values conforming to a regexp pattern. For example, the snippet below will match any entry in `stops.txt` with a `stop_id` starting with `de:08`. + +``` +{"op":..., "match":{"file":"stops.txt", "stop_id":"m/^de:08.*/"}} +``` + +### Compound Property Expressions + + Property matching also supports compound property expressions that allow you to match across GTFS relational +references. Let's look at a simple example: + +``` +{"op":..., "match":{"file":"trips.txt", "route.route_short_name":"10"}} +``` + +Here the special `routes` property references the route entry associated with each trip, allowing you to match +the properties of the route. You can even chain references, like `route.agency` to match against the agency +associated with the trip. Here is the full list of supported compound property references: + +``` +{"op":..., "match":{"file":"routes.txt", "agency.name":"Metro"}} +{"op":..., "match":{"file":"trips.txt", "route.route_short_name":"10"}} +{"op":..., "match":{"file":"stop_times.txt", "stop.stop_id":"153"}} +{"op":..., "match":{"file":"stop_times.txt", "trip.route.route_type":3}} +{"op":..., "match":{"file":"frequencies.txt", "trip.service_id":"WEEKDAY"}} +{"op":..., "match":{"file":"transfers.txt", "fromStop.stop_id":"173"}} +{"op":..., "match":{"file":"transfers.txt", "toStop.stop_id":"173"}} +{"op":..., "match":{"file":"fare_rules.txt", "fare.currencyType":"USD"}} +{"op":..., "match":{"file":"fare_rules.txt", "route.route_short_name":"10"}} +``` + +### Multi-Value Matches + + The compound property expressions shown above are all for 1-to-1 relations, but matching also supports a limited +form of multi-value matching for 1-to-N relations. Let's look at a simple example: + +``` +{"op":..., "match":{"file":"routes.txt", "any(trips.trip_headsign)":"Downtown"}} +``` + +Notice the addition of `any(...)` around the property name. Here we are using a special `trips` property that +expands to include all trips associated with each route. Now, if *any* trip belonging to the route has the specified +`trip_headsign` value, then the route matches. Here is the full list of supported multi-value property matches: + +``` +{"op":..., "match":{"file":"agency.txt", "any(routes.X)":"Y"}} +{"op":..., "match":{"file":"routes.txt", "any(trips.X)":"Y"}} +{"op":..., "match":{"file":"trips.txt", "any(stop_times.X)":"Y"}} +``` + +### Collection-Like Entities + +There are a number of GTFS entites that are more effectively collections identified by a common key. For example, +shape points in `shapes.txt` linked by a common `shape_id` value or `calendar.txt` and `calendar_dates.txt` entries +linked by a common `service_id` value. You can use a special `collection `match clause to match against the entire +collection. + +``` +{"op":..., "match":{"collection":"shape", "shape_id":"XYZ"}} +{"op":..., "match":{"collection":"calendar", "service_id":"XYZ"}} +``` + +You can use the calendar collection matches, for example, to retain a calendar, including all `calendar.txt`, +`calendar_dates.txt`, and `trip.txt` entries that reference the specified `service_id` value. This convenient +short-hand is easier than writing the equivalent expression using references to the three file types separately. + +### Types of Transforms + +#### Add an Entity + +Create and add a new entity to the feed. + +``` +{"op":"add","obj":{"file":"agency.txt", "agency_id":"ST", "agency_name":"Sound Transit", +"agency_url":"http://www.soundtransit.org", "agency_timezone":"America/Los_Angeles"}} +``` + +#### Update an Entity + +You can update arbitrary fields of a GTFS entity. + +``` +{"op":"update", "match":{"file":"routes.txt", "route_short_name":"574"}, "update":{"agency_id":"ST"}} +``` + +Normally, update values are used as-is. However, we support a number of +special update operations: + +#### Find/Replace + +``` +{"op":"update", "match":{"file":"trips.txt"}, "update":{"trip_short_name":"s/North/N/"}} +``` + +By using `s/.../.../` syntax in the update value, the upda```te will perform +a find-replace operation on the specified property value. Consider the +following example: + +``` +{"op":"update", "match":{"file":"trips.txt"}, "update":{"trip_short_name":"s/North/N/"}} +``` + +Here, a trip with a headsign of `North Seattle` will be updated to `N Seattle`. + +#### Path Expressions + +By using `path(...)` syntax in the update value, the expression will be +treated as a compound Java bean properties path expression. This path +expression will be evaluated against the target entity to produce the update +value. Consider the following example: + +``` +{"op":"update", "match":{"file":"trips.txt"}, "update":{"trip_short_name":"path(route.longName)"}} +``` + +Here, the `trip_short_name` field is updated for each trip in the feed. +The value will be copied from the `route_long_name` field of each trip's +associated route. + +#### Retain an Entity + +We also provide a powerful mechanism for selecting just a sub-set of a feed. +You can apply retain operations to entities you wish to keep and all the supporting entities referenced +by the retained entity will be retained as well. Unreferenced entities will be pruned. + +In the following example, only route B15 will be retained, along with all the stops, trips, stop times, shapes, and agencies linked to directly by that route. + +``` +{"op":"retain", "match":{"file":"routes.txt", "route_short_name":"B15"}} +``` + +By default, we retain across [block_id](https://developers.google.com/transit/gtfs/reference#trips_block_id_field) values +specified in trips.txt. That means if a particular trip is retained (perhaps because its parent route is retained), +and the trip specifies a block_id, then all the trips referencing that block_id will be retained as well, along with +their own routes, stop times, and shapes. This can potentially lead to unexpected results if you retain one route and +suddenly see other routes included because they are linked by block_id. + +You can disable this feature by specifying `retainBlocks: false` in the JSON transformer snippet. Here is an +example: + +``` +{"op":"retain","match":{"file":"routes.txt", "route_short_name":"B15"}, "retainBlocks":false} +``` + +#### Remove an Entity + +You can remove a specific entity from a feed. + +``` +{"op":"remove", "match":{"file":"stops.txt", "stop_name":"Stop Name"}} +``` + +Note that removing an entity has a cascading effect. If you remove a trip, all the stop times that depend on that +trip will also be removed. If you remove a route, all the trips and stop times for that route will be removed. + +#### Retain Up From Polygon + +Retain Up From Polygon is an operation that filters GTFS input data based on a specified geographic area, using a polygon defined in WKT (Well-Known Text) format, which is configurable in the JSON transformer snippet. + +This strategy applies two main functions: + + * **Retain Function**: retains **up** all stops, trips, and routes that are located inside the defined polygon. + + The algorithm starts by applying retain up to each entity, traversing the entity dependency tree. Starting from the stop, retain up is applied to the stop_times referencing this stop, then to the trips, and so on. + + Once the base of the entity tree is reached, it automatically applies retain **down** to all the traversed entities. Therefore, all the trips of the route and then all the stop_times of each trip will be tagged as **retain**. + + * **Remove Function**: any entities not retained within the polygon are removed. + +This strategy ensures that the GTFS output retains only the entities directly or indirectly linked to the geographical area concerned. + +**Parameters**: + + * **polygon**: a required argument, which accepts the polygon in WKT format using the WGS84 coordinate system (SRID: 4326). This polygon defines the area of interest for filtering. + +``` +{"op":"transform","class":"org.onebusaway.gtfs_transformer.impl.RetainUpFromPolygon","polygon":"POLYGON ((-123.0 37.0, -123.0 38.0, -122.0 38.0, -122.0 37.0, -123.0 37.0))"} +``` + +#### Trim Trip From Polygon + +The Trim Trip From Polygon strategy refines GTFS data by removing all stop_times associated with stops located outside a specified geographical area. The area is defined using a configurable WKT Polygon or Multipolygon in the JSON transformer snippet. + +This removal of stop_times is achieved by invoking the **TrimTrip operation**, ensuring that only stops within the defined polygon are retained. + +Only valid stop_times within the polygon are retained, maintaining the integrity of the trips. + +**Parameters**: + + * **polygon**: a required argument, which accepts the polygon in WKT format using the WGS84 coordinate system (SRID: 4326). This polygon defines the area of interest for filtering. + +``` +{"op":"transform","class":"org.onebusaway.gtfs_transformer.impl.TrimTripFromPolygon","polygon":"POLYGON ((-123.0 37.0, -123.0 38.0, -122.0 38.0, -122.0 37.0, -123.0 37.0))"} +``` + +#### Trim a Trip + +You can remove stop times from the beginning or end of a trip using the "trim_trip" operation. Example: + +``` +{"op":"trim_trip", "match":{"file":"trips.txt", "route_id":"R10"}, "from_stop_id":"138S"} +``` + +For any trip belonging to the specified route and passing through the specified stop, all stop times from the specified +stop onward will be removed from the trip. You can also remove stop times from the beginning of the trip as well: + +``` +{"op":"trim_trip", "match":{"file":"trips.txt", "route_id":"R10"}, "to_stop_id":"138S"} +``` + +Or both: + +``` +{"op":"trim_trip", "match":{"file":"trips.txt", "route_id":"R10"}, "to_stop_id":"125S", "from_stop_id":"138S"} +``` + +#### Generate Stop Times + +You can generate stop time entries for a trip. Example: + +``` +{"op":"stop_times_factory", "trip_id":"TRIP01", "start_time":"06:00:00", "end_time":"06:20:00", "stop_ids":["S01", "S02", "S03"]} +``` + +A series of entries in `stop_times.txt` will be generated for the specified trip, traveling along the specified sequence of +stops. The departure time for the first stop will be set from the `start_time` field, the arrival time for the last stop will +be set from the `end_time` field, and the times for intermediate stops will be interpolated based on their distance along the +trip. + +#### Extend Service Calendars + +Sometimes you need to extend the service dates in a GTFS feed, perhaps in order to temporarily extend an expired feed. Extending +the feed by hand can be a tedious task, especially when the feed uses a complex combination of `calendar.txt` and `calendar_dates.txt` +entries. Fortunately, the GTFS tranformer tool supports a `calendar_extension` operation that can help simplify the work. Example: + +``` +{"op":"calendar_extension", "end_date":"20130331"} +``` + +The operation requires just one argument by default: `end_date` to specify the new end-date for the feed. The operation does +its best to intelligently extend each service calendar, as identified by a `service_id` in `calendar.txt` or `calendar_dates.txt`. +There are a few wrinkles to be aware of, however. + +Extending a `calendar.txt` entry is usually just a matter of setting a new `end_date` value in the feed. Extending a service +calendar represented only through `calendar_dates.txt` entries is a bit more complex. For such a service calendar, we attempt to +determine which days of the week are typically active for the calendar and extend only those. For example, is the calendar is +always active on Saturday but has one or two Sunday entries, we will only add entries for Saturday when extending the calendar. + +Also note that we will not extend "inactive" service calendars. A service calendar is considered inactive if its last active +service date is already in the past. By default, any calendar that's been expired for more than two weeks is considered inactive. +This helps handle feeds that have merged two service periods in one feed. For example, one calendar active from June 1 - July 31 +and a second calendar active from August 1 to September 31. If it's the last week of September and you are extending the feed, +you typically only mean to extend the second service calendar. You can control this inactive calendar cutoff with an optional +argument: + +``` +{"op":"calendar_extension", "end_date":"20130331", "inactive_calendar_cutoff":"20121031"} +``` + +Calendars that have expired before the specified date will be considered inactive and won't be extended. + +_Note_: We don't make any effort to extend canceled service dates, as specified in `calendar_dates.txt` for holidays and +other special events. It's too tricky to automatically determine how they should be handled. You may need to still handle +those manually. + +#### Remove Old Calendar Statements + +RemoveOldCalendarStatements is an operation designed to remove calendar and calendar dates entries that are no longer valid on today's date. + +By default, it deletes entries from both the calendar.txt and calendar_dates.txt files, where the end_date in calendar.txt or the date field in calendar_dates.txt has passed. + +With the remove_today attribute added to the JSON transformer snippet, users can control whether entries in calendar or calendar_dates that are valid for today are included or excluded in the GTFS output. + + * If remove_today is set to true, the transformer will remove entries for the current date. + +``` + {"op":"transform", "class":"org.onebusaway.gtfs_transformer.impl.RemoveOldCalendarStatements", "remove_today":true} +``` + + * If remove_today is set to false or not specified, the transformer will retain the calendar entries for the current date. + +``` +{"op":"transform", "class":"org.onebusaway.gtfs_transformer.impl.RemoveOldCalendarStatements", "remove_today":false} +``` + +Additionally, after truncating the calendar entries, it is recommended to use a **retain operation** to ensure that only trips with valid calendar dates are retained. + +Without this retain operation, the `trips.txt` file will contain trips with non-existent calendar dates, leading to invalid data. + +``` +{"op":"transform", "class":"org.onebusaway.gtfs_transformer.impl.RemoveOldCalendarStatements", "remove_today":false} +{"op":"retain", "match":{"file":"calendar_dates.txt"}, "retainBlocks":false} +``` + +#### Deduplicate Calendar Entries + +Finds GTFS service_ids that have the exact same set of active days and consolidates each set of duplicated +ids to a single service_id entry. + +``` +{"op":"deduplicate_service_ids"} +``` + +#### Truncate New Calendar Statements + +This operation truncates calendar and calendar date entries based on the configuration attributes in the JSON transformer snippet: + + * calendar_field: Specifies the unit of time for truncation. It can have one of the following values: + - `Calendar.YEAR` = 1 + - `Calendar.MONTH` = 2 (default) + - `Calendar.DAY_OF_MONTH` = 5 + - `Calendar.DAY_OF_YEAR` = 6 + + * calendar_amount: Specifies the number of units to truncate entries. + The value is an integer representing the amount (default = 1). + +Both `calendar_field` and `calendar_amount` must be provided as integers in the JSON transformer. + +If these parameters are not specified, the default behavior is truncation by 1 month. + +Example : + +Truncate calendar and calendar dates to the next 21 days: + +``` +{"op":"transform", "class":"org.onebusaway.gtfs_transformer.impl.TruncateNewCalendarStatements","calendar_field":6,"calendar_amount":21} +``` + +Truncate entries to the next 3 months: + +``` +{"op":"transform", "class":"org.onebusaway.gtfs_transformer.impl.TruncateNewCalendarStatements","calendar_field":2,"calendar_amount":3} +``` + +Additionally, after truncating the calendar entries, it is recommended to use a **retain operation** to ensure that only trips with valid calendar dates are retained. + +Without this retain operation, the `trips.txt` file will contain trips with non-existent calendar dates, leading to invalid data. + +``` +{"op":"transform", "class":"org.onebusaway.gtfs_transformer.impl.TruncateNewCalendarStatements","calendar_field":6,"calendar_amount":21} +{"op":"retain", "match":{"file":"calendar_dates.txt"}, "retainBlocks":false} +``` + +#### Merge Trips and Simplify Calendar Entries + +Some agencies model their transit schedule favoring multiple entries in calendar_dates.txt as opposed to a more concise +entry in calendar.txt. A smaller number of agencies take this scheme even further, creating trips.txt entries for each +service date, even when the underlying trips are exactly the same. This can cause the size of the GTFS to grow dramatically +as trips and stop times are duplicated. + +We provide a simple transformer that can attempt to detect these duplicate trips, remove them, and simplify the underlying +calendar entries to match. To run it, apply the following transform: + +``` +{"op":"calendar_simplification"} +``` + +The transform takes additional optional arguments to control its behavior: + + * min_number_of_weeks_for_calendar_entry - how many weeks does a service id need to + span before it gets its own entry in calendar.txt (default=3) + + * day_of_the_week_inclusion_ratio - if a service id is being modeled with a + calendar.txt entry, how frequent does a day of the week need to before it's + modeled positively in calendar.txt with any negative exceptions noted in + calendar_dates.txt, vs making no entry for that day of the week in + calendar.txt and instead noting any positive exceptions in + calendar_dates.txt. This is useful for filtering out a calendar that is + always active on Sunday, but has one or two Mondays for a holiday. + Frequency is defined as how often the target day of the week occurs vs the + count for day of the week appearing MOST frequently for the service id + (default=0.5) + + * undo_google_transit_data_feed_merge_tool - set to true to indicate that merged trip ids, + as produced by the [GoogleTransitDataFeedMergeTool](http://code.google.com/p/googletransitdatafeed/wiki/Merge), + should be un-mangled where possible. Merged trip ids will often have the form + `OriginalTripId_merged_1234567`. We attempt to set the trip id back to `OrginalTripId` + where appropriate. + + +#### Shift Negative Stop Times + +Some agencies have trips that they model as starting BEFORE midnight on a given service date. For these agencies, it +would be convenient to represent these trips with negative arrival and departure times in stop_times.txt. The GTFS spec and +many GTFS consumers do not support negative stop times, however. + +To help these agencies, we provide a transform to "fix" GTFS feeds with negative stop times by identifying such trips, +shifting the arrival and departure times to make them positive, and updating the service calendar entries for these trips +such that the resulting schedule is semantically the same. + +To run it, apply the following transform: + +``` +{"op":"shift_negative_stop_times"} +``` + +_A note on negative stop times:_ When writing negative stop times, the negative value ONLY applies to the hour portion + of the time. Here are a few examples: + + * "-01:45:00" => "23:45:00" on the previous day + + * "-05:13:32" => "19:13:32" on the previous day + +* Remove non-revenue stops + + Stop_times which do not allow pick up or drop off are also known as non-revenue stops. Some GTFS consumers display + these stops as if they were stops that passengers can use, at which point it is helpful to remove them. + + To remove them, apply the following transform: + +``` +{"op":"remove_non_revenue_stops"} +``` + + Terminals (the first and last stop_time of a trip) can be excluded from removal with the following transform: + +``` +{"op":"remove_non_revenue_stops_excluding_terminals"}} +``` + +* Replacing trip_headsign with the last stop + + Certain feeds contain unhelpful or incorrect trip_headsign. They can be replaced with the last stop's stop_name. + +``` +{"op":"last_stop_to_headsign"} +``` + +#### Arbitrary Transform + +We also allow you to specify arbitrary transformations as well. Here, you specify your transformation class and we will +automatically instantiate it for use in the transform pipeline. + +``` +{"op":"transform", "class":"some.class.implementing.GtfsTransformStrategy"} +``` + +We additionally provide a mechanism for setting additional properties of the transform. For all additional properties +specified in the JSON snippet, we will attempt to set that Java bean property value on the instantiated transformation object. +See for example: + +``` +{"op":"transform", "class":"org.onebusaway.gtfs_transformer.updates.ShapeTransformStrategy", "shape_id":"6010031", \ +"shape":"wjb~G|abmVpAz]v_@@?wNE_GDaFs@?@dFX`GGjN__@A"} +``` + +Here, we set additional properties on the `ShapeTransformStrategy`, making it possible to reuse and configure a generic +transformer to your needs. + +Additional Examples + +### How to Reduce your GTFS + +We can apply a modification that retains certain GTFS entities and all other entities required directly or indirectly by +those entities. For example, create a file with the following contents (call it modifications.txt, as an example): + +``` +{"op":"retain", "match":{"file":"routes.txt", "route_short_name":"B15"}} +{"op":"retain", "match":{"file":"routes.txt", "route_short_name":"B62"}} +{"op":"retain", "match":{"file":"routes.txt", "route_short_name":"B63"}} +{"op":"retain", "match":{"file":"routes.txt", "route_short_name":"BX19"}} +{"op":"retain", "match":{"file":"routes.txt", "route_short_name":"Q54"}} +{"op":"retain", "match":{"file":"routes.txt", "route_short_name":"S53"}} +``` + +Then run: + +``` +java -jar onebusaway-gtfs-transformer-cli.jar --transform=modifications.txt source-gtfs.zip target-gtfs.zip +``` + +The resulting GTFS will have the retained only the routes with the matching short names and all other entities required +to support those routes. + +* Add a Full Schedule to an Existing Feed + +Consider an existing feed with a number of routes and stops. We can add an entirely new route, with trips and stop-times +and frequency-based service, using the transform. This can be handy to add temporary service to an existing feed. + +``` +{"op":"add", "obj":{"file":"routes.txt", "route_id":"r0", "route_long_name":"Temporary Shuttle", "route_type":3}} + +{"op":"add", "obj":{"file":"calendar.txt", "service_id":"WEEKDAY", "start_date":"20120601", "end_date":"20130630", "monday":1, "tuesday":1, "wednesday":1, "thursday":1, "friday":1}} + +{"op":"add", "obj":{"file":"trips.txt", "trip_id":"t0", "route_id":"r0", "service_id":"WEEKDAY", "trip_headsign":"Inbound"}} +{"op":"add", "obj":{"file":"trips.txt", "trip_id":"t1", "route_id":"r0", "service_id":"WEEKDAY", "trip_headsign":"Outbound"}} + +{"op":"add","obj":{"file":"frequencies.txt","trip_id":"t0","start_time":"06:00:00","end_time":"22:00:00","headway_secs":900}} +{"op":"add","obj":{"file":"frequencies.txt","trip_id":"t1","start_time":"06:00:00","end_time":"22:00:00","headway_secs":900}} + +{"op":"stop_times_factory", "trip_id":"t0", "start_time":"06:00:00", "end_time":"06:20:00", "stop_ids":["s0", "s1", "s2", "s3"]} +{"op":"stop_times_factory", "trip_id":"t1", "start_time":"06:00:00", "end_time":"06:20:00", "stop_ids":["s3", "s2", "s1", "s0"]} +``` + +### Clip National GTFS for Regional Integration and Consistency + +This section of the document describes how to reduce a large GTFS to a smaller area. Several transformations can be applied to a national GTFS to clean it up and adjust the data to a regional area in order to get ready for the integration with another regional GTFS. Below is an overview of the operations carried out: + + * Removing Inactive Calendars and Dates. + * Truncating Calendars and Dates to 21 days. + * Retaining Data Within a Specific Geographic Area: a small geographic area is used for retaining only the entities within our area of interest. All routes and trips that do not pass through this area will therefore be eliminated. + * Trimming Stop Times Outside a Specific Geographic Area: a larger polygon is used to ensure that only the relevant stops_times within a wider region are retained. That means that all trips that go outside the area are truncated. + * Clean up entities that are no longer referenced by any trips. + +RetainUpFromPolygon and TrimTripFromPolygon together will clip the GTFS data to a small area and allow some Origin/Destination transit to nearby cities. + +``` +{"op":"transform", "class":"org.onebusaway.gtfs_transformer.impl.RemoveOldCalendarStatements"} +{"op":"transform", "class":"org.onebusaway.gtfs_transformer.impl.TruncateNewCalendarStatements","calendar_field":6,"calendar_amount":21} +{"op":"retain", "match":{"file":"calendar_dates.txt"}, "retainBlocks":false} + +{"op":"transform","class":"org.onebusaway.gtfs_transformer.impl.RetainUpFromPolygon","polygon":"MULTIPOLYGON (((1.2 43.7, 1.55 43.7, 1.55 43.4, 1.2 43.4, 1.2 43.7)))"} + +{"op":"transform","class":"org.onebusaway.gtfs_transformer.impl.TrimTripFromPolygon","polygon":"MULTIPOLYGON (((1.0 44.2, 2.2 44.2, 2.2 43.3, 1.0 43.3, 1.0 44.2)))"} +{"op":"retain", "match":{"file":"trips.txt"}, "retainBlocks":false} +``` + +![RetainUpFromPolygon and TrimTripFromPolygon](onebusaway-gtfs-transformer-cli-sample1.png "RetainUpFromPolygon and TrimTripFromPolygon") \ No newline at end of file