├── images ├── a.jpg ├── 000602470.gif ├── 000602474.gif ├── 000602483.gif ├── 000602485.gif ├── 000602485.tiff ├── rubio-table.png ├── pension-table.jpg ├── 000602470-excel.jpg ├── 000602474-excel.jpg ├── 000602483-excel.jpg ├── 000602485-rotated.tiff ├── feinstein-000001065.gif ├── 000602483-excel-abbyy-preview.jpg └── sen-bernie-sanders-2014-forms.jpg ├── pdf ├── 000602470.pdf ├── 000602474.pdf ├── 000602483.pdf └── 000602485.pdf ├── xls ├── 000602470.xlsx ├── 000602474.xlsx └── 000602483.xlsx ├── files └── rubio-marco-eFD_ Annual-Report-for-2014_files │ ├── logo.png │ ├── carousel.css │ ├── jquery.cooke.js │ ├── browser-detect.js │ ├── print.css │ ├── jquery.placeholder.js │ ├── DT_bootstrap.css │ ├── DT_bootstrap.js │ ├── jquery.dPassword.js │ ├── modernizr.js │ ├── jquery.dataTables.css │ ├── font-awesome.css │ ├── responsive.css │ ├── bootstrap.min.js │ └── jquery-ui-1.10.0.custom.css ├── .gitignore ├── txt ├── 000602485-non-rotated-tesseract.txt ├── 000602485-tesseract.txt ├── 000602485.txt └── 000602470.txt └── README.md /images/a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/images/a.jpg -------------------------------------------------------------------------------- /pdf/000602470.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/pdf/000602470.pdf -------------------------------------------------------------------------------- /pdf/000602474.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/pdf/000602474.pdf -------------------------------------------------------------------------------- /pdf/000602483.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/pdf/000602483.pdf -------------------------------------------------------------------------------- /pdf/000602485.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/pdf/000602485.pdf -------------------------------------------------------------------------------- /images/000602470.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/images/000602470.gif -------------------------------------------------------------------------------- /images/000602474.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/images/000602474.gif -------------------------------------------------------------------------------- /images/000602483.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/images/000602483.gif -------------------------------------------------------------------------------- /images/000602485.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/images/000602485.gif -------------------------------------------------------------------------------- /xls/000602470.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/xls/000602470.xlsx -------------------------------------------------------------------------------- /xls/000602474.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/xls/000602474.xlsx -------------------------------------------------------------------------------- /xls/000602483.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/xls/000602483.xlsx -------------------------------------------------------------------------------- /images/000602485.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/images/000602485.tiff -------------------------------------------------------------------------------- /images/rubio-table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/images/rubio-table.png -------------------------------------------------------------------------------- /images/pension-table.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/images/pension-table.jpg -------------------------------------------------------------------------------- /images/000602470-excel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/images/000602470-excel.jpg -------------------------------------------------------------------------------- /images/000602474-excel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/images/000602474-excel.jpg -------------------------------------------------------------------------------- /images/000602483-excel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/images/000602483-excel.jpg -------------------------------------------------------------------------------- /images/000602485-rotated.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/images/000602485-rotated.tiff -------------------------------------------------------------------------------- /images/feinstein-000001065.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/images/feinstein-000001065.gif -------------------------------------------------------------------------------- /images/000602483-excel-abbyy-preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/images/000602483-excel-abbyy-preview.jpg -------------------------------------------------------------------------------- /images/sen-bernie-sanders-2014-forms.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/images/sen-bernie-sanders-2014-forms.jpg -------------------------------------------------------------------------------- /files/rubio-marco-eFD_ Annual-Report-for-2014_files/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dannguyen/abbyy-finereader-ocr-senate/HEAD/files/rubio-marco-eFD_ Annual-Report-for-2014_files/logo.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | # 3 | # If you find yourself ignoring temporary files generated by your text editor 4 | # or operating system, you probably want to add a global ignore instead: 5 | # git config --global core.excludesfile ~/.gitignore_global 6 | 7 | # Ignore bundler config 8 | /.bundle 9 | 10 | # Ignore the build directory 11 | /build 12 | 13 | # Ignore cache 14 | /.sass-cache 15 | /.cache 16 | 17 | # Ignore .DS_store file 18 | .DS_Store 19 | _drafts/ 20 | drafts/ 21 | tempdata/ 22 | creds_* 23 | scratchnotes* 24 | .s3_sync 25 | __pycache__/ 26 | -------------------------------------------------------------------------------- /files/rubio-marco-eFD_ Annual-Report-for-2014_files/carousel.css: -------------------------------------------------------------------------------- 1 | /*SA */ 2 | /* ******************************* */ 3 | /* *** CAROUSEL FOR PAPER REPORTS *** */ 4 | /* ******************************* */ 5 | .carousel-caption { 6 | bottom: auto; 7 | top: 0; 8 | } 9 | .carousel-caption i.marginit-right { 10 | margin-right: 5px; 11 | } 12 | .carousel-1pg { 13 | margin: 110px 20px 20px; 14 | } 15 | .carousel .filingImage { 16 | min-height: 815px; 17 | min-width: 1065px; 18 | } 19 | .carousel-tools .well-blue { 20 | /* RGBa with 0.6 opacity */ 21 | background: rgba(233, 238, 241, 0.6); 22 | /* Fallback for web browsers that doesn't support RGBa */ 23 | background: #e9eef1 transparent; 24 | filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#e9eef1', EndColorStr='#e9eef1'); 25 | filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); 26 | } 27 | -------------------------------------------------------------------------------- /txt/000602485-non-rotated-tesseract.txt: -------------------------------------------------------------------------------- 1 | _.>_$>m >rmx>zomm 2 | «mzzmmmmm 3 | 4 | 00:00 M008 mag 5 | 6 | 551.20.82.00 ~83 7 | _ H0830 08000? 26 | 27 | 3 000 %00} No: 03000me 90030000 0000:. 30 w00 >0803 08000.? 00 303000 28 | 0000m 2:0 "00 00000 0000~H%3m 0.000% 0m «00 90000000 000003000 Am: 0», 00:00 020 0000 29 | 0001000? 00000003 300m 03 000.000:0_% £0000 00008 000 0000300 30030 000800. H" 000 30 | 00 00000 00 0000 0. :00 H 0300 No: 0000:. 31 | 32 | 00003m 00000v H 00<0 6:80 003 2:0 3% 20001—0 0000003000 000 30 .0030 33 | 00000033 0.00 :0 $0000.80 0000000000 000 03003300 8 303 30 030000000 0m 0.00013m 34 | 0000005 00008 000 om 000023m E0 00$ 00000 0000033m 000030m 0300000000 €003 mo 35 | 00%0. H 00 000 020 00% 00000? 03000 00000000. 36 | 37 | @505 %00 00<0 00000000— 00000000 n0m0~03m $00 30.300V 0H0mm0 00030» 30 0" wow NE 38 | 39 | _ ewe. 40 | 5 “30000;. 41 | 3 42 | 2 . 0030.. 203002 43 | E 44 | 5 45 | 3 46 | .5 47 | my 48 | my 49 | 50 | -------------------------------------------------------------------------------- /txt/000602485-tesseract.txt: -------------------------------------------------------------------------------- 1 | LAMAR ALEXANDER 2 | TENNESSEE 3 | 4 | flflnittd 0%tatts :52an 5 | 6 | WASHINGTON, DC 20510 7 | May 15, 2012 8 | 9 | Dear Senators Boxer and Isakson, 10 | 11 | My wife, Leslee B. Alexander, owns 17.1226% interest in her family’s Texas 12 | corporation, the Starboard Corporation. Since 2003, I have reported her ownership of this 13 | interest and relied on the Starboard Corporation to provide my accountants with a list of 14 | underlying assets of the corporation so that I could also list them on my annual financial report. 15 | 16 | This year, while preparing my 201 1 Financial disclosure, my accountants inquired of the 17 | Starboard corporation whether the list of underlying assets was up-to-date. On May 10, 2012, 18 | the corporation notified my accountants that one such asset had not been included on the list—a 19 | piece of commercial real estate in San Antonio purchased by the Starboard Corporation in 2004. 20 | My accountants say that this property had not been reported to them previously. 21 | 22 | This omission did not affect the accuracy of the “amount or of type of income” from the 23 | Starboard Corporation reported on my annual financial disclosures between 2004 and 2010. 24 | What was inaccurate was failure to report ownership of this one underlying asset of the 25 | corporation, the San Antonio property. 26 | 27 | In this year’s 2011 Financial Disclosure report, the San Antonio property is included 28 | along with ten other underlying assets of the Starboard Corporation (all of which have been 29 | previously reported) among our non-publicly traded assets and unearned income sources. It can 30 | be found on page 9, line 1 of the 2011 report. 31 | 32 | Looking ahead, I have talked both with my Nashville accountants and the Texas 33 | accountant for the Starboard Corporation and emphasized to them the importance of reporting 34 | underlying assets and of observing the new rules concerning reporting transactions within 30 35 | days. I do not own any publicly traded securities. 36 | 37 | Should you have additional questions regarding this matter, please contact me at 202 224 38 | 1989. 39 | 40 | m Sincerely, 41 | ST 42 | N , Lamar Alexander 43 | 44 | Ll? 45 | CD! 46 | 47 | (5:) 48 | G) 49 | 50 | -------------------------------------------------------------------------------- /files/rubio-marco-eFD_ Annual-Report-for-2014_files/jquery.cooke.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery Cookie Plugin v1.3 3 | * https://github.com/carhartl/jquery-cookie 4 | * 5 | * Copyright 2011, Klaus Hartl 6 | * Dual licensed under the MIT or GPL Version 2 licenses. 7 | * http://www.opensource.org/licenses/mit-license.php 8 | * http://www.opensource.org/licenses/GPL-2.0 9 | */ 10 | (function ($, document, undefined) { 11 | 12 | var pluses = /\+/g; 13 | 14 | function raw(s) { 15 | return s; 16 | } 17 | 18 | function decoded(s) { 19 | return decodeURIComponent(s.replace(pluses, ' ')); 20 | } 21 | 22 | var config = $.cookie = function (key, value, options) { 23 | 24 | // write 25 | if (value !== undefined) { 26 | options = $.extend({}, config.defaults, options); 27 | 28 | if (value === null) { 29 | options.expires = -1; 30 | } 31 | 32 | if (typeof options.expires === 'number') { 33 | var days = options.expires, t = options.expires = new Date(); 34 | t.setDate(t.getDate() + days); 35 | } 36 | 37 | value = config.json ? JSON.stringify(value) : String(value); 38 | 39 | return (document.cookie = [ 40 | encodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value), 41 | options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 42 | options.path ? '; path=' + options.path : '', 43 | options.domain ? '; domain=' + options.domain : '', 44 | options.secure ? '; secure' : '' 45 | ].join('')); 46 | } 47 | 48 | // read 49 | var decode = config.raw ? raw : decoded; 50 | var cookies = document.cookie.split('; '); 51 | for (var i = 0, l = cookies.length; i < l; i++) { 52 | var parts = cookies[i].split('='); 53 | if (decode(parts.shift()) === key) { 54 | var cookie = decode(parts.join('=')); 55 | return config.json ? JSON.parse(cookie) : cookie; 56 | } 57 | } 58 | 59 | return null; 60 | }; 61 | 62 | config.defaults = {}; 63 | 64 | $.removeCookie = function (key, options) { 65 | if ($.cookie(key) !== null) { 66 | $.cookie(key, null, options); 67 | return true; 68 | } 69 | return false; 70 | }; 71 | 72 | })(jQuery, document); 73 | -------------------------------------------------------------------------------- /files/rubio-marco-eFD_ Annual-Report-for-2014_files/browser-detect.js: -------------------------------------------------------------------------------- 1 | /** 2 | * http://www.quirksmode.org/js/detect.html 3 | */ 4 | var BrowserDetect = { 5 | init: function () { 6 | this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; 7 | this.version = this.searchVersion(navigator.userAgent) 8 | || this.searchVersion(navigator.appVersion) 9 | || "an unknown version"; 10 | this.OS = this.searchString(this.dataOS) || "an unknown OS"; 11 | }, 12 | searchString: function (data) { 13 | for (var i=0;i<'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>", 4 | "sPaginationType": "bootstrap", 5 | "oLanguage": { 6 | "sLengthMenu": "_MENU_ records per page" 7 | } 8 | } ); 9 | 10 | 11 | /* Default class modification */ 12 | $.extend( $.fn.dataTableExt.oStdClasses, { 13 | "sWrapper": "dataTables_wrapper form-inline" 14 | } ); 15 | 16 | 17 | /* API method to get paging information */ 18 | $.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings ) 19 | { 20 | return { 21 | "iStart": oSettings._iDisplayStart, 22 | "iEnd": oSettings.fnDisplayEnd(), 23 | "iLength": oSettings._iDisplayLength, 24 | "iTotal": oSettings.fnRecordsTotal(), 25 | "iFilteredTotal": oSettings.fnRecordsDisplay(), 26 | "iPage": oSettings._iDisplayLength === -1 ? 27 | 0 : Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ), 28 | "iTotalPages": oSettings._iDisplayLength === -1 ? 29 | 0 : Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength ) 30 | }; 31 | }; 32 | 33 | 34 | /* Bootstrap style pagination control */ 35 | $.extend( $.fn.dataTableExt.oPagination, { 36 | "bootstrap": { 37 | "fnInit": function( oSettings, nPaging, fnDraw ) { 38 | var oLang = oSettings.oLanguage.oPaginate; 39 | var fnClickHandler = function ( e ) { 40 | e.preventDefault(); 41 | if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) { 42 | fnDraw( oSettings ); 43 | } 44 | }; 45 | 46 | $(nPaging).addClass('pagination').append( 47 | '' 51 | ); 52 | var els = $('a', nPaging); 53 | $(els[0]).bind( 'click.DT', { action: "previous" }, fnClickHandler ); 54 | $(els[1]).bind( 'click.DT', { action: "next" }, fnClickHandler ); 55 | }, 56 | 57 | "fnUpdate": function ( oSettings, fnDraw ) { 58 | var iListLength = 5; 59 | var oPaging = oSettings.oInstance.fnPagingInfo(); 60 | var an = oSettings.aanFeatures.p; 61 | var i, ien, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2); 62 | 63 | if ( oPaging.iTotalPages < iListLength) { 64 | iStart = 1; 65 | iEnd = oPaging.iTotalPages; 66 | } 67 | else if ( oPaging.iPage <= iHalf ) { 68 | iStart = 1; 69 | iEnd = iListLength; 70 | } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) { 71 | iStart = oPaging.iTotalPages - iListLength + 1; 72 | iEnd = oPaging.iTotalPages; 73 | } else { 74 | iStart = oPaging.iPage - iHalf + 1; 75 | iEnd = iStart + iListLength - 1; 76 | } 77 | 78 | for ( i=0, ien=an.length ; i'+j+'') 86 | .insertBefore( $('li:last', an[i])[0] ) 87 | .bind('click', function (e) { 88 | e.preventDefault(); 89 | oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength; 90 | fnDraw( oSettings ); 91 | } ); 92 | } 93 | 94 | // Add / remove disabled classes from the static elements 95 | if ( oPaging.iPage === 0 ) { 96 | $('li:first', an[i]).addClass('disabled'); 97 | } else { 98 | $('li:first', an[i]).removeClass('disabled'); 99 | } 100 | 101 | if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) { 102 | $('li:last', an[i]).addClass('disabled'); 103 | } else { 104 | $('li:last', an[i]).removeClass('disabled'); 105 | } 106 | } 107 | } 108 | } 109 | } ); 110 | 111 | 112 | /* 113 | * TableTools Bootstrap compatibility 114 | * Required TableTools 2.1+ 115 | */ 116 | if ( $.fn.DataTable.TableTools ) { 117 | // Set the classes that TableTools uses to something suitable for Bootstrap 118 | $.extend( true, $.fn.DataTable.TableTools.classes, { 119 | "container": "DTTT btn-group", 120 | "buttons": { 121 | "normal": "btn", 122 | "disabled": "disabled" 123 | }, 124 | "collection": { 125 | "container": "DTTT_dropdown dropdown-menu", 126 | "buttons": { 127 | "normal": "", 128 | "disabled": "disabled" 129 | } 130 | }, 131 | "print": { 132 | "info": "DTTT_print_info modal" 133 | }, 134 | "select": { 135 | "row": "active" 136 | } 137 | } ); 138 | 139 | // Have the collection use a bootstrap-2.3.0 compatible dropdown 140 | $.extend( true, $.fn.DataTable.TableTools.DEFAULTS.oTags, { 141 | "collection": { 142 | "container": "ul", 143 | "button": "li", 144 | "liner": "a" 145 | } 146 | } ); 147 | } 148 | 149 | 150 | /* Table initialisation */ 151 | $(document).ready(function() { 152 | $('#example').dataTable( { 153 | "sDom": "<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>", 154 | "sPaginationType": "bootstrap", 155 | "oLanguage": { 156 | "sLengthMenu": "_MENU_ records per page" 157 | } 158 | } ); 159 | } ); -------------------------------------------------------------------------------- /files/rubio-marco-eFD_ Annual-Report-for-2014_files/jquery.dPassword.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * dPassword v0.1 - jQuery delayed password masking (iPhone style) 3 | * 4 | * licensed under MIT License 5 | * 6 | * Copyright (c) 2009 DECAF∞, Stefan Ullrich (http://decaf.de) 7 | * 8 | * Permission is hereby granted, free of charge, to any person obtaining 9 | * a copy of this software and associated documentation files (the "Software"), 10 | * to deal in the Software without restriction, including without limitation 11 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, 12 | * and/or sell copies of the Software, and to permit persons to whom the 13 | * Software is furnished to do so, subject to the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 20 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 22 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 23 | * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR 24 | * THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | * Known Issues: - delete marked text will not work 27 | * - deleting a single chars will not work if char is 28 | * not the last char 29 | * - view will not follow cursor if textfield is too small 30 | * - if id based styles are assigned, these styles will 31 | * not be taken over 32 | * 33 | *******************************************************************************/ 34 | 35 | (function($){ 36 | $.fn.dPassword = function(options) { 37 | 38 | var defaults = { 39 | interval: 200, 40 | duration: 3000, 41 | replacement: '%u25CF', 42 | prefix: 'password_', 43 | debug: false 44 | } 45 | 46 | var opts = $.extend(defaults, options); 47 | var checker = new Array(); 48 | var timer = new Array(); 49 | 50 | $(this).each(function() { 51 | if (opts.debug) console.log('init [' + $(this).attr('id') + ']'); 52 | 53 | // get original password tag values 54 | var name = $(this).attr('name'); 55 | var id = $(this).attr('id'); 56 | var cssclass = $(this).attr('class'); 57 | var style = $(this).attr('style'); 58 | var size = $(this).attr('size'); 59 | var maxlength = $(this).attr('maxlength'); 60 | //var disabled = $(this).attr('disabled'); 61 | var tabindex = $(this).attr('tabindex'); 62 | var accesskey = $(this).attr('accesskey'); 63 | var value = $(this).attr('value'); 64 | 65 | // set timers 66 | checker.push(id); 67 | timer.push(id); 68 | 69 | // hide field 70 | $(this).hide(); 71 | 72 | // add debug span 73 | if (opts.debug) { 74 | $(this).after(''); 75 | } 76 | // add new text field 77 | $(this).after(' '); 89 | 90 | // change label 91 | $('label[for='+id+']').attr('for', opts.prefix + id); 92 | // disable tabindex 93 | $(this).attr('tabindex', ''); 94 | // disable accesskey 95 | $(this).attr('accesskey', ''); 96 | 97 | 98 | // bind event 99 | $('#' + opts.prefix + id).bind('focus', function(event) { 100 | if (opts.debug) console.log('event: focus [' + getId($(this).attr('id')) + ']'); 101 | clearTimeout(checker[getId($(this).attr('id'))]); 102 | checker[getId($(this).attr('id'))] = setTimeout("check('" + getId($(this).attr('id')) + "', '')", opts.interval); 103 | }); 104 | $('#' + opts.prefix + id).bind('blur', function(event) { 105 | if (opts.debug) console.log('event: blur [' + getId($(this).attr('id')) + ']'); 106 | clearTimeout(checker[getId($(this).attr('id'))]); 107 | }); 108 | 109 | setTimeout("check('" + id + "', '', true);", opts.interval); 110 | }); 111 | 112 | getId = function(id) { 113 | var pattern = opts.prefix+'(.*)'; 114 | var regex = new RegExp(pattern); 115 | regex.exec(id); 116 | id = RegExp.$1; 117 | 118 | return id; 119 | } 120 | 121 | setPassword = function(id, str) { 122 | if (opts.debug) console.log('setPassword: [' + id + ']'); 123 | 124 | var tmp = ''; 125 | for (i=0; i < str.length; i++) { 126 | if (str.charAt(i) == unescape(opts.replacement)) { 127 | tmp = tmp + $('#' + id).val().charAt(i); 128 | } 129 | else { 130 | tmp = tmp + str.charAt(i); 131 | } 132 | } 133 | $('#' + id).val(tmp); 134 | } 135 | 136 | check = function(id, oldValue, initialCall) { 137 | if (opts.debug) console.log('check: [' + id + ']'); 138 | 139 | var bullets = $('#' + opts.prefix + id).val(); 140 | 141 | if (oldValue != bullets) { 142 | setPassword(id, bullets); 143 | if (bullets.length > 1) { 144 | var tmp = ''; 145 | for (i=0; i < bullets.length-1; i++) { 146 | tmp = tmp + unescape(opts.replacement); 147 | } 148 | tmp = tmp + bullets.charAt(bullets.length-1); 149 | 150 | $('#' + opts.prefix + id).val(tmp); 151 | } 152 | else { 153 | } 154 | clearTimeout(timer[id]); 155 | timer[id] = setTimeout("convertLastChar('" + id + "')", opts.duration); 156 | } 157 | if (opts.debug) { 158 | $('#debug_' + opts.prefix + id).text($('#' + id).val()); 159 | } 160 | if (!initialCall) { 161 | checker[id] = setTimeout("check('" + id + "', '" + $('#' + opts.prefix + id).val() + "', false)", opts.interval); 162 | } 163 | } 164 | 165 | convertLastChar = function(id) { 166 | if ($('#' + opts.prefix + id).val() != '') { 167 | var tmp = ''; 168 | for (i=0; i < $('#' + opts.prefix + id).val().length; i++) { 169 | tmp = tmp + unescape(opts.replacement); 170 | } 171 | 172 | $('#' + opts.prefix + id).val(tmp); 173 | } 174 | } 175 | }; 176 | }) (jQuery); 177 | 178 | /** 179 | * Created with PyCharm. 180 | * User: derrickjackson 181 | * Date: 4/30/13 182 | * Time: 9:05 AM 183 | * To change this template use File | Settings | File Templates. 184 | */ 185 | -------------------------------------------------------------------------------- /files/rubio-marco-eFD_ Annual-Report-for-2014_files/modernizr.js: -------------------------------------------------------------------------------- 1 | // Modernizr v1.7 www.modernizr.com 2 | window.Modernizr=function(a,b,c){function G(){e.input=function(a){for(var b=0,c=a.length;b7)},r.history=function(){return !!(a.history&&history.pushState)},r.draganddrop=function(){return x("dragstart")&&x("drop")},r.websockets=function(){return"WebSocket"in a},r.rgba=function(){A("background-color:rgba(150,255,150,.5)");return D(k.backgroundColor,"rgba")},r.hsla=function(){A("background-color:hsla(120,40%,100%,.5)");return D(k.backgroundColor,"rgba")||D(k.backgroundColor,"hsla")},r.multiplebgs=function(){A("background:url(//:),url(//:),red url(//:)");return(new RegExp("(url\\s*\\(.*?){3}")).test(k.background)},r.backgroundsize=function(){return F("backgroundSize")},r.borderimage=function(){return F("borderImage")},r.borderradius=function(){return F("borderRadius","",function(a){return D(a,"orderRadius")})},r.boxshadow=function(){return F("boxShadow")},r.textshadow=function(){return b.createElement("div").style.textShadow===""},r.opacity=function(){B("opacity:.55");return/^0.55$/.test(k.opacity)},r.cssanimations=function(){return F("animationName")},r.csscolumns=function(){return F("columnCount")},r.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";A((a+o.join(b+a)+o.join(c+a)).slice(0,-a.length));return D(k.backgroundImage,"gradient")},r.cssreflections=function(){return F("boxReflect")},r.csstransforms=function(){return!!E(["transformProperty","WebkitTransform","MozTransform","OTransform","msTransform"])},r.csstransforms3d=function(){var a=!!E(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);a&&"webkitPerspective"in g.style&&(a=w("@media ("+o.join("transform-3d),(")+"modernizr)"));return a},r.csstransitions=function(){return F("transitionProperty")},r.fontface=function(){var a,c,d=h||g,e=b.createElement("style"),f=b.implementation||{hasFeature:function(){return!1}};e.type="text/css",d.insertBefore(e,d.firstChild),a=e.sheet||e.styleSheet;var i=f.hasFeature("CSS2","")?function(b){if(!a||!b)return!1;var c=!1;try{a.insertRule(b,0),c=/src/i.test(a.cssRules[0].cssText),a.deleteRule(a.cssRules.length-1)}catch(d){}return c}:function(b){if(!a||!b)return!1;a.cssText=b;return a.cssText.length!==0&&/src/i.test(a.cssText)&&a.cssText.replace(/\r+|\n+/g,"").indexOf(b.split(" ")[0])===0};c=i('@font-face { font-family: "font"; src: url(data:,); }'),d.removeChild(e);return c},r.video=function(){var a=b.createElement("video"),c=!!a.canPlayType;if(c){c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"');var d='video/mp4; codecs="avc1.42E01E';c.h264=a.canPlayType(d+'"')||a.canPlayType(d+', mp4a.40.2"'),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"')}return c},r.audio=function(){var a=b.createElement("audio"),c=!!a.canPlayType;c&&(c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"'),c.mp3=a.canPlayType("audio/mpeg;"),c.wav=a.canPlayType('audio/wav; codecs="1"'),c.m4a=a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;"));return c},r.localstorage=function(){try{return!!localStorage.getItem}catch(a){return!1}},r.sessionstorage=function(){try{return!!sessionStorage.getItem}catch(a){return!1}},r.webWorkers=function(){return!!a.Worker},r.applicationcache=function(){return!!a.applicationCache},r.svg=function(){return!!b.createElementNS&&!!b.createElementNS(q.svg,"svg").createSVGRect},r.inlinesvg=function(){var a=b.createElement("div");a.innerHTML="";return(a.firstChild&&a.firstChild.namespaceURI)==q.svg},r.smil=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"animate")))},r.svgclippaths=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"clipPath")))};for(var H in r)z(r,H)&&(v=H.toLowerCase(),e[v]=r[H](),u.push((e[v]?"":"no-")+v));e.input||G(),e.crosswindowmessaging=e.postmessage,e.historymanagement=e.history,e.addTest=function(a,b){a=a.toLowerCase();if(!e[a]){b=!!b(),g.className+=" "+(b?"":"no-")+a,e[a]=b;return e}},A(""),j=l=null,f&&a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML="";return a.childNodes.length!==1}()&&function(a,b){function p(a,b){var c=-1,d=a.length,e,f=[];while(++c o 72 | have m ade on th is form and a il TO 73 | attached schedules are true, :x ro 74 | com plete and corre ct to the best o f 75 | h u t / r , ~4 76 | > 77 | TJ3 78 | m y know ledge and belief. 79 | For Official Use Only - Do Not W rite Below This Line cn 80 | It is the O pinion o f the re v ie w e r th a t S ignature o f Reviewing O fficia l Date (M onth. D av. Year) 81 | the statem ents m ade in this form 82 | are in com pliance w ith W e I o f the 83 | E thics in G overnm ent Act. 84 | H r - 1* 85 | cn 86 | -------------------------------------------------------------------------------- /files/rubio-marco-eFD_ Annual-Report-for-2014_files/jquery.dataTables.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Table styles 3 | */ 4 | table.dataTable { 5 | width: 100%; 6 | margin: 0 auto; 7 | clear: both; 8 | border-collapse: separate; 9 | border-spacing: 0; 10 | /* 11 | * Header and footer css 12 | */ 13 | /* 14 | * Body css 15 | */ 16 | } 17 | table.dataTable thead th, 18 | table.dataTable tfoot th { 19 | font-weight: bold; 20 | } 21 | table.dataTable thead th, 22 | table.dataTable thead td { 23 | padding: 10px 18px; 24 | border-bottom: 1px solid #111111; 25 | } 26 | table.dataTable thead th:active, 27 | table.dataTable thead td:active { 28 | outline: none; 29 | } 30 | table.dataTable tfoot th, 31 | table.dataTable tfoot td { 32 | padding: 10px 18px 6px 18px; 33 | border-top: 1px solid #111111; 34 | } 35 | table.dataTable thead .sorting_asc, 36 | table.dataTable thead .sorting_desc, 37 | table.dataTable thead .sorting { 38 | cursor: pointer; 39 | *cursor: hand; 40 | } 41 | table.dataTable thead .sorting { 42 | background: url("../images/sort_both.png") no-repeat center right; 43 | } 44 | table.dataTable thead .sorting_asc { 45 | background: url("../images/sort_asc.png") no-repeat center right; 46 | } 47 | table.dataTable thead .sorting_desc { 48 | background: url("../images/sort_desc.png") no-repeat center right; 49 | } 50 | table.dataTable thead .sorting_asc_disabled { 51 | background: url("../images/sort_asc_disabled.png") no-repeat center right; 52 | } 53 | table.dataTable thead .sorting_desc_disabled { 54 | background: url("../images/sort_desc_disabled.png") no-repeat center right; 55 | } 56 | table.dataTable tbody tr { 57 | background-color: white; 58 | } 59 | table.dataTable tbody tr.selected { 60 | background-color: #b0bed9; 61 | } 62 | table.dataTable tbody th, 63 | table.dataTable tbody td { 64 | padding: 8px 10px; 65 | } 66 | table.dataTable th.center, 67 | table.dataTable td.center, 68 | table.dataTable td.dataTables_empty { 69 | text-align: center; 70 | } 71 | table.dataTable th.right, 72 | table.dataTable td.right { 73 | text-align: right; 74 | } 75 | table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { 76 | border-top: 1px solid #dddddd; 77 | } 78 | table.dataTable.row-border tbody tr:first-child th, 79 | table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, 80 | table.dataTable.display tbody tr:first-child td { 81 | border-top: none; 82 | } 83 | table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { 84 | border-top: 1px solid #dddddd; 85 | border-right: 1px solid #dddddd; 86 | } 87 | table.dataTable.cell-border tbody tr th:first-child, 88 | table.dataTable.cell-border tbody tr td:first-child { 89 | border-left: 1px solid #dddddd; 90 | } 91 | table.dataTable.cell-border tbody tr:first-child th, 92 | table.dataTable.cell-border tbody tr:first-child td { 93 | border-top: none; 94 | } 95 | table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { 96 | background-color: #f9f9f9; 97 | } 98 | table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { 99 | background-color: #abb9d3; 100 | } 101 | table.dataTable.hover tbody tr:hover, 102 | table.dataTable.hover tbody tr.odd:hover, 103 | table.dataTable.hover tbody tr.even:hover, table.dataTable.display tbody tr:hover, 104 | table.dataTable.display tbody tr.odd:hover, 105 | table.dataTable.display tbody tr.even:hover { 106 | background-color: whitesmoke; 107 | } 108 | table.dataTable.hover tbody tr:hover.selected, 109 | table.dataTable.hover tbody tr.odd:hover.selected, 110 | table.dataTable.hover tbody tr.even:hover.selected, table.dataTable.display tbody tr:hover.selected, 111 | table.dataTable.display tbody tr.odd:hover.selected, 112 | table.dataTable.display tbody tr.even:hover.selected { 113 | background-color: #a9b7d1; 114 | } 115 | table.dataTable.order-column tbody tr > .sorting_1, 116 | table.dataTable.order-column tbody tr > .sorting_2, 117 | table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, 118 | table.dataTable.display tbody tr > .sorting_2, 119 | table.dataTable.display tbody tr > .sorting_3 { 120 | background-color: #f9f9f9; 121 | } 122 | table.dataTable.order-column tbody tr.selected > .sorting_1, 123 | table.dataTable.order-column tbody tr.selected > .sorting_2, 124 | table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, 125 | table.dataTable.display tbody tr.selected > .sorting_2, 126 | table.dataTable.display tbody tr.selected > .sorting_3 { 127 | background-color: #acbad4; 128 | } 129 | table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { 130 | background-color: #f1f1f1; 131 | } 132 | table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { 133 | background-color: #f3f3f3; 134 | } 135 | table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { 136 | background-color: whitesmoke; 137 | } 138 | table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { 139 | background-color: #a6b3cd; 140 | } 141 | table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { 142 | background-color: #a7b5ce; 143 | } 144 | table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { 145 | background-color: #a9b6d0; 146 | } 147 | table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { 148 | background-color: #f9f9f9; 149 | } 150 | table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { 151 | background-color: #fbfbfb; 152 | } 153 | table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { 154 | background-color: #fdfdfd; 155 | } 156 | table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { 157 | background-color: #acbad4; 158 | } 159 | table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { 160 | background-color: #adbbd6; 161 | } 162 | table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { 163 | background-color: #afbdd8; 164 | } 165 | table.dataTable.display tbody tr:hover > .sorting_1, 166 | table.dataTable.display tbody tr.odd:hover > .sorting_1, 167 | table.dataTable.display tbody tr.even:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1, 168 | table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_1, 169 | table.dataTable.order-column.hover tbody tr.even:hover > .sorting_1 { 170 | background-color: #eaeaea; 171 | } 172 | table.dataTable.display tbody tr:hover > .sorting_2, 173 | table.dataTable.display tbody tr.odd:hover > .sorting_2, 174 | table.dataTable.display tbody tr.even:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2, 175 | table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_2, 176 | table.dataTable.order-column.hover tbody tr.even:hover > .sorting_2 { 177 | background-color: #ebebeb; 178 | } 179 | table.dataTable.display tbody tr:hover > .sorting_3, 180 | table.dataTable.display tbody tr.odd:hover > .sorting_3, 181 | table.dataTable.display tbody tr.even:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3, 182 | table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_3, 183 | table.dataTable.order-column.hover tbody tr.even:hover > .sorting_3 { 184 | background-color: #eeeeee; 185 | } 186 | table.dataTable.display tbody tr:hover.selected > .sorting_1, 187 | table.dataTable.display tbody tr.odd:hover.selected > .sorting_1, 188 | table.dataTable.display tbody tr.even:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1, 189 | table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_1, 190 | table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_1 { 191 | background-color: #a1aec7; 192 | } 193 | table.dataTable.display tbody tr:hover.selected > .sorting_2, 194 | table.dataTable.display tbody tr.odd:hover.selected > .sorting_2, 195 | table.dataTable.display tbody tr.even:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2, 196 | table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_2, 197 | table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_2 { 198 | background-color: #a2afc8; 199 | } 200 | table.dataTable.display tbody tr:hover.selected > .sorting_3, 201 | table.dataTable.display tbody tr.odd:hover.selected > .sorting_3, 202 | table.dataTable.display tbody tr.even:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3, 203 | table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_3, 204 | table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_3 { 205 | background-color: #a4b2cb; 206 | } 207 | table.dataTable.no-footer { 208 | border-bottom: 1px solid #111111; 209 | } 210 | 211 | table.dataTable, 212 | table.dataTable th, 213 | table.dataTable td { 214 | -webkit-box-sizing: content-box; 215 | -moz-box-sizing: content-box; 216 | box-sizing: content-box; 217 | } 218 | 219 | /* 220 | * Control feature layout 221 | */ 222 | .dataTables_wrapper { 223 | position: relative; 224 | clear: both; 225 | *zoom: 1; 226 | zoom: 1; 227 | } 228 | .dataTables_wrapper .dataTables_length { 229 | float: left; 230 | } 231 | .dataTables_wrapper .dataTables_filter { 232 | float: right; 233 | text-align: right; 234 | } 235 | .dataTables_wrapper .dataTables_filter input { 236 | margin-left: 0.5em; 237 | } 238 | .dataTables_wrapper .dataTables_info { 239 | clear: both; 240 | float: left; 241 | padding-top: 0.755em; 242 | } 243 | .dataTables_wrapper .dataTables_paginate { 244 | float: right; 245 | text-align: right; 246 | padding-top: 0.25em; 247 | } 248 | .dataTables_wrapper .dataTables_paginate .paginate_button { 249 | box-sizing: border-box; 250 | display: inline-block; 251 | min-width: 1.5em; 252 | padding: 0.5em 1em; 253 | margin-left: 2px; 254 | text-align: center; 255 | text-decoration: none !important; 256 | cursor: pointer; 257 | *cursor: hand; 258 | color: #333333 !important; 259 | border: 1px solid transparent; 260 | } 261 | .dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { 262 | color: #333333 !important; 263 | border: 1px solid #cacaca; 264 | background-color: white; 265 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, gainsboro)); 266 | /* Chrome,Safari4+ */ 267 | background: -webkit-linear-gradient(top, white 0%, gainsboro 100%); 268 | /* Chrome10+,Safari5.1+ */ 269 | background: -moz-linear-gradient(top, white 0%, gainsboro 100%); 270 | /* FF3.6+ */ 271 | background: -ms-linear-gradient(top, white 0%, gainsboro 100%); 272 | /* IE10+ */ 273 | background: -o-linear-gradient(top, white 0%, gainsboro 100%); 274 | /* Opera 11.10+ */ 275 | background: linear-gradient(to bottom, white 0%, gainsboro 100%); 276 | /* W3C */ 277 | } 278 | .dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { 279 | cursor: default; 280 | color: #666 !important; 281 | border: 1px solid transparent; 282 | background: transparent; 283 | box-shadow: none; 284 | } 285 | .dataTables_wrapper .dataTables_paginate .paginate_button:hover { 286 | color: white !important; 287 | border: 1px solid #111111; 288 | background-color: #585858; 289 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111111)); 290 | /* Chrome,Safari4+ */ 291 | background: -webkit-linear-gradient(top, #585858 0%, #111111 100%); 292 | /* Chrome10+,Safari5.1+ */ 293 | background: -moz-linear-gradient(top, #585858 0%, #111111 100%); 294 | /* FF3.6+ */ 295 | background: -ms-linear-gradient(top, #585858 0%, #111111 100%); 296 | /* IE10+ */ 297 | background: -o-linear-gradient(top, #585858 0%, #111111 100%); 298 | /* Opera 11.10+ */ 299 | background: linear-gradient(to bottom, #585858 0%, #111111 100%); 300 | /* W3C */ 301 | } 302 | .dataTables_wrapper .dataTables_paginate .paginate_button:active { 303 | outline: none; 304 | background-color: #2b2b2b; 305 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); 306 | /* Chrome,Safari4+ */ 307 | background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); 308 | /* Chrome10+,Safari5.1+ */ 309 | background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); 310 | /* FF3.6+ */ 311 | background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); 312 | /* IE10+ */ 313 | background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); 314 | /* Opera 11.10+ */ 315 | background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); 316 | /* W3C */ 317 | box-shadow: inset 0 0 3px #111; 318 | } 319 | .dataTables_wrapper .dataTables_processing { 320 | position: absolute; 321 | top: 50%; 322 | left: 50%; 323 | width: 100%; 324 | height: 40px; 325 | margin-left: -50%; 326 | margin-top: -25px; 327 | padding-top: 20px; 328 | text-align: center; 329 | font-size: 1.2em; 330 | background-color: white; 331 | background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); 332 | /* Chrome,Safari4+ */ 333 | background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); 334 | /* Chrome10+,Safari5.1+ */ 335 | background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); 336 | /* FF3.6+ */ 337 | background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); 338 | /* IE10+ */ 339 | background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); 340 | /* Opera 11.10+ */ 341 | background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); 342 | /* W3C */ 343 | } 344 | .dataTables_wrapper .dataTables_length, 345 | .dataTables_wrapper .dataTables_filter, 346 | .dataTables_wrapper .dataTables_info, 347 | .dataTables_wrapper .dataTables_processing, 348 | .dataTables_wrapper .dataTables_paginate { 349 | color: #333333; 350 | } 351 | .dataTables_wrapper .dataTables_scroll { 352 | clear: both; 353 | } 354 | .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody { 355 | *margin-top: -1px; 356 | -webkit-overflow-scrolling: touch; 357 | } 358 | .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th > div.dataTables_sizing, 359 | .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td > div.dataTables_sizing { 360 | height: 0; 361 | overflow: hidden; 362 | margin: 0 !important; 363 | padding: 0 !important; 364 | } 365 | .dataTables_wrapper.no-footer .dataTables_scrollBody { 366 | border-bottom: 1px solid #111111; 367 | } 368 | .dataTables_wrapper.no-footer div.dataTables_scrollHead table, 369 | .dataTables_wrapper.no-footer div.dataTables_scrollBody table { 370 | border-bottom: none; 371 | } 372 | .dataTables_wrapper:after { 373 | visibility: hidden; 374 | display: block; 375 | content: ""; 376 | clear: both; 377 | height: 0; 378 | } 379 | 380 | @media screen and (max-width: 767px) { 381 | .dataTables_wrapper .dataTables_info, 382 | .dataTables_wrapper .dataTables_paginate { 383 | float: none; 384 | text-align: center; 385 | } 386 | .dataTables_wrapper .dataTables_paginate { 387 | margin-top: 0.5em; 388 | } 389 | } 390 | @media screen and (max-width: 640px) { 391 | .dataTables_wrapper .dataTables_length, 392 | .dataTables_wrapper .dataTables_filter { 393 | float: none; 394 | text-align: center; 395 | } 396 | .dataTables_wrapper .dataTables_filter { 397 | margin-top: 0.5em; 398 | } 399 | } 400 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Using ABBYY FineReader to extract tabular data from U.S. Senators' personal finance reports 2 | 3 | Members of Congress are required to submit regular reports detailing their personal wealth. However, despite the [existence of electronic filing systems](http://www.rollcall.com/moneyline/senate-enters-electronic-age-with-personal-wealth-disclosures/), some legislators still submit via paper, which is then scanned and uploaded as images or PDFs into an online database ([Senate](https://efdsearch.senate.gov/search/home/) / [House](http://clerk.house.gov/public_disc/financial-search.aspx)). 4 | 5 | The Senate's electronic filing system came into effect a [couple years ago](http://www.rollcall.com/moneyline/senate-enters-electronic-age-with-personal-wealth-disclosures/); [Senator Bernie Sanders](https://www.opensecrets.org/pfds/summary.php?year=2014&cid=N00000528) is one example of a Senator who has moved from paper to the electronic filing system: 6 | 7 | ![Sen. Bernie Sanders annual disclosures, 2011 and 2014](images/sen-bernie-sanders-2014-forms.jpg) 8 | 9 | 10 | Extracting data from scanned images is one of the most common and most difficult data wrangling tasks, such that OpenSecrets (aka The Center for Responsive Politics) [pitched a civic hackathon challenge to build a solution for efficiently parsing Congressmembers' personal financial disclosures](https://github.com/pdfliberation/pdf-hackathon/blob/master/challenges/house-financial-disclosures.md#2nd-option---handwritten-reports). 11 | 12 | My writeup here is meant as a quick overview of the effectiveness of using [ABBYY FineReader for Mac](http://www.abbyy.com/finereader/pro-for-mac/) in producing usable, perhaps even _delmited_ data from the scanned disclosure forms. Note that I'm not attempting to solve the problem of how to clean up the imperfect OCR results and insert them into a database, and how to automate it as a batch process. Just extracting text, even semi-accurately, from a single scanned form is a hard challenge on its own. 13 | 14 | __For a better overview of PDFs and structured data__, including the different kind of PDFs, and the many challenges and approaches to extracting structured data from those different PDFs, check out [Jacob Fenton's and Jeremy Singer-Vine's NICAR16 presentation on Parsing Prickly PDFs](https://github.com/jsfenfen/parsing-prickly-pdfs). If all you care about is the __actual personal finances of Congressmembers__, [OpenSecrets has you covered](https://www.opensecrets.org/pfds/). 15 | 16 | Also, [Robert Gebeloff of the New York Times](https://github.com/gebelo) has [put together a list of the various other commercial products and their use-cases in this NICAR presentation (.docx)](https://github.com/gebelo/nicar2016/raw/master/pdf_wrangling16.docx) 17 | 18 | 19 | __My initial takeaway:__ FineReader is remarkably good for this task; in a later walkthrough I'll explain how to apply this in semi-automated fashion across all the forms (or any other set of scanned papers). 20 | 21 | For the purposes of brevity, this writeup focuses on the [Senate financial disclosures](https://efdsearch.senate.gov/search/home/) - the OCR challenge for both chambers of Congress is fundamentally the same. 22 | 23 | ## What the submitted financial disclosure forms look like 24 | 25 | The Senate's financial disclosure database can be found [here](https://efdsearch.senate.gov/search/home/): 26 | 27 | https://efdsearch.senate.gov/search/home/ 28 | 29 | If you want to visit the direct links I provide, you'll need to visit the [Senate site with your browser](https://efdsearch.senate.gov/search/home/) and manually agree to the site's terms of use. This will start a browser session that allows you to access the direct links. 30 | 31 | ### An electronically-submitted personal finance report 32 | 33 | Here's what an annual report on personal finances for 2014 looks like when it's electronically-submitted, courtesy of [Senator Marco Rubio](https://www.opensecrets.org/pfds/reports.php?year=2014&cid=N00030612): 34 | 35 | https://efdsearch.senate.gov/search/view/annual/de85e0d9-7eeb-49b6-83df-67affd2df645/ 36 | 37 | For your convenience, I've [mirrored the HTML for Sen. Rubio's financial report, which you can visit here](http://so.danwin.com/senate-ocr/2014-rubio-report.html) without going through the Senate site. 38 | 39 | rubio-table.png 40 | 41 | As you can see, the HTML is straightforward to parse as machine-readable data. So let's dispel once and for all with this fiction that Senator Rubio doesn't know what he's doing. He knows __exactly__ what he's doing. 42 | 43 | ### A personal finance report submitted as paper 44 | 45 | And here's what that same report looks like when it's submitted on paper, courtesy of [Senator Dianne Feinstein](https://www.opensecrets.org/pfds/reports.php?cid=N00007364): 46 | 47 | https://efdsearch.senate.gov/search/view/paper/B06D0983-3786-41CB-92C6-5209F288D517/ 48 | 49 | [OpenSecrets has a copy of the PDF](http://pfds.opensecrets.org/N00007364_2014.pdf) that you can view without visiting the Senate site. Here's what one of the scanned pages looks like: 50 | 51 | 52 | 53 | 54 | 55 | # The OCR challenge 56 | 57 | It's important to note that even though Senator Rubio's electronic form is easy to read, programmatically, there's still the challenge of creating a data schema that you can import his financial data into. 58 | 59 | That same challenge exists for Senator Feinstein's paper form, except with the additional and exponentially more challenging task of just extracting the data. This challenge is what necessitates the use of [__optical character recognition technology__](https://en.wikipedia.org/wiki/Optical_character_recognition), aka __OCR__. 60 | 61 | Here are my desired outcomes: 62 | 63 | ###### 1. Convert scanned English text characters into plaintext data 64 | 65 | That is, convert a _picture_ of the letter a.jpg into a digital plaintext representation that can be read by a text editor: `a` 66 | 67 | 68 | ###### 2. Convert scanned data tables into Excel spreadsheet tables 69 | 70 | That is, convert a _picture_ of a table of data: 71 | 72 | pension-table.jpg 73 | 74 | 75 | Into something that can be read as delimited data values in a standard Excel spreadsheet: 76 | 77 | | | | | | 78 | |--------------------------------|-------------------|---------|---------| 79 | | City & County of San Francisco | San Francisco, CA | Pension | $56,804 | 80 | 81 | 82 | The process of turning images into string literals is extremely difficult, and doing it at [high rate accuracy is beyond most development shops smaller than Google](https://cloud.google.com/vision/). The additional challenge of seeing that the images represent _tabular data_ is of itself another, non-trivial challenge. 83 | 84 | 85 | ## Using ABBYY FineReader 86 | 87 | There are open-source OCR programs, of which [Tesseract is the most well-known](https://github.com/tesseract-ocr), but they don't generally do the task of recognizing tabular data (note: [software such as Tabula](http://tabula.technology/) deals with _actual_ tabular data, not scanned images). 88 | 89 | Commercial packages -- such as [ABBYY's FineReader](http://www.abbyy.com/finereader/) and [OmniPage](http://www.nuance.com/for-business/by-product/omnipage/ultimate/index.htm) -- do claim to effectively OCR tabular data. I've never used either until now, but I'm using ABBYY's product because I've heard good things about it and because I don't make enough money to afford OmniPage. 90 | 91 | I'm on a Mac so I only have access to [FineReader Pro for Mac](http://www.abbyy.com/finereader/pro-for-mac/), which is listed at $119. Windows users have access to [FineReader 12 Professional](http://www.abbyy.com/finereader/professional/) and [Corporate](http://www.abbyy.com/finereader/corporate/) -- and, I'm betting, more tech support and updates. 92 | 93 | ### ABBYY Cloud? 94 | 95 | During the [OpenSecrets PDF hackathon](https://github.com/pdfliberation/pdf-hackathon/blob/master/challenges/house-financial-disclosures.md#2nd-option---handwritten-reports), developer Ross Tsiomenko [tested the idea of using ABBYY's cloud service](http://ocrsdk.com/) to batch process the Congressional forms](https://www.opengovfoundation.org/developers-blog-liberating-congressional-financial-disclosure-data-from-pdfs/): 96 | 97 | > Financial Disclosure Reports are not text-based PDFs, but rather scanned-in images, meaning OCR (optical character recognition) software must be used to extract the data. ABBYY Cloud OCR is the only software currently known to extract tabular data correctly; the prototype uses a shell script to upload a PDF to the Cloud API, which returns a text file with most columns and rows intact. This is then cleaned up and turned into a csv file using Python. 98 | 99 | > ...Once everything is working, an alternative to the paid ABBYY Cloud OCR service should be found. Although ABBYY works great, it is not free; processing all forms filed within a calendar year would take 10,000+ page requests (not counting development trial and error), which could cost up to $900 according to ABBYY pricing. 100 | 101 | I haven't used the cloud service and I agree that the cost is probably prohibitive for most projects. So for this writeup, I'm focusing only on the desktop application -- I imagine both the Windows and Mac versions have similar OCR effectiveness. I'll cover the process of how to use the Desktop application to perform batch OCR in another writeup. 102 | 103 | 104 | 105 | 106 | ## Simple table 107 | 108 | The OCRing of text is well-known -- and I show how FineReader OCR compares to Tesseract OCR when it comes to a scanned cover letter [later in this writeup](#finereader-vs-tesseract). 109 | 110 | So let's get right into interesting part: the OCR of tabular data. 111 | 112 | Here's one of the simpler variations of forms in the Senate disclosures: 113 | 114 | ![000602483.gif](images/000602483.gif) 115 | 116 | Note: this example and others come from [Senator Lamar Alexander's](https://www.opensecrets.org/pfds/summary.php?cid=N00009888) 2011 Annual Report (mirrored [here](http://pfds.opensecrets.org/N00009888_2011.pdf) at OpenSecrets). The electronic system only [came into effect a couple years ago](http://www.rollcall.com/moneyline/senate-enters-electronic-age-with-personal-wealth-disclosures/) and Senator Alexander's [latest annual report was submitted electronically](https://efdsearch.senate.gov/search/view/annual/88f4fc2c-e599-44e9-a704-fbebd05f4207/), so good on him. 117 | 118 | ### What FineReader sees 119 | 120 | When importing that single image into FineReader, this is what FineReader purports to "see", in terms of the OCRable regions of the page: 121 | 122 | ![000602483-excel-abbyy-preview.jpg](images/000602483-excel-abbyy-preview.jpg) 123 | 124 | ### The resulting Excel spreadsheet 125 | 126 | FineReader has the ability to export the OCRed image as a PDF. But we want a __table__ -- i.e. an Excel spreadsheet. 127 | 128 | And here's the result: 129 | 130 | ![000602483-excel.jpg](images/000602483-excel.jpg) 131 | 132 | 133 | Pretty good! You can download the [Excel file here](xls/000602483.xlsx). Or, if you want, here's the [PDF](pdf/000602483.pdf) that FineReader produces, which includes the OCRed text that you can at least highlight-copy-paste. 134 | 135 | ## Less simple table 136 | 137 | OK, now here's a much less simpler table: 138 | 139 | ![000602474.gif](images/000602474.gif) 140 | 141 | 142 | 143 | Not only is there significantly more ink (and _smudged_ ink) to deal with, but there are vertical table headers and other complex tabular features to process. 144 | 145 | Here's the result of FineReader's Excel output: 146 | 147 | ![000602474-excel.jpg](images/000602474-excel.jpg) 148 | 149 | Definitely not as clean as the previous example, but to be honest, _much_ better than what I had expected. I'm kind of shocked that it managed to make sense of the __vertically__-oriented headers. You'd still have a long ways to go before you could put this into a database, but FineReader's output gives you a lot of options for heuristics to simplify the translation process. 150 | 151 | And what if you just need to very quickly see if anyone at anytime has ever owned assets in "Acme Co."? At the very least, FineReader provides very greppable text data. 152 | 153 | Here's the [Excel spreadsheet](xls/000602474.xlsx). And here's the [PDF](pdf/000602474.pdf) with embedded OCRed text. 154 | 155 | ## A bunch of checkboxes 156 | 157 | One more example: a bunch of checkboxes: 158 | 159 | ![000602470.gif](images/000602470.gif) 160 | 161 | That can't be that hard, right? But take a closer look...among other issues, we have boxes inside of boxes. And also, a bunch of hand-written scrawl that we can safely assume will not be accurately parsed. 162 | 163 | Here's what the spreadsheet produced by FineReader looks like: 164 | 165 | 000602470-excel.jpg 166 | 167 | Yep, that's basically unusable. Not so much because of the character accuracy (in fact, FineReader translates the X'ed boxes), but because the tabular structure isn't preserved in the way you'd hope it to be. 168 | 169 | You can download the [spreadsheet file here](xls/000602470.xlsx). And the [PDF with embeddable text here](pdf/000602470.pdf). 170 | 171 | 172 | 173 | ## Simple letter page (FineReader vs Tesseract) 174 | 175 | What about regular letters of prose? This is something within the featureset of open-source OCR such as [Tesseract (I'm using 3.04.01, which was released in February)](https://github.com/tesseract-ocr/tesseract), so I'll compare it against FineReader. 176 | 177 | Here's the original page from Sen. Alexander's report, with its original neck-wrenching-orientation 178 | 179 | ![000602485.gif](images/000602485.gif) 180 | 181 | 182 | ### FineReader + pdftotext -layout 183 | 184 | Here's the [PDF created by FineReader's OCR](pdf/000602485.pdf), which is able to detect orientation automatically. Because we don't care about tabular data, I've used [Poppler's](https://poppler.freedesktop.org/) __pdftotext__ utility to just extract the text, along with pdftotext's `-layout` flag to produce it in such a way that the whitespace is similar to the visual layout of the PDF. 185 | 186 | Not bad. There are a few problems that would be significant hurdles if you wanted to grep across the text, including a comma where a decimal point should be in `17.1226% interest`. And the somewhat inexplicably consistent translation of `of` to `o f`: 187 | 188 | ~~~ 189 | LAMAR ALEXANDER 190 | TENNESSEE 191 | 192 | 193 | 194 | 195 | Mttd States Senate 196 | WASHINGTON, DC 20510 197 | 198 | 199 | 200 | 201 | May 15,2012 202 | 203 | 204 | Dear Senators Boxer and Isakson, 205 | 206 | My wife, Leslee B. Alexander, owns 17,1226% interest in her family’ s Texas 207 | corporation, the Starboard Corporation. Since 2003,1have reported her ownership o f this 208 | interest and relied on the Starboard Corporation to provide my accountants with a list o f 209 | underlying assets o f the corporation so that I could also list them on my annual financial report. 210 | 211 | This year, while preparing my 2011 Financial disclosure, my accountants inquired o f the 212 | Starboard corporation whether the list o f underlying assets was up-to-date. On May 10, 2012, 213 | the corporation notified my accountants that one such asset had not been included on the list— a 214 | piece o f commercial real estate in San Antonio purchased by the Starboard Corporation in 2004. 215 | My accountants say that this property had not been reported to them previously. 216 | 217 | This omission did not affect the accuracy o f the “ 218 | amount or o f type o f income”from the 219 | Starboard Corporation reported on my annual financial disclosures between 2004 and 2010. 220 | What was inaccurate was failure to report ownership o f this one underlying asset o f the 221 | corporation, the San Antonio property. 222 | 223 | In this year’s 2011 Financial Disclosure report, the San Antonio property is included 224 | along with ten other underlying assets o f the Starboard Corporation (all o f which have been 225 | previously reported) among our non-publicly traded assets and unearned income sources. It can 226 | be found on page 9, line 1 o f the 2011 report. 227 | 228 | Looking ahead, I have talked both with my Nashville accountants and the Texas 229 | accountant for the Starboard Corporation and emphasized to them the importance o f reporting 230 | underlying assets and o f observing the new rules concerning reporting transactions within 30 231 | days. I do not own any publicly traded securities. 232 | 233 | Should you have additional questions regarding this matter, please contact me at 202 224 234 | 1989. 235 | 236 | 237 | Sim 238 | Sincerely, 239 | $0 240 | ST 241 | iN Lamar Alexander 242 | © 243 | io 244 | o 245 | D 246 | P 247 | P 248 | O 249 | 250 | ~~~ 251 | 252 | 253 | 254 | 255 | ### Tesseract OCR 256 | 257 | 258 | For this test, I used Tesseract [version 3.04.01](https://github.com/tesseract-ocr/tesseract/releases/tag/3.04.01), which was released in February 2016. One of the things Tesseract _won't_ do is process GIFs (which is, for whatever reason, the preferred image format of the Senate disclosure database), so you'll need something like [ImageMagick](http://www.imagemagick.org/script/index.php). 259 | 260 | And, Tesseract doesn't seem to do automatic orientation detection (or at least I don't know how to invoke it), so you'll have to reorient the image before passing it to Tesseract to OCR. 261 | 262 | The command-line sequence with [ImageMagick](http://www.imagemagick.org/script/index.php) (which provides the `convert` command to do image transformations) looks like this: 263 | 264 | ~~~sh 265 | $ convert 000602485.gif -rotate 270 000602485.tiff 266 | $ tesseract 000602485.tiff 000602485-tesseract 267 | ~~~ 268 | 269 | It produces a file named [000602485-tesseract.txt](txt/000602485-tesseract.txt). Because Tesseract, by default, produces a plaintext stream, there is no option to use `pdftotext -layout` on its output (you can, however, configure Tesseract to output HOCR data, which gives you the option of manually determining spatial regions for yourself, which projects [like Jacob Fenton's whatwordwhere aim to do](https://github.com/jsfenfen/whatwordwhere)). 270 | 271 | Here's the text output from Tesseract: 272 | 273 | 274 | ~~~ 275 | LAMAR ALEXANDER 276 | TENNESSEE 277 | 278 | flflnittd 0%tatts :52an 279 | 280 | WASHINGTON, DC 20510 281 | May 15, 2012 282 | 283 | Dear Senators Boxer and Isakson, 284 | 285 | My wife, Leslee B. Alexander, owns 17.1226% interest in her family’s Texas 286 | corporation, the Starboard Corporation. Since 2003, I have reported her ownership of this 287 | interest and relied on the Starboard Corporation to provide my accountants with a list of 288 | underlying assets of the corporation so that I could also list them on my annual financial report. 289 | 290 | This year, while preparing my 201 1 Financial disclosure, my accountants inquired of the 291 | Starboard corporation whether the list of underlying assets was up-to-date. On May 10, 2012, 292 | the corporation notified my accountants that one such asset had not been included on the list—a 293 | piece of commercial real estate in San Antonio purchased by the Starboard Corporation in 2004. 294 | My accountants say that this property had not been reported to them previously. 295 | 296 | This omission did not affect the accuracy of the “amount or of type of income” from the 297 | Starboard Corporation reported on my annual financial disclosures between 2004 and 2010. 298 | What was inaccurate was failure to report ownership of this one underlying asset of the 299 | corporation, the San Antonio property. 300 | 301 | In this year’s 2011 Financial Disclosure report, the San Antonio property is included 302 | along with ten other underlying assets of the Starboard Corporation (all of which have been 303 | previously reported) among our non-publicly traded assets and unearned income sources. It can 304 | be found on page 9, line 1 of the 2011 report. 305 | 306 | Looking ahead, I have talked both with my Nashville accountants and the Texas 307 | accountant for the Starboard Corporation and emphasized to them the importance of reporting 308 | underlying assets and of observing the new rules concerning reporting transactions within 30 309 | days. I do not own any publicly traded securities. 310 | 311 | Should you have additional questions regarding this matter, please contact me at 202 224 312 | 1989. 313 | 314 | m Sincerely, 315 | ST 316 | N , Lamar Alexander 317 | 318 | Ll? 319 | CD! 320 | 321 | (5:) 322 | G) 323 | ~~~ 324 | 325 | 326 | For being free, Tesseract does a very capable job. I didn't bother to do a real analysis of its accuracy versus FineReader, though, other than to note that it correctly interpreted `of` as `of`. 327 | 328 | 329 | 330 | # Conclusion 331 | 332 | Turning data that was "optimized" for paper -- whether [it be digital PDFs](https://www.propublica.org/nerds/item/heart-of-nerd-darkness-why-dollars-for-docs-was-so-difficult) or [scanned images simply packaged as PDFs](https://www.propublica.org/series/free-the-files) -- will be a significant computational task as long as humans require human-readable information. And it's safe to assume that state-of-the-art OCR will never be 100% accurate. 333 | 334 | For now, I'm pretty satisfied with the kind of performance FineReader provides at ~$100 -- and I don't blame the open-source contributors of Tesseract if they aren't able to voluntarily tackle the challenge of OCRing tabular data -- Tesseract (which is also trainable) works pretty damn well on regular text. 335 | 336 | In terms of [OpenSecrets's call-to-arms to automate the processing of Congressional paper forms](https://github.com/pdfliberation/pdf-hackathon/blob/master/challenges/house-financial-disclosures.md#2nd-option---handwritten-reports), good OCR is not enough, we need a system to batch collect and process the documents, which will be its own writeup. 337 | 338 | It's worth noting, though, that OpenSecrets isn't waiting around for magic OCR to come around: they've processed the financial disclosure forms the old-fashioned way -- human-powered reading and data entry -- and have generously provided their results in browsable and searchable form on the [Personal Finances](https://www.opensecrets.org/pfds/) section of their eponymous political transparency site: 339 | 340 | https://www.opensecrets.org/pfds/ 341 | 342 | -------------------------------------------------------------------------------- /files/rubio-marco-eFD_ Annual-Report-for-2014_files/font-awesome.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 3.0.2 3 | * the iconic font designed for use with Twitter Bootstrap 4 | * ------------------------------------------------------- 5 | * The full suite of pictographic icons, examples, and documentation 6 | * can be found at: http://fortawesome.github.com/Font-Awesome/ 7 | * 8 | * License 9 | * ------------------------------------------------------- 10 | * - The Font Awesome font is licensed under the SIL Open Font License - http://scripts.sil.org/OFL 11 | * - Font Awesome CSS, LESS, and SASS files are licensed under the MIT License - 12 | * http://opensource.org/licenses/mit-license.html 13 | * - The Font Awesome pictograms are licensed under the CC BY 3.0 License - http://creativecommons.org/licenses/by/3.0/ 14 | * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: 15 | * "Font Awesome by Dave Gandy - http://fortawesome.github.com/Font-Awesome" 16 | 17 | * Contact 18 | * ------------------------------------------------------- 19 | * Email: dave@davegandy.com 20 | * Twitter: http://twitter.com/fortaweso_me 21 | * Work: Lead Product Designer @ http://kyruus.com 22 | */ 23 | @font-face { 24 | font-family: 'FontAwesome'; 25 | src: url('../font/fontawesome-webfont.eot?v=3.0.1'); 26 | src: url('../font/fontawesome-webfont.eot?#iefix&v=3.0.1') format('embedded-opentype'), url('../font/fontawesome-webfont.woff?v=3.0.1') format('woff'), url('../font/fontawesome-webfont.ttf?v=3.0.1') format('truetype'); 27 | font-weight: normal; 28 | font-style: normal; 29 | } 30 | /* Font Awesome css 31 | ------------------------------------------------------- */ 32 | [class^="icon-"], 33 | [class*=" icon-"] { 34 | font-family: FontAwesome; 35 | font-weight: normal; 36 | font-style: normal; 37 | text-decoration: inherit; 38 | -webkit-font-smoothing: antialiased; 39 | /* sprites.less reset */ 40 | 41 | display: inline; 42 | width: auto; 43 | height: auto; 44 | line-height: normal; 45 | vertical-align: baseline; 46 | background-image: none; 47 | background-position: 0% 0%; 48 | background-repeat: repeat; 49 | margin-top: 0; 50 | } 51 | /* more sprites.less reset */ 52 | .icon-white, 53 | .nav-pills > .active > a > [class^="icon-"], 54 | .nav-pills > .active > a > [class*=" icon-"], 55 | .nav-list > .active > a > [class^="icon-"], 56 | .nav-list > .active > a > [class*=" icon-"], 57 | .navbar-inverse .nav > .active > a > [class^="icon-"], 58 | .navbar-inverse .nav > .active > a > [class*=" icon-"], 59 | .dropdown-menu > li > a:hover > [class^="icon-"], 60 | .dropdown-menu > li > a:hover > [class*=" icon-"], 61 | .dropdown-menu > .active > a > [class^="icon-"], 62 | .dropdown-menu > .active > a > [class*=" icon-"], 63 | .dropdown-submenu:hover > a > [class^="icon-"], 64 | .dropdown-submenu:hover > a > [class*=" icon-"] { 65 | background-image: none; 66 | } 67 | [class^="icon-"]:before, 68 | [class*=" icon-"]:before { 69 | text-decoration: inherit; 70 | display: inline-block; 71 | speak: none; 72 | } 73 | /* makes sure icons active on rollover in links */ 74 | a [class^="icon-"], 75 | a [class*=" icon-"] { 76 | display: inline-block; 77 | } 78 | /* makes the font 33% larger relative to the icon container */ 79 | .icon-large:before { 80 | vertical-align: -10%; 81 | font-size: 1.3333333333333333em; 82 | } 83 | .btn [class^="icon-"], 84 | .nav [class^="icon-"], 85 | .btn [class*=" icon-"], 86 | .nav [class*=" icon-"] { 87 | display: inline; 88 | /* keeps button heights with and without icons the same */ 89 | 90 | } 91 | .btn [class^="icon-"].icon-large, 92 | .nav [class^="icon-"].icon-large, 93 | .btn [class*=" icon-"].icon-large, 94 | .nav [class*=" icon-"].icon-large { 95 | line-height: .9em; 96 | } 97 | .btn [class^="icon-"].icon-spin, 98 | .nav [class^="icon-"].icon-spin, 99 | .btn [class*=" icon-"].icon-spin, 100 | .nav [class*=" icon-"].icon-spin { 101 | display: inline-block; 102 | } 103 | .nav-tabs [class^="icon-"], 104 | .nav-pills [class^="icon-"], 105 | .nav-tabs [class*=" icon-"], 106 | .nav-pills [class*=" icon-"] { 107 | /* keeps button heights with and without icons the same */ 108 | 109 | } 110 | .nav-tabs [class^="icon-"], 111 | .nav-pills [class^="icon-"], 112 | .nav-tabs [class*=" icon-"], 113 | .nav-pills [class*=" icon-"], 114 | .nav-tabs [class^="icon-"].icon-large, 115 | .nav-pills [class^="icon-"].icon-large, 116 | .nav-tabs [class*=" icon-"].icon-large, 117 | .nav-pills [class*=" icon-"].icon-large { 118 | line-height: .9em; 119 | } 120 | li [class^="icon-"], 121 | .nav li [class^="icon-"], 122 | li [class*=" icon-"], 123 | .nav li [class*=" icon-"] { 124 | display: inline-block; 125 | width: 1.25em; 126 | text-align: center; 127 | } 128 | li [class^="icon-"].icon-large, 129 | .nav li [class^="icon-"].icon-large, 130 | li [class*=" icon-"].icon-large, 131 | .nav li [class*=" icon-"].icon-large { 132 | /* increased font size for icon-large */ 133 | 134 | width: 1.5625em; 135 | } 136 | ul.icons { 137 | list-style-type: none; 138 | text-indent: -0.75em; 139 | } 140 | ul.icons li [class^="icon-"], 141 | ul.icons li [class*=" icon-"] { 142 | width: .75em; 143 | } 144 | .icon-muted { 145 | color: #eeeeee; 146 | } 147 | .icon-border { 148 | border: solid 1px #eeeeee; 149 | padding: .2em .25em .15em; 150 | -webkit-border-radius: 3px; 151 | -moz-border-radius: 3px; 152 | border-radius: 3px; 153 | } 154 | .icon-2x { 155 | font-size: 2em; 156 | } 157 | .icon-2x.icon-border { 158 | border-width: 2px; 159 | -webkit-border-radius: 4px; 160 | -moz-border-radius: 4px; 161 | border-radius: 4px; 162 | } 163 | .icon-3x { 164 | font-size: 3em; 165 | } 166 | .icon-3x.icon-border { 167 | border-width: 3px; 168 | -webkit-border-radius: 5px; 169 | -moz-border-radius: 5px; 170 | border-radius: 5px; 171 | } 172 | .icon-4x { 173 | font-size: 4em; 174 | } 175 | .icon-4x.icon-border { 176 | border-width: 4px; 177 | -webkit-border-radius: 6px; 178 | -moz-border-radius: 6px; 179 | border-radius: 6px; 180 | } 181 | .pull-right { 182 | float: right; 183 | } 184 | .pull-left { 185 | float: left; 186 | } 187 | [class^="icon-"].pull-left, 188 | [class*=" icon-"].pull-left { 189 | margin-right: .3em; 190 | } 191 | [class^="icon-"].pull-right, 192 | [class*=" icon-"].pull-right { 193 | margin-left: .3em; 194 | } 195 | .btn [class^="icon-"].pull-left.icon-2x, 196 | .btn [class*=" icon-"].pull-left.icon-2x, 197 | .btn [class^="icon-"].pull-right.icon-2x, 198 | .btn [class*=" icon-"].pull-right.icon-2x { 199 | margin-top: .18em; 200 | } 201 | .btn [class^="icon-"].icon-spin.icon-large, 202 | .btn [class*=" icon-"].icon-spin.icon-large { 203 | line-height: .8em; 204 | } 205 | .btn.btn-small [class^="icon-"].pull-left.icon-2x, 206 | .btn.btn-small [class*=" icon-"].pull-left.icon-2x, 207 | .btn.btn-small [class^="icon-"].pull-right.icon-2x, 208 | .btn.btn-small [class*=" icon-"].pull-right.icon-2x { 209 | margin-top: .25em; 210 | } 211 | .btn.btn-large [class^="icon-"], 212 | .btn.btn-large [class*=" icon-"] { 213 | margin-top: 0; 214 | } 215 | .btn.btn-large [class^="icon-"].pull-left.icon-2x, 216 | .btn.btn-large [class*=" icon-"].pull-left.icon-2x, 217 | .btn.btn-large [class^="icon-"].pull-right.icon-2x, 218 | .btn.btn-large [class*=" icon-"].pull-right.icon-2x { 219 | margin-top: .05em; 220 | } 221 | .btn.btn-large [class^="icon-"].pull-left.icon-2x, 222 | .btn.btn-large [class*=" icon-"].pull-left.icon-2x { 223 | margin-right: .2em; 224 | } 225 | .btn.btn-large [class^="icon-"].pull-right.icon-2x, 226 | .btn.btn-large [class*=" icon-"].pull-right.icon-2x { 227 | margin-left: .2em; 228 | } 229 | .icon-spin { 230 | display: inline-block; 231 | -moz-animation: spin 2s infinite linear; 232 | -o-animation: spin 2s infinite linear; 233 | -webkit-animation: spin 2s infinite linear; 234 | animation: spin 2s infinite linear; 235 | } 236 | @-moz-keyframes spin { 237 | 0% { 238 | -moz-transform: rotate(0deg); 239 | } 240 | 100% { 241 | -moz-transform: rotate(359deg); 242 | } 243 | } 244 | @-webkit-keyframes spin { 245 | 0% { 246 | -webkit-transform: rotate(0deg); 247 | } 248 | 100% { 249 | -webkit-transform: rotate(359deg); 250 | } 251 | } 252 | @-o-keyframes spin { 253 | 0% { 254 | -o-transform: rotate(0deg); 255 | } 256 | 100% { 257 | -o-transform: rotate(359deg); 258 | } 259 | } 260 | @-ms-keyframes spin { 261 | 0% { 262 | -ms-transform: rotate(0deg); 263 | } 264 | 100% { 265 | -ms-transform: rotate(359deg); 266 | } 267 | } 268 | @keyframes spin { 269 | 0% { 270 | transform: rotate(0deg); 271 | } 272 | 100% { 273 | transform: rotate(359deg); 274 | } 275 | } 276 | @-moz-document url-prefix() { 277 | .icon-spin { 278 | height: .9em; 279 | } 280 | .btn .icon-spin { 281 | height: auto; 282 | } 283 | .icon-spin.icon-large { 284 | height: 1.25em; 285 | } 286 | .btn .icon-spin.icon-large { 287 | height: .75em; 288 | } 289 | } 290 | /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen 291 | readers do not read off random characters that represent icons */ 292 | .icon-glass:before { 293 | content: "\f000"; 294 | } 295 | .icon-music:before { 296 | content: "\f001"; 297 | } 298 | .icon-search:before { 299 | content: "\f002"; 300 | } 301 | .icon-envelope:before { 302 | content: "\f003"; 303 | } 304 | .icon-heart:before { 305 | content: "\f004"; 306 | } 307 | .icon-star:before { 308 | content: "\f005"; 309 | } 310 | .icon-star-empty:before { 311 | content: "\f006"; 312 | } 313 | .icon-user:before { 314 | content: "\f007"; 315 | } 316 | .icon-film:before { 317 | content: "\f008"; 318 | } 319 | .icon-th-large:before { 320 | content: "\f009"; 321 | } 322 | .icon-th:before { 323 | content: "\f00a"; 324 | } 325 | .icon-th-list:before { 326 | content: "\f00b"; 327 | } 328 | .icon-ok:before { 329 | content: "\f00c"; 330 | } 331 | .icon-remove:before { 332 | content: "\f00d"; 333 | } 334 | .icon-zoom-in:before { 335 | content: "\f00e"; 336 | } 337 | .icon-zoom-out:before { 338 | content: "\f010"; 339 | } 340 | .icon-off:before { 341 | content: "\f011"; 342 | } 343 | .icon-signal:before { 344 | content: "\f012"; 345 | } 346 | .icon-cog:before { 347 | content: "\f013"; 348 | } 349 | .icon-trash:before { 350 | content: "\f014"; 351 | } 352 | .icon-home:before { 353 | content: "\f015"; 354 | } 355 | .icon-file:before { 356 | content: "\f016"; 357 | } 358 | .icon-time:before { 359 | content: "\f017"; 360 | } 361 | .icon-road:before { 362 | content: "\f018"; 363 | } 364 | .icon-download-alt:before { 365 | content: "\f019"; 366 | } 367 | .icon-download:before { 368 | content: "\f01a"; 369 | } 370 | .icon-upload:before { 371 | content: "\f01b"; 372 | } 373 | .icon-inbox:before { 374 | content: "\f01c"; 375 | } 376 | .icon-play-circle:before { 377 | content: "\f01d"; 378 | } 379 | .icon-repeat:before { 380 | content: "\f01e"; 381 | } 382 | /* \f020 doesn't work in Safari. all shifted one down */ 383 | .icon-refresh:before { 384 | content: "\f021"; 385 | } 386 | .icon-list-alt:before { 387 | content: "\f022"; 388 | } 389 | .icon-lock:before { 390 | content: "\f023"; 391 | } 392 | .icon-flag:before { 393 | content: "\f024"; 394 | } 395 | .icon-headphones:before { 396 | content: "\f025"; 397 | } 398 | .icon-volume-off:before { 399 | content: "\f026"; 400 | } 401 | .icon-volume-down:before { 402 | content: "\f027"; 403 | } 404 | .icon-volume-up:before { 405 | content: "\f028"; 406 | } 407 | .icon-qrcode:before { 408 | content: "\f029"; 409 | } 410 | .icon-barcode:before { 411 | content: "\f02a"; 412 | } 413 | .icon-tag:before { 414 | content: "\f02b"; 415 | } 416 | .icon-tags:before { 417 | content: "\f02c"; 418 | } 419 | .icon-book:before { 420 | content: "\f02d"; 421 | } 422 | .icon-bookmark:before { 423 | content: "\f02e"; 424 | } 425 | .icon-print:before { 426 | content: "\f02f"; 427 | } 428 | .icon-camera:before { 429 | content: "\f030"; 430 | } 431 | .icon-font:before { 432 | content: "\f031"; 433 | } 434 | .icon-bold:before { 435 | content: "\f032"; 436 | } 437 | .icon-italic:before { 438 | content: "\f033"; 439 | } 440 | .icon-text-height:before { 441 | content: "\f034"; 442 | } 443 | .icon-text-width:before { 444 | content: "\f035"; 445 | } 446 | .icon-align-left:before { 447 | content: "\f036"; 448 | } 449 | .icon-align-center:before { 450 | content: "\f037"; 451 | } 452 | .icon-align-right:before { 453 | content: "\f038"; 454 | } 455 | .icon-align-justify:before { 456 | content: "\f039"; 457 | } 458 | .icon-list:before { 459 | content: "\f03a"; 460 | } 461 | .icon-indent-left:before { 462 | content: "\f03b"; 463 | } 464 | .icon-indent-right:before { 465 | content: "\f03c"; 466 | } 467 | .icon-facetime-video:before { 468 | content: "\f03d"; 469 | } 470 | .icon-picture:before { 471 | content: "\f03e"; 472 | } 473 | .icon-pencil:before { 474 | content: "\f040"; 475 | } 476 | .icon-map-marker:before { 477 | content: "\f041"; 478 | } 479 | .icon-adjust:before { 480 | content: "\f042"; 481 | } 482 | .icon-tint:before { 483 | content: "\f043"; 484 | } 485 | .icon-edit:before { 486 | content: "\f044"; 487 | } 488 | .icon-share:before { 489 | content: "\f045"; 490 | } 491 | .icon-check:before { 492 | content: "\f046"; 493 | } 494 | .icon-move:before { 495 | content: "\f047"; 496 | } 497 | .icon-step-backward:before { 498 | content: "\f048"; 499 | } 500 | .icon-fast-backward:before { 501 | content: "\f049"; 502 | } 503 | .icon-backward:before { 504 | content: "\f04a"; 505 | } 506 | .icon-play:before { 507 | content: "\f04b"; 508 | } 509 | .icon-pause:before { 510 | content: "\f04c"; 511 | } 512 | .icon-stop:before { 513 | content: "\f04d"; 514 | } 515 | .icon-forward:before { 516 | content: "\f04e"; 517 | } 518 | .icon-fast-forward:before { 519 | content: "\f050"; 520 | } 521 | .icon-step-forward:before { 522 | content: "\f051"; 523 | } 524 | .icon-eject:before { 525 | content: "\f052"; 526 | } 527 | .icon-chevron-left:before { 528 | content: "\f053"; 529 | } 530 | .icon-chevron-right:before { 531 | content: "\f054"; 532 | } 533 | .icon-plus-sign:before { 534 | content: "\f055"; 535 | } 536 | .icon-minus-sign:before { 537 | content: "\f056"; 538 | } 539 | .icon-remove-sign:before { 540 | content: "\f057"; 541 | } 542 | .icon-ok-sign:before { 543 | content: "\f058"; 544 | } 545 | .icon-question-sign:before { 546 | content: "\f059"; 547 | } 548 | .icon-info-sign:before { 549 | content: "\f05a"; 550 | } 551 | .icon-screenshot:before { 552 | content: "\f05b"; 553 | } 554 | .icon-remove-circle:before { 555 | content: "\f05c"; 556 | } 557 | .icon-ok-circle:before { 558 | content: "\f05d"; 559 | } 560 | .icon-ban-circle:before { 561 | content: "\f05e"; 562 | } 563 | .icon-arrow-left:before { 564 | content: "\f060"; 565 | } 566 | .icon-arrow-right:before { 567 | content: "\f061"; 568 | } 569 | .icon-arrow-up:before { 570 | content: "\f062"; 571 | } 572 | .icon-arrow-down:before { 573 | content: "\f063"; 574 | } 575 | .icon-share-alt:before { 576 | content: "\f064"; 577 | } 578 | .icon-resize-full:before { 579 | content: "\f065"; 580 | } 581 | .icon-resize-small:before { 582 | content: "\f066"; 583 | } 584 | .icon-plus:before { 585 | content: "\f067"; 586 | } 587 | .icon-minus:before { 588 | content: "\f068"; 589 | } 590 | .icon-asterisk:before { 591 | content: "\f069"; 592 | } 593 | .icon-exclamation-sign:before { 594 | content: "\f06a"; 595 | } 596 | .icon-gift:before { 597 | content: "\f06b"; 598 | } 599 | .icon-leaf:before { 600 | content: "\f06c"; 601 | } 602 | .icon-fire:before { 603 | content: "\f06d"; 604 | } 605 | .icon-eye-open:before { 606 | content: "\f06e"; 607 | } 608 | .icon-eye-close:before { 609 | content: "\f070"; 610 | } 611 | .icon-warning-sign:before { 612 | content: "\f071"; 613 | } 614 | .icon-plane:before { 615 | content: "\f072"; 616 | } 617 | .icon-calendar:before { 618 | content: "\f073"; 619 | } 620 | .icon-random:before { 621 | content: "\f074"; 622 | } 623 | .icon-comment:before { 624 | content: "\f075"; 625 | } 626 | .icon-magnet:before { 627 | content: "\f076"; 628 | } 629 | .icon-chevron-up:before { 630 | content: "\f077"; 631 | } 632 | .icon-chevron-down:before { 633 | content: "\f078"; 634 | } 635 | .icon-retweet:before { 636 | content: "\f079"; 637 | } 638 | .icon-shopping-cart:before { 639 | content: "\f07a"; 640 | } 641 | .icon-folder-close:before { 642 | content: "\f07b"; 643 | } 644 | .icon-folder-open:before { 645 | content: "\f07c"; 646 | } 647 | .icon-resize-vertical:before { 648 | content: "\f07d"; 649 | } 650 | .icon-resize-horizontal:before { 651 | content: "\f07e"; 652 | } 653 | .icon-bar-chart:before { 654 | content: "\f080"; 655 | } 656 | .icon-twitter-sign:before { 657 | content: "\f081"; 658 | } 659 | .icon-facebook-sign:before { 660 | content: "\f082"; 661 | } 662 | .icon-camera-retro:before { 663 | content: "\f083"; 664 | } 665 | .icon-key:before { 666 | content: "\f084"; 667 | } 668 | .icon-cogs:before { 669 | content: "\f085"; 670 | } 671 | .icon-comments:before { 672 | content: "\f086"; 673 | } 674 | .icon-thumbs-up:before { 675 | content: "\f087"; 676 | } 677 | .icon-thumbs-down:before { 678 | content: "\f088"; 679 | } 680 | .icon-star-half:before { 681 | content: "\f089"; 682 | } 683 | .icon-heart-empty:before { 684 | content: "\f08a"; 685 | } 686 | .icon-signout:before { 687 | content: "\f08b"; 688 | } 689 | .icon-linkedin-sign:before { 690 | content: "\f08c"; 691 | } 692 | .icon-pushpin:before { 693 | content: "\f08d"; 694 | } 695 | .icon-external-link:before { 696 | content: "\f08e"; 697 | } 698 | .icon-signin:before { 699 | content: "\f090"; 700 | } 701 | .icon-trophy:before { 702 | content: "\f091"; 703 | } 704 | .icon-github-sign:before { 705 | content: "\f092"; 706 | } 707 | .icon-upload-alt:before { 708 | content: "\f093"; 709 | } 710 | .icon-lemon:before { 711 | content: "\f094"; 712 | } 713 | .icon-phone:before { 714 | content: "\f095"; 715 | } 716 | .icon-check-empty:before { 717 | content: "\f096"; 718 | } 719 | .icon-bookmark-empty:before { 720 | content: "\f097"; 721 | } 722 | .icon-phone-sign:before { 723 | content: "\f098"; 724 | } 725 | .icon-twitter:before { 726 | content: "\f099"; 727 | } 728 | .icon-facebook:before { 729 | content: "\f09a"; 730 | } 731 | .icon-github:before { 732 | content: "\f09b"; 733 | } 734 | .icon-unlock:before { 735 | content: "\f09c"; 736 | } 737 | .icon-credit-card:before { 738 | content: "\f09d"; 739 | } 740 | .icon-rss:before { 741 | content: "\f09e"; 742 | } 743 | .icon-hdd:before { 744 | content: "\f0a0"; 745 | } 746 | .icon-bullhorn:before { 747 | content: "\f0a1"; 748 | } 749 | .icon-bell:before { 750 | content: "\f0a2"; 751 | } 752 | .icon-certificate:before { 753 | content: "\f0a3"; 754 | } 755 | .icon-hand-right:before { 756 | content: "\f0a4"; 757 | } 758 | .icon-hand-left:before { 759 | content: "\f0a5"; 760 | } 761 | .icon-hand-up:before { 762 | content: "\f0a6"; 763 | } 764 | .icon-hand-down:before { 765 | content: "\f0a7"; 766 | } 767 | .icon-circle-arrow-left:before { 768 | content: "\f0a8"; 769 | } 770 | .icon-circle-arrow-right:before { 771 | content: "\f0a9"; 772 | } 773 | .icon-circle-arrow-up:before { 774 | content: "\f0aa"; 775 | } 776 | .icon-circle-arrow-down:before { 777 | content: "\f0ab"; 778 | } 779 | .icon-globe:before { 780 | content: "\f0ac"; 781 | } 782 | .icon-wrench:before { 783 | content: "\f0ad"; 784 | } 785 | .icon-tasks:before { 786 | content: "\f0ae"; 787 | } 788 | .icon-filter:before { 789 | content: "\f0b0"; 790 | } 791 | .icon-briefcase:before { 792 | content: "\f0b1"; 793 | } 794 | .icon-fullscreen:before { 795 | content: "\f0b2"; 796 | } 797 | .icon-group:before { 798 | content: "\f0c0"; 799 | } 800 | .icon-link:before { 801 | content: "\f0c1"; 802 | } 803 | .icon-cloud:before { 804 | content: "\f0c2"; 805 | } 806 | .icon-beaker:before { 807 | content: "\f0c3"; 808 | } 809 | .icon-cut:before { 810 | content: "\f0c4"; 811 | } 812 | .icon-copy:before { 813 | content: "\f0c5"; 814 | } 815 | .icon-paper-clip:before { 816 | content: "\f0c6"; 817 | } 818 | .icon-save:before { 819 | content: "\f0c7"; 820 | } 821 | .icon-sign-blank:before { 822 | content: "\f0c8"; 823 | } 824 | .icon-reorder:before { 825 | content: "\f0c9"; 826 | } 827 | .icon-list-ul:before { 828 | content: "\f0ca"; 829 | } 830 | .icon-list-ol:before { 831 | content: "\f0cb"; 832 | } 833 | .icon-strikethrough:before { 834 | content: "\f0cc"; 835 | } 836 | .icon-underline:before { 837 | content: "\f0cd"; 838 | } 839 | .icon-table:before { 840 | content: "\f0ce"; 841 | } 842 | .icon-magic:before { 843 | content: "\f0d0"; 844 | } 845 | .icon-truck:before { 846 | content: "\f0d1"; 847 | } 848 | .icon-pinterest:before { 849 | content: "\f0d2"; 850 | } 851 | .icon-pinterest-sign:before { 852 | content: "\f0d3"; 853 | } 854 | .icon-google-plus-sign:before { 855 | content: "\f0d4"; 856 | } 857 | .icon-google-plus:before { 858 | content: "\f0d5"; 859 | } 860 | .icon-money:before { 861 | content: "\f0d6"; 862 | } 863 | .icon-caret-down:before { 864 | content: "\f0d7"; 865 | } 866 | .icon-caret-up:before { 867 | content: "\f0d8"; 868 | } 869 | .icon-caret-left:before { 870 | content: "\f0d9"; 871 | } 872 | .icon-caret-right:before { 873 | content: "\f0da"; 874 | } 875 | .icon-columns:before { 876 | content: "\f0db"; 877 | } 878 | .icon-sort:before { 879 | content: "\f0dc"; 880 | } 881 | .icon-sort-down:before { 882 | content: "\f0dd"; 883 | } 884 | .icon-sort-up:before { 885 | content: "\f0de"; 886 | } 887 | .icon-envelope-alt:before { 888 | content: "\f0e0"; 889 | } 890 | .icon-linkedin:before { 891 | content: "\f0e1"; 892 | } 893 | .icon-undo:before { 894 | content: "\f0e2"; 895 | } 896 | .icon-legal:before { 897 | content: "\f0e3"; 898 | } 899 | .icon-dashboard:before { 900 | content: "\f0e4"; 901 | } 902 | .icon-comment-alt:before { 903 | content: "\f0e5"; 904 | } 905 | .icon-comments-alt:before { 906 | content: "\f0e6"; 907 | } 908 | .icon-bolt:before { 909 | content: "\f0e7"; 910 | } 911 | .icon-sitemap:before { 912 | content: "\f0e8"; 913 | } 914 | .icon-umbrella:before { 915 | content: "\f0e9"; 916 | } 917 | .icon-paste:before { 918 | content: "\f0ea"; 919 | } 920 | .icon-lightbulb:before { 921 | content: "\f0eb"; 922 | } 923 | .icon-exchange:before { 924 | content: "\f0ec"; 925 | } 926 | .icon-cloud-download:before { 927 | content: "\f0ed"; 928 | } 929 | .icon-cloud-upload:before { 930 | content: "\f0ee"; 931 | } 932 | .icon-user-md:before { 933 | content: "\f0f0"; 934 | } 935 | .icon-stethoscope:before { 936 | content: "\f0f1"; 937 | } 938 | .icon-suitcase:before { 939 | content: "\f0f2"; 940 | } 941 | .icon-bell-alt:before { 942 | content: "\f0f3"; 943 | } 944 | .icon-coffee:before { 945 | content: "\f0f4"; 946 | } 947 | .icon-food:before { 948 | content: "\f0f5"; 949 | } 950 | .icon-file-alt:before { 951 | content: "\f0f6"; 952 | } 953 | .icon-building:before { 954 | content: "\f0f7"; 955 | } 956 | .icon-hospital:before { 957 | content: "\f0f8"; 958 | } 959 | .icon-ambulance:before { 960 | content: "\f0f9"; 961 | } 962 | .icon-medkit:before { 963 | content: "\f0fa"; 964 | } 965 | .icon-fighter-jet:before { 966 | content: "\f0fb"; 967 | } 968 | .icon-beer:before { 969 | content: "\f0fc"; 970 | } 971 | .icon-h-sign:before { 972 | content: "\f0fd"; 973 | } 974 | .icon-plus-sign-alt:before { 975 | content: "\f0fe"; 976 | } 977 | .icon-double-angle-left:before { 978 | content: "\f100"; 979 | } 980 | .icon-double-angle-right:before { 981 | content: "\f101"; 982 | } 983 | .icon-double-angle-up:before { 984 | content: "\f102"; 985 | } 986 | .icon-double-angle-down:before { 987 | content: "\f103"; 988 | } 989 | .icon-angle-left:before { 990 | content: "\f104"; 991 | } 992 | .icon-angle-right:before { 993 | content: "\f105"; 994 | } 995 | .icon-angle-up:before { 996 | content: "\f106"; 997 | } 998 | .icon-angle-down:before { 999 | content: "\f107"; 1000 | } 1001 | .icon-desktop:before { 1002 | content: "\f108"; 1003 | } 1004 | .icon-laptop:before { 1005 | content: "\f109"; 1006 | } 1007 | .icon-tablet:before { 1008 | content: "\f10a"; 1009 | } 1010 | .icon-mobile-phone:before { 1011 | content: "\f10b"; 1012 | } 1013 | .icon-circle-blank:before { 1014 | content: "\f10c"; 1015 | } 1016 | .icon-quote-left:before { 1017 | content: "\f10d"; 1018 | } 1019 | .icon-quote-right:before { 1020 | content: "\f10e"; 1021 | } 1022 | .icon-spinner:before { 1023 | content: "\f110"; 1024 | } 1025 | .icon-circle:before { 1026 | content: "\f111"; 1027 | } 1028 | .icon-reply:before { 1029 | content: "\f112"; 1030 | } 1031 | .icon-github-alt:before { 1032 | content: "\f113"; 1033 | } 1034 | .icon-folder-close-alt:before { 1035 | content: "\f114"; 1036 | } 1037 | .icon-folder-open-alt:before { 1038 | content: "\f115"; 1039 | } 1040 | -------------------------------------------------------------------------------- /files/rubio-marco-eFD_ Annual-Report-for-2014_files/responsive.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Responsive v2.2.2 3 | * 4 | * Copyright 2012 Twitter, Inc 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * Designed and built with all the love in the world @twitter by @mdo and @fat. 9 | */ 10 | @-ms-viewport { 11 | width: device-width; 12 | } 13 | /*SA */ 14 | .clearfix { 15 | *zoom: 1; 16 | } 17 | .clearfix:before, 18 | .clearfix:after { 19 | display: table; 20 | content: ""; 21 | line-height: 0; 22 | } 23 | .clearfix:after { 24 | clear: both; 25 | } 26 | .hide-text { 27 | font: 0/0 a; 28 | color: transparent; 29 | text-shadow: none; 30 | background-color: transparent; 31 | border: 0; 32 | } 33 | .input-block-level { 34 | display: block; 35 | width: 100%; 36 | min-height: 34px; 37 | -webkit-box-sizing: border-box; 38 | -moz-box-sizing: border-box; 39 | box-sizing: border-box; 40 | } 41 | .hidden { 42 | display: none; 43 | visibility: hidden; 44 | } 45 | .visible-phone { 46 | display: none !important; 47 | } 48 | .visible-tablet { 49 | display: none !important; 50 | } 51 | .hidden-desktop { 52 | display: none !important; 53 | } 54 | .visible-desktop { 55 | display: inherit !important; 56 | } 57 | @media (min-width: 768px) and (max-width: 979px) { 58 | .hidden-desktop { 59 | display: inherit !important; 60 | } 61 | .visible-desktop { 62 | display: none !important ; 63 | } 64 | .visible-tablet { 65 | display: inherit !important; 66 | } 67 | .hidden-tablet { 68 | display: none !important; 69 | } 70 | } 71 | @media (max-width: 767px) { 72 | .hidden-desktop { 73 | display: inherit !important; 74 | } 75 | .visible-desktop { 76 | display: none !important; 77 | } 78 | .visible-phone { 79 | display: inherit !important; 80 | } 81 | .hidden-phone { 82 | display: none !important; 83 | } 84 | } 85 | @media (min-width: 1200px) { 86 | .row { 87 | margin-left: -30px; 88 | *zoom: 1; 89 | } 90 | .row:before, 91 | .row:after { 92 | display: table; 93 | content: ""; 94 | line-height: 0; 95 | } 96 | .row:after { 97 | clear: both; 98 | } 99 | [class*="span"] { 100 | float: left; 101 | min-height: 1px; 102 | margin-left: 30px; 103 | } 104 | .container, 105 | .navbar-static-top .container, 106 | .navbar-fixed-top .container, 107 | .navbar-fixed-bottom .container { 108 | width: 1170px; 109 | } 110 | .span12 { 111 | width: 1170px; 112 | } 113 | .span11 { 114 | width: 1070px; 115 | } 116 | .span10 { 117 | width: 970px; 118 | } 119 | .span9 { 120 | width: 870px; 121 | } 122 | .span8 { 123 | width: 770px; 124 | } 125 | .span7 { 126 | width: 670px; 127 | } 128 | .span6 { 129 | width: 570px; 130 | } 131 | .span5 { 132 | width: 470px; 133 | } 134 | .span4 { 135 | width: 370px; 136 | } 137 | .span3 { 138 | width: 270px; 139 | } 140 | .span2 { 141 | width: 170px; 142 | } 143 | .span1 { 144 | width: 70px; 145 | } 146 | .offset12 { 147 | margin-left: 1230px; 148 | } 149 | .offset11 { 150 | margin-left: 1130px; 151 | } 152 | .offset10 { 153 | margin-left: 1030px; 154 | } 155 | .offset9 { 156 | margin-left: 930px; 157 | } 158 | .offset8 { 159 | margin-left: 830px; 160 | } 161 | .offset7 { 162 | margin-left: 730px; 163 | } 164 | .offset6 { 165 | margin-left: 630px; 166 | } 167 | .offset5 { 168 | margin-left: 530px; 169 | } 170 | .offset4 { 171 | margin-left: 430px; 172 | } 173 | .offset3 { 174 | margin-left: 330px; 175 | } 176 | .offset2 { 177 | margin-left: 230px; 178 | } 179 | .offset1 { 180 | margin-left: 130px; 181 | } 182 | .row-fluid { 183 | width: 100%; 184 | *zoom: 1; 185 | } 186 | .row-fluid:before, 187 | .row-fluid:after { 188 | display: table; 189 | content: ""; 190 | line-height: 0; 191 | } 192 | .row-fluid:after { 193 | clear: both; 194 | } 195 | .row-fluid [class*="span"] { 196 | display: block; 197 | width: 100%; 198 | min-height: 34px; 199 | -webkit-box-sizing: border-box; 200 | -moz-box-sizing: border-box; 201 | box-sizing: border-box; 202 | float: left; 203 | margin-left: 2.564102564102564%; 204 | *margin-left: 2.5109110747408616%; 205 | } 206 | .row-fluid [class*="span"]:first-child { 207 | margin-left: 0; 208 | } 209 | .row-fluid .controls-row [class*="span"] + [class*="span"] { 210 | margin-left: 2.564102564102564%; 211 | } 212 | .row-fluid .span12 { 213 | width: 100%; 214 | *width: 99.94680851063829%; 215 | } 216 | .row-fluid .span11 { 217 | width: 91.45299145299145%; 218 | *width: 91.39979996362975%; 219 | } 220 | .row-fluid .span10 { 221 | width: 82.90598290598291%; 222 | *width: 82.8527914166212%; 223 | } 224 | .row-fluid .span9 { 225 | width: 74.35897435897436%; 226 | *width: 74.30578286961266%; 227 | } 228 | .row-fluid .span8 { 229 | width: 65.81196581196582%; 230 | *width: 65.75877432260411%; 231 | } 232 | .row-fluid .span7 { 233 | width: 57.26495726495726%; 234 | *width: 57.21176577559556%; 235 | } 236 | .row-fluid .span6 { 237 | width: 48.717948717948715%; 238 | *width: 48.664757228587014%; 239 | } 240 | .row-fluid .span5 { 241 | width: 40.17094017094017%; 242 | *width: 40.11774868157847%; 243 | } 244 | .row-fluid .span4 { 245 | width: 31.623931623931625%; 246 | *width: 31.570740134569924%; 247 | } 248 | .row-fluid .span3 { 249 | width: 23.076923076923077%; 250 | *width: 23.023731587561375%; 251 | } 252 | .row-fluid .span2 { 253 | width: 14.52991452991453%; 254 | *width: 14.476723040552828%; 255 | } 256 | .row-fluid .span1 { 257 | width: 5.982905982905983%; 258 | *width: 5.929714493544281%; 259 | } 260 | .row-fluid .offset12 { 261 | margin-left: 105.12820512820512%; 262 | *margin-left: 105.02182214948171%; 263 | } 264 | .row-fluid .offset12:first-child { 265 | margin-left: 102.56410256410257%; 266 | *margin-left: 102.45771958537915%; 267 | } 268 | .row-fluid .offset11 { 269 | margin-left: 96.58119658119658%; 270 | *margin-left: 96.47481360247316%; 271 | } 272 | .row-fluid .offset11:first-child { 273 | margin-left: 94.01709401709402%; 274 | *margin-left: 93.91071103837061%; 275 | } 276 | .row-fluid .offset10 { 277 | margin-left: 88.03418803418803%; 278 | *margin-left: 87.92780505546462%; 279 | } 280 | .row-fluid .offset10:first-child { 281 | margin-left: 85.47008547008548%; 282 | *margin-left: 85.36370249136206%; 283 | } 284 | .row-fluid .offset9 { 285 | margin-left: 79.48717948717949%; 286 | *margin-left: 79.38079650845607%; 287 | } 288 | .row-fluid .offset9:first-child { 289 | margin-left: 76.92307692307693%; 290 | *margin-left: 76.81669394435352%; 291 | } 292 | .row-fluid .offset8 { 293 | margin-left: 70.94017094017094%; 294 | *margin-left: 70.83378796144753%; 295 | } 296 | .row-fluid .offset8:first-child { 297 | margin-left: 68.37606837606839%; 298 | *margin-left: 68.26968539734497%; 299 | } 300 | .row-fluid .offset7 { 301 | margin-left: 62.393162393162385%; 302 | *margin-left: 62.28677941443899%; 303 | } 304 | .row-fluid .offset7:first-child { 305 | margin-left: 59.82905982905982%; 306 | *margin-left: 59.72267685033642%; 307 | } 308 | .row-fluid .offset6 { 309 | margin-left: 53.84615384615384%; 310 | *margin-left: 53.739770867430444%; 311 | } 312 | .row-fluid .offset6:first-child { 313 | margin-left: 51.28205128205128%; 314 | *margin-left: 51.175668303327875%; 315 | } 316 | .row-fluid .offset5 { 317 | margin-left: 45.299145299145295%; 318 | *margin-left: 45.1927623204219%; 319 | } 320 | .row-fluid .offset5:first-child { 321 | margin-left: 42.73504273504273%; 322 | *margin-left: 42.62865975631933%; 323 | } 324 | .row-fluid .offset4 { 325 | margin-left: 36.75213675213675%; 326 | *margin-left: 36.645753773413354%; 327 | } 328 | .row-fluid .offset4:first-child { 329 | margin-left: 34.18803418803419%; 330 | *margin-left: 34.081651209310785%; 331 | } 332 | .row-fluid .offset3 { 333 | margin-left: 28.205128205128204%; 334 | *margin-left: 28.0987452264048%; 335 | } 336 | .row-fluid .offset3:first-child { 337 | margin-left: 25.641025641025642%; 338 | *margin-left: 25.53464266230224%; 339 | } 340 | .row-fluid .offset2 { 341 | margin-left: 19.65811965811966%; 342 | *margin-left: 19.551736679396257%; 343 | } 344 | .row-fluid .offset2:first-child { 345 | margin-left: 17.094017094017094%; 346 | *margin-left: 16.98763411529369%; 347 | } 348 | .row-fluid .offset1 { 349 | margin-left: 11.11111111111111%; 350 | *margin-left: 11.004728132387708%; 351 | } 352 | .row-fluid .offset1:first-child { 353 | margin-left: 8.547008547008547%; 354 | *margin-left: 8.440625568285142%; 355 | } 356 | input, 357 | textarea, 358 | .uneditable-input { 359 | margin-left: 0; 360 | } 361 | .controls-row [class*="span"] + [class*="span"] { 362 | margin-left: 30px; 363 | } 364 | input.span12, textarea.span12, .uneditable-input.span12 { 365 | width: 1156px; 366 | } 367 | input.span11, textarea.span11, .uneditable-input.span11 { 368 | width: 1056px; 369 | } 370 | input.span10, textarea.span10, .uneditable-input.span10 { 371 | width: 956px; 372 | } 373 | input.span9, textarea.span9, .uneditable-input.span9 { 374 | width: 856px; 375 | } 376 | input.span8, textarea.span8, .uneditable-input.span8 { 377 | width: 756px; 378 | } 379 | input.span7, textarea.span7, .uneditable-input.span7 { 380 | width: 656px; 381 | } 382 | input.span6, textarea.span6, .uneditable-input.span6 { 383 | width: 556px; 384 | } 385 | input.span5, textarea.span5, .uneditable-input.span5 { 386 | width: 456px; 387 | } 388 | input.span4, textarea.span4, .uneditable-input.span4 { 389 | width: 356px; 390 | } 391 | input.span3, textarea.span3, .uneditable-input.span3 { 392 | width: 256px; 393 | } 394 | input.span2, textarea.span2, .uneditable-input.span2 { 395 | width: 156px; 396 | } 397 | input.span1, textarea.span1, .uneditable-input.span1 { 398 | width: 56px; 399 | } 400 | .thumbnails { 401 | margin-left: -30px; 402 | } 403 | .thumbnails > li { 404 | margin-left: 30px; 405 | } 406 | .row-fluid .thumbnails { 407 | margin-left: 0; 408 | } 409 | } 410 | @media (min-width: 768px) and (max-width: 979px) { 411 | .row { 412 | margin-left: -20px; 413 | *zoom: 1; 414 | } 415 | .row:before, 416 | .row:after { 417 | display: table; 418 | content: ""; 419 | line-height: 0; 420 | } 421 | .row:after { 422 | clear: both; 423 | } 424 | [class*="span"] { 425 | float: left; 426 | min-height: 1px; 427 | margin-left: 20px; 428 | } 429 | .container, 430 | .navbar-static-top .container, 431 | .navbar-fixed-top .container, 432 | .navbar-fixed-bottom .container { 433 | width: 724px; 434 | } 435 | .span12 { 436 | width: 724px; 437 | } 438 | .span11 { 439 | width: 662px; 440 | } 441 | .span10 { 442 | width: 600px; 443 | } 444 | .span9 { 445 | width: 538px; 446 | } 447 | .span8 { 448 | width: 476px; 449 | } 450 | .span7 { 451 | width: 414px; 452 | } 453 | .span6 { 454 | width: 352px; 455 | } 456 | .span5 { 457 | width: 290px; 458 | } 459 | .span4 { 460 | width: 228px; 461 | } 462 | .span3 { 463 | width: 166px; 464 | } 465 | .span2 { 466 | width: 104px; 467 | } 468 | .span1 { 469 | width: 42px; 470 | } 471 | .offset12 { 472 | margin-left: 764px; 473 | } 474 | .offset11 { 475 | margin-left: 702px; 476 | } 477 | .offset10 { 478 | margin-left: 640px; 479 | } 480 | .offset9 { 481 | margin-left: 578px; 482 | } 483 | .offset8 { 484 | margin-left: 516px; 485 | } 486 | .offset7 { 487 | margin-left: 454px; 488 | } 489 | .offset6 { 490 | margin-left: 392px; 491 | } 492 | .offset5 { 493 | margin-left: 330px; 494 | } 495 | .offset4 { 496 | margin-left: 268px; 497 | } 498 | .offset3 { 499 | margin-left: 206px; 500 | } 501 | .offset2 { 502 | margin-left: 144px; 503 | } 504 | .offset1 { 505 | margin-left: 82px; 506 | } 507 | .row-fluid { 508 | width: 100%; 509 | *zoom: 1; 510 | } 511 | .row-fluid:before, 512 | .row-fluid:after { 513 | display: table; 514 | content: ""; 515 | line-height: 0; 516 | } 517 | .row-fluid:after { 518 | clear: both; 519 | } 520 | .row-fluid [class*="span"] { 521 | display: block; 522 | width: 100%; 523 | min-height: 34px; 524 | -webkit-box-sizing: border-box; 525 | -moz-box-sizing: border-box; 526 | box-sizing: border-box; 527 | float: left; 528 | margin-left: 2.7624309392265194%; 529 | *margin-left: 2.709239449864817%; 530 | } 531 | .row-fluid [class*="span"]:first-child { 532 | margin-left: 0; 533 | } 534 | .row-fluid .controls-row [class*="span"] + [class*="span"] { 535 | margin-left: 2.7624309392265194%; 536 | } 537 | .row-fluid .span12 { 538 | width: 100%; 539 | *width: 99.94680851063829%; 540 | } 541 | .row-fluid .span11 { 542 | width: 91.43646408839778%; 543 | *width: 91.38327259903608%; 544 | } 545 | .row-fluid .span10 { 546 | width: 82.87292817679558%; 547 | *width: 82.81973668743387%; 548 | } 549 | .row-fluid .span9 { 550 | width: 74.30939226519337%; 551 | *width: 74.25620077583166%; 552 | } 553 | .row-fluid .span8 { 554 | width: 65.74585635359117%; 555 | *width: 65.69266486422946%; 556 | } 557 | .row-fluid .span7 { 558 | width: 57.18232044198895%; 559 | *width: 57.12912895262725%; 560 | } 561 | .row-fluid .span6 { 562 | width: 48.61878453038674%; 563 | *width: 48.56559304102504%; 564 | } 565 | .row-fluid .span5 { 566 | width: 40.05524861878453%; 567 | *width: 40.00205712942283%; 568 | } 569 | .row-fluid .span4 { 570 | width: 31.491712707182323%; 571 | *width: 31.43852121782062%; 572 | } 573 | .row-fluid .span3 { 574 | width: 22.92817679558011%; 575 | *width: 22.87498530621841%; 576 | } 577 | .row-fluid .span2 { 578 | width: 14.3646408839779%; 579 | *width: 14.311449394616199%; 580 | } 581 | .row-fluid .span1 { 582 | width: 5.801104972375691%; 583 | *width: 5.747913483013988%; 584 | } 585 | .row-fluid .offset12 { 586 | margin-left: 105.52486187845304%; 587 | *margin-left: 105.41847889972962%; 588 | } 589 | .row-fluid .offset12:first-child { 590 | margin-left: 102.76243093922652%; 591 | *margin-left: 102.6560479605031%; 592 | } 593 | .row-fluid .offset11 { 594 | margin-left: 96.96132596685082%; 595 | *margin-left: 96.8549429881274%; 596 | } 597 | .row-fluid .offset11:first-child { 598 | margin-left: 94.1988950276243%; 599 | *margin-left: 94.09251204890089%; 600 | } 601 | .row-fluid .offset10 { 602 | margin-left: 88.39779005524862%; 603 | *margin-left: 88.2914070765252%; 604 | } 605 | .row-fluid .offset10:first-child { 606 | margin-left: 85.6353591160221%; 607 | *margin-left: 85.52897613729868%; 608 | } 609 | .row-fluid .offset9 { 610 | margin-left: 79.8342541436464%; 611 | *margin-left: 79.72787116492299%; 612 | } 613 | .row-fluid .offset9:first-child { 614 | margin-left: 77.07182320441989%; 615 | *margin-left: 76.96544022569647%; 616 | } 617 | .row-fluid .offset8 { 618 | margin-left: 71.2707182320442%; 619 | *margin-left: 71.16433525332079%; 620 | } 621 | .row-fluid .offset8:first-child { 622 | margin-left: 68.50828729281768%; 623 | *margin-left: 68.40190431409427%; 624 | } 625 | .row-fluid .offset7 { 626 | margin-left: 62.70718232044199%; 627 | *margin-left: 62.600799341718584%; 628 | } 629 | .row-fluid .offset7:first-child { 630 | margin-left: 59.94475138121547%; 631 | *margin-left: 59.838368402492065%; 632 | } 633 | .row-fluid .offset6 { 634 | margin-left: 54.14364640883978%; 635 | *margin-left: 54.037263430116376%; 636 | } 637 | .row-fluid .offset6:first-child { 638 | margin-left: 51.38121546961326%; 639 | *margin-left: 51.27483249088986%; 640 | } 641 | .row-fluid .offset5 { 642 | margin-left: 45.58011049723757%; 643 | *margin-left: 45.47372751851417%; 644 | } 645 | .row-fluid .offset5:first-child { 646 | margin-left: 42.81767955801105%; 647 | *margin-left: 42.71129657928765%; 648 | } 649 | .row-fluid .offset4 { 650 | margin-left: 37.01657458563536%; 651 | *margin-left: 36.91019160691196%; 652 | } 653 | .row-fluid .offset4:first-child { 654 | margin-left: 34.25414364640884%; 655 | *margin-left: 34.14776066768544%; 656 | } 657 | .row-fluid .offset3 { 658 | margin-left: 28.45303867403315%; 659 | *margin-left: 28.346655695309746%; 660 | } 661 | .row-fluid .offset3:first-child { 662 | margin-left: 25.69060773480663%; 663 | *margin-left: 25.584224756083227%; 664 | } 665 | .row-fluid .offset2 { 666 | margin-left: 19.88950276243094%; 667 | *margin-left: 19.783119783707537%; 668 | } 669 | .row-fluid .offset2:first-child { 670 | margin-left: 17.12707182320442%; 671 | *margin-left: 17.02068884448102%; 672 | } 673 | .row-fluid .offset1 { 674 | margin-left: 11.32596685082873%; 675 | *margin-left: 11.219583872105325%; 676 | } 677 | .row-fluid .offset1:first-child { 678 | margin-left: 8.56353591160221%; 679 | *margin-left: 8.457152932878806%; 680 | } 681 | input, 682 | textarea, 683 | .uneditable-input { 684 | margin-left: 0; 685 | } 686 | .controls-row [class*="span"] + [class*="span"] { 687 | margin-left: 20px; 688 | } 689 | input.span12, textarea.span12, .uneditable-input.span12 { 690 | width: 710px; 691 | } 692 | input.span11, textarea.span11, .uneditable-input.span11 { 693 | width: 648px; 694 | } 695 | input.span10, textarea.span10, .uneditable-input.span10 { 696 | width: 586px; 697 | } 698 | input.span9, textarea.span9, .uneditable-input.span9 { 699 | width: 524px; 700 | } 701 | input.span8, textarea.span8, .uneditable-input.span8 { 702 | width: 462px; 703 | } 704 | input.span7, textarea.span7, .uneditable-input.span7 { 705 | width: 400px; 706 | } 707 | input.span6, textarea.span6, .uneditable-input.span6 { 708 | width: 338px; 709 | } 710 | input.span5, textarea.span5, .uneditable-input.span5 { 711 | width: 276px; 712 | } 713 | input.span4, textarea.span4, .uneditable-input.span4 { 714 | width: 214px; 715 | } 716 | input.span3, textarea.span3, .uneditable-input.span3 { 717 | width: 152px; 718 | } 719 | input.span2, textarea.span2, .uneditable-input.span2 { 720 | width: 90px; 721 | } 722 | input.span1, textarea.span1, .uneditable-input.span1 { 723 | width: 28px; 724 | } 725 | } 726 | @media (max-width: 767px) { 727 | body { 728 | padding-left: 20px; 729 | padding-right: 20px; 730 | } 731 | .navbar-fixed-top, 732 | .navbar-fixed-bottom, 733 | .navbar-static-top { 734 | margin-left: -20px; 735 | margin-right: -20px; 736 | } 737 | .container-fluid { 738 | padding: 0; 739 | } 740 | .dl-horizontal dt { 741 | float: none; 742 | clear: none; 743 | width: auto; 744 | text-align: left; 745 | } 746 | .dl-horizontal dd { 747 | margin-left: 0; 748 | } 749 | .container { 750 | width: auto; 751 | } 752 | .row-fluid { 753 | width: 100%; 754 | } 755 | .row, 756 | .thumbnails { 757 | margin-left: 0; 758 | } 759 | .thumbnails > li { 760 | float: none; 761 | margin-left: 0; 762 | } 763 | [class*="span"], 764 | .uneditable-input[class*="span"], 765 | .row-fluid [class*="span"] { 766 | float: none; 767 | display: block; 768 | width: 100%; 769 | margin-left: 0; 770 | -webkit-box-sizing: border-box; 771 | -moz-box-sizing: border-box; 772 | box-sizing: border-box; 773 | } 774 | .span12, 775 | .row-fluid .span12 { 776 | width: 100%; 777 | -webkit-box-sizing: border-box; 778 | -moz-box-sizing: border-box; 779 | box-sizing: border-box; 780 | } 781 | .row-fluid [class*="offset"]:first-child { 782 | margin-left: 0; 783 | } 784 | .input-large, 785 | .input-xlarge, 786 | .input-xxlarge, 787 | input[class*="span"], 788 | select[class*="span"], 789 | textarea[class*="span"], 790 | .uneditable-input { 791 | display: block; 792 | width: 100%; 793 | min-height: 34px; 794 | -webkit-box-sizing: border-box; 795 | -moz-box-sizing: border-box; 796 | box-sizing: border-box; 797 | } 798 | .input-prepend input, 799 | .input-append input, 800 | .input-prepend input[class*="span"], 801 | .input-append input[class*="span"] { 802 | display: inline-block; 803 | width: auto; 804 | } 805 | .controls-row [class*="span"] + [class*="span"] { 806 | margin-left: 0; 807 | } 808 | .modal { 809 | position: fixed; 810 | top: 20px; 811 | left: 20px; 812 | right: 20px; 813 | width: auto; 814 | margin: 0; 815 | } 816 | .modal.fade { 817 | top: -100px; 818 | } 819 | .modal.fade.in { 820 | top: 20px; 821 | } 822 | } 823 | @media (max-width: 480px) { 824 | .nav-collapse { 825 | -webkit-transform: translate3d(0, 0, 0); 826 | } 827 | .page-header h1 small { 828 | display: block; 829 | line-height: 24px; 830 | } 831 | input[type="checkbox"], 832 | input[type="radio"] { 833 | border: 1px solid #ccc; 834 | } 835 | .form-horizontal .control-label { 836 | float: none; 837 | width: auto; 838 | padding-top: 0; 839 | text-align: left; 840 | } 841 | .form-horizontal .controls { 842 | margin-left: 0; 843 | } 844 | .form-horizontal .control-list { 845 | padding-top: 0; 846 | } 847 | .form-horizontal .form-actions { 848 | padding-left: 10px; 849 | padding-right: 10px; 850 | } 851 | .media .pull-left, 852 | .media .pull-right { 853 | float: none; 854 | display: block; 855 | margin-bottom: 10px; 856 | } 857 | .media-object { 858 | margin-right: 0; 859 | margin-left: 0; 860 | } 861 | .modal { 862 | top: 10px; 863 | left: 10px; 864 | right: 10px; 865 | } 866 | .modal-header .close { 867 | padding: 10px; 868 | margin: -10px; 869 | } 870 | .carousel-caption { 871 | position: static; 872 | } 873 | } 874 | @media (max-width: 979px) { 875 | body { 876 | padding-top: 0; 877 | } 878 | .navbar-fixed-top, 879 | .navbar-fixed-bottom { 880 | position: static; 881 | } 882 | .navbar-fixed-top { 883 | margin-bottom: 24px; 884 | } 885 | .navbar-fixed-bottom { 886 | margin-top: 24px; 887 | } 888 | .navbar-fixed-top .navbar-inner, 889 | .navbar-fixed-bottom .navbar-inner { 890 | padding: 5px; 891 | } 892 | .navbar .container { 893 | width: auto; 894 | padding: 0; 895 | } 896 | .navbar .brand { 897 | padding-left: 10px; 898 | padding-right: 10px; 899 | margin: 0 0 0 -5px; 900 | } 901 | .nav-collapse { 902 | clear: both; 903 | } 904 | .nav-collapse .nav { 905 | float: none; 906 | margin: 0 0 12px; 907 | } 908 | .nav-collapse .nav > li { 909 | float: none; 910 | } 911 | .nav-collapse .nav > li > a { 912 | margin-bottom: 2px; 913 | } 914 | .nav-collapse .nav > .divider-vertical { 915 | display: none; 916 | } 917 | .nav-collapse .nav .nav-header { 918 | color: #0a4264; 919 | text-shadow: none; 920 | } 921 | .nav-collapse .nav > li > a, 922 | .nav-collapse .dropdown-menu a { 923 | padding: 9px 15px; 924 | font-weight: bold; 925 | color: #617b8c; 926 | -webkit-border-radius: 3px; 927 | -moz-border-radius: 3px; 928 | border-radius: 3px; 929 | /* SA */ 930 | text-align: left; 931 | } 932 | .nav-collapse .btn { 933 | padding: 4px 10px 4px; 934 | font-weight: normal; 935 | -webkit-border-radius: 4px; 936 | -moz-border-radius: 4px; 937 | border-radius: 4px; 938 | } 939 | .nav-collapse .dropdown-menu li + li a { 940 | margin-bottom: 2px; 941 | } 942 | .nav-collapse .nav > li > a:hover, 943 | .nav-collapse .dropdown-menu a:hover { 944 | background-color: #f2f2f2; 945 | } 946 | .navbar-inverse .nav-collapse .nav > li > a, 947 | .navbar-inverse .nav-collapse .dropdown-menu a { 948 | color: #999999; 949 | } 950 | .navbar-inverse .nav-collapse .nav > li > a:hover, 951 | .navbar-inverse .nav-collapse .dropdown-menu a:hover { 952 | background-color: #111111; 953 | } 954 | .nav-collapse.in .btn-group { 955 | margin-top: 5px; 956 | padding: 0; 957 | } 958 | .nav-collapse .dropdown-menu { 959 | position: static; 960 | top: auto; 961 | left: auto; 962 | float: none; 963 | display: none; 964 | max-width: none; 965 | margin: 0 15px; 966 | padding: 0; 967 | background-color: transparent; 968 | border: none; 969 | -webkit-border-radius: 0; 970 | -moz-border-radius: 0; 971 | border-radius: 0; 972 | -webkit-box-shadow: none; 973 | -moz-box-shadow: none; 974 | box-shadow: none; 975 | } 976 | .nav-collapse .open > .dropdown-menu { 977 | display: block; 978 | } 979 | .nav-collapse .dropdown-menu:before, 980 | .nav-collapse .dropdown-menu:after { 981 | display: none; 982 | } 983 | .nav-collapse .dropdown-menu .divider { 984 | display: none; 985 | } 986 | .nav-collapse .nav > li > .dropdown-menu:before, 987 | .nav-collapse .nav > li > .dropdown-menu:after { 988 | display: none; 989 | } 990 | .nav-collapse .navbar-form, 991 | .nav-collapse .navbar-search { 992 | float: none; 993 | padding: 12px 15px; 994 | margin: 12px 0; 995 | border-top: 1px solid #f2f2f2; 996 | border-bottom: 1px solid #f2f2f2; 997 | -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); 998 | -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); 999 | box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); 1000 | } 1001 | .navbar-inverse .nav-collapse .navbar-form, 1002 | .navbar-inverse .nav-collapse .navbar-search { 1003 | border-top-color: #111111; 1004 | border-bottom-color: #111111; 1005 | } 1006 | .navbar .nav-collapse .nav.pull-right { 1007 | float: none; 1008 | margin-left: 0; 1009 | } 1010 | .nav-collapse, 1011 | .nav-collapse.collapse { 1012 | overflow: hidden; 1013 | height: 0; 1014 | } 1015 | .navbar .btn-navbar { 1016 | display: block; 1017 | } 1018 | .navbar-static .navbar-inner { 1019 | padding-left: 10px; 1020 | padding-right: 10px; 1021 | } 1022 | } 1023 | @media (min-width: 980px) { 1024 | .nav-collapse.collapse { 1025 | height: auto !important; 1026 | overflow: visible !important; 1027 | } 1028 | } 1029 | -------------------------------------------------------------------------------- /files/rubio-marco-eFD_ Annual-Report-for-2014_files/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap.js by @fat & @mdo 3 | * Copyright 2012 Twitter, Inc. 4 | * http://www.apache.org/licenses/LICENSE-2.0.txt 5 | */ 6 | !function($){"use strict";$(function(){$.support.transition=function(){var transitionEnd=function(){var name,el=document.createElement("bootstrap"),transEndEventNames={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(name in transEndEventNames)if(void 0!==el.style[name])return transEndEventNames[name]}();return transitionEnd&&{end:transitionEnd}}()})}(window.jQuery),!function($){"use strict";var dismiss='[data-dismiss="alert"]',Alert=function(el){$(el).on("click",dismiss,this.close)};Alert.prototype.close=function(e){function removeElement(){$parent.trigger("closed").remove()}var $parent,$this=$(this),selector=$this.attr("data-target");selector||(selector=$this.attr("href"),selector=selector&&selector.replace(/.*(?=#[^\s]*$)/,"")),$parent=$(selector),e&&e.preventDefault(),$parent.length||($parent=$this.hasClass("alert")?$this:$this.parent()),$parent.trigger(e=$.Event("close")),e.isDefaultPrevented()||($parent.removeClass("in"),$.support.transition&&$parent.hasClass("fade")?$parent.on($.support.transition.end,removeElement):removeElement())};var old=$.fn.alert;$.fn.alert=function(option){return this.each(function(){var $this=$(this),data=$this.data("alert");data||$this.data("alert",data=new Alert(this)),"string"==typeof option&&data[option].call($this)})},$.fn.alert.Constructor=Alert,$.fn.alert.noConflict=function(){return $.fn.alert=old,this},$(document).on("click.alert.data-api",dismiss,Alert.prototype.close)}(window.jQuery),!function($){"use strict";var Button=function(element,options){this.$element=$(element),this.options=$.extend({},$.fn.button.defaults,options)};Button.prototype.setState=function(state){var d="disabled",$el=this.$element,data=$el.data(),val=$el.is("input")?"val":"html";state+="Text",data.resetText||$el.data("resetText",$el[val]()),$el[val](data[state]||this.options[state]),setTimeout(function(){"loadingText"==state?$el.addClass(d).attr(d,d):$el.removeClass(d).removeAttr(d)},0)},Button.prototype.toggle=function(){var $parent=this.$element.closest('[data-toggle="buttons-radio"]');$parent&&$parent.find(".active").removeClass("active"),this.$element.toggleClass("active")};var old=$.fn.button;$.fn.button=function(option){return this.each(function(){var $this=$(this),data=$this.data("button"),options="object"==typeof option&&option;data||$this.data("button",data=new Button(this,options)),"toggle"==option?data.toggle():option&&data.setState(option)})},$.fn.button.defaults={loadingText:"loading..."},$.fn.button.Constructor=Button,$.fn.button.noConflict=function(){return $.fn.button=old,this},$(document).on("click.button.data-api","[data-toggle^=button]",function(e){var $btn=$(e.target);$btn.hasClass("btn")||($btn=$btn.closest(".btn")),$btn.button("toggle")})}(window.jQuery),!function($){"use strict";var Carousel=function(element,options){this.$element=$(element),this.options=options,"hover"==this.options.pause&&this.$element.on("mouseenter",$.proxy(this.pause,this)).on("mouseleave",$.proxy(this.cycle,this))};Carousel.prototype={cycle:function(e){return e||(this.paused=!1),this.options.interval&&!this.paused&&(this.interval=setInterval($.proxy(this.next,this),this.options.interval)),this},to:function(pos){var $active=this.$element.find(".item.active"),children=$active.parent().children(),activePos=children.index($active),that=this;if(!(pos>children.length-1||0>pos))return this.sliding?this.$element.one("slid",function(){that.to(pos)}):activePos==pos?this.pause().cycle():this.slide(pos>activePos?"next":"prev",$(children[pos]))},pause:function(e){return e||(this.paused=!0),this.$element.find(".next, .prev").length&&$.support.transition.end&&(this.$element.trigger($.support.transition.end),this.cycle()),clearInterval(this.interval),this.interval=null,this},next:function(){return this.sliding?void 0:this.slide("next")},prev:function(){return this.sliding?void 0:this.slide("prev")},slide:function(type,next){var e,$active=this.$element.find(".item.active"),$next=next||$active[type](),isCycling=this.interval,direction="next"==type?"left":"right",fallback="next"==type?"first":"last",that=this;if(this.sliding=!0,isCycling&&this.pause(),$next=$next.length?$next:this.$element.find(".item")[fallback](),e=$.Event("slide",{relatedTarget:$next[0]}),!$next.hasClass("active")){if($.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(e),e.isDefaultPrevented())return;$next.addClass(type),$next[0].offsetWidth,$active.addClass(direction),$next.addClass(direction),this.$element.one($.support.transition.end,function(){$next.removeClass([type,direction].join(" ")).addClass("active"),$active.removeClass(["active",direction].join(" ")),that.sliding=!1,setTimeout(function(){that.$element.trigger("slid")},0)})}else{if(this.$element.trigger(e),e.isDefaultPrevented())return;$active.removeClass("active"),$next.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return isCycling&&this.cycle(),this}}};var old=$.fn.carousel;$.fn.carousel=function(option){return this.each(function(){var $this=$(this),data=$this.data("carousel"),options=$.extend({},$.fn.carousel.defaults,"object"==typeof option&&option),action="string"==typeof option?option:options.slide;data||$this.data("carousel",data=new Carousel(this,options)),"number"==typeof option?data.to(option):action?data[action]():options.interval&&data.cycle()})},$.fn.carousel.defaults={interval:5e3,pause:"hover"},$.fn.carousel.Constructor=Carousel,$.fn.carousel.noConflict=function(){return $.fn.carousel=old,this},$(document).on("click.carousel.data-api","[data-slide]",function(e){var href,$this=$(this),$target=$($this.attr("data-target")||(href=$this.attr("href"))&&href.replace(/.*(?=#[^\s]+$)/,"")),options=$.extend({},$target.data(),$this.data());$target.carousel(options),e.preventDefault()})}(window.jQuery),!function($){"use strict";var Collapse=function(element,options){this.$element=$(element),this.options=$.extend({},$.fn.collapse.defaults,options),this.options.parent&&(this.$parent=$(this.options.parent)),this.options.toggle&&this.toggle()};Collapse.prototype={constructor:Collapse,dimension:function(){var hasWidth=this.$element.hasClass("width");return hasWidth?"width":"height"},show:function(){var dimension,scroll,actives,hasData;if(!this.transitioning){if(dimension=this.dimension(),scroll=$.camelCase(["scroll",dimension].join("-")),actives=this.$parent&&this.$parent.find("> .accordion-group > .in"),actives&&actives.length){if(hasData=actives.data("collapse"),hasData&&hasData.transitioning)return;actives.collapse("hide"),hasData||actives.data("collapse",null)}this.$element[dimension](0),this.transition("addClass",$.Event("show"),"shown"),$.support.transition&&this.$element[dimension](this.$element[0][scroll])}},hide:function(){var dimension;this.transitioning||(dimension=this.dimension(),this.reset(this.$element[dimension]()),this.transition("removeClass",$.Event("hide"),"hidden"),this.$element[dimension](0))},reset:function(size){var dimension=this.dimension();return this.$element.removeClass("collapse")[dimension](size||"auto")[0].offsetWidth,this.$element[null!==size?"addClass":"removeClass"]("collapse"),this},transition:function(method,startEvent,completeEvent){var that=this,complete=function(){"show"==startEvent.type&&that.reset(),that.transitioning=0,that.$element.trigger(completeEvent)};this.$element.trigger(startEvent),startEvent.isDefaultPrevented()||(this.transitioning=1,this.$element[method]("in"),$.support.transition&&this.$element.hasClass("collapse")?this.$element.one($.support.transition.end,complete):complete())},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var old=$.fn.collapse;$.fn.collapse=function(option){return this.each(function(){var $this=$(this),data=$this.data("collapse"),options="object"==typeof option&&option;data||$this.data("collapse",data=new Collapse(this,options)),"string"==typeof option&&data[option]()})},$.fn.collapse.defaults={toggle:!0},$.fn.collapse.Constructor=Collapse,$.fn.collapse.noConflict=function(){return $.fn.collapse=old,this},$(document).on("click.collapse.data-api","[data-toggle=collapse]",function(e){var href,$this=$(this),target=$this.attr("data-target")||e.preventDefault()||(href=$this.attr("href"))&&href.replace(/.*(?=#[^\s]+$)/,""),option=$(target).data("collapse")?"toggle":$this.data();$this[$(target).hasClass("in")?"addClass":"removeClass"]("collapsed"),$(target).collapse(option)})}(window.jQuery),!function($){"use strict";function clearMenus(){$(toggle).each(function(){getParent($(this)).removeClass("open")})}function getParent($this){var $parent,selector=$this.attr("data-target");return selector||(selector=$this.attr("href"),selector=selector&&/#/.test(selector)&&selector.replace(/.*(?=#[^\s]*$)/,"")),$parent=$(selector),$parent.length||($parent=$this.parent()),$parent}var toggle="[data-toggle=dropdown]",Dropdown=function(element){var $el=$(element).on("click.dropdown.data-api",this.toggle);$("html").on("click.dropdown.data-api",function(){$el.parent().removeClass("open")})};Dropdown.prototype={constructor:Dropdown,toggle:function(){var $parent,isActive,$this=$(this);if(!$this.is(".disabled, :disabled"))return $parent=getParent($this),isActive=$parent.hasClass("open"),clearMenus(),isActive||$parent.toggleClass("open"),$this.focus(),!1},keydown:function(e){var $this,$items,$parent,isActive,index;if(/(38|40|27)/.test(e.keyCode)&&($this=$(this),e.preventDefault(),e.stopPropagation(),!$this.is(".disabled, :disabled"))){if($parent=getParent($this),isActive=$parent.hasClass("open"),!isActive||isActive&&27==e.keyCode)return $this.click();$items=$("[role=menu] li:not(.divider):visible a",$parent),$items.length&&(index=$items.index($items.filter(":focus")),38==e.keyCode&&index>0&&index--,40==e.keyCode&&$items.length-1>index&&index++,~index||(index=0),$items.eq(index).focus())}}};var old=$.fn.dropdown;$.fn.dropdown=function(option){return this.each(function(){var $this=$(this),data=$this.data("dropdown");data||$this.data("dropdown",data=new Dropdown(this)),"string"==typeof option&&data[option].call($this)})},$.fn.dropdown.Constructor=Dropdown,$.fn.dropdown.noConflict=function(){return $.fn.dropdown=old,this},$(document).on("click.dropdown.data-api touchstart.dropdown.data-api",clearMenus).on("click.dropdown touchstart.dropdown.data-api",".dropdown form",function(e){e.stopPropagation()}).on("touchstart.dropdown.data-api",".dropdown-menu",function(e){e.stopPropagation()}).on("click.dropdown.data-api touchstart.dropdown.data-api",toggle,Dropdown.prototype.toggle).on("keydown.dropdown.data-api touchstart.dropdown.data-api",toggle+", [role=menu]",Dropdown.prototype.keydown)}(window.jQuery),!function($){"use strict";var Modal=function(element,options){this.options=options,this.$element=$(element).delegate('[data-dismiss="modal"]',"click.dismiss.modal",$.proxy(this.hide,this)),this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};Modal.prototype={constructor:Modal,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var that=this,e=$.Event("show");this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.backdrop(function(){var transition=$.support.transition&&that.$element.hasClass("fade");that.$element.parent().length||that.$element.appendTo(document.body),that.$element.show(),transition&&that.$element[0].offsetWidth,that.$element.addClass("in").attr("aria-hidden",!1),that.enforceFocus(),transition?that.$element.one($.support.transition.end,function(){that.$element.focus().trigger("shown")}):that.$element.focus().trigger("shown")}))},hide:function(e){e&&e.preventDefault(),e=$.Event("hide"),this.$element.trigger(e),this.isShown&&!e.isDefaultPrevented()&&(this.isShown=!1,this.escape(),$(document).off("focusin.modal"),this.$element.removeClass("in").attr("aria-hidden",!0),$.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal())},enforceFocus:function(){var that=this;$(document).on("focusin.modal",function(e){that.$element[0]===e.target||that.$element.has(e.target).length||that.$element.focus()})},escape:function(){var that=this;this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.modal",function(e){27==e.which&&that.hide()}):this.isShown||this.$element.off("keyup.dismiss.modal")},hideWithTransition:function(){var that=this,timeout=setTimeout(function(){that.$element.off($.support.transition.end),that.hideModal()},500);this.$element.one($.support.transition.end,function(){clearTimeout(timeout),that.hideModal()})},hideModal:function(){this.$element.hide().trigger("hidden"),this.backdrop()},removeBackdrop:function(){this.$backdrop.remove(),this.$backdrop=null},backdrop:function(callback){var animate=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var doAnimate=$.support.transition&&animate;this.$backdrop=$('