text: /*! DataTables Bootstrap 3 integration
   * ©2011-2015 SpryMedia Ltd - datatables.net/license
   */
  
  /**
   * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and
   * DataTables 1.10 or newer.
   *
   * This file sets the defaults and adds options to DataTables to style its
   * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
   * for further information.
   */
  (function (factory) {
      if (typeof define === 'function' && define.amd) {
          // AMD
          define(['jquery', 'datatables.net'], function ($) {
              return factory($, window, document);
          });
      }
      else if (typeof exports === 'object') {
          // CommonJS
          module.exports = function (root, $) {
              if (!root) {
                  root = window;
              }
  
              if (!$ || !$.fn.dataTable) {
                  // Require DataTables, which attaches to jQuery, including
                  // jQuery if needed and have a $ property so we can access the
                  // jQuery object that is used
                  $ = require('datatables.net')(root, $).$;
              }
  
              return factory($, root, root.document);
          };
      }
      else {
          // Browser
          factory(jQuery, window, document);
      }
  }(function ($, window, document, undefined) {
      'use strict';
      var DataTable = $.fn.dataTable;
  
      /* Set the defaults for DataTables initialisation */
      $.extend(true, DataTable.defaults, {
          dom:
              "<'row'<'col-sm-6'l><'col-sm-6'f>>" +
              "<'row'<'col-sm-12'tr>>" +
              "<'row'<'col-sm-5'i><'col-sm-7'p>>",
          renderer: 'bootstrap'
      });
  
      /* Default class modification */
      $.extend(DataTable.ext.classes, {
          sWrapper: "dataTables_wrapper form-inline dt-bootstrap",
          sFilterInput: "form-control input-sm",
          sLengthSelect: "form-control input-sm",
          sProcessing: "dataTables_processing panel panel-default"
      });
  
      /* Bootstrap paging button renderer */
      DataTable.ext.renderer.pageButton.bootstrap = function (settings, host, idx, buttons, page, pages) {
          var api = new DataTable.Api(settings);
          var classes = settings.oClasses;
          var lang = settings.oLanguage.oPaginate;
          var aria = settings.oLanguage.oAria.paginate || {};
          var btnDisplay, btnClass, counter = 0;
  
          var attach = function (container, buttons) {
              var i, ien, node, button;
              var clickHandler = function (e) {
                  e.preventDefault();
                  if (!$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action) {
                      api.page(e.data.action).draw('page');
                  }
              };
  
              for (i = 0, ien = buttons.length; i < ien; i++) {
                  button = buttons[i];
  
                  if ($.isArray(button)) {
                      attach(container, button);
                  }
                  else {
                      btnDisplay = '';
                      btnClass = '';
  
                      switch (button) {
                          case 'ellipsis':
                              btnDisplay = '&#x2026;';
                              btnClass = 'disabled';
                              break;
  
                          case 'first':
                              btnDisplay = lang.sFirst;
                              btnClass = button + (page > 0 ?
                                  '' : ' disabled');
                              break;
  
                          case 'previous':
                              btnDisplay = lang.sPrevious;
                              btnClass = button + (page > 0 ?
                                  '' : ' disabled');
                              break;
  
                          case 'next':
                              btnDisplay = lang.sNext;
                              btnClass = button + (page < pages - 1 ?
                                  '' : ' disabled');
                              break;
  
                          case 'last':
                              btnDisplay = lang.sLast;
                              btnClass = button + (page < pages - 1 ?
                                  '' : ' disabled');
                              break;
  
                          default:
                              btnDisplay = button + 1;
                              btnClass = page === button ?
                                  'active' : '';
                              break;
                      }
  
                      if (btnDisplay) {
                          node = $('<li>', {
                              'class': classes.sPageButton + ' ' + btnClass,
                              'id': idx === 0 && typeof button === 'string' ?
                                  settings.sTableId + '_' + button :
                                  null
                          })
                              .append($('<a>', {
                                  'href': '#',
                                  'aria-controls': settings.sTableId,
                                  'aria-label': aria[button],
                                  'data-dt-idx': counter,
                                  'tabindex': settings.iTabIndex
                              })
                                  .html(btnDisplay)
                              )
                              .appendTo(container);
  
                          settings.oApi._fnBindAction(
                              node, { action: button }, clickHandler
                          );
  
                          counter++;
                      }
                  }
              }
          };
  
          // IE9 throws an 'unknown error' if document.activeElement is used
          // inside an iframe or frame.
          var activeEl;
  
          try {
              // Because this approach is destroying and recreating the paging
              // elements, focus is lost on the select button which is bad for
              // accessibility. So we want to restore focus once the draw has
              // completed
              activeEl = $(host).find(document.activeElement).data('dt-idx');
          }
          catch (e) { }
  
          attach(
              $(host).empty().html('<ul class="pagination"/>').children('ul'),
              buttons
          );
  
          if (activeEl !== undefined) {
              $(host).find('[data-dt-idx=' + activeEl + ']').trigger('focus');
          }
      };
  
      return DataTable;
  }));