diff options
| author | Matias Niemelä | 2013-05-16 14:55:56 -0400 | 
|---|---|---|
| committer | Misko Hevery | 2013-05-20 14:27:34 -0700 | 
| commit | 2f571a9c830df814902fbdda1e9240b36bb64e3e (patch) | |
| tree | 87c330af480442b4c7eb52ff8a443db192043e2c /src | |
| parent | 9f4f5937112655a9881d3281da8e72035bc8b180 (diff) | |
| download | angular.js-2f571a9c830df814902fbdda1e9240b36bb64e3e.tar.bz2 | |
chore(ngdocs): move angular-bootstrap.js to be generated only inside the docs and remove from the build process
Diffstat (limited to 'src')
| -rw-r--r-- | src/angular-bootstrap.js | 227 | ||||
| -rw-r--r-- | src/bootstrap/bootstrap-prettify.js | 289 | ||||
| -rw-r--r-- | src/bootstrap/bootstrap.js | 208 | ||||
| -rw-r--r-- | src/bootstrap/css/bootstrap.css | 3990 | ||||
| -rw-r--r-- | src/bootstrap/google-prettify/prettify.css | 30 | ||||
| -rw-r--r-- | src/bootstrap/google-prettify/prettify.js | 1538 | 
6 files changed, 0 insertions, 6282 deletions
| diff --git a/src/angular-bootstrap.js b/src/angular-bootstrap.js deleted file mode 100644 index b55bd475..00000000 --- a/src/angular-bootstrap.js +++ /dev/null @@ -1,227 +0,0 @@ - -/*! - * $script.js Async loader & dependency manager - * https://github.com/ded/script.js - * (c) Dustin Diaz, Jacob Thornton 2011 - * License: MIT - */ -(function (name, definition, context) { -  if (typeof context['module'] != 'undefined' && context['module']['exports']) context['module']['exports'] = definition() -  else if (typeof context['define'] != 'undefined' && context['define'] == 'function' && context['define']['amd']) define(name, definition) -  else context[name] = definition() -})('$script', function () { -  var doc = document -    , head = doc.getElementsByTagName('head')[0] -    , validBase = /^https?:\/\// -    , list = {}, ids = {}, delay = {}, scriptpath -    , scripts = {}, s = 'string', f = false -    , push = 'push', domContentLoaded = 'DOMContentLoaded', readyState = 'readyState' -    , addEventListener = 'addEventListener', onreadystatechange = 'onreadystatechange' - -  function every(ar, fn) { -    for (var i = 0, j = ar.length; i < j; ++i) if (!fn(ar[i])) return f -    return 1 -  } -  function each(ar, fn) { -    every(ar, function(el) { -      return !fn(el) -    }) -  } - -  if (!doc[readyState] && doc[addEventListener]) { -    doc[addEventListener](domContentLoaded, function fn() { -      doc.removeEventListener(domContentLoaded, fn, f) -      doc[readyState] = 'complete' -    }, f) -    doc[readyState] = 'loading' -  } - -  function $script(paths, idOrDone, optDone) { -    paths = paths[push] ? paths : [paths] -    var idOrDoneIsDone = idOrDone && idOrDone.call -      , done = idOrDoneIsDone ? idOrDone : optDone -      , id = idOrDoneIsDone ? paths.join('') : idOrDone -      , queue = paths.length -    function loopFn(item) { -      return item.call ? item() : list[item] -    } -    function callback() { -      if (!--queue) { -        list[id] = 1 -        done && done() -        for (var dset in delay) { -          every(dset.split('|'), loopFn) && !each(delay[dset], loopFn) && (delay[dset] = []) -        } -      } -    } -    setTimeout(function () { -      each(paths, function (path) { -        if (scripts[path]) { -          id && (ids[id] = 1) -          return scripts[path] == 2 && callback() -        } -        scripts[path] = 1 -        id && (ids[id] = 1) -        create(!validBase.test(path) && scriptpath ? scriptpath + path + '.js' : path, callback) -      }) -    }, 0) -    return $script -  } - -  function create(path, fn) { -    var el = doc.createElement('script') -      , loaded = f -    el.onload = el.onerror = el[onreadystatechange] = function () { -      if ((el[readyState] && !(/^c|loade/.test(el[readyState]))) || loaded) return; -      el.onload = el[onreadystatechange] = null -      loaded = 1 -      scripts[path] = 2 -      fn() -    } -    el.async = 1 -    el.src = path -    head.insertBefore(el, head.firstChild) -  } - -  $script.get = create - -  $script.order = function (scripts, id, done) { -    (function callback(s) { -      s = scripts.shift() -      if (!scripts.length) $script(s, id, done) -      else $script(s, callback) -    }()) -  } - -  $script.path = function (p) { -    scriptpath = p -  } -  $script.ready = function (deps, ready, req) { -    deps = deps[push] ? deps : [deps] -    var missing = []; -    !each(deps, function (dep) { -      list[dep] || missing[push](dep); -    }) && every(deps, function (dep) {return list[dep]}) ? -      ready() : !function (key) { -      delay[key] = delay[key] || [] -      delay[key][push](ready) -      req && req(missing) -    }(deps.join('|')) -    return $script -  } -  return $script -}, this); - - -/** - * @license AngularJS - * (c) 2010-2012 Google, Inc. http://angularjs.org - * License: MIT - */ -(function(window, document) { - -  var filename = /^(.*\/)angular-bootstrap.js(#.*)?$/, -      scripts = document.getElementsByTagName("SCRIPT"), -      serverPath, -      match, -      globalVars = {}, -      IGNORE = { -        innerHeight: true, innerWidth: true, -        onkeyup: true, onkeydown: true, onresize: true, -        event: true, frames: true, external: true, -        sessionStorage: true, clipboardData: true, localStorage: true}; - -  for(var j = 0; j < scripts.length; j++) { -    match = (scripts[j].src || "").match(filename); -    if (match) { -      serverPath = match[1]; -    } -  } - -  document.write('<link rel="stylesheet" type="text/css" href="' + serverPath + '../css/angular.css"/>'); - -  $script.path(serverPath+'../'); -  $script('angularFiles', function() { -    var index = 0, -        scripts = angularFiles.angularSrc; - -    try { delete window.angularFiles; } catch(e) { window.angularFiles = undefined; } -    // initialize the window property cache -    for (var prop in window) { -      if (IGNORE[prop] || prop.match(/^moz[A-Z]/)) { //skip special variables which keep on changing -        continue; -      } -      try { -        globalVars[key(prop)] = window[prop]; -      } catch(e) {} //ignore properties that throw exception when accessed (common in FF) -    } - -    (function next() { -      if (index < scripts.length) { -        var file = scripts[index++], -            last = index == scripts.length, -            name = last ? 'angular' : file; - -        $script(file.replace(/\.js$/, ''), name, function() { -          angularClobberTest(file); -          next(); -        }); -      } else { -        // empty the cache to prevent mem leaks -        globalVars = {}; - -        bindJQuery(); -        publishExternalAPI(window.angular); - -        angularInit(document, angular.bootstrap); -      } -    })(); -  }); - -  function key(prop) { -    return "ng-clobber_" + prop; -  } - -  function angularClobberTest(file) { -    var varKey, prop, -        clobbered = {}; - -    for (prop in window) { -      varKey = key(prop); - -      if (IGNORE[prop] || prop.match(/^moz[A-Z]/)) { //skip special variables which keep on changing -        continue; -      } else if (!globalVars.hasOwnProperty(varKey)) { -        //console.log('new global variable found: ', prop); -        try { -          globalVars[varKey] = window[prop]; -        } catch(e) {} //ignore properties that throw exception when accessed (common in FF) -      } else if (globalVars[varKey] !== window[prop] && !isActuallyNaN(window[prop]) && prop != 'jqLite') { -        clobbered[prop] = true; -        console.error("Global variable clobbered by script " + file + "! Variable name: " + prop); -        globalVars[varKey] = window[prop]; -      } -    } -    for (varKey in globalVars) { -      prop = varKey.substr(11); -      if (prop === 'event' || prop.match(/^moz[A-Z]/)) { //skip special variables which keep on changing -        continue; -      } -      if (!clobbered[prop] && -          prop != 'event' && -          prop != 'jqLite' && -          !isActuallyNaN(globalVars[varKey]) && -          globalVars[varKey] !== window[prop]) { - -        delete globalVars[varKey]; -        console.warn("Global variable unexpectedly deleted in script " + file + "! " + -                     "Variable name: " + prop); -      } -    } - -    function isActuallyNaN(val) { -      return (typeof val === 'number') && isNaN(val); -    } -  } -})(window, document); - diff --git a/src/bootstrap/bootstrap-prettify.js b/src/bootstrap/bootstrap-prettify.js deleted file mode 100644 index a9e61d4f..00000000 --- a/src/bootstrap/bootstrap-prettify.js +++ /dev/null @@ -1,289 +0,0 @@ -'use strict'; - -var directive = {}; -var service = { value: {} }; - -var DEPENDENCIES = { -  'angular.js': 'http://code.angularjs.org/' + angular.version.full + '/angular.min.js', -  'angular-resource.js': 'http://code.angularjs.org/' + angular.version.full + '/angular-resource.min.js', -  'angular-sanitize.js': 'http://code.angularjs.org/' + angular.version.full + '/angular-sanitize.min.js', -  'angular-cookies.js': 'http://code.angularjs.org/' + angular.version.full + '/angular-cookies.min.js' -}; - - -function escape(text) { -  return text. -    replace(/\&/g, '&'). -    replace(/\</g, '<'). -    replace(/\>/g, '>'). -    replace(/"/g, '"'); -} - -/** - * http://stackoverflow.com/questions/451486/pre-tag-loses-line-breaks-when-setting-innerhtml-in-ie - * http://stackoverflow.com/questions/195363/inserting-a-newline-into-a-pre-tag-ie-javascript - */ -function setHtmlIe8SafeWay(element, html) { -  var newElement = angular.element('<pre>' + html + '</pre>'); - -  element.html(''); -  element.append(newElement.contents()); -  return element; -} - - -directive.jsFiddle = function(getEmbeddedTemplate, escape, script) { -  return { -    terminal: true, -    link: function(scope, element, attr) { -      var name = '', -        stylesheet = '<link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css">\n', -        fields = { -          html: '', -          css: '', -          js: '' -        }; - -      angular.forEach(attr.jsFiddle.split(' '), function(file, index) { -        var fileType = file.split('.')[1]; - -        if (fileType == 'html') { -          if (index == 0) { -            fields[fileType] += -              '<div ng-app' + (attr.module ? '="' + attr.module + '"' : '') + '>\n' + -                getEmbeddedTemplate(file, 2); -          } else { -            fields[fileType] += '\n\n\n  <!-- CACHE FILE: ' + file + ' -->\n' + -              '  <script type="text/ng-template" id="' + file + '">\n' + -              getEmbeddedTemplate(file, 4) + -              '  </script>\n'; -          } -        } else { -          fields[fileType] += getEmbeddedTemplate(file) + '\n'; -        } -      }); - -      fields.html += '</div>\n'; - -      setHtmlIe8SafeWay(element, -        '<form class="jsfiddle" method="post" action="http://jsfiddle.net/api/post/library/pure/" target="_blank">' + -          hiddenField('title', 'AngularJS Example: ' + name) + -          hiddenField('css', '</style> <!-- Ugly Hack due to jsFiddle issue: http://goo.gl/BUfGZ --> \n' + -            stylesheet + -            script.angular + -            (attr.resource ? script.resource : '') + -            '<style>\n' + -            fields.css) + -          hiddenField('html', fields.html) + -          hiddenField('js', fields.js) + -          '<button class="btn btn-primary"><i class="icon-white icon-pencil"></i> Edit Me</button>' + -          '</form>'); - -      function hiddenField(name, value) { -        return '<input type="hidden" name="' +  name + '" value="' + escape(value) + '">'; -      } -    } -  } -}; - - -directive.code = function() { -  return {restrict: 'E', terminal: true}; -}; - - -directive.prettyprint = ['reindentCode', function(reindentCode) { -  return { -    restrict: 'C', -    terminal: true, -    compile: function(element) { -      element.html(window.prettyPrintOne(reindentCode(element.html()), undefined, true)); -    } -  }; -}]; - - -directive.ngSetText = ['getEmbeddedTemplate', function(getEmbeddedTemplate) { -  return { -    restrict: 'CA', -    priority: 10, -    compile: function(element, attr) { -      setHtmlIe8SafeWay(element, escape(getEmbeddedTemplate(attr.ngSetText))); -    } -  } -}] - - -directive.ngHtmlWrap = ['reindentCode', 'templateMerge', function(reindentCode, templateMerge) { -  return { -    compile: function(element, attr) { -      var properties = { -            head: '', -            module: '', -            body: element.text() -          }, -        html = "<!doctype html>\n<html ng-app{{module}}>\n  <head>\n{{head:4}}  </head>\n  <body>\n{{body:4}}  </body>\n</html>"; - -      angular.forEach((attr.ngHtmlWrap || '').split(' '), function(dep) { -        if (!dep) return; -        dep = DEPENDENCIES[dep] || dep; - -        var ext = dep.split(/\./).pop(); - -        if (ext == 'css') { -          properties.head += '<link rel="stylesheet" href="' + dep + '" type="text/css">\n'; -        } else if(ext == 'js') { -          properties.head += '<script src="' + dep + '"></script>\n'; -        } else { -          properties.module = '="' + dep + '"'; -        } -      }); - -      setHtmlIe8SafeWay(element, escape(templateMerge(html, properties))); -    } -  } -}]; - - -directive.ngSetHtml = ['getEmbeddedTemplate', function(getEmbeddedTemplate) { -  return { -    restrict: 'CA', -    priority: 10, -    compile: function(element, attr) { -      setHtmlIe8SafeWay(element, getEmbeddedTemplate(attr.ngSetHtml)); -    } -  } -}]; - - -directive.ngEvalJavascript = ['getEmbeddedTemplate', function(getEmbeddedTemplate) { -  return { -    compile: function (element, attr) { -      var script = getEmbeddedTemplate(attr.ngEvalJavascript); - -      try { -        if (window.execScript) { // IE -          window.execScript(script || '""'); // IE complains when evaling empty string -        } else { -          window.eval(script); -        } -      } catch (e) { -        if (window.console) { -          window.console.log(script, '\n', e); -        } else { -          window.alert(e); -        } -      } -    } -  }; -}]; - - -directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location', '$sniffer', -                function($templateCache,   $browser,  docsRootScope, $location,   $sniffer) { -  return { -    terminal: true, -    link: function(scope, element, attrs) { -      var modules = []; - -      modules.push(['$provide', function($provide) { -        $provide.value('$templateCache', $templateCache); -        $provide.value('$anchorScroll', angular.noop); -        $provide.value('$browser', $browser); -        $provide.value('$sniffer', $sniffer); -        $provide.provider('$location', function() { -          this.$get = ['$rootScope', function($rootScope) { -            docsRootScope.$on('$locationChangeSuccess', function(event, oldUrl, newUrl) { -              $rootScope.$broadcast('$locationChangeSuccess', oldUrl, newUrl); -            }); -            return $location; -          }]; -          this.html5Mode = angular.noop; -        }); -        $provide.decorator('$timeout', ['$rootScope', '$delegate', function($rootScope, $delegate) { -          return angular.extend(function(fn, delay) { -            if (delay && delay > 50) { -              return setTimeout(function() { -                $rootScope.$apply(fn); -              }, delay); -            } else { -              return $delegate.apply(this, arguments); -            } -          }, $delegate); -        }]); -        $provide.decorator('$rootScope', ['$delegate', function(embedRootScope) { -          docsRootScope.$watch(function embedRootScopeDigestWatch() { -            embedRootScope.$digest(); -          }); -          return embedRootScope; -        }]); -      }]); -      if (attrs.ngEmbedApp)  modules.push(attrs.ngEmbedApp); - -      element.bind('click', function(event) { -        if (event.target.attributes.getNamedItem('ng-click')) { -          event.preventDefault(); -        } -      }); - -      angular.bootstrap(element, modules); -    } -  }; -}]; - -service.reindentCode = function() { -  return function (text, spaces) { -    if (!text) return text; -    var lines = text.split(/\r?\n/); -    var prefix = '      '.substr(0, spaces || 0); -    var i; - -    // remove any leading blank lines -    while (lines.length && lines[0].match(/^\s*$/)) lines.shift(); -    // remove any trailing blank lines -    while (lines.length && lines[lines.length - 1].match(/^\s*$/)) lines.pop(); -    var minIndent = 999; -    for (i = 0; i < lines.length; i++) { -      var line = lines[0]; -      var reindentCode = line.match(/^\s*/)[0]; -      if (reindentCode !== line && reindentCode.length < minIndent) { -        minIndent = reindentCode.length; -      } -    } - -    for (i = 0; i < lines.length; i++) { -      lines[i] = prefix + lines[i].substring(minIndent); -    } -    lines.push(''); -    return lines.join('\n'); -  } -}; - -service.templateMerge = ['reindentCode', function(indentCode) { -  return function(template, properties) { -    return template.replace(/\{\{(\w+)(?:\:(\d+))?\}\}/g, function(_, key, indent) { -      var value = properties[key]; - -      if (indent) { -        value = indentCode(value, indent); -      } - -      return value == undefined ? '' : value; -    }); -  }; -}]; - -service.getEmbeddedTemplate = ['reindentCode', function(reindentCode) { -  return function (id) { -    var element = document.getElementById(id); - -    if (!element) { -      return null; -    } - -    return reindentCode(angular.element(element).html(), 0); -  } -}]; - - -angular.module('bootstrapPrettify', []).directive(directive).factory(service); diff --git a/src/bootstrap/bootstrap.js b/src/bootstrap/bootstrap.js deleted file mode 100644 index 91d6590e..00000000 --- a/src/bootstrap/bootstrap.js +++ /dev/null @@ -1,208 +0,0 @@ -'use strict'; - -var directive = {}; - -directive.dropdownToggle = -          ['$document', '$location', '$window', -  function ($document,   $location,   $window) { -    var openElement = null, close; -    return { -      restrict: 'C', -      link: function(scope, element, attrs) { -        scope.$watch(function dropdownTogglePathWatch(){return $location.path();}, function dropdownTogglePathWatchAction() { -          close && close(); -        }); - -        element.parent().bind('click', function(event) { -          close && close(); -        }); - -        element.bind('click', function(event) { -          event.preventDefault(); -          event.stopPropagation(); - -          var iWasOpen = false; - -          if (openElement) { -            iWasOpen = openElement === element; -            close(); -          } - -          if (!iWasOpen){ -            element.parent().addClass('open'); -            openElement = element; - -            close = function (event) { -              event && event.preventDefault(); -              event && event.stopPropagation(); -              $document.unbind('click', close); -              element.parent().removeClass('open'); -              close = null; -              openElement = null; -            } - -            $document.bind('click', close); -          } -        }); -      } -    }; -  }]; - -directive.syntax = function() { -  return { -    restrict: 'A', -    link: function(scope, element, attrs) { -      function makeLink(type, text, link, icon) { -        return '<a href="' + link + '" class="btn syntax-' + type + '" target="_blank" rel="nofollow">' +  -                '<span class="' + icon + '"></span> ' + text + -               '</a>'; -      }; -      var html = '<nav class="syntax-links">'; -      var types = { -        'github' : { -          text : 'View on Github', -          key : 'syntaxGithub', -          icon : 'icon-github' -        }, -        'plunkr' : { -          text : 'View on Plunkr', -          key : 'syntaxPlunkr', -          icon : 'icon-arrow-down' -        }, -        'jsfiddle' : { -          text : 'View on JSFiddle', -          key : 'syntaxFiddle', -          icon : 'icon-cloud' -        } -      }; -      for(var type in types) { -        var data = types[type]; -        var link = attrs[data.key]; -        if(link) { -          html += makeLink(type, data.text, link, data.icon); -        } -      }; -      html += '</nav>'; -      var nav = angular.element(html); -      var node = element[0]; -      var par = node.parentNode; -      par.insertBefore(nav[0], node); -    } -  } -} - -directive.tabbable = function() { -  return { -    restrict: 'C', -    compile: function(element) { -      var navTabs = angular.element('<ul class="nav nav-tabs"></ul>'), -          tabContent = angular.element('<div class="tab-content"></div>'); - -      tabContent.append(element.contents()); -      element.append(navTabs).append(tabContent); -    }, -    controller: ['$scope', '$element', function($scope, $element) { -      var navTabs = $element.contents().eq(0), -          ngModel = $element.controller('ngModel') || {}, -          tabs = [], -          selectedTab; - -      ngModel.$render = function() { -        var $viewValue = this.$viewValue; - -        if (selectedTab ? (selectedTab.value != $viewValue) : $viewValue) { -          if(selectedTab) { -            selectedTab.paneElement.removeClass('active'); -            selectedTab.tabElement.removeClass('active'); -            selectedTab = null; -          } -          if($viewValue) { -            for(var i = 0, ii = tabs.length; i < ii; i++) { -              if ($viewValue == tabs[i].value) { -                selectedTab = tabs[i]; -                break; -              } -            } -            if (selectedTab) { -              selectedTab.paneElement.addClass('active'); -              selectedTab.tabElement.addClass('active'); -            } -          } - -        } -      }; - -      this.addPane = function(element, attr) { -        var li = angular.element('<li><a href></a></li>'), -            a = li.find('a'), -            tab = { -              paneElement: element, -              paneAttrs: attr, -              tabElement: li -            }; - -        tabs.push(tab); - -        attr.$observe('value', update)(); -        attr.$observe('title', function(){ update(); a.text(tab.title); })(); - -        function update() { -          tab.title = attr.title; -          tab.value = attr.value || attr.title; -          if (!ngModel.$setViewValue && (!ngModel.$viewValue || tab == selectedTab)) { -            // we are not part of angular -            ngModel.$viewValue = tab.value; -          } -          ngModel.$render(); -        } - -        navTabs.append(li); -        li.bind('click', function(event) { -          event.preventDefault(); -          event.stopPropagation(); -          if (ngModel.$setViewValue) { -            $scope.$apply(function() { -              ngModel.$setViewValue(tab.value); -              ngModel.$render(); -            }); -          } else { -            // we are not part of angular -            ngModel.$viewValue = tab.value; -            ngModel.$render(); -          } -        }); - -        return function() { -          tab.tabElement.remove(); -          for(var i = 0, ii = tabs.length; i < ii; i++ ) { -            if (tab == tabs[i]) { -              tabs.splice(i, 1); -            } -          } -        }; -      } -    }] -  }; -}; - -directive.table = function() { -  return { -    restrict: 'E', -    link: function(scope, element, attrs) { -      element[0].className = 'table table-bordered table-striped code-table'; -    } -  }; -}; - -directive.tabPane = function() { -  return { -    require: '^tabbable', -    restrict: 'C', -    link: function(scope, element, attrs, tabsCtrl) { -      element.bind('$remove', tabsCtrl.addPane(element, attrs)); -    } -  }; -}; - - -angular.module('bootstrap', []).directive(directive); diff --git a/src/bootstrap/css/bootstrap.css b/src/bootstrap/css/bootstrap.css deleted file mode 100644 index d2e2a6bf..00000000 --- a/src/bootstrap/css/bootstrap.css +++ /dev/null @@ -1,3990 +0,0 @@ -/*! - * Bootstrap v2.0.2 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world @twitter by @mdo and @fat. - */ -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -nav, -section { -  display: block; -} -audio, -canvas, -video { -  display: inline-block; -  *display: inline; -  *zoom: 1; -} -audio:not([controls]) { -  display: none; -} -html { -  font-size: 100%; -  -webkit-text-size-adjust: 100%; -  -ms-text-size-adjust: 100%; -} -a:focus { -  outline: thin dotted #333; -  outline: 5px auto -webkit-focus-ring-color; -  outline-offset: -2px; -} -a:hover, -a:active { -  outline: 0; -} -sub, -sup { -  position: relative; -  font-size: 75%; -  line-height: 0; -  vertical-align: baseline; -} -sup { -  top: -0.5em; -} -sub { -  bottom: -0.25em; -} -img { -  height: auto; -  border: 0; -  -ms-interpolation-mode: bicubic; -  vertical-align: middle; -} -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, -input[type="button"], -input[type="reset"], -input[type="submit"] { -  cursor: pointer; -  -webkit-appearance: button; -} -input[type="search"] { -  -webkit-appearance: textfield; -  -webkit-box-sizing: content-box; -  -moz-box-sizing: content-box; -  box-sizing: content-box; -} -input[type="search"]::-webkit-search-decoration, -input[type="search"]::-webkit-search-cancel-button { -  -webkit-appearance: none; -} -textarea { -  overflow: auto; -  vertical-align: top; -} -.clearfix { -  *zoom: 1; -} -.clearfix:before, -.clearfix:after { -  display: table; -  content: ""; -} -.clearfix:after { -  clear: both; -} -.hide-text { -  overflow: hidden; -  text-indent: 100%; -  white-space: nowrap; -} -.input-block-level { -  display: block; -  width: 100%; -  min-height: 28px; -  /* Make inputs at least the height of their button counterpart */ - -  /* Makes inputs behave like true block-level elements */ - -  -webkit-box-sizing: border-box; -  -moz-box-sizing: border-box; -  -ms-box-sizing: border-box; -  box-sizing: border-box; -} -body { -  margin: 0; -  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -  font-size: 13px; -  line-height: 18px; -  color: #333333; -  background-color: #ffffff; -} -a { -  color: #0088cc; -  text-decoration: none; -} -a:hover { -  color: #005580; -  text-decoration: underline; -} -.row { -  margin-left: -20px; -  *zoom: 1; -} -.row:before, -.row:after { -  display: table; -  content: ""; -} -.row:after { -  clear: both; -} -[class*="span"] { -  float: left; -  margin-left: 20px; -} -.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; -  content: ""; -} -.row-fluid:after { -  clear: both; -} -.row-fluid > [class*="span"] { -  float: left; -  margin-left: 2.127659574%; -} -.row-fluid > [class*="span"]:first-child { -  margin-left: 0; -} -.row-fluid > .span12 { -  width: 99.99999998999999%; -} -.row-fluid > .span11 { -  width: 91.489361693%; -} -.row-fluid > .span10 { -  width: 82.97872339599999%; -} -.row-fluid > .span9 { -  width: 74.468085099%; -} -.row-fluid > .span8 { -  width: 65.95744680199999%; -} -.row-fluid > .span7 { -  width: 57.446808505%; -} -.row-fluid > .span6 { -  width: 48.93617020799999%; -} -.row-fluid > .span5 { -  width: 40.425531911%; -} -.row-fluid > .span4 { -  width: 31.914893614%; -} -.row-fluid > .span3 { -  width: 23.404255317%; -} -.row-fluid > .span2 { -  width: 14.89361702%; -} -.row-fluid > .span1 { -  width: 6.382978723%; -} -.container { -  margin-left: auto; -  margin-right: auto; -  *zoom: 1; -} -.container:before, -.container:after { -  display: table; -  content: ""; -} -.container:after { -  clear: both; -} -.container-fluid { -  padding-left: 20px; -  padding-right: 20px; -  *zoom: 1; -} -.container-fluid:before, -.container-fluid:after { -  display: table; -  content: ""; -} -.container-fluid:after { -  clear: both; -} -p { -  margin: 0 0 9px; -  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -  font-size: 13px; -  line-height: 18px; -} -p small { -  font-size: 11px; -  color: #999999; -} -.lead { -  margin-bottom: 18px; -  font-size: 20px; -  font-weight: 200; -  line-height: 27px; -} -h1, -h2, -h3, -h4, -h5, -h6 { -  margin: 0; -  font-family: inherit; -  font-weight: bold; -  color: inherit; -  text-rendering: optimizelegibility; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small { -  font-weight: normal; -  color: #999999; -} -h1 { -  font-size: 30px; -  line-height: 36px; -} -h1 small { -  font-size: 18px; -} -h2 { -  font-size: 24px; -  line-height: 36px; -} -h2 small { -  font-size: 18px; -} -h3 { -  line-height: 27px; -  font-size: 18px; -} -h3 small { -  font-size: 14px; -} -h4, -h5, -h6 { -  line-height: 18px; -} -h4 { -  font-size: 14px; -} -h4 small { -  font-size: 12px; -} -h5 { -  font-size: 12px; -} -h6 { -  font-size: 11px; -  color: #999999; -  text-transform: uppercase; -} -.page-header { -  padding-bottom: 17px; -  margin: 18px 0; -  border-bottom: 1px solid #eeeeee; -} -.page-header h1 { -  line-height: 1; -} -ul, -ol { -  padding: 0; -  margin: 0 0 9px 25px; -} -ul ul, -ul ol, -ol ol, -ol ul { -  margin-bottom: 0; -} -ul { -  list-style: disc; -} -ol { -  list-style: decimal; -} -li { -  line-height: 18px; -} -ul.unstyled, -ol.unstyled { -  margin-left: 0; -  list-style: none; -} -dl { -  margin-bottom: 18px; -} -dt, -dd { -  line-height: 18px; -} -dt { -  font-weight: bold; -  line-height: 17px; -} -dd { -  margin-left: 9px; -} -.dl-horizontal dt { -  float: left; -  clear: left; -  width: 120px; -  text-align: right; -} -.dl-horizontal dd { -  margin-left: 130px; -} -hr { -  margin: 18px 0; -  border: 0; -  border-top: 1px solid #eeeeee; -  border-bottom: 1px solid #ffffff; -} -strong { -  font-weight: bold; -} -em { -  font-style: italic; -} -.muted { -  color: #999999; -} -abbr[title] { -  border-bottom: 1px dotted #ddd; -  cursor: help; -} -abbr.initialism { -  font-size: 90%; -  text-transform: uppercase; -} -blockquote { -  padding: 0 0 0 15px; -  margin: 0 0 18px; -  border-left: 5px solid #eeeeee; -} -blockquote p { -  margin-bottom: 0; -  font-size: 16px; -  font-weight: 300; -  line-height: 22.5px; -} -blockquote small { -  display: block; -  line-height: 18px; -  color: #999999; -} -blockquote small:before { -  content: '\2014 \00A0'; -} -blockquote.pull-right { -  float: right; -  padding-left: 0; -  padding-right: 15px; -  border-left: 0; -  border-right: 5px solid #eeeeee; -} -blockquote.pull-right p, -blockquote.pull-right small { -  text-align: right; -} -q:before, -q:after, -blockquote:before, -blockquote:after { -  content: ""; -} -address { -  display: block; -  margin-bottom: 18px; -  line-height: 18px; -  font-style: normal; -} -small { -  font-size: 100%; -} -cite { -  font-style: normal; -} -code, -pre { -  padding: 0 3px 2px; -  font-family: Menlo, Monaco, "Courier New", monospace; -  font-size: 12px; -  color: #333333; -  -webkit-border-radius: 3px; -  -moz-border-radius: 3px; -  border-radius: 3px; -} -code { -  padding: 2px 4px; -  color: #d14; -  background-color: #f7f7f9; -  border: 1px solid #e1e1e8; -} -pre { -  display: block; -  padding: 8.5px; -  margin: 0 0 9px; -  font-size: 12.025px; -  line-height: 18px; -  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; -  white-space: pre; -  white-space: pre-wrap; -  word-break: break-all; -  word-wrap: break-word; -} -pre.prettyprint { -  margin-bottom: 18px; -} -pre code { -  padding: 0; -  color: inherit; -  background-color: transparent; -  border: 0; -} -.pre-scrollable { -  max-height: 340px; -  overflow-y: scroll; -} -form { -  margin: 0 0 18px; -} -fieldset { -  padding: 0; -  margin: 0; -  border: 0; -} -legend { -  display: block; -  width: 100%; -  padding: 0; -  margin-bottom: 27px; -  font-size: 19.5px; -  line-height: 36px; -  color: #333333; -  border: 0; -  border-bottom: 1px solid #eee; -} -legend small { -  font-size: 13.5px; -  color: #999999; -} -label, -input, -button, -select, -textarea { -  font-size: 13px; -  font-weight: normal; -  line-height: 18px; -} -input, -button, -select, -textarea { -  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -} -label { -  display: block; -  margin-bottom: 5px; -  color: #333333; -} -input, -textarea, -select, -.uneditable-input { -  display: inline-block; -  width: 210px; -  height: 18px; -  padding: 4px; -  margin-bottom: 9px; -  font-size: 13px; -  line-height: 18px; -  color: #555555; -  border: 1px solid #cccccc; -  -webkit-border-radius: 3px; -  -moz-border-radius: 3px; -  border-radius: 3px; -} -.uneditable-textarea { -  width: auto; -  height: auto; -} -label input, -label textarea, -label select { -  display: block; -} -input[type="image"], -input[type="checkbox"], -input[type="radio"] { -  width: auto; -  height: auto; -  padding: 0; -  margin: 3px 0; -  *margin-top: 0; -  /* IE7 */ - -  line-height: normal; -  cursor: pointer; -  -webkit-border-radius: 0; -  -moz-border-radius: 0; -  border-radius: 0; -  border: 0 \9; -  /* IE9 and down */ - -} -input[type="image"] { -  border: 0; -} -input[type="file"] { -  width: auto; -  padding: initial; -  line-height: initial; -  border: initial; -  background-color: #ffffff; -  background-color: initial; -  -webkit-box-shadow: none; -  -moz-box-shadow: none; -  box-shadow: none; -} -input[type="button"], -input[type="reset"], -input[type="submit"] { -  width: auto; -  height: auto; -} -select, -input[type="file"] { -  height: 28px; -  /* In IE7, the height of the select element cannot be changed by height, only font-size */ - -  *margin-top: 4px; -  /* For IE7, add top margin to align select with labels */ - -  line-height: 28px; -} -input[type="file"] { -  line-height: 18px \9; -} -select { -  width: 220px; -  background-color: #ffffff; -} -select[multiple], -select[size] { -  height: auto; -} -input[type="image"] { -  -webkit-box-shadow: none; -  -moz-box-shadow: none; -  box-shadow: none; -} -textarea { -  height: auto; -} -input[type="hidden"] { -  display: none; -} -.radio, -.checkbox { -  padding-left: 18px; -} -.radio input[type="radio"], -.checkbox input[type="checkbox"] { -  float: left; -  margin-left: -18px; -} -.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, -textarea { -  -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 0.2s, box-shadow linear 0.2s; -  -moz-transition: border linear 0.2s, box-shadow linear 0.2s; -  -ms-transition: border linear 0.2s, box-shadow linear 0.2s; -  -o-transition: border linear 0.2s, box-shadow linear 0.2s; -  transition: border linear 0.2s, box-shadow linear 0.2s; -} -input:focus, -textarea:focus { -  border-color: rgba(82, 168, 236, 0.8); -  -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); -  outline: 0; -  outline: thin dotted \9; -  /* IE6-9 */ - -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus, -select:focus { -  -webkit-box-shadow: none; -  -moz-box-shadow: none; -  box-shadow: none; -  outline: thin dotted #333; -  outline: 5px auto -webkit-focus-ring-color; -  outline-offset: -2px; -} -.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 { -  float: none; -  margin-left: 0; -} -input, -textarea, -.uneditable-input { -  margin-left: 0; -} -input.span12, textarea.span12, .uneditable-input.span12 { -  width: 930px; -} -input.span11, textarea.span11, .uneditable-input.span11 { -  width: 850px; -} -input.span10, textarea.span10, .uneditable-input.span10 { -  width: 770px; -} -input.span9, textarea.span9, .uneditable-input.span9 { -  width: 690px; -} -input.span8, textarea.span8, .uneditable-input.span8 { -  width: 610px; -} -input.span7, textarea.span7, .uneditable-input.span7 { -  width: 530px; -} -input.span6, textarea.span6, .uneditable-input.span6 { -  width: 450px; -} -input.span5, textarea.span5, .uneditable-input.span5 { -  width: 370px; -} -input.span4, textarea.span4, .uneditable-input.span4 { -  width: 290px; -} -input.span3, textarea.span3, .uneditable-input.span3 { -  width: 210px; -} -input.span2, textarea.span2, .uneditable-input.span2 { -  width: 130px; -} -input.span1, textarea.span1, .uneditable-input.span1 { -  width: 50px; -} -input[disabled], -select[disabled], -textarea[disabled], -input[readonly], -select[readonly], -textarea[readonly] { -  background-color: #eeeeee; -  border-color: #ddd; -  cursor: not-allowed; -} -.control-group.warning > label, -.control-group.warning .help-block, -.control-group.warning .help-inline { -  color: #c09853; -} -.control-group.warning input, -.control-group.warning select, -.control-group.warning textarea { -  color: #c09853; -  border-color: #c09853; -} -.control-group.warning input:focus, -.control-group.warning select:focus, -.control-group.warning textarea:focus { -  border-color: #a47e3c; -  -webkit-box-shadow: 0 0 6px #dbc59e; -  -moz-box-shadow: 0 0 6px #dbc59e; -  box-shadow: 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 > label, -.control-group.error .help-block, -.control-group.error .help-inline { -  color: #b94a48; -} -.control-group.error input, -.control-group.error select, -.control-group.error textarea { -  color: #b94a48; -  border-color: #b94a48; -} -.control-group.error input:focus, -.control-group.error select:focus, -.control-group.error textarea:focus { -  border-color: #953b39; -  -webkit-box-shadow: 0 0 6px #d59392; -  -moz-box-shadow: 0 0 6px #d59392; -  box-shadow: 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 > label, -.control-group.success .help-block, -.control-group.success .help-inline { -  color: #468847; -} -.control-group.success input, -.control-group.success select, -.control-group.success textarea { -  color: #468847; -  border-color: #468847; -} -.control-group.success input:focus, -.control-group.success select:focus, -.control-group.success textarea:focus { -  border-color: #356635; -  -webkit-box-shadow: 0 0 6px #7aba7b; -  -moz-box-shadow: 0 0 6px #7aba7b; -  box-shadow: 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; -} -input:focus:required:invalid, -textarea:focus:required:invalid, -select:focus:required:invalid { -  color: #b94a48; -  border-color: #ee5f5b; -} -input:focus:required:invalid:focus, -textarea:focus:required:invalid:focus, -select:focus:required: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: 17px 20px 18px; -  margin-top: 18px; -  margin-bottom: 18px; -  background-color: #eeeeee; -  border-top: 1px solid #ddd; -  *zoom: 1; -} -.form-actions:before, -.form-actions:after { -  display: table; -  content: ""; -} -.form-actions:after { -  clear: both; -} -.uneditable-input { -  display: block; -  background-color: #ffffff; -  border-color: #eee; -  -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); -  cursor: not-allowed; -} -:-moz-placeholder { -  color: #999999; -} -::-webkit-input-placeholder { -  color: #999999; -} -.help-block, -.help-inline { -  color: #555555; -} -.help-block { -  display: block; -  margin-bottom: 9px; -} -.help-inline { -  display: inline-block; -  *display: inline; -  /* IE7 inline-block hack */ - -  *zoom: 1; -  vertical-align: middle; -  padding-left: 5px; -} -.input-prepend, -.input-append { -  margin-bottom: 5px; -} -.input-prepend input, -.input-append input, -.input-prepend select, -.input-append select, -.input-prepend .uneditable-input, -.input-append .uneditable-input { -  *margin-left: 0; -  -webkit-border-radius: 0 3px 3px 0; -  -moz-border-radius: 0 3px 3px 0; -  border-radius: 0 3px 3px 0; -} -.input-prepend input:focus, -.input-append input:focus, -.input-prepend select:focus, -.input-append select:focus, -.input-prepend .uneditable-input:focus, -.input-append .uneditable-input:focus { -  position: relative; -  z-index: 2; -} -.input-prepend .uneditable-input, -.input-append .uneditable-input { -  border-left-color: #ccc; -} -.input-prepend .add-on, -.input-append .add-on { -  display: inline-block; -  width: auto; -  min-width: 16px; -  height: 18px; -  padding: 4px 5px; -  font-weight: normal; -  line-height: 18px; -  text-align: center; -  text-shadow: 0 1px 0 #ffffff; -  vertical-align: middle; -  background-color: #eeeeee; -  border: 1px solid #ccc; -} -.input-prepend .add-on, -.input-append .add-on, -.input-prepend .btn, -.input-append .btn { -  -webkit-border-radius: 3px 0 0 3px; -  -moz-border-radius: 3px 0 0 3px; -  border-radius: 3px 0 0 3px; -} -.input-prepend .active, -.input-append .active { -  background-color: #a9dba9; -  border-color: #46a546; -} -.input-prepend .add-on, -.input-prepend .btn { -  margin-right: -1px; -} -.input-append input, -.input-append select .uneditable-input { -  -webkit-border-radius: 3px 0 0 3px; -  -moz-border-radius: 3px 0 0 3px; -  border-radius: 3px 0 0 3px; -} -.input-append .uneditable-input { -  border-left-color: #eee; -  border-right-color: #ccc; -} -.input-append .add-on, -.input-append .btn { -  margin-left: -1px; -  -webkit-border-radius: 0 3px 3px 0; -  -moz-border-radius: 0 3px 3px 0; -  border-radius: 0 3px 3px 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 .add-on:first-child, -.input-prepend.input-append .btn:first-child { -  margin-right: -1px; -  -webkit-border-radius: 3px 0 0 3px; -  -moz-border-radius: 3px 0 0 3px; -  border-radius: 3px 0 0 3px; -} -.input-prepend.input-append .add-on:last-child, -.input-prepend.input-append .btn:last-child { -  margin-left: -1px; -  -webkit-border-radius: 0 3px 3px 0; -  -moz-border-radius: 0 3px 3px 0; -  border-radius: 0 3px 3px 0; -} -.search-query { -  padding-left: 14px; -  padding-right: 14px; -  margin-bottom: 0; -  -webkit-border-radius: 14px; -  -moz-border-radius: 14px; -  border-radius: 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; -  margin-bottom: 0; -} -.form-search .hide, -.form-inline .hide, -.form-horizontal .hide { -  display: none; -} -.form-search label, -.form-inline label { -  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-left: 0; -  margin-right: 3px; -} -.control-group { -  margin-bottom: 9px; -} -legend + .control-group { -  margin-top: 18px; -  -webkit-margin-top-collapse: separate; -} -.form-horizontal .control-group { -  margin-bottom: 18px; -  *zoom: 1; -} -.form-horizontal .control-group:before, -.form-horizontal .control-group:after { -  display: table; -  content: ""; -} -.form-horizontal .control-group:after { -  clear: both; -} -.form-horizontal .control-label { -  float: left; -  width: 140px; -  padding-top: 5px; -  text-align: right; -} -.form-horizontal .controls { -  margin-left: 160px; -  /* Super jank IE7 fix to ensure the inputs in .input-append and input-prepend don't inherit the margin of the parent, in this case .controls */ - -  *display: inline-block; -  *margin-left: 0; -  *padding-left: 20px; -} -.form-horizontal .help-block { -  margin-top: 9px; -  margin-bottom: 0; -} -.form-horizontal .form-actions { -  padding-left: 160px; -} -table { -  max-width: 100%; -  border-collapse: collapse; -  border-spacing: 0; -  background-color: transparent; -} -.table { -  width: 100%; -  margin-bottom: 18px; -} -.table th, -.table td { -  padding: 8px; -  line-height: 18px; -  text-align: left; -  vertical-align: top; -  border-top: 1px solid #dddddd; -} -.table th { -  font-weight: bold; -} -.table thead th { -  vertical-align: bottom; -} -.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 #dddddd; -} -.table-condensed th, -.table-condensed td { -  padding: 4px 5px; -} -.table-bordered { -  border: 1px solid #dddddd; -  border-left: 0; -  border-collapse: separate; -  *border-collapse: collapsed; -  -webkit-border-radius: 4px; -  -moz-border-radius: 4px; -  border-radius: 4px; -} -.table-bordered th, -.table-bordered td { -  border-left: 1px solid #dddddd; -} -.table-bordered thead:first-child tr:first-child th, -.table-bordered tbody:first-child tr:first-child th, -.table-bordered tbody:first-child tr:first-child td { -  border-top: 0; -} -.table-bordered thead:first-child tr:first-child th:first-child, -.table-bordered tbody:first-child tr:first-child td:first-child { -  -webkit-border-radius: 4px 0 0 0; -  -moz-border-radius: 4px 0 0 0; -  border-radius: 4px 0 0 0; -} -.table-bordered thead:first-child tr:first-child th:last-child, -.table-bordered tbody:first-child tr:first-child td:last-child { -  -webkit-border-radius: 0 4px 0 0; -  -moz-border-radius: 0 4px 0 0; -  border-radius: 0 4px 0 0; -} -.table-bordered thead:last-child tr:last-child th:first-child, -.table-bordered tbody:last-child tr:last-child td:first-child { -  -webkit-border-radius: 0 0 0 4px; -  -moz-border-radius: 0 0 0 4px; -  border-radius: 0 0 0 4px; -} -.table-bordered thead:last-child tr:last-child th:last-child, -.table-bordered tbody:last-child tr:last-child td:last-child { -  -webkit-border-radius: 0 0 4px 0; -  -moz-border-radius: 0 0 4px 0; -  border-radius: 0 0 4px 0; -} -.table-striped tbody tr:nth-child(odd) td, -.table-striped tbody tr:nth-child(odd) th { -  background-color: #f9f9f9; -} -.table tbody tr:hover td, -.table tbody tr:hover th { -  background-color: #f5f5f5; -} -table .span1 { -  float: none; -  width: 44px; -  margin-left: 0; -} -table .span2 { -  float: none; -  width: 124px; -  margin-left: 0; -} -table .span3 { -  float: none; -  width: 204px; -  margin-left: 0; -} -table .span4 { -  float: none; -  width: 284px; -  margin-left: 0; -} -table .span5 { -  float: none; -  width: 364px; -  margin-left: 0; -} -table .span6 { -  float: none; -  width: 444px; -  margin-left: 0; -} -table .span7 { -  float: none; -  width: 524px; -  margin-left: 0; -} -table .span8 { -  float: none; -  width: 604px; -  margin-left: 0; -} -table .span9 { -  float: none; -  width: 684px; -  margin-left: 0; -} -table .span10 { -  float: none; -  width: 764px; -  margin-left: 0; -} -table .span11 { -  float: none; -  width: 844px; -  margin-left: 0; -} -table .span12 { -  float: none; -  width: 924px; -  margin-left: 0; -} -table .span13 { -  float: none; -  width: 1004px; -  margin-left: 0; -} -table .span14 { -  float: none; -  width: 1084px; -  margin-left: 0; -} -table .span15 { -  float: none; -  width: 1164px; -  margin-left: 0; -} -table .span16 { -  float: none; -  width: 1244px; -  margin-left: 0; -} -table .span17 { -  float: none; -  width: 1324px; -  margin-left: 0; -} -table .span18 { -  float: none; -  width: 1404px; -  margin-left: 0; -} -table .span19 { -  float: none; -  width: 1484px; -  margin-left: 0; -} -table .span20 { -  float: none; -  width: 1564px; -  margin-left: 0; -} -table .span21 { -  float: none; -  width: 1644px; -  margin-left: 0; -} -table .span22 { -  float: none; -  width: 1724px; -  margin-left: 0; -} -table .span23 { -  float: none; -  width: 1804px; -  margin-left: 0; -} -table .span24 { -  float: none; -  width: 1884px; -  margin-left: 0; -} -[class^="icon-"], -[class*=" icon-"] { -  display: inline-block; -  width: 14px; -  height: 14px; -  line-height: 14px; -  vertical-align: text-top; -  background-image: url("../../../docs/img/glyphicons-halflings.png"); -  background-position: 14px 14px; -  background-repeat: no-repeat; -  *margin-right: .3em; -} -[class^="icon-"]:last-child, -[class*=" icon-"]:last-child { -  *margin-left: 0; -} -.icon-white { -  background-image: url("../../../docs/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 { -  background-position: -216px -120px; -} -.icon-comment { -  background-position: -240px -120px; -} -.icon-magnet { -  background-position: -264px -120px; -} -.icon-chevron-up { -  background-position: -288px -120px; -} -.icon-chevron-down { -  background-position: -313px -119px; -} -.icon-retweet { -  background-position: -336px -120px; -} -.icon-shopping-cart { -  background-position: -360px -120px; -} -.icon-folder-close { -  background-position: -384px -120px; -} -.icon-folder-open { -  background-position: -408px -120px; -} -.icon-resize-vertical { -  background-position: -432px -119px; -} -.icon-resize-horizontal { -  background-position: -456px -118px; -} -.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-left: 4px solid transparent; -  border-right: 4px solid transparent; -  border-top: 4px solid #000000; -  opacity: 0.3; -  filter: alpha(opacity=30); -  content: ""; -} -.dropdown .caret { -  margin-top: 8px; -  margin-left: 2px; -} -.dropdown:hover .caret, -.open.dropdown .caret { -  opacity: 1; -  filter: alpha(opacity=100); -} -.dropdown-menu { -  position: absolute; -  top: 100%; -  left: 0; -  z-index: 1000; -  float: left; -  display: none; -  min-width: 160px; -  padding: 4px 0; -  margin: 0; -  list-style: none; -  background-color: #ffffff; -  border-color: #ccc; -  border-color: rgba(0, 0, 0, 0.2); -  border-style: solid; -  border-width: 1px; -  -webkit-border-radius: 0 0 5px 5px; -  -moz-border-radius: 0 0 5px 5px; -  border-radius: 0 0 5px 5px; -  -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; -  *border-right-width: 2px; -  *border-bottom-width: 2px; -} -.dropdown-menu.pull-right { -  right: 0; -  left: auto; -} -.dropdown-menu .divider { -  height: 1px; -  margin: 8px 1px; -  overflow: hidden; -  background-color: #e5e5e5; -  border-bottom: 1px solid #ffffff; -  *width: 100%; -  *margin: -5px 0 5px; -} -.dropdown-menu a { -  display: block; -  padding: 3px 15px; -  clear: both; -  font-weight: normal; -  line-height: 18px; -  color: #333333; -  white-space: nowrap; -} -.dropdown-menu li > a:hover, -.dropdown-menu .active > a, -.dropdown-menu .active > a:hover { -  color: #ffffff; -  text-decoration: none; -  background-color: #0088cc; -} -.dropdown.open { -  *z-index: 1000; -} -.dropdown.open .dropdown-toggle { -  color: #ffffff; -  background: #ccc; -  background: rgba(0, 0, 0, 0.3); -} -.dropdown.open .dropdown-menu { -  display: block; -} -.pull-right .dropdown-menu { -  left: auto; -  right: 0; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { -  border-top: 0; -  border-bottom: 4px solid #000000; -  content: "\2191"; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { -  top: auto; -  bottom: 100%; -  margin-bottom: 1px; -} -.typeahead { -  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 #eee; -  border: 1px solid rgba(0, 0, 0, 0.05); -  -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 { -  -webkit-transition: opacity 0.15s linear; -  -moz-transition: opacity 0.15s linear; -  -ms-transition: opacity 0.15s linear; -  -o-transition: opacity 0.15s linear; -  transition: opacity 0.15s linear; -  opacity: 0; -} -.fade.in { -  opacity: 1; -} -.collapse { -  -webkit-transition: height 0.35s ease; -  -moz-transition: height 0.35s ease; -  -ms-transition: height 0.35s ease; -  -o-transition: height 0.35s ease; -  transition: height 0.35s ease; -  position: relative; -  overflow: hidden; -  height: 0; -} -.collapse.in { -  height: auto; -} -.close { -  float: right; -  font-size: 20px; -  font-weight: bold; -  line-height: 18px; -  color: #000000; -  text-shadow: 0 1px 0 #ffffff; -  opacity: 0.2; -  filter: alpha(opacity=20); -} -.close:hover { -  color: #000000; -  text-decoration: none; -  opacity: 0.4; -  filter: alpha(opacity=40); -  cursor: pointer; -} -.btn { -  display: inline-block; -  *display: inline; -  /* IE7 inline-block hack */ - -  *zoom: 1; -  padding: 4px 10px 4px; -  margin-bottom: 0; -  font-size: 13px; -  line-height: 18px; -  color: #333333; -  text-align: center; -  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); -  vertical-align: middle; -  background-color: #f5f5f5; -  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); -  background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6); -  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); -  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); -  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); -  background-image: linear-gradient(top, #ffffff, #e6e6e6); -  background-repeat: repeat-x; -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=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); -  filter: progid:dximagetransform.microsoft.gradient(enabled=false); -  border: 1px solid #cccccc; -  border-bottom-color: #b3b3b3; -  -webkit-border-radius: 4px; -  -moz-border-radius: 4px; -  border-radius: 4px; -  -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); -  cursor: pointer; -  *margin-left: .3em; -} -.btn:hover, -.btn:active, -.btn.active, -.btn.disabled, -.btn[disabled] { -  background-color: #e6e6e6; -} -.btn:active, -.btn.active { -  background-color: #cccccc \9; -} -.btn:first-child { -  *margin-left: 0; -} -.btn:hover { -  color: #333333; -  text-decoration: none; -  background-color: #e6e6e6; -  background-position: 0 -15px; -  -webkit-transition: background-position 0.1s linear; -  -moz-transition: background-position 0.1s linear; -  -ms-transition: background-position 0.1s linear; -  -o-transition: background-position 0.1s linear; -  transition: background-position 0.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; -  -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); -  background-color: #e6e6e6; -  background-color: #d9d9d9 \9; -  outline: 0; -} -.btn.disabled, -.btn[disabled] { -  cursor: default; -  background-image: none; -  background-color: #e6e6e6; -  opacity: 0.65; -  filter: alpha(opacity=65); -  -webkit-box-shadow: none; -  -moz-box-shadow: none; -  box-shadow: none; -} -.btn-large { -  padding: 9px 14px; -  font-size: 15px; -  line-height: normal; -  -webkit-border-radius: 5px; -  -moz-border-radius: 5px; -  border-radius: 5px; -} -.btn-large [class^="icon-"] { -  margin-top: 1px; -} -.btn-small { -  padding: 5px 9px; -  font-size: 11px; -  line-height: 16px; -} -.btn-small [class^="icon-"] { -  margin-top: -1px; -} -.btn-mini { -  padding: 2px 6px; -  font-size: 11px; -  line-height: 14px; -} -.btn-primary, -.btn-primary:hover, -.btn-warning, -.btn-warning:hover, -.btn-danger, -.btn-danger:hover, -.btn-success, -.btn-success:hover, -.btn-info, -.btn-info:hover, -.btn-inverse, -.btn-inverse:hover { -  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -  color: #ffffff; -} -.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 { -  background-color: #0074cc; -  background-image: -moz-linear-gradient(top, #0088cc, #0055cc); -  background-image: -ms-linear-gradient(top, #0088cc, #0055cc); -  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc)); -  background-image: -webkit-linear-gradient(top, #0088cc, #0055cc); -  background-image: -o-linear-gradient(top, #0088cc, #0055cc); -  background-image: linear-gradient(top, #0088cc, #0055cc); -  background-repeat: repeat-x; -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0); -  border-color: #0055cc #0055cc #003580; -  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(enabled=false); -} -.btn-primary:hover, -.btn-primary:active, -.btn-primary.active, -.btn-primary.disabled, -.btn-primary[disabled] { -  background-color: #0055cc; -} -.btn-primary:active, -.btn-primary.active { -  background-color: #004099 \9; -} -.btn-warning { -  background-color: #faa732; -  background-image: -moz-linear-gradient(top, #fbb450, #f89406); -  background-image: -ms-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(top, #fbb450, #f89406); -  background-repeat: repeat-x; -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); -  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(enabled=false); -} -.btn-warning:hover, -.btn-warning:active, -.btn-warning.active, -.btn-warning.disabled, -.btn-warning[disabled] { -  background-color: #f89406; -} -.btn-warning:active, -.btn-warning.active { -  background-color: #c67605 \9; -} -.btn-danger { -  background-color: #da4f49; -  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); -  background-image: -ms-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(top, #ee5f5b, #bd362f); -  background-repeat: repeat-x; -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0); -  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(enabled=false); -} -.btn-danger:hover, -.btn-danger:active, -.btn-danger.active, -.btn-danger.disabled, -.btn-danger[disabled] { -  background-color: #bd362f; -} -.btn-danger:active, -.btn-danger.active { -  background-color: #942a25 \9; -} -.btn-success { -  background-color: #5bb75b; -  background-image: -moz-linear-gradient(top, #62c462, #51a351); -  background-image: -ms-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(top, #62c462, #51a351); -  background-repeat: repeat-x; -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0); -  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(enabled=false); -} -.btn-success:hover, -.btn-success:active, -.btn-success.active, -.btn-success.disabled, -.btn-success[disabled] { -  background-color: #51a351; -} -.btn-success:active, -.btn-success.active { -  background-color: #408140 \9; -} -.btn-info { -  background-color: #49afcd; -  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); -  background-image: -ms-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(top, #5bc0de, #2f96b4); -  background-repeat: repeat-x; -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0); -  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(enabled=false); -} -.btn-info:hover, -.btn-info:active, -.btn-info.active, -.btn-info.disabled, -.btn-info[disabled] { -  background-color: #2f96b4; -} -.btn-info:active, -.btn-info.active { -  background-color: #24748c \9; -} -.btn-inverse { -  background-color: #414141; -  background-image: -moz-linear-gradient(top, #555555, #222222); -  background-image: -ms-linear-gradient(top, #555555, #222222); -  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222)); -  background-image: -webkit-linear-gradient(top, #555555, #222222); -  background-image: -o-linear-gradient(top, #555555, #222222); -  background-image: linear-gradient(top, #555555, #222222); -  background-repeat: repeat-x; -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0); -  border-color: #222222 #222222 #000000; -  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(enabled=false); -} -.btn-inverse:hover, -.btn-inverse:active, -.btn-inverse.active, -.btn-inverse.disabled, -.btn-inverse[disabled] { -  background-color: #222222; -} -.btn-inverse:active, -.btn-inverse.active { -  background-color: #080808 \9; -} -button.btn, -input[type="submit"].btn { -  *padding-top: 2px; -  *padding-bottom: 2px; -} -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-group { -  position: relative; -  *zoom: 1; -  *margin-left: .3em; -} -.btn-group:before, -.btn-group:after { -  display: table; -  content: ""; -} -.btn-group:after { -  clear: both; -} -.btn-group:first-child { -  *margin-left: 0; -} -.btn-group + .btn-group { -  margin-left: 5px; -} -.btn-toolbar { -  margin-top: 9px; -  margin-bottom: 9px; -} -.btn-toolbar .btn-group { -  display: inline-block; -  *display: inline; -  /* IE7 inline-block hack */ - -  *zoom: 1; -} -.btn-group .btn { -  position: relative; -  float: left; -  margin-left: -1px; -  -webkit-border-radius: 0; -  -moz-border-radius: 0; -  border-radius: 0; -} -.btn-group .btn:first-child { -  margin-left: 0; -  -webkit-border-top-left-radius: 4px; -  -moz-border-radius-topleft: 4px; -  border-top-left-radius: 4px; -  -webkit-border-bottom-left-radius: 4px; -  -moz-border-radius-bottomleft: 4px; -  border-bottom-left-radius: 4px; -} -.btn-group .btn:last-child, -.btn-group .dropdown-toggle { -  -webkit-border-top-right-radius: 4px; -  -moz-border-radius-topright: 4px; -  border-top-right-radius: 4px; -  -webkit-border-bottom-right-radius: 4px; -  -moz-border-radius-bottomright: 4px; -  border-bottom-right-radius: 4px; -} -.btn-group .btn.large:first-child { -  margin-left: 0; -  -webkit-border-top-left-radius: 6px; -  -moz-border-radius-topleft: 6px; -  border-top-left-radius: 6px; -  -webkit-border-bottom-left-radius: 6px; -  -moz-border-radius-bottomleft: 6px; -  border-bottom-left-radius: 6px; -} -.btn-group .btn.large:last-child, -.btn-group .large.dropdown-toggle { -  -webkit-border-top-right-radius: 6px; -  -moz-border-radius-topright: 6px; -  border-top-right-radius: 6px; -  -webkit-border-bottom-right-radius: 6px; -  -moz-border-radius-bottomright: 6px; -  border-bottom-right-radius: 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 .dropdown-toggle { -  padding-left: 8px; -  padding-right: 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); -  *padding-top: 3px; -  *padding-bottom: 3px; -} -.btn-group .btn-mini.dropdown-toggle { -  padding-left: 5px; -  padding-right: 5px; -  *padding-top: 1px; -  *padding-bottom: 1px; -} -.btn-group .btn-small.dropdown-toggle { -  *padding-top: 4px; -  *padding-bottom: 4px; -} -.btn-group .btn-large.dropdown-toggle { -  padding-left: 12px; -  padding-right: 12px; -} -.btn-group.open { -  *z-index: 1000; -} -.btn-group.open .dropdown-menu { -  display: block; -  margin-top: 1px; -  -webkit-border-radius: 5px; -  -moz-border-radius: 5px; -  border-radius: 5px; -} -.btn-group.open .dropdown-toggle { -  background-image: none; -  -webkit-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -  -moz-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -  box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -} -.btn .caret { -  margin-top: 7px; -  margin-left: 0; -} -.btn:hover .caret, -.open.btn-group .caret { -  opacity: 1; -  filter: alpha(opacity=100); -} -.btn-mini .caret { -  margin-top: 5px; -} -.btn-small .caret { -  margin-top: 6px; -} -.btn-large .caret { -  margin-top: 6px; -  border-left: 5px solid transparent; -  border-right: 5px solid transparent; -  border-top: 5px solid #000000; -} -.btn-primary .caret, -.btn-warning .caret, -.btn-danger .caret, -.btn-info .caret, -.btn-success .caret, -.btn-inverse .caret { -  border-top-color: #ffffff; -  border-bottom-color: #ffffff; -  opacity: 0.75; -  filter: alpha(opacity=75); -} -.alert { -  padding: 8px 35px 8px 14px; -  margin-bottom: 18px; -  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; -  color: #c09853; -} -.alert-heading { -  color: inherit; -} -.alert .close { -  position: relative; -  top: -2px; -  right: -21px; -  line-height: 18px; -} -.alert-success { -  background-color: #dff0d8; -  border-color: #d6e9c6; -  color: #468847; -} -.alert-danger, -.alert-error { -  background-color: #f2dede; -  border-color: #eed3d7; -  color: #b94a48; -} -.alert-info { -  background-color: #d9edf7; -  border-color: #bce8f1; -  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-left: 0; -  margin-bottom: 18px; -  list-style: none; -} -.nav > li > a { -  display: block; -} -.nav > li > a:hover { -  text-decoration: none; -  background-color: #eeeeee; -} -.nav .nav-header { -  display: block; -  padding: 3px 15px; -  font-size: 11px; -  font-weight: bold; -  line-height: 18px; -  color: #999999; -  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); -  text-transform: uppercase; -} -.nav li + .nav-header { -  margin-top: 9px; -} -.nav-list { -  padding-left: 15px; -  padding-right: 15px; -  margin-bottom: 0; -} -.nav-list > li > a, -.nav-list .nav-header { -  margin-left: -15px; -  margin-right: -15px; -  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); -} -.nav-list > li > a { -  padding: 3px 15px; -} -.nav-list > .active > a, -.nav-list > .active > a:hover { -  color: #ffffff; -  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); -  background-color: #0088cc; -} -.nav-list [class^="icon-"] { -  margin-right: 2px; -} -.nav-list .divider { -  height: 1px; -  margin: 8px 1px; -  overflow: hidden; -  background-color: #e5e5e5; -  border-bottom: 1px solid #ffffff; -  *width: 100%; -  *margin: -5px 0 5px; -} -.nav-tabs, -.nav-pills { -  *zoom: 1; -} -.nav-tabs:before, -.nav-pills:before, -.nav-tabs:after, -.nav-pills:after { -  display: table; -  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: 18px; -  border: 1px solid transparent; -  -webkit-border-radius: 4px 4px 0 0; -  -moz-border-radius: 4px 4px 0 0; -  border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover { -  border-color: #eeeeee #eeeeee #dddddd; -} -.nav-tabs > .active > a, -.nav-tabs > .active > a:hover { -  color: #555555; -  background-color: #ffffff; -  border: 1px solid #ddd; -  border-bottom-color: transparent; -  cursor: default; -} -.nav-pills > li > a { -  padding-top: 8px; -  padding-bottom: 8px; -  margin-top: 2px; -  margin-bottom: 2px; -  -webkit-border-radius: 5px; -  -moz-border-radius: 5px; -  border-radius: 5px; -} -.nav-pills > .active > a, -.nav-pills > .active > a:hover { -  color: #ffffff; -  background-color: #0088cc; -} -.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-radius: 4px 4px 0 0; -  -moz-border-radius: 4px 4px 0 0; -  border-radius: 4px 4px 0 0; -} -.nav-tabs.nav-stacked > li:last-child > a { -  -webkit-border-radius: 0 0 4px 4px; -  -moz-border-radius: 0 0 4px 4px; -  border-radius: 0 0 4px 4px; -} -.nav-tabs.nav-stacked > li > a:hover { -  border-color: #ddd; -  z-index: 2; -} -.nav-pills.nav-stacked > li > a { -  margin-bottom: 3px; -} -.nav-pills.nav-stacked > li:last-child > a { -  margin-bottom: 1px; -} -.nav-tabs .dropdown-menu, -.nav-pills .dropdown-menu { -  margin-top: 1px; -  border-width: 1px; -} -.nav-pills .dropdown-menu { -  -webkit-border-radius: 4px; -  -moz-border-radius: 4px; -  border-radius: 4px; -} -.nav-tabs .dropdown-toggle .caret, -.nav-pills .dropdown-toggle .caret { -  border-top-color: #0088cc; -  border-bottom-color: #0088cc; -  margin-top: 6px; -} -.nav-tabs .dropdown-toggle:hover .caret, -.nav-pills .dropdown-toggle:hover .caret { -  border-top-color: #005580; -  border-bottom-color: #005580; -} -.nav-tabs .active .dropdown-toggle .caret, -.nav-pills .active .dropdown-toggle .caret { -  border-top-color: #333333; -  border-bottom-color: #333333; -} -.nav > .dropdown.active > a:hover { -  color: #000000; -  cursor: pointer; -} -.nav-tabs .open .dropdown-toggle, -.nav-pills .open .dropdown-toggle, -.nav > .open.active > a:hover { -  color: #ffffff; -  background-color: #999999; -  border-color: #999999; -} -.nav .open .caret, -.nav .open.active .caret, -.nav .open a:hover .caret { -  border-top-color: #ffffff; -  border-bottom-color: #ffffff; -  opacity: 1; -  filter: alpha(opacity=100); -} -.tabs-stacked .open > a:hover { -  border-color: #999999; -} -.tabbable { -  *zoom: 1; -} -.tabbable:before, -.tabbable:after { -  display: table; -  content: ""; -} -.tabbable:after { -  clear: both; -} -.tab-content { -  display: table; -  width: 100%; -} -.tabs-below .nav-tabs, -.tabs-right .nav-tabs, -.tabs-left .nav-tabs { -  border-bottom: 0; -} -.tab-content > .tab-pane, -.pill-content > .pill-pane { -  display: none; -} -.tab-content > .active, -.pill-content > .active { -  display: block; -} -.tabs-below .nav-tabs { -  border-top: 1px solid #ddd; -} -.tabs-below .nav-tabs > li { -  margin-top: -1px; -  margin-bottom: 0; -} -.tabs-below .nav-tabs > li > a { -  -webkit-border-radius: 0 0 4px 4px; -  -moz-border-radius: 0 0 4px 4px; -  border-radius: 0 0 4px 4px; -} -.tabs-below .nav-tabs > li > a:hover { -  border-bottom-color: transparent; -  border-top-color: #ddd; -} -.tabs-below .nav-tabs .active > a, -.tabs-below .nav-tabs .active > a:hover { -  border-color: transparent #ddd #ddd #ddd; -} -.tabs-left .nav-tabs > li, -.tabs-right .nav-tabs > li { -  float: none; -} -.tabs-left .nav-tabs > li > a, -.tabs-right .nav-tabs > li > a { -  min-width: 74px; -  margin-right: 0; -  margin-bottom: 3px; -} -.tabs-left .nav-tabs { -  float: left; -  margin-right: 19px; -  border-right: 1px solid #ddd; -} -.tabs-left .nav-tabs > li > a { -  margin-right: -1px; -  -webkit-border-radius: 4px 0 0 4px; -  -moz-border-radius: 4px 0 0 4px; -  border-radius: 4px 0 0 4px; -} -.tabs-left .nav-tabs > li > a:hover { -  border-color: #eeeeee #dddddd #eeeeee #eeeeee; -} -.tabs-left .nav-tabs .active > a, -.tabs-left .nav-tabs .active > a:hover { -  border-color: #ddd transparent #ddd #ddd; -  *border-right-color: #ffffff; -} -.tabs-right .nav-tabs { -  float: right; -  margin-left: 19px; -  border-left: 1px solid #ddd; -} -.tabs-right .nav-tabs > li > a { -  margin-left: -1px; -  -webkit-border-radius: 0 4px 4px 0; -  -moz-border-radius: 0 4px 4px 0; -  border-radius: 0 4px 4px 0; -} -.tabs-right .nav-tabs > li > a:hover { -  border-color: #eeeeee #eeeeee #eeeeee #dddddd; -} -.tabs-right .nav-tabs .active > a, -.tabs-right .nav-tabs .active > a:hover { -  border-color: #ddd #ddd #ddd transparent; -  *border-left-color: #ffffff; -} -.navbar { -  *position: relative; -  *z-index: 2; -  overflow: visible; -  margin-bottom: 18px; -} -.navbar-inner { -  padding-left: 20px; -  padding-right: 20px; -  background-color: #2c2c2c; -  background-image: -moz-linear-gradient(top, #333333, #222222); -  background-image: -ms-linear-gradient(top, #333333, #222222); -  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); -  background-image: -webkit-linear-gradient(top, #333333, #222222); -  background-image: -o-linear-gradient(top, #333333, #222222); -  background-image: linear-gradient(top, #333333, #222222); -  background-repeat: repeat-x; -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); -  -webkit-border-radius: 4px; -  -moz-border-radius: 4px; -  border-radius: 4px; -  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); -  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); -  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); -} -.navbar .container { -  width: auto; -} -.btn-navbar { -  display: none; -  float: right; -  padding: 7px 10px; -  margin-left: 5px; -  margin-right: 5px; -  background-color: #2c2c2c; -  background-image: -moz-linear-gradient(top, #333333, #222222); -  background-image: -ms-linear-gradient(top, #333333, #222222); -  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); -  background-image: -webkit-linear-gradient(top, #333333, #222222); -  background-image: -o-linear-gradient(top, #333333, #222222); -  background-image: linear-gradient(top, #333333, #222222); -  background-repeat: repeat-x; -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); -  border-color: #222222 #222222 #000000; -  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(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); -} -.btn-navbar:hover, -.btn-navbar:active, -.btn-navbar.active, -.btn-navbar.disabled, -.btn-navbar[disabled] { -  background-color: #222222; -} -.btn-navbar:active, -.btn-navbar.active { -  background-color: #080808 \9; -} -.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; -} -.nav-collapse.collapse { -  height: auto; -} -.navbar { -  color: #999999; -} -.navbar .brand:hover { -  text-decoration: none; -} -.navbar .brand { -  float: left; -  display: block; -  padding: 8px 20px 12px; -  margin-left: -20px; -  font-size: 20px; -  font-weight: 200; -  line-height: 1; -  color: #ffffff; -} -.navbar .navbar-text { -  margin-bottom: 0; -  line-height: 40px; -} -.navbar .btn, -.navbar .btn-group { -  margin-top: 5px; -} -.navbar .btn-group .btn { -  margin-top: 0; -} -.navbar-form { -  margin-bottom: 0; -  *zoom: 1; -} -.navbar-form:before, -.navbar-form:after { -  display: table; -  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 { -  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: 6px; -  white-space: nowrap; -} -.navbar-form .input-append input, -.navbar-form .input-prepend input { -  margin-top: 0; -} -.navbar-search { -  position: relative; -  float: left; -  margin-top: 6px; -  margin-bottom: 0; -} -.navbar-search .search-query { -  padding: 4px 9px; -  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -  font-size: 13px; -  font-weight: normal; -  line-height: 1; -  color: #ffffff; -  background-color: #626262; -  border: 1px solid #151515; -  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15); -  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15); -  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15); -  -webkit-transition: none; -  -moz-transition: none; -  -ms-transition: none; -  -o-transition: none; -  transition: none; -} -.navbar-search .search-query:-moz-placeholder { -  color: #cccccc; -} -.navbar-search .search-query::-webkit-input-placeholder { -  color: #cccccc; -} -.navbar-search .search-query:focus, -.navbar-search .search-query.focused { -  padding: 5px 10px; -  color: #333333; -  text-shadow: 0 1px 0 #ffffff; -  background-color: #ffffff; -  border: 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); -  outline: 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-fixed-bottom .navbar-inner { -  padding-left: 0; -  padding-right: 0; -  -webkit-border-radius: 0; -  -moz-border-radius: 0; -  border-radius: 0; -} -.navbar-fixed-top .container, -.navbar-fixed-bottom .container { -  width: 940px; -} -.navbar-fixed-top { -  top: 0; -} -.navbar-fixed-bottom { -  bottom: 0; -} -.navbar .nav { -  position: relative; -  left: 0; -  display: block; -  float: left; -  margin: 0 10px 0 0; -} -.navbar .nav.pull-right { -  float: right; -} -.navbar .nav > li { -  display: block; -  float: left; -} -.navbar .nav > li > a { -  float: none; -  padding: 10px 10px 11px; -  line-height: 19px; -  color: #999999; -  text-decoration: none; -  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.navbar .nav > li > a:hover { -  background-color: transparent; -  color: #ffffff; -  text-decoration: none; -} -.navbar .nav .active > a, -.navbar .nav .active > a:hover { -  color: #ffffff; -  text-decoration: none; -  background-color: #222222; -} -.navbar .divider-vertical { -  height: 40px; -  width: 1px; -  margin: 0 9px; -  overflow: hidden; -  background-color: #222222; -  border-right: 1px solid #333333; -} -.navbar .nav.pull-right { -  margin-left: 10px; -  margin-right: 0; -} -.navbar .dropdown-menu { -  margin-top: 1px; -  -webkit-border-radius: 4px; -  -moz-border-radius: 4px; -  border-radius: 4px; -} -.navbar .dropdown-menu:before { -  content: ''; -  display: inline-block; -  border-left: 7px solid transparent; -  border-right: 7px solid transparent; -  border-bottom: 7px solid #ccc; -  border-bottom-color: rgba(0, 0, 0, 0.2); -  position: absolute; -  top: -7px; -  left: 9px; -} -.navbar .dropdown-menu:after { -  content: ''; -  display: inline-block; -  border-left: 6px solid transparent; -  border-right: 6px solid transparent; -  border-bottom: 6px solid #ffffff; -  position: absolute; -  top: -6px; -  left: 10px; -} -.navbar-fixed-bottom .dropdown-menu:before { -  border-top: 7px solid #ccc; -  border-top-color: rgba(0, 0, 0, 0.2); -  border-bottom: 0; -  bottom: -7px; -  top: auto; -} -.navbar-fixed-bottom .dropdown-menu:after { -  border-top: 6px solid #ffffff; -  border-bottom: 0; -  bottom: -6px; -  top: auto; -} -.navbar .nav .dropdown-toggle .caret, -.navbar .nav .open.dropdown .caret { -  border-top-color: #ffffff; -  border-bottom-color: #ffffff; -} -.navbar .nav .active .caret { -  opacity: 1; -  filter: alpha(opacity=100); -} -.navbar .nav .open > .dropdown-toggle, -.navbar .nav .active > .dropdown-toggle, -.navbar .nav .open.active > .dropdown-toggle { -  background-color: transparent; -} -.navbar .nav .active > .dropdown-toggle:hover { -  color: #ffffff; -} -.navbar .nav.pull-right .dropdown-menu, -.navbar .nav .dropdown-menu.pull-right { -  left: auto; -  right: 0; -} -.navbar .nav.pull-right .dropdown-menu:before, -.navbar .nav .dropdown-menu.pull-right:before { -  left: auto; -  right: 12px; -} -.navbar .nav.pull-right .dropdown-menu:after, -.navbar .nav .dropdown-menu.pull-right:after { -  left: auto; -  right: 13px; -} -.breadcrumb { -  padding: 7px 14px; -  margin: 0 0 18px; -  list-style: none; -  background-color: #fbfbfb; -  background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5); -  background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5); -  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5)); -  background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); -  background-image: -o-linear-gradient(top, #ffffff, #f5f5f5); -  background-image: linear-gradient(top, #ffffff, #f5f5f5); -  background-repeat: repeat-x; -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0); -  border: 1px solid #ddd; -  -webkit-border-radius: 3px; -  -moz-border-radius: 3px; -  border-radius: 3px; -  -webkit-box-shadow: inset 0 1px 0 #ffffff; -  -moz-box-shadow: inset 0 1px 0 #ffffff; -  box-shadow: inset 0 1px 0 #ffffff; -} -.breadcrumb li { -  display: inline-block; -  *display: inline; -  /* IE7 inline-block hack */ - -  *zoom: 1; -  text-shadow: 0 1px 0 #ffffff; -} -.breadcrumb .divider { -  padding: 0 5px; -  color: #999999; -} -.breadcrumb .active a { -  color: #333333; -} -.pagination { -  height: 36px; -  margin: 18px 0; -} -.pagination ul { -  display: inline-block; -  *display: inline; -  /* IE7 inline-block hack */ - -  *zoom: 1; -  margin-left: 0; -  margin-bottom: 0; -  -webkit-border-radius: 3px; -  -moz-border-radius: 3px; -  border-radius: 3px; -  -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 li { -  display: inline; -} -.pagination a { -  float: left; -  padding: 0 14px; -  line-height: 34px; -  text-decoration: none; -  border: 1px solid #ddd; -  border-left-width: 0; -} -.pagination a:hover, -.pagination .active a { -  background-color: #f5f5f5; -} -.pagination .active a { -  color: #999999; -  cursor: default; -} -.pagination .disabled span, -.pagination .disabled a, -.pagination .disabled a:hover { -  color: #999999; -  background-color: transparent; -  cursor: default; -} -.pagination li:first-child a { -  border-left-width: 1px; -  -webkit-border-radius: 3px 0 0 3px; -  -moz-border-radius: 3px 0 0 3px; -  border-radius: 3px 0 0 3px; -} -.pagination li:last-child a { -  -webkit-border-radius: 0 3px 3px 0; -  -moz-border-radius: 0 3px 3px 0; -  border-radius: 0 3px 3px 0; -} -.pagination-centered { -  text-align: center; -} -.pagination-right { -  text-align: right; -} -.pager { -  margin-left: 0; -  margin-bottom: 18px; -  list-style: none; -  text-align: center; -  *zoom: 1; -} -.pager:before, -.pager:after { -  display: table; -  content: ""; -} -.pager:after { -  clear: both; -} -.pager li { -  display: inline; -} -.pager a { -  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 a:hover { -  text-decoration: none; -  background-color: #f5f5f5; -} -.pager .next a { -  float: right; -} -.pager .previous a { -  float: left; -} -.pager .disabled a, -.pager .disabled a:hover { -  color: #999999; -  background-color: #fff; -  cursor: default; -} -.modal-open .dropdown-menu { -  z-index: 2050; -} -.modal-open .dropdown.open { -  *z-index: 2050; -} -.modal-open .popover { -  z-index: 2060; -} -.modal-open .tooltip { -  z-index: 2070; -} -.modal-backdrop { -  position: fixed; -  top: 0; -  right: 0; -  bottom: 0; -  left: 0; -  z-index: 1040; -  background-color: #000000; -} -.modal-backdrop.fade { -  opacity: 0; -} -.modal-backdrop, -.modal-backdrop.fade.in { -  opacity: 0.8; -  filter: alpha(opacity=80); -} -.modal { -  position: fixed; -  top: 50%; -  left: 50%; -  z-index: 1050; -  overflow: auto; -  width: 560px; -  margin: -250px 0 0 -280px; -  background-color: #ffffff; -  border: 1px solid #999; -  border: 1px solid rgba(0, 0, 0, 0.3); -  *border: 1px solid #999; -  /* IE6-7 */ - -  -webkit-border-radius: 6px; -  -moz-border-radius: 6px; -  border-radius: 6px; -  -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 { -  -webkit-transition: opacity .3s linear, top .3s ease-out; -  -moz-transition: opacity .3s linear, top .3s ease-out; -  -ms-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; -  top: -25%; -} -.modal.fade.in { -  top: 50%; -} -.modal-header { -  padding: 9px 15px; -  border-bottom: 1px solid #eee; -} -.modal-header .close { -  margin-top: 2px; -} -.modal-body { -  overflow-y: auto; -  max-height: 400px; -  padding: 15px; -} -.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; -  -webkit-box-shadow: inset 0 1px 0 #ffffff; -  -moz-box-shadow: inset 0 1px 0 #ffffff; -  box-shadow: inset 0 1px 0 #ffffff; -  *zoom: 1; -} -.modal-footer:before, -.modal-footer:after { -  display: table; -  content: ""; -} -.modal-footer:after { -  clear: both; -} -.modal-footer .btn + .btn { -  margin-left: 5px; -  margin-bottom: 0; -} -.modal-footer .btn-group .btn + .btn { -  margin-left: -1px; -} -.tooltip { -  position: absolute; -  z-index: 1020; -  display: block; -  visibility: visible; -  padding: 5px; -  font-size: 11px; -  opacity: 0; -  filter: alpha(opacity=0); -} -.tooltip.in { -  opacity: 0.8; -  filter: alpha(opacity=80); -} -.tooltip.top { -  margin-top: -2px; -} -.tooltip.right { -  margin-left: 2px; -} -.tooltip.bottom { -  margin-top: 2px; -} -.tooltip.left { -  margin-left: -2px; -} -.tooltip.top .tooltip-arrow { -  bottom: 0; -  left: 50%; -  margin-left: -5px; -  border-left: 5px solid transparent; -  border-right: 5px solid transparent; -  border-top: 5px solid #000000; -} -.tooltip.left .tooltip-arrow { -  top: 50%; -  right: 0; -  margin-top: -5px; -  border-top: 5px solid transparent; -  border-bottom: 5px solid transparent; -  border-left: 5px solid #000000; -} -.tooltip.bottom .tooltip-arrow { -  top: 0; -  left: 50%; -  margin-left: -5px; -  border-left: 5px solid transparent; -  border-right: 5px solid transparent; -  border-bottom: 5px solid #000000; -} -.tooltip.right .tooltip-arrow { -  top: 50%; -  left: 0; -  margin-top: -5px; -  border-top: 5px solid transparent; -  border-bottom: 5px solid transparent; -  border-right: 5px solid #000000; -} -.tooltip-inner { -  max-width: 200px; -  padding: 3px 8px; -  color: #ffffff; -  text-align: center; -  text-decoration: none; -  background-color: #000000; -  -webkit-border-radius: 4px; -  -moz-border-radius: 4px; -  border-radius: 4px; -} -.tooltip-arrow { -  position: absolute; -  width: 0; -  height: 0; -} -.popover { -  position: absolute; -  top: 0; -  left: 0; -  z-index: 1010; -  display: none; -  padding: 5px; -} -.popover.top { -  margin-top: -5px; -} -.popover.right { -  margin-left: 5px; -} -.popover.bottom { -  margin-top: 5px; -} -.popover.left { -  margin-left: -5px; -} -.popover.top .arrow { -  bottom: 0; -  left: 50%; -  margin-left: -5px; -  border-left: 5px solid transparent; -  border-right: 5px solid transparent; -  border-top: 5px solid #000000; -} -.popover.right .arrow { -  top: 50%; -  left: 0; -  margin-top: -5px; -  border-top: 5px solid transparent; -  border-bottom: 5px solid transparent; -  border-right: 5px solid #000000; -} -.popover.bottom .arrow { -  top: 0; -  left: 50%; -  margin-left: -5px; -  border-left: 5px solid transparent; -  border-right: 5px solid transparent; -  border-bottom: 5px solid #000000; -} -.popover.left .arrow { -  top: 50%; -  right: 0; -  margin-top: -5px; -  border-top: 5px solid transparent; -  border-bottom: 5px solid transparent; -  border-left: 5px solid #000000; -} -.popover .arrow { -  position: absolute; -  width: 0; -  height: 0; -} -.popover-inner { -  padding: 3px; -  width: 280px; -  overflow: hidden; -  background: #000000; -  background: rgba(0, 0, 0, 0.8); -  -webkit-border-radius: 6px; -  -moz-border-radius: 6px; -  border-radius: 6px; -  -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); -} -.popover-title { -  padding: 9px 15px; -  line-height: 1; -  background-color: #f5f5f5; -  border-bottom: 1px solid #eee; -  -webkit-border-radius: 3px 3px 0 0; -  -moz-border-radius: 3px 3px 0 0; -  border-radius: 3px 3px 0 0; -} -.popover-content { -  padding: 14px; -  background-color: #ffffff; -  -webkit-border-radius: 0 0 3px 3px; -  -moz-border-radius: 0 0 3px 3px; -  border-radius: 0 0 3px 3px; -  -webkit-background-clip: padding-box; -  -moz-background-clip: padding-box; -  background-clip: padding-box; -} -.popover-content p, -.popover-content ul, -.popover-content ol { -  margin-bottom: 0; -} -.thumbnails { -  margin-left: -20px; -  list-style: none; -  *zoom: 1; -} -.thumbnails:before, -.thumbnails:after { -  display: table; -  content: ""; -} -.thumbnails:after { -  clear: both; -} -.thumbnails > li { -  float: left; -  margin: 0 0 18px 20px; -} -.thumbnail { -  display: block; -  padding: 4px; -  line-height: 1; -  border: 1px solid #ddd; -  -webkit-border-radius: 4px; -  -moz-border-radius: 4px; -  border-radius: 4px; -  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); -  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); -  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); -} -a.thumbnail:hover { -  border-color: #0088cc; -  -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-left: auto; -  margin-right: auto; -} -.thumbnail .caption { -  padding: 9px; -} -.label { -  padding: 1px 4px 2px; -  font-size: 10.998px; -  font-weight: bold; -  line-height: 13px; -  color: #ffffff; -  vertical-align: middle; -  white-space: nowrap; -  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -  background-color: #999999; -  -webkit-border-radius: 3px; -  -moz-border-radius: 3px; -  border-radius: 3px; -} -.label:hover { -  color: #ffffff; -  text-decoration: none; -} -.label-important { -  background-color: #b94a48; -} -.label-important:hover { -  background-color: #953b39; -} -.label-warning { -  background-color: #f89406; -} -.label-warning:hover { -  background-color: #c67605; -} -.label-success { -  background-color: #468847; -} -.label-success:hover { -  background-color: #356635; -} -.label-info { -  background-color: #3a87ad; -} -.label-info:hover { -  background-color: #2d6987; -} -.label-inverse { -  background-color: #333333; -} -.label-inverse:hover { -  background-color: #1a1a1a; -} -.badge { -  padding: 1px 9px 2px; -  font-size: 12.025px; -  font-weight: bold; -  white-space: nowrap; -  color: #ffffff; -  background-color: #999999; -  -webkit-border-radius: 9px; -  -moz-border-radius: 9px; -  border-radius: 9px; -} -.badge:hover { -  color: #ffffff; -  text-decoration: none; -  cursor: pointer; -} -.badge-error { -  background-color: #b94a48; -} -.badge-error:hover { -  background-color: #953b39; -} -.badge-warning { -  background-color: #f89406; -} -.badge-warning:hover { -  background-color: #c67605; -} -.badge-success { -  background-color: #468847; -} -.badge-success:hover { -  background-color: #356635; -} -.badge-info { -  background-color: #3a87ad; -} -.badge-info:hover { -  background-color: #2d6987; -} -.badge-inverse { -  background-color: #333333; -} -.badge-inverse:hover { -  background-color: #1a1a1a; -} -@-webkit-keyframes progress-bar-stripes { -  from { -    background-position: 0 0; -  } -  to { -    background-position: 40px 0; -  } -} -@-moz-keyframes progress-bar-stripes { -  from { -    background-position: 0 0; -  } -  to { -    background-position: 40px 0; -  } -} -@-ms-keyframes progress-bar-stripes { -  from { -    background-position: 0 0; -  } -  to { -    background-position: 40px 0; -  } -} -@keyframes progress-bar-stripes { -  from { -    background-position: 0 0; -  } -  to { -    background-position: 40px 0; -  } -} -.progress { -  overflow: hidden; -  height: 18px; -  margin-bottom: 18px; -  background-color: #f7f7f7; -  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); -  background-image: -ms-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(top, #f5f5f5, #f9f9f9); -  background-repeat: repeat-x; -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', 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); -  -webkit-border-radius: 4px; -  -moz-border-radius: 4px; -  border-radius: 4px; -} -.progress .bar { -  width: 0%; -  height: 18px; -  color: #ffffff; -  font-size: 12px; -  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: -ms-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(top, #149bdf, #0480be); -  background-repeat: repeat-x; -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', 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; -  -ms-box-sizing: border-box; -  box-sizing: border-box; -  -webkit-transition: width 0.6s ease; -  -moz-transition: width 0.6s ease; -  -ms-transition: width 0.6s ease; -  -o-transition: width 0.6s ease; -  transition: width 0.6s ease; -} -.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: -ms-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; -  animation: progress-bar-stripes 2s linear infinite; -} -.progress-danger .bar { -  background-color: #dd514c; -  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); -  background-image: -ms-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(top, #ee5f5b, #c43c35); -  background-repeat: repeat-x; -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); -} -.progress-danger.progress-striped .bar { -  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: -ms-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 { -  background-color: #5eb95e; -  background-image: -moz-linear-gradient(top, #62c462, #57a957); -  background-image: -ms-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(top, #62c462, #57a957); -  background-repeat: repeat-x; -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); -} -.progress-success.progress-striped .bar { -  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: -ms-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 { -  background-color: #4bb1cf; -  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); -  background-image: -ms-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(top, #5bc0de, #339bb9); -  background-repeat: repeat-x; -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); -} -.progress-info.progress-striped .bar { -  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: -ms-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 { -  background-color: #faa732; -  background-image: -moz-linear-gradient(top, #fbb450, #f89406); -  background-image: -ms-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(top, #fbb450, #f89406); -  background-repeat: repeat-x; -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); -} -.progress-warning.progress-striped .bar { -  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: -ms-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: 18px; -} -.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-inner { -  padding: 9px 15px; -  border-top: 1px solid #e5e5e5; -} -.carousel { -  position: relative; -  margin-bottom: 18px; -  line-height: 1; -} -.carousel-inner { -  overflow: hidden; -  width: 100%; -  position: relative; -} -.carousel .item { -  display: none; -  position: relative; -  -webkit-transition: 0.6s ease-in-out left; -  -moz-transition: 0.6s ease-in-out left; -  -ms-transition: 0.6s ease-in-out left; -  -o-transition: 0.6s ease-in-out left; -  transition: 0.6s ease-in-out left; -} -.carousel .item > img { -  display: block; -  line-height: 1; -} -.carousel .active, -.carousel .next, -.carousel .prev { -  display: block; -} -.carousel .active { -  left: 0; -} -.carousel .next, -.carousel .prev { -  position: absolute; -  top: 0; -  width: 100%; -} -.carousel .next { -  left: 100%; -} -.carousel .prev { -  left: -100%; -} -.carousel .next.left, -.carousel .prev.right { -  left: 0; -} -.carousel .active.left { -  left: -100%; -} -.carousel .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: #ffffff; -  text-align: center; -  background: #222222; -  border: 3px solid #ffffff; -  -webkit-border-radius: 23px; -  -moz-border-radius: 23px; -  border-radius: 23px; -  opacity: 0.5; -  filter: alpha(opacity=50); -} -.carousel-control.right { -  left: auto; -  right: 15px; -} -.carousel-control:hover { -  color: #ffffff; -  text-decoration: none; -  opacity: 0.9; -  filter: alpha(opacity=90); -} -.carousel-caption { -  position: absolute; -  left: 0; -  right: 0; -  bottom: 0; -  padding: 10px 15px 5px; -  background: #333333; -  background: rgba(0, 0, 0, 0.75); -} -.carousel-caption h4, -.carousel-caption p { -  color: #ffffff; -} -.hero-unit { -  padding: 60px; -  margin-bottom: 30px; -  background-color: #eeeeee; -  -webkit-border-radius: 6px; -  -moz-border-radius: 6px; -  border-radius: 6px; -} -.hero-unit h1 { -  margin-bottom: 0; -  font-size: 60px; -  line-height: 1; -  color: inherit; -  letter-spacing: -1px; -} -.hero-unit p { -  font-size: 18px; -  font-weight: 200; -  line-height: 27px; -  color: inherit; -} -.pull-right { -  float: right; -} -.pull-left { -  float: left; -} -.hide { -  display: none; -} -.show { -  display: block; -} -.invisible { -  visibility: hidden; -} diff --git a/src/bootstrap/google-prettify/prettify.css b/src/bootstrap/google-prettify/prettify.css deleted file mode 100644 index aedd8d1a..00000000 --- a/src/bootstrap/google-prettify/prettify.css +++ /dev/null @@ -1,30 +0,0 @@ -.com { color: #93a1a1; } -.lit { color: #195f91; } -.pun, .opn, .clo { color: #93a1a1; } -.fun { color: #dc322f; } -.str, .atv { color: #D14; } -.kwd, .linenums .tag { color: #1e347b; } -.typ, .atn, .dec, .var { color: teal; } -.pln { color: #48484c; } - -.prettyprint { -  padding: 8px; -  background-color: #f7f7f9; -  border: 1px solid #e1e1e8; -} -.prettyprint.linenums { -  -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; -     -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; -          box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; -} - -/* Specify class=linenums on a pre to get line numbering */ -ol.linenums { -  margin: 0 0 0 33px; /* IE indents via margin-left */ -}  -ol.linenums li { -  padding-left: 12px; -  color: #bebec5; -  line-height: 18px; -  text-shadow: 0 1px 0 #fff; -}
\ No newline at end of file diff --git a/src/bootstrap/google-prettify/prettify.js b/src/bootstrap/google-prettify/prettify.js deleted file mode 100644 index 63a12ad3..00000000 --- a/src/bootstrap/google-prettify/prettify.js +++ /dev/null @@ -1,1538 +0,0 @@ -// Copyright (C) 2006 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -//      http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - - -/** - * @fileoverview - * some functions for browser-side pretty printing of code contained in html. - * - * <p> - * For a fairly comprehensive set of languages see the - * <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs">README</a> - * file that came with this source.  At a minimum, the lexer should work on a - * number of languages including C and friends, Java, Python, Bash, SQL, HTML, - * XML, CSS, Javascript, and Makefiles.  It works passably on Ruby, PHP and Awk - * and a subset of Perl, but, because of commenting conventions, doesn't work on - * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class. - * <p> - * Usage: <ol> - * <li> include this source file in an html page via - *   {@code <script type="text/javascript" src="/path/to/prettify.js"></script>} - * <li> define style rules.  See the example page for examples. - * <li> mark the {@code <pre>} and {@code <code>} tags in your source with - *    {@code class=prettyprint.} - *    You can also use the (html deprecated) {@code <xmp>} tag, but the pretty - *    printer needs to do more substantial DOM manipulations to support that, so - *    some css styles may not be preserved. - * </ol> - * That's it.  I wanted to keep the API as simple as possible, so there's no - * need to specify which language the code is in, but if you wish, you can add - * another class to the {@code <pre>} or {@code <code>} element to specify the - * language, as in {@code <pre class="prettyprint lang-java">}.  Any class that - * starts with "lang-" followed by a file extension, specifies the file type. - * See the "lang-*.js" files in this directory for code that implements - * per-language file handlers. - * <p> - * Change log:<br> - * cbeust, 2006/08/22 - * <blockquote> - *   Java annotations (start with "@") are now captured as literals ("lit") - * </blockquote> - * @requires console - */ - -// JSLint declarations -/*global console, document, navigator, setTimeout, window, define */ - -/** - * Split {@code prettyPrint} into multiple timeouts so as not to interfere with - * UI events. - * If set to {@code false}, {@code prettyPrint()} is synchronous. - */ -window['PR_SHOULD_USE_CONTINUATION'] = true; - -/** - * Find all the {@code <pre>} and {@code <code>} tags in the DOM with - * {@code class=prettyprint} and prettify them. - * - * @param {Function?} opt_whenDone if specified, called when the last entry - *     has been finished. - */ -var prettyPrintOne; -/** - * Pretty print a chunk of code. - * - * @param {string} sourceCodeHtml code as html - * @return {string} code as html, but prettier - */ -var prettyPrint; - - -(function () { -  var win = window; -  // Keyword lists for various languages. -  // We use things that coerce to strings to make them compact when minified -  // and to defeat aggressive optimizers that fold large string constants. -  var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"]; -  var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," +  -      "double,enum,extern,float,goto,int,long,register,short,signed,sizeof," + -      "static,struct,switch,typedef,union,unsigned,void,volatile"]; -  var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," + -      "new,operator,private,protected,public,this,throw,true,try,typeof"]; -  var CPP_KEYWORDS = [COMMON_KEYWORDS,"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"]; -  var JAVA_KEYWORDS = [COMMON_KEYWORDS, -      "abstract,boolean,byte,extends,final,finally,implements,import," + -      "instanceof,null,native,package,strictfp,super,synchronized,throws," + -      "transient"]; -  var CSHARP_KEYWORDS = [JAVA_KEYWORDS, -      "as,base,by,checked,decimal,delegate,descending,dynamic,event," + -      "fixed,foreach,from,group,implicit,in,interface,internal,into,is,let," + -      "lock,object,out,override,orderby,params,partial,readonly,ref,sbyte," + -      "sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort," + -      "var,virtual,where"]; -  var COFFEE_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," + -      "throw,true,try,unless,until,when,while,yes"; -  var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS, -      "debugger,eval,export,function,get,null,set,undefined,var,with," + -      "Infinity,NaN"]; -  var PERL_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"; -  var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "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"]; -  var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "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"]; -  var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," + -      "function,in,local,set,then,until"]; -  var ALL_KEYWORDS = [ -      CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS + -      PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS]; -  var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/; - -  // token style names.  correspond to css classes -  /** -   * token style for a string literal -   * @const -   */ -  var PR_STRING = 'str'; -  /** -   * token style for a keyword -   * @const -   */ -  var PR_KEYWORD = 'kwd'; -  /** -   * token style for a comment -   * @const -   */ -  var PR_COMMENT = 'com'; -  /** -   * token style for a type -   * @const -   */ -  var PR_TYPE = 'typ'; -  /** -   * token style for a literal value.  e.g. 1, null, true. -   * @const -   */ -  var PR_LITERAL = 'lit'; -  /** -   * token style for a punctuation string. -   * @const -   */ -  var PR_PUNCTUATION = 'pun'; -  /** -   * token style for plain text. -   * @const -   */ -  var PR_PLAIN = 'pln'; - -  /** -   * token style for an sgml tag. -   * @const -   */ -  var PR_TAG = 'tag'; -  /** -   * token style for a markup declaration such as a DOCTYPE. -   * @const -   */ -  var PR_DECLARATION = 'dec'; -  /** -   * token style for embedded source. -   * @const -   */ -  var PR_SOURCE = 'src'; -  /** -   * token style for an sgml attribute name. -   * @const -   */ -  var PR_ATTRIB_NAME = 'atn'; -  /** -   * token style for an sgml attribute value. -   * @const -   */ -  var PR_ATTRIB_VALUE = 'atv'; - -  /** -   * A class that indicates a section of markup that is not code, e.g. to allow -   * embedding of line numbers within code listings. -   * @const -   */ -  var PR_NOCODE = 'nocode'; - - - -/** - * A set of tokens that can precede a regular expression literal in - * javascript - * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html - * has the full list, but I've removed ones that might be problematic when - * seen in languages that don't support regular expression literals. - * - * <p>Specifically, I've removed any keywords that can't precede a regexp - * literal in a syntactically legal javascript program, and I've removed the - * "in" keyword since it's not a keyword in many languages, and might be used - * as a count of inches. - * - * <p>The link above does not accurately describe EcmaScript rules since - * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works - * very well in practice. - * - * @private - * @const - */ -var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*'; - -// CAVEAT: this does not properly handle the case where a regular -// expression immediately follows another since a regular expression may -// have flags for case-sensitivity and the like.  Having regexp tokens -// adjacent is not valid in any language I'm aware of, so I'm punting. -// TODO: maybe style special characters inside a regexp as punctuation. - - -  /** -   * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally -   * matches the union of the sets of strings matched by the input RegExp. -   * Since it matches globally, if the input strings have a start-of-input -   * anchor (/^.../), it is ignored for the purposes of unioning. -   * @param {Array.<RegExp>} regexs non multiline, non-global regexs. -   * @return {RegExp} a global regex. -   */ -  function combinePrefixPatterns(regexs) { -    var capturedGroupIndex = 0; -   -    var needToFoldCase = false; -    var ignoreCase = false; -    for (var i = 0, n = regexs.length; i < n; ++i) { -      var regex = regexs[i]; -      if (regex.ignoreCase) { -        ignoreCase = true; -      } else if (/[a-z]/i.test(regex.source.replace( -                     /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) { -        needToFoldCase = true; -        ignoreCase = false; -        break; -      } -    } -   -    var escapeCharToCodeUnit = { -      'b': 8, -      't': 9, -      'n': 0xa, -      'v': 0xb, -      'f': 0xc, -      'r': 0xd -    }; -   -    function decodeEscape(charsetPart) { -      var cc0 = charsetPart.charCodeAt(0); -      if (cc0 !== 92 /* \\ */) { -        return cc0; -      } -      var c1 = charsetPart.charAt(1); -      cc0 = escapeCharToCodeUnit[c1]; -      if (cc0) { -        return cc0; -      } else if ('0' <= c1 && c1 <= '7') { -        return parseInt(charsetPart.substring(1), 8); -      } else if (c1 === 'u' || c1 === 'x') { -        return parseInt(charsetPart.substring(2), 16); -      } else { -        return charsetPart.charCodeAt(1); -      } -    } -   -    function encodeEscape(charCode) { -      if (charCode < 0x20) { -        return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16); -      } -      var ch = String.fromCharCode(charCode); -      return (ch === '\\' || ch === '-' || ch === ']' || ch === '^') -          ? "\\" + ch : ch; -    } -   -    function caseFoldCharset(charSet) { -      var charsetParts = charSet.substring(1, charSet.length - 1).match( -          new RegExp( -              '\\\\u[0-9A-Fa-f]{4}' -              + '|\\\\x[0-9A-Fa-f]{2}' -              + '|\\\\[0-3][0-7]{0,2}' -              + '|\\\\[0-7]{1,2}' -              + '|\\\\[\\s\\S]' -              + '|-' -              + '|[^-\\\\]', -              'g')); -      var ranges = []; -      var inverse = charsetParts[0] === '^'; -   -      var out = ['[']; -      if (inverse) { out.push('^'); } -   -      for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) { -        var p = charsetParts[i]; -        if (/\\[bdsw]/i.test(p)) {  // Don't muck with named groups. -          out.push(p); -        } else { -          var start = decodeEscape(p); -          var end; -          if (i + 2 < n && '-' === charsetParts[i + 1]) { -            end = decodeEscape(charsetParts[i + 2]); -            i += 2; -          } else { -            end = start; -          } -          ranges.push([start, end]); -          // If the range might intersect letters, then expand it. -          // This case handling is too simplistic. -          // It does not deal with non-latin case folding. -          // It works for latin source code identifiers though. -          if (!(end < 65 || start > 122)) { -            if (!(end < 65 || start > 90)) { -              ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]); -            } -            if (!(end < 97 || start > 122)) { -              ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]); -            } -          } -        } -      } -   -      // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]] -      // -> [[1, 12], [14, 14], [16, 17]] -      ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); }); -      var consolidatedRanges = []; -      var lastRange = []; -      for (var i = 0; i < ranges.length; ++i) { -        var range = ranges[i]; -        if (range[0] <= lastRange[1] + 1) { -          lastRange[1] = Math.max(lastRange[1], range[1]); -        } else { -          consolidatedRanges.push(lastRange = range); -        } -      } -   -      for (var i = 0; i < consolidatedRanges.length; ++i) { -        var range = consolidatedRanges[i]; -        out.push(encodeEscape(range[0])); -        if (range[1] > range[0]) { -          if (range[1] + 1 > range[0]) { out.push('-'); } -          out.push(encodeEscape(range[1])); -        } -      } -      out.push(']'); -      return out.join(''); -    } -   -    function allowAnywhereFoldCaseAndRenumberGroups(regex) { -      // Split into character sets, escape sequences, punctuation strings -      // like ('(', '(?:', ')', '^'), and runs of characters that do not -      // include any of the above. -      var parts = regex.source.match( -          new RegExp( -              '(?:' -              + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'  // a character set -              + '|\\\\u[A-Fa-f0-9]{4}'  // a unicode escape -              + '|\\\\x[A-Fa-f0-9]{2}'  // a hex escape -              + '|\\\\[0-9]+'  // a back-reference or octal escape -              + '|\\\\[^ux0-9]'  // other escape sequence -              + '|\\(\\?[:!=]'  // start of a non-capturing group -              + '|[\\(\\)\\^]'  // start/end of a group, or line start -              + '|[^\\x5B\\x5C\\(\\)\\^]+'  // run of other characters -              + ')', -              'g')); -      var n = parts.length; -   -      // Maps captured group numbers to the number they will occupy in -      // the output or to -1 if that has not been determined, or to -      // undefined if they need not be capturing in the output. -      var capturedGroups = []; -   -      // Walk over and identify back references to build the capturedGroups -      // mapping. -      for (var i = 0, groupIndex = 0; i < n; ++i) { -        var p = parts[i]; -        if (p === '(') { -          // groups are 1-indexed, so max group index is count of '(' -          ++groupIndex; -        } else if ('\\' === p.charAt(0)) { -          var decimalValue = +p.substring(1); -          if (decimalValue) { -            if (decimalValue <= groupIndex) { -              capturedGroups[decimalValue] = -1; -            } else { -              // Replace with an unambiguous escape sequence so that -              // an octal escape sequence does not turn into a backreference -              // to a capturing group from an earlier regex. -              parts[i] = encodeEscape(decimalValue); -            } -          } -        } -      } -   -      // Renumber groups and reduce capturing groups to non-capturing groups -      // where possible. -      for (var i = 1; i < capturedGroups.length; ++i) { -        if (-1 === capturedGroups[i]) { -          capturedGroups[i] = ++capturedGroupIndex; -        } -      } -      for (var i = 0, groupIndex = 0; i < n; ++i) { -        var p = parts[i]; -        if (p === '(') { -          ++groupIndex; -          if (!capturedGroups[groupIndex]) { -            parts[i] = '(?:'; -          } -        } else if ('\\' === p.charAt(0)) { -          var decimalValue = +p.substring(1); -          if (decimalValue && decimalValue <= groupIndex) { -            parts[i] = '\\' + capturedGroups[decimalValue]; -          } -        } -      } -   -      // Remove any prefix anchors so that the output will match anywhere. -      // ^^ really does mean an anchored match though. -      for (var i = 0; i < n; ++i) { -        if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; } -      } -   -      // Expand letters to groups to handle mixing of case-sensitive and -      // case-insensitive patterns if necessary. -      if (regex.ignoreCase && needToFoldCase) { -        for (var i = 0; i < n; ++i) { -          var p = parts[i]; -          var ch0 = p.charAt(0); -          if (p.length >= 2 && ch0 === '[') { -            parts[i] = caseFoldCharset(p); -          } else if (ch0 !== '\\') { -            // TODO: handle letters in numeric escapes. -            parts[i] = p.replace( -                /[a-zA-Z]/g, -                function (ch) { -                  var cc = ch.charCodeAt(0); -                  return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']'; -                }); -          } -        } -      } -   -      return parts.join(''); -    } -   -    var rewritten = []; -    for (var i = 0, n = regexs.length; i < n; ++i) { -      var regex = regexs[i]; -      if (regex.global || regex.multiline) { throw new Error('' + regex); } -      rewritten.push( -          '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')'); -    } -   -    return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g'); -  } - - -  /** -   * Split markup into a string of source code and an array mapping ranges in -   * that string to the text nodes in which they appear. -   * -   * <p> -   * The HTML DOM structure:</p> -   * <pre> -   * (Element   "p" -   *   (Element "b" -   *     (Text  "print "))       ; #1 -   *   (Text    "'Hello '")      ; #2 -   *   (Element "br")            ; #3 -   *   (Text    "  + 'World';")) ; #4 -   * </pre> -   * <p> -   * corresponds to the HTML -   * {@code <p><b>print </b>'Hello '<br>  + 'World';</p>}.</p> -   * -   * <p> -   * It will produce the output:</p> -   * <pre> -   * { -   *   sourceCode: "print 'Hello '\n  + 'World';", -   *   //                     1          2 -   *   //           012345678901234 5678901234567 -   *   spans: [0, #1, 6, #2, 14, #3, 15, #4] -   * } -   * </pre> -   * <p> -   * where #1 is a reference to the {@code "print "} text node above, and so -   * on for the other text nodes. -   * </p> -   * -   * <p> -   * The {@code} spans array is an array of pairs.  Even elements are the start -   * indices of substrings, and odd elements are the text nodes (or BR elements) -   * that contain the text for those substrings. -   * Substrings continue until the next index or the end of the source. -   * </p> -   * -   * @param {Node} node an HTML DOM subtree containing source-code. -   * @param {boolean} isPreformatted true if white-space in text nodes should -   *    be considered significant. -   * @return {Object} source code and the text nodes in which they occur. -   */ -  function extractSourceSpans(node, isPreformatted) { -    var nocode = /(?:^|\s)nocode(?:\s|$)/; -   -    var chunks = []; -    var length = 0; -    var spans = []; -    var k = 0; -   -    function walk(node) { -      switch (node.nodeType) { -        case 1:  // Element -          if (nocode.test(node.className)) { return; } -          for (var child = node.firstChild; child; child = child.nextSibling) { -            walk(child); -          } -          var nodeName = node.nodeName.toLowerCase(); -          if ('br' === nodeName || 'li' === nodeName) { -            chunks[k] = '\n'; -            spans[k << 1] = length++; -            spans[(k++ << 1) | 1] = node; -          } -          break; -        case 3: case 4:  // Text -          var text = node.nodeValue; -          if (text.length) { -            if (!isPreformatted) { -              text = text.replace(/[ \t\r\n]+/g, ' '); -            } else { -              text = text.replace(/\r\n?/g, '\n');  // Normalize newlines. -            } -            // TODO: handle tabs here? -            chunks[k] = text; -            spans[k << 1] = length; -            length += text.length; -            spans[(k++ << 1) | 1] = node; -          } -          break; -      } -    } -   -    walk(node); -   -    return { -      sourceCode: chunks.join('').replace(/\n$/, ''), -      spans: spans -    }; -  } - - -  /** -   * Apply the given language handler to sourceCode and add the resulting -   * decorations to out. -   * @param {number} basePos the index of sourceCode within the chunk of source -   *    whose decorations are already present on out. -   */ -  function appendDecorations(basePos, sourceCode, langHandler, out) { -    if (!sourceCode) { return; } -    var job = { -      sourceCode: sourceCode, -      basePos: basePos -    }; -    langHandler(job); -    out.push.apply(out, job.decorations); -  } - -  var notWs = /\S/; - -  /** -   * Given an element, if it contains only one child element and any text nodes -   * it contains contain only space characters, return the sole child element. -   * Otherwise returns undefined. -   * <p> -   * This is meant to return the CODE element in {@code <pre><code ...>} when -   * there is a single child element that contains all the non-space textual -   * content, but not to return anything where there are multiple child elements -   * as in {@code <pre><code>...</code><code>...</code></pre>} or when there -   * is textual content. -   */ -  function childContentWrapper(element) { -    var wrapper = undefined; -    for (var c = element.firstChild; c; c = c.nextSibling) { -      var type = c.nodeType; -      wrapper = (type === 1)  // Element Node -          ? (wrapper ? element : c) -          : (type === 3)  // Text Node -          ? (notWs.test(c.nodeValue) ? element : wrapper) -          : wrapper; -    } -    return wrapper === element ? undefined : wrapper; -  } - -  /** Given triples of [style, pattern, context] returns a lexing function, -    * The lexing function interprets the patterns to find token boundaries and -    * returns a decoration list of the form -    * [index_0, style_0, index_1, style_1, ..., index_n, style_n] -    * where index_n is an index into the sourceCode, and style_n is a style -    * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to -    * all characters in sourceCode[index_n-1:index_n]. -    * -    * The stylePatterns is a list whose elements have the form -    * [style : string, pattern : RegExp, DEPRECATED, shortcut : string]. -    * -    * Style is a style constant like PR_PLAIN, or can be a string of the -    * form 'lang-FOO', where FOO is a language extension describing the -    * language of the portion of the token in $1 after pattern executes. -    * E.g., if style is 'lang-lisp', and group 1 contains the text -    * '(hello (world))', then that portion of the token will be passed to the -    * registered lisp handler for formatting. -    * The text before and after group 1 will be restyled using this decorator -    * so decorators should take care that this doesn't result in infinite -    * recursion.  For example, the HTML lexer rule for SCRIPT elements looks -    * something like ['lang-js', /<[s]cript>(.+?)<\/script>/].  This may match -    * '<script>foo()<\/script>', which would cause the current decorator to -    * be called with '<script>' which would not match the same rule since -    * group 1 must not be empty, so it would be instead styled as PR_TAG by -    * the generic tag rule.  The handler registered for the 'js' extension would -    * then be called with 'foo()', and finally, the current decorator would -    * be called with '<\/script>' which would not match the original rule and -    * so the generic tag rule would identify it as a tag. -    * -    * Pattern must only match prefixes, and if it matches a prefix, then that -    * match is considered a token with the same style. -    * -    * Context is applied to the last non-whitespace, non-comment token -    * recognized. -    * -    * Shortcut is an optional string of characters, any of which, if the first -    * character, guarantee that this pattern and only this pattern matches. -    * -    * @param {Array} shortcutStylePatterns patterns that always start with -    *   a known character.  Must have a shortcut string. -    * @param {Array} fallthroughStylePatterns patterns that will be tried in -    *   order if the shortcut ones fail.  May have shortcuts. -    * -    * @return {function (Object)} a -    *   function that takes source code and returns a list of decorations. -    */ -  function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) { -    var shortcuts = {}; -    var tokenizer; -    (function () { -      var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns); -      var allRegexs = []; -      var regexKeys = {}; -      for (var i = 0, n = allPatterns.length; i < n; ++i) { -        var patternParts = allPatterns[i]; -        var shortcutChars = patternParts[3]; -        if (shortcutChars) { -          for (var c = shortcutChars.length; --c >= 0;) { -            shortcuts[shortcutChars.charAt(c)] = patternParts; -          } -        } -        var regex = patternParts[1]; -        var k = '' + regex; -        if (!regexKeys.hasOwnProperty(k)) { -          allRegexs.push(regex); -          regexKeys[k] = null; -        } -      } -      allRegexs.push(/[\0-\uffff]/); -      tokenizer = combinePrefixPatterns(allRegexs); -    })(); - -    var nPatterns = fallthroughStylePatterns.length; - -    /** -     * Lexes job.sourceCode and produces an output array job.decorations of -     * style classes preceded by the position at which they start in -     * job.sourceCode in order. -     * -     * @param {Object} job an object like <pre>{ -     *    sourceCode: {string} sourceText plain text, -     *    basePos: {int} position of job.sourceCode in the larger chunk of -     *        sourceCode. -     * }</pre> -     */ -    var decorate = function (job) { -      var sourceCode = job.sourceCode, basePos = job.basePos; -      /** Even entries are positions in source in ascending order.  Odd enties -        * are style markers (e.g., PR_COMMENT) that run from that position until -        * the end. -        * @type {Array.<number|string>} -        */ -      var decorations = [basePos, PR_PLAIN]; -      var pos = 0;  // index into sourceCode -      var tokens = sourceCode.match(tokenizer) || []; -      var styleCache = {}; - -      for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) { -        var token = tokens[ti]; -        var style = styleCache[token]; -        var match = void 0; - -        var isEmbedded; -        if (typeof style === 'string') { -          isEmbedded = false; -        } else { -          var patternParts = shortcuts[token.charAt(0)]; -          if (patternParts) { -            match = token.match(patternParts[1]); -            style = patternParts[0]; -          } else { -            for (var i = 0; i < nPatterns; ++i) { -              patternParts = fallthroughStylePatterns[i]; -              match = token.match(patternParts[1]); -              if (match) { -                style = patternParts[0]; -                break; -              } -            } - -            if (!match) {  // make sure that we make progress -              style = PR_PLAIN; -            } -          } - -          isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5); -          if (isEmbedded && !(match && typeof match[1] === 'string')) { -            isEmbedded = false; -            style = PR_SOURCE; -          } - -          if (!isEmbedded) { styleCache[token] = style; } -        } - -        var tokenStart = pos; -        pos += token.length; - -        if (!isEmbedded) { -          decorations.push(basePos + tokenStart, style); -        } else {  // Treat group 1 as an embedded block of source code. -          var embeddedSource = match[1]; -          var embeddedSourceStart = token.indexOf(embeddedSource); -          var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length; -          if (match[2]) { -            // If embeddedSource can be blank, then it would match at the -            // beginning which would cause us to infinitely recurse on the -            // entire token, so we catch the right context in match[2]. -            embeddedSourceEnd = token.length - match[2].length; -            embeddedSourceStart = embeddedSourceEnd - embeddedSource.length; -          } -          var lang = style.substring(5); -          // Decorate the left of the embedded source -          appendDecorations( -              basePos + tokenStart, -              token.substring(0, embeddedSourceStart), -              decorate, decorations); -          // Decorate the embedded source -          appendDecorations( -              basePos + tokenStart + embeddedSourceStart, -              embeddedSource, -              langHandlerForExtension(lang, embeddedSource), -              decorations); -          // Decorate the right of the embedded section -          appendDecorations( -              basePos + tokenStart + embeddedSourceEnd, -              token.substring(embeddedSourceEnd), -              decorate, decorations); -        } -      } -      job.decorations = decorations; -    }; -    return decorate; -  } - -  /** returns a function that produces a list of decorations from source text. -    * -    * This code treats ", ', and ` as string delimiters, and \ as a string -    * escape.  It does not recognize perl's qq() style strings. -    * It has no special handling for double delimiter escapes as in basic, or -    * the tripled delimiters used in python, but should work on those regardless -    * although in those cases a single string literal may be broken up into -    * multiple adjacent string literals. -    * -    * It recognizes C, C++, and shell style comments. -    * -    * @param {Object} options a set of optional parameters. -    * @return {function (Object)} a function that examines the source code -    *     in the input job and builds the decoration list. -    */ -  function sourceDecorator(options) { -    var shortcutStylePatterns = [], fallthroughStylePatterns = []; -    if (options['tripleQuotedStrings']) { -      // '''multi-line-string''', 'single-line-string', and double-quoted -      shortcutStylePatterns.push( -          [PR_STRING,  /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/, -           null, '\'"']); -    } else if (options['multiLineStrings']) { -      // 'multi-line-string', "multi-line-string" -      shortcutStylePatterns.push( -          [PR_STRING,  /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/, -           null, '\'"`']); -    } else { -      // 'single-line-string', "single-line-string" -      shortcutStylePatterns.push( -          [PR_STRING, -           /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/, -           null, '"\'']); -    } -    if (options['verbatimStrings']) { -      // verbatim-string-literal production from the C# grammar.  See issue 93. -      fallthroughStylePatterns.push( -          [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]); -    } -    var hc = options['hashComments']; -    if (hc) { -      if (options['cStyleComments']) { -        if (hc > 1) {  // multiline hash comments -          shortcutStylePatterns.push( -              [PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']); -        } else { -          // Stop C preprocessor declarations at an unclosed open comment -          shortcutStylePatterns.push( -              [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/, -               null, '#']); -        } -        // #include <stdio.h> -        fallthroughStylePatterns.push( -            [PR_STRING, -             /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/, -             null]); -      } else { -        shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']); -      } -    } -    if (options['cStyleComments']) { -      fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]); -      fallthroughStylePatterns.push( -          [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]); -    } -    if (options['regexLiterals']) { -      /** -       * @const -       */ -      var REGEX_LITERAL = ( -          // A regular expression literal starts with a slash that is -          // not followed by * or / so that it is not confused with -          // comments. -          '/(?=[^/*])' -          // and then contains any number of raw characters, -          + '(?:[^/\\x5B\\x5C]' -          // escape sequences (\x5C), -          +    '|\\x5C[\\s\\S]' -          // or non-nesting character sets (\x5B\x5D); -          +    '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+' -          // finally closed by a /. -          + '/'); -      fallthroughStylePatterns.push( -          ['lang-regex', -           new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')') -           ]); -    } - -    var types = options['types']; -    if (types) { -      fallthroughStylePatterns.push([PR_TYPE, types]); -    } - -    var keywords = ("" + options['keywords']).replace(/^ | $/g, ''); -    if (keywords.length) { -      fallthroughStylePatterns.push( -          [PR_KEYWORD, -           new RegExp('^(?:' + keywords.replace(/[\s,]+/g, '|') + ')\\b'), -           null]); -    } - -    shortcutStylePatterns.push([PR_PLAIN,       /^\s+/, null, ' \r\n\t\xA0']); -    fallthroughStylePatterns.push( -        // TODO(mikesamuel): recognize non-latin letters and numerals in idents -        [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null], -        [PR_TYPE,        /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null], -        [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null], -        [PR_LITERAL, -         new RegExp( -             '^(?:' -             // A hex number -             + '0x[a-f0-9]+' -             // or an octal or decimal number, -             + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)' -             // possibly in scientific notation -             + '(?:e[+\\-]?\\d+)?' -             + ')' -             // with an optional modifier like UL for unsigned long -             + '[a-z]*', 'i'), -         null, '0123456789'], -        // Don't treat escaped quotes in bash as starting strings.  See issue 144. -        [PR_PLAIN,       /^\\[\s\S]?/, null], -        [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#\\]*/, null]); - -    return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns); -  } - -  var decorateSource = sourceDecorator({ -        'keywords': ALL_KEYWORDS, -        'hashComments': true, -        'cStyleComments': true, -        'multiLineStrings': true, -        'regexLiterals': true -      }); - -  /** -   * Given a DOM subtree, wraps it in a list, and puts each line into its own -   * list item. -   * -   * @param {Node} node modified in place.  Its content is pulled into an -   *     HTMLOListElement, and each line is moved into a separate list item. -   *     This requires cloning elements, so the input might not have unique -   *     IDs after numbering. -   * @param {boolean} isPreformatted true iff white-space in text nodes should -   *     be treated as significant. -   */ -  function numberLines(node, opt_startLineNum, isPreformatted) { -    var nocode = /(?:^|\s)nocode(?:\s|$)/; -    var lineBreak = /\r\n?|\n/; -   -    var document = node.ownerDocument; -   -    var li = document.createElement('li'); -    while (node.firstChild) { -      li.appendChild(node.firstChild); -    } -    // An array of lines.  We split below, so this is initialized to one -    // un-split line. -    var listItems = [li]; -   -    function walk(node) { -      switch (node.nodeType) { -        case 1:  // Element -          if (nocode.test(node.className)) { break; } -          if ('br' === node.nodeName) { -            breakAfter(node); -            // Discard the <BR> since it is now flush against a </LI>. -            if (node.parentNode) { -              node.parentNode.removeChild(node); -            } -          } else { -            for (var child = node.firstChild; child; child = child.nextSibling) { -              walk(child); -            } -          } -          break; -        case 3: case 4:  // Text -          if (isPreformatted) { -            var text = node.nodeValue; -            var match = text.match(lineBreak); -            if (match) { -              var firstLine = text.substring(0, match.index); -              node.nodeValue = firstLine; -              var tail = text.substring(match.index + match[0].length); -              if (tail) { -                var parent = node.parentNode; -                parent.insertBefore( -                    document.createTextNode(tail), node.nextSibling); -              } -              breakAfter(node); -              if (!firstLine) { -                // Don't leave blank text nodes in the DOM. -                node.parentNode.removeChild(node); -              } -            } -          } -          break; -      } -    } -   -    // Split a line after the given node. -    function breakAfter(lineEndNode) { -      // If there's nothing to the right, then we can skip ending the line -      // here, and move root-wards since splitting just before an end-tag -      // would require us to create a bunch of empty copies. -      while (!lineEndNode.nextSibling) { -        lineEndNode = lineEndNode.parentNode; -        if (!lineEndNode) { return; } -      } -   -      function breakLeftOf(limit, copy) { -        // Clone shallowly if this node needs to be on both sides of the break. -        var rightSide = copy ? limit.cloneNode(false) : limit; -        var parent = limit.parentNode; -        if (parent) { -          // We clone the parent chain. -          // This helps us resurrect important styling elements that cross lines. -          // E.g. in <i>Foo<br>Bar</i> -          // should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>. -          var parentClone = breakLeftOf(parent, 1); -          // Move the clone and everything to the right of the original -          // onto the cloned parent. -          var next = limit.nextSibling; -          parentClone.appendChild(rightSide); -          for (var sibling = next; sibling; sibling = next) { -            next = sibling.nextSibling; -            parentClone.appendChild(sibling); -          } -        } -        return rightSide; -      } -   -      var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0); -   -      // Walk the parent chain until we reach an unattached LI. -      for (var parent; -           // Check nodeType since IE invents document fragments. -           (parent = copiedListItem.parentNode) && parent.nodeType === 1;) { -        copiedListItem = parent; -      } -      // Put it on the list of lines for later processing. -      listItems.push(copiedListItem); -    } -   -    // Split lines while there are lines left to split. -    for (var i = 0;  // Number of lines that have been split so far. -         i < listItems.length;  // length updated by breakAfter calls. -         ++i) { -      walk(listItems[i]); -    } -   -    // Make sure numeric indices show correctly. -    if (opt_startLineNum === (opt_startLineNum|0)) { -      listItems[0].setAttribute('value', opt_startLineNum); -    } -   -    var ol = document.createElement('ol'); -    ol.className = 'linenums'; -    var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0; -    for (var i = 0, n = listItems.length; i < n; ++i) { -      li = listItems[i]; -      // Stick a class on the LIs so that stylesheets can -      // color odd/even rows, or any other row pattern that -      // is co-prime with 10. -      li.className = 'L' + ((i + offset) % 10); -      if (!li.firstChild) { -        li.appendChild(document.createTextNode('\xA0')); -      } -      ol.appendChild(li); -    } -   -    node.appendChild(ol); -  } - -  /** -   * Breaks {@code job.sourceCode} around style boundaries in -   * {@code job.decorations} and modifies {@code job.sourceNode} in place. -   * @param {Object} job like <pre>{ -   *    sourceCode: {string} source as plain text, -   *    spans: {Array.<number|Node>} alternating span start indices into source -   *       and the text node or element (e.g. {@code <BR>}) corresponding to that -   *       span. -   *    decorations: {Array.<number|string} an array of style classes preceded -   *       by the position at which they start in job.sourceCode in order -   * }</pre> -   * @private -   */ -  function recombineTagsAndDecorations(job) { -    var isIE8OrEarlier = /\bMSIE\s(\d+)/.exec(navigator.userAgent); -    isIE8OrEarlier = isIE8OrEarlier && +isIE8OrEarlier[1] <= 8; -    var newlineRe = /\n/g; -   -    var source = job.sourceCode; -    var sourceLength = source.length; -    // Index into source after the last code-unit recombined. -    var sourceIndex = 0; -   -    var spans = job.spans; -    var nSpans = spans.length; -    // Index into spans after the last span which ends at or before sourceIndex. -    var spanIndex = 0; -   -    var decorations = job.decorations; -    var nDecorations = decorations.length; -    // Index into decorations after the last decoration which ends at or before -    // sourceIndex. -    var decorationIndex = 0; -   -    // Remove all zero-length decorations. -    decorations[nDecorations] = sourceLength; -    var decPos, i; -    for (i = decPos = 0; i < nDecorations;) { -      if (decorations[i] !== decorations[i + 2]) { -        decorations[decPos++] = decorations[i++]; -        decorations[decPos++] = decorations[i++]; -      } else { -        i += 2; -      } -    } -    nDecorations = decPos; -   -    // Simplify decorations. -    for (i = decPos = 0; i < nDecorations;) { -      var startPos = decorations[i]; -      // Conflate all adjacent decorations that use the same style. -      var startDec = decorations[i + 1]; -      var end = i + 2; -      while (end + 2 <= nDecorations && decorations[end + 1] === startDec) { -        end += 2; -      } -      decorations[decPos++] = startPos; -      decorations[decPos++] = startDec; -      i = end; -    } -   -    nDecorations = decorations.length = decPos; -   -    var sourceNode = job.sourceNode; -    var oldDisplay; -    if (sourceNode) { -      oldDisplay = sourceNode.style.display; -      sourceNode.style.display = 'none'; -    } -    try { -      var decoration = null; -      while (spanIndex < nSpans) { -        var spanStart = spans[spanIndex]; -        var spanEnd = spans[spanIndex + 2] || sourceLength; -   -        var decEnd = decorations[decorationIndex + 2] || sourceLength; -   -        var end = Math.min(spanEnd, decEnd); -   -        var textNode = spans[spanIndex + 1]; -        var styledText; -        if (textNode.nodeType !== 1  // Don't muck with <BR>s or <LI>s -            // Don't introduce spans around empty text nodes. -            && (styledText = source.substring(sourceIndex, end))) { -          // This may seem bizarre, and it is.  Emitting LF on IE causes the -          // code to display with spaces instead of line breaks. -          // Emitting Windows standard issue linebreaks (CRLF) causes a blank -          // space to appear at the beginning of every line but the first. -          // Emitting an old Mac OS 9 line separator makes everything spiffy. -          if (isIE8OrEarlier) { -            styledText = styledText.replace(newlineRe, '\r'); -          } -          textNode.nodeValue = styledText; -          var document = textNode.ownerDocument; -          var span = document.createElement('span'); -          span.className = decorations[decorationIndex + 1]; -          var parentNode = textNode.parentNode; -          parentNode.replaceChild(span, textNode); -          span.appendChild(textNode); -          if (sourceIndex < spanEnd) {  // Split off a text node. -            spans[spanIndex + 1] = textNode -                // TODO: Possibly optimize by using '' if there's no flicker. -                = document.createTextNode(source.substring(end, spanEnd)); -            parentNode.insertBefore(textNode, span.nextSibling); -          } -        } -   -        sourceIndex = end; -   -        if (sourceIndex >= spanEnd) { -          spanIndex += 2; -        } -        if (sourceIndex >= decEnd) { -          decorationIndex += 2; -        } -      } -    } finally { -      if (sourceNode) { -        sourceNode.style.display = oldDisplay; -      } -    } -  } - - -  /** Maps language-specific file extensions to handlers. */ -  var langHandlerRegistry = {}; -  /** Register a language handler for the given file extensions. -    * @param {function (Object)} handler a function from source code to a list -    *      of decorations.  Takes a single argument job which describes the -    *      state of the computation.   The single parameter has the form -    *      {@code { -    *        sourceCode: {string} as plain text. -    *        decorations: {Array.<number|string>} an array of style classes -    *                     preceded by the position at which they start in -    *                     job.sourceCode in order. -    *                     The language handler should assigned this field. -    *        basePos: {int} the position of source in the larger source chunk. -    *                 All positions in the output decorations array are relative -    *                 to the larger source chunk. -    *      } } -    * @param {Array.<string>} fileExtensions -    */ -  function registerLangHandler(handler, fileExtensions) { -    for (var i = fileExtensions.length; --i >= 0;) { -      var ext = fileExtensions[i]; -      if (!langHandlerRegistry.hasOwnProperty(ext)) { -        langHandlerRegistry[ext] = handler; -      } else if (win['console']) { -        console['warn']('cannot override language handler %s', ext); -      } -    } -  } -  function langHandlerForExtension(extension, source) { -    if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) { -      // Treat it as markup if the first non whitespace character is a < and -      // the last non-whitespace character is a >. -      extension = /^\s*</.test(source) -          ? 'default-markup' -          : 'default-code'; -    } -    return langHandlerRegistry[extension]; -  } -  registerLangHandler(decorateSource, ['default-code']); -  registerLangHandler( -      createSimpleLexer( -          [], -          [ -           [PR_PLAIN,       /^[^<?]+/], -           [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/], -           [PR_COMMENT,     /^<\!--[\s\S]*?(?:-\->|$)/], -           // Unescaped content in an unknown language -           ['lang-',        /^<\?([\s\S]+?)(?:\?>|$)/], -           ['lang-',        /^<%([\s\S]+?)(?:%>|$)/], -           [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/], -           ['lang-',        /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i], -           // Unescaped content in javascript.  (Or possibly vbscript). -           ['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i], -           // Contains unescaped stylesheet content -           ['lang-css',     /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i], -           ['lang-in.tag',  /^(<\/?[a-z][^<>]*>)/i] -          ]), -      ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']); -  registerLangHandler( -      createSimpleLexer( -          [ -           [PR_PLAIN,        /^[\s]+/, null, ' \t\r\n'], -           [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\''] -           ], -          [ -           [PR_TAG,          /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i], -           [PR_ATTRIB_NAME,  /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i], -           ['lang-uq.val',   /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/], -           [PR_PUNCTUATION,  /^[=<>\/]+/], -           ['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']); -  registerLangHandler( -      createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']); -  registerLangHandler(sourceDecorator({ -          'keywords': CPP_KEYWORDS, -          'hashComments': true, -          'cStyleComments': true, -          'types': C_TYPES -        }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']); -  registerLangHandler(sourceDecorator({ -          'keywords': 'null,true,false' -        }), ['json']); -  registerLangHandler(sourceDecorator({ -          'keywords': CSHARP_KEYWORDS, -          'hashComments': true, -          'cStyleComments': true, -          'verbatimStrings': true, -          'types': C_TYPES -        }), ['cs']); -  registerLangHandler(sourceDecorator({ -          'keywords': JAVA_KEYWORDS, -          'cStyleComments': true -        }), ['java']); -  registerLangHandler(sourceDecorator({ -          'keywords': SH_KEYWORDS, -          'hashComments': true, -          'multiLineStrings': true -        }), ['bsh', 'csh', 'sh']); -  registerLangHandler(sourceDecorator({ -          'keywords': PYTHON_KEYWORDS, -          'hashComments': true, -          'multiLineStrings': true, -          'tripleQuotedStrings': true -        }), ['cv', 'py']); -  registerLangHandler(sourceDecorator({ -          'keywords': PERL_KEYWORDS, -          'hashComments': true, -          'multiLineStrings': true, -          'regexLiterals': true -        }), ['perl', 'pl', 'pm']); -  registerLangHandler(sourceDecorator({ -          'keywords': RUBY_KEYWORDS, -          'hashComments': true, -          'multiLineStrings': true, -          'regexLiterals': true -        }), ['rb']); -  registerLangHandler(sourceDecorator({ -          'keywords': JSCRIPT_KEYWORDS, -          'cStyleComments': true, -          'regexLiterals': true -        }), ['js']); -  registerLangHandler(sourceDecorator({ -          'keywords': COFFEE_KEYWORDS, -          'hashComments': 3,  // ### style block comments -          'cStyleComments': true, -          'multilineStrings': true, -          'tripleQuotedStrings': true, -          'regexLiterals': true -        }), ['coffee']); -  registerLangHandler( -      createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']); - -  function applyDecorator(job) { -    var opt_langExtension = job.langExtension; - -    try { -      // Extract tags, and convert the source code to plain text. -      var sourceAndSpans = extractSourceSpans(job.sourceNode, job.pre); -      /** Plain text. @type {string} */ -      var source = sourceAndSpans.sourceCode; -      job.sourceCode = source; -      job.spans = sourceAndSpans.spans; -      job.basePos = 0; - -      // Apply the appropriate language handler -      langHandlerForExtension(opt_langExtension, source)(job); - -      // Integrate the decorations and tags back into the source code, -      // modifying the sourceNode in place. -      recombineTagsAndDecorations(job); -    } catch (e) { -      if (win['console']) { -        console['log'](e && e['stack'] ? e['stack'] : e); -      } -    } -  } - -  /** -   * @param sourceCodeHtml {string} The HTML to pretty print. -   * @param opt_langExtension {string} The language name to use. -   *     Typically, a filename extension like 'cpp' or 'java'. -   * @param opt_numberLines {number|boolean} True to number lines, -   *     or the 1-indexed number of the first line in sourceCodeHtml. -   */ -  function prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) { -    // PATCHED: http://code.google.com/p/google-code-prettify/issues/detail?id=213 -    var container = document.createElement('div'); -    // This could cause images to load and onload listeners to fire. -    // E.g. <img onerror="alert(1337)" src="nosuchimage.png">. -    // We assume that the inner HTML is from a trusted source. -    container.innerHTML = '<pre>' + sourceCodeHtml + '</pre>'; -    container = container.firstChild; -    if (opt_numberLines) { -      numberLines(container, opt_numberLines, true); -    } - -    var job = { -      langExtension: opt_langExtension, -      numberLines: opt_numberLines, -      sourceNode: container, -      pre: 1 -    }; -    applyDecorator(job); -    return container.innerHTML; -  } - -  function prettyPrint(opt_whenDone) { -    function byTagName(tn) { return document.getElementsByTagName(tn); } -    // fetch a list of nodes to rewrite -    var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')]; -    var elements = []; -    for (var i = 0; i < codeSegments.length; ++i) { -      for (var j = 0, n = codeSegments[i].length; j < n; ++j) { -        elements.push(codeSegments[i][j]); -      } -    } -    codeSegments = null; - -    var clock = Date; -    if (!clock['now']) { -      clock = { 'now': function () { return +(new Date); } }; -    } - -    // The loop is broken into a series of continuations to make sure that we -    // don't make the browser unresponsive when rewriting a large page. -    var k = 0; -    var prettyPrintingJob; - -    var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/; -    var prettyPrintRe = /\bprettyprint\b/; -    var prettyPrintedRe = /\bprettyprinted\b/; -    var preformattedTagNameRe = /pre|xmp/i; -    var codeRe = /^code$/i; -    var preCodeXmpRe = /^(?:pre|code|xmp)$/i; - -    function doWork() { -      var endTime = (win['PR_SHOULD_USE_CONTINUATION'] ? -                     clock['now']() + 250 /* ms */ : -                     Infinity); -      for (; k < elements.length && clock['now']() < endTime; k++) { -        var cs = elements[k]; -        var className = cs.className; -        if (prettyPrintRe.test(className) -            // Don't redo this if we've already done it. -            // This allows recalling pretty print to just prettyprint elements -            // that have been added to the page since last call. -            && !prettyPrintedRe.test(className)) { - -          // make sure this is not nested in an already prettified element -          var nested = false; -          for (var p = cs.parentNode; p; p = p.parentNode) { -            var tn = p.tagName; -            if (preCodeXmpRe.test(tn) -                && p.className && prettyPrintRe.test(p.className)) { -              nested = true; -              break; -            } -          } -          if (!nested) { -            // Mark done.  If we fail to prettyprint for whatever reason, -            // we shouldn't try again. -            cs.className += ' prettyprinted'; - -            // If the classes includes a language extensions, use it. -            // Language extensions can be specified like -            //     <pre class="prettyprint lang-cpp"> -            // the language extension "cpp" is used to find a language handler -            // as passed to PR.registerLangHandler. -            // HTML5 recommends that a language be specified using "language-" -            // as the prefix instead.  Google Code Prettify supports both. -            // http://dev.w3.org/html5/spec-author-view/the-code-element.html -            var langExtension = className.match(langExtensionRe); -            // Support <pre class="prettyprint"><code class="language-c"> -            var wrapper; -            if (!langExtension && (wrapper = childContentWrapper(cs)) -                && codeRe.test(wrapper.tagName)) { -              langExtension = wrapper.className.match(langExtensionRe); -            } - -            if (langExtension) { langExtension = langExtension[1]; } - -            var preformatted; -            if (preformattedTagNameRe.test(cs.tagName)) { -              preformatted = 1; -            } else { -              var currentStyle = cs['currentStyle']; -              var whitespace = ( -                  currentStyle -                  ? currentStyle['whiteSpace'] -                  : (document.defaultView -                     && document.defaultView.getComputedStyle) -                  ? document.defaultView.getComputedStyle(cs, null) -                  .getPropertyValue('white-space') -                  : 0); -              preformatted = whitespace -                  && 'pre' === whitespace.substring(0, 3); -            } - -            // Look for a class like linenums or linenums:<n> where <n> is the -            // 1-indexed number of the first line. -            var lineNums = cs.className.match(/\blinenums\b(?::(\d+))?/); -            lineNums = lineNums -                ? lineNums[1] && lineNums[1].length ? +lineNums[1] : true -                : false; -            if (lineNums) { numberLines(cs, lineNums, preformatted); } - -            // do the pretty printing -            prettyPrintingJob = { -              langExtension: langExtension, -              sourceNode: cs, -              numberLines: lineNums, -              pre: preformatted -            }; -            applyDecorator(prettyPrintingJob); -          } -        } -      } -      if (k < elements.length) { -        // finish up in a continuation -        setTimeout(doWork, 250); -      } else if (opt_whenDone) { -        opt_whenDone(); -      } -    } - -    doWork(); -  } - -  /** -   * Contains functions for creating and registering new language handlers. -   * @type {Object} -   */ -  var PR = win['PR'] = { -        'createSimpleLexer': createSimpleLexer, -        'registerLangHandler': registerLangHandler, -        'sourceDecorator': sourceDecorator, -        'PR_ATTRIB_NAME': PR_ATTRIB_NAME, -        'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE, -        'PR_COMMENT': PR_COMMENT, -        'PR_DECLARATION': PR_DECLARATION, -        'PR_KEYWORD': PR_KEYWORD, -        'PR_LITERAL': PR_LITERAL, -        'PR_NOCODE': PR_NOCODE, -        'PR_PLAIN': PR_PLAIN, -        'PR_PUNCTUATION': PR_PUNCTUATION, -        'PR_SOURCE': PR_SOURCE, -        'PR_STRING': PR_STRING, -        'PR_TAG': PR_TAG, -        'PR_TYPE': PR_TYPE, -        'prettyPrintOne': win['prettyPrintOne'] = prettyPrintOne, -        'prettyPrint': win['prettyPrint'] = prettyPrint -      }; - -  // Make PR available via the Asynchronous Module Definition (AMD) API. -  // Per https://github.com/amdjs/amdjs-api/wiki/AMD: -  // The Asynchronous Module Definition (AMD) API specifies a -  // mechanism for defining modules such that the module and its -  // dependencies can be asynchronously loaded. -  // ... -  // To allow a clear indicator that a global define function (as -  // needed for script src browser loading) conforms to the AMD API, -  // any global define function SHOULD have a property called "amd" -  // whose value is an object. This helps avoid conflict with any -  // other existing JavaScript code that could have defined a define() -  // function that does not conform to the AMD API. -  if (typeof define === "function" && define['amd']) { -    define("google-code-prettify", [], function () { -      return PR;  -    }); -  } -})(); | 
