Roboy Audio

This project aims to implement human-like hearing skills. This with the use of the eight Microphones from the Matrix Creator board.

Status

Stable functionality:

  • Audio stream from the 8 Mics through ROS
  • Recieving Audio stream in python
  • Azimutal angle localization of one Audio source, with low resolution
  • Publishing the angles onto a rostopic

In development:

  • Recognition of several xylophone key tones
  • Localization with higher resolution

Contents:

Installation

We use catkin to build our tools. So make sure that you have a working catkin workspace.

Prerequisites & Dependencies

The roboy_communication_cognition package. It can be found in the roboy_communication repository (https://github.com/Roboy/roboy_communication). Best practice is to store the repository in the source folder of your catkin workspace.

libgstreamer1.0-0, libgstreamer1.0-dev, libgstreamer-plugins-base1.0-0, libgstreamer-plugins-base1.0-dev, gstreamer1.0-plugins-ugly & gstreamer1.0-plugins-good, fftw3, libgflags-dev To have them installed, you need to simply do sudo apt install <package_name>

In addition doa_estimation is just build and executable on a Raspberry Pi, since it uses it’s Libraries and the current version just works with a Matrix Creator and a Pi.

Using command line

Clone the audio repository into the source folder of your catkin workspace. git clone https://github.com/Roboy/roboy_audio /path/to/catkin_workspace/src/roboy_audio

Navigate to your catkin workspace. cd /path/to/catkin_workspace

Make the packages. The available packages are: doa_estimation, roboy_audio_stream catkin_make --pkg <package_name>

Have fun with roslaunch. Start the direction of arrival estimation roslaunch doa_estimation matrix_doa.launch

Capture and stream audio from the default audio source roslaunch roboy_audio_stream capture.launch

Capture and stream audio from the 8 Matrix Creator microphones roslaunch roboy_audio_stream capture_matrix_mics.launch

Start the stream receiver template node roslaunch roboy_audio_stream receive_py.launch

Using IDE (Clion)

Clone the audio repository. git clone https://github.com/Roboy/roboy_audio

Now open the CMakeLists.txt from the package that you want to edit.

Getting started

How does it work?

You can roslaunch or rosrun every node that is currently released. But you will need a sound source from which the algorithms can get needed data. For that you can either use a Matrix Creator and run the rosnodes on it or try to change the rostopic names inside of the code and use it for your own sources.

How to extend it?

You can create new rosnodes, by adding new catkin packages to the root folder (roboy_audio). You can find a Tutorial for creating catkin packages on the ROS Tutorial side (http://wiki.ros.org/ROS/Tutorials/CreatingPackage).

API

namespace conf

Variables

string conf.on_rtd = ‘True’
list conf.extensions = [ ‘sphinx.ext.autodoc’, ‘sphinx.ext.doctest’, ‘sphinx.ext.intersphinx’, ‘sphinx.ext.todo’, ‘sphinx.ext.coverage’, ‘sphinx.ext.mathjax’, ‘sphinx.ext.ifconfig’, ‘sphinx.ext.viewcode’, ‘breathe’, ]
list conf.templates_path = [‘_templates’]
string conf.source_suffix = ‘.rst’
string conf.master_doc = ‘index’
string conf.project = u’Architecture Documentation Wiki’
string conf.copyright = u‘2016, Raphael Dürscheid, based on Template by Dr. Peter’
string conf.author = u’Raphael Dürscheid, based on Template by Dr. Peter’
string conf.version = u‘0.0.’
string conf.release = u‘0.0.’
dictionary conf.breathe_projects = { project: “doxyxml/” }
breathe_default_project = project
string conf.language = ‘en’
list conf.exclude_patterns = []
string conf.pygments_style = ‘sphinx’
bool conf.todo_include_todos = True
string conf.html_theme = “sphinx_rtd_theme”
list conf.html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
list conf.html_static_path = [‘_static’]
string conf.htmlhelp_basename = ‘ArchitectureDocumentationWikidoc’
dictionary conf.latex_elements = { # The paper size (‘letterpaper’ or ‘a4paper’). # # ‘papersize’: ‘letterpaper’, # The font size (‘10pt’, ‘11pt’ or ‘12pt’). # # ‘pointsize’: ‘10pt’, # Additional stuff for the LaTeX preamble. # # ‘preamble’: ‘’, # Latex figure (float) alignment # # ‘figure_align’: ‘htbp’, }
list conf.man_pages = [ (master_doc, ‘architecturedocumentationwiki’, u’Architecture Documentation Wiki Documentation’, [author], 1) ]
list conf.texinfo_documents = [ (master_doc, ‘ArchitectureDocumentationWiki’, u’Architecture Documentation Wiki Documentation’, author, ‘ArchitectureDocumentationWiki’, ‘One line description of project.’, ‘Miscellaneous’), ]
dictionary conf.intersphinx_mapping = {‘https://docs.python.org/’: None}
string conf.SUFFIX = source_suffix
bool conf.using_rtd_theme = False
html_style = None
dictionary conf.html_theme_options = {}
string conf.websupport2_base_url = ‘https://readthedocs.org/websupport’
string conf.websupport2_static_url = ‘https://media.readthedocs.org/static/’
dictionary conf.context
html_context = context
file about-arc42.rst.txt

Variables

About arc42 =========== arc42
About the Template for documentation of software and system architecture By Dr Gernot Starke
About the Template for documentation of software and system architecture By Dr Gernot Dr Peter Hruschka and contributors Template Revision
About the Template for documentation of software and system architecture By Dr Gernot Dr Peter Hruschka and contributors Template Juni © We acknowledge that this document uses material from the arc architecture template
About the Template for documentation of software and system architecture By Dr Gernot Dr Peter Hruschka and contributors Template Juni © We acknowledge that this document uses material from the arc architecture http
About the Template for documentation of software and system architecture By Dr Gernot Dr Peter Hruschka and contributors Template Juni © We acknowledge that this document uses material from the arc architecture Auflage Starke Hruschka Gernot Starke und Peter Hruschka
About the Template for documentation of software and system architecture By Dr Gernot Dr Peter Hruschka and contributors Template Juni © We acknowledge that this document uses material from the arc architecture Auflage Starke Hruschka Gernot Starke und Peter Auflage Zörner Softwarearchitekturen dokumentieren und kommunizieren
About the Template for documentation of software and system architecture By Dr Gernot Dr Peter Hruschka and contributors Template Juni © We acknowledge that this document uses material from the arc architecture Auflage Starke Hruschka Gernot Starke und Peter Auflage Zörner Softwarearchitekturen dokumentieren und Carl Hanser Verlag
file about-arc42.rst.txt

Variables

About arc42 =========== arc42
About the Template for documentation of software and system architecture By Dr Gernot Starke
About the Template for documentation of software and system architecture By Dr Gernot Dr Peter Hruschka and contributors Template Revision
About the Template for documentation of software and system architecture By Dr Gernot Dr Peter Hruschka and contributors Template Juni © We acknowledge that this document uses material from the arc architecture template
About the Template for documentation of software and system architecture By Dr Gernot Dr Peter Hruschka and contributors Template Juni © We acknowledge that this document uses material from the arc architecture http
About the Template for documentation of software and system architecture By Dr Gernot Dr Peter Hruschka and contributors Template Juni © We acknowledge that this document uses material from the arc architecture Auflage Starke Hruschka Gernot Starke und Peter Hruschka
About the Template for documentation of software and system architecture By Dr Gernot Dr Peter Hruschka and contributors Template Juni © We acknowledge that this document uses material from the arc architecture Auflage Starke Hruschka Gernot Starke und Peter Auflage Zörner Softwarearchitekturen dokumentieren und kommunizieren
About the Template for documentation of software and system architecture By Dr Gernot Dr Peter Hruschka and contributors Template Juni © We acknowledge that this document uses material from the arc architecture Auflage Starke Hruschka Gernot Starke und Peter Auflage Zörner Softwarearchitekturen dokumentieren und Carl Hanser Verlag
file index.rst.txt

Variables

Architecture Documentation Wiki documentation master file
Architecture Documentation Wiki documentation master created by sphinx quickstart on Fri Jul
Architecture Documentation Wiki documentation master created by sphinx quickstart on Fri but it should at least contain the root toctree directive Roboy Audio =========================================================== This project aims to implement human-like hearing skills. This with the use of the eight Microphones from the Matrix Creator board. Status —— Stable functionality: - Audio stream from the 8 Mics through ROS - Recieving Audio stream in python - Azimutal angle localization of one Audio source
file index.rst.txt

Variables

Architecture Documentation Wiki documentation master file
Architecture Documentation Wiki documentation master created by sphinx quickstart on Fri Jul
Architecture Documentation Wiki documentation master created by sphinx quickstart on Fri but it should at least contain the root toctree directive Roboy Audio =========================================================== This project aims to implement human-like hearing skills. This with the use of the eight Microphones from the Matrix Creator board. Status —— Stable functionality: - Audio stream from the 8 Mics through ROS - Recieving Audio stream in python - Azimutal angle localization of one Audio source
file 6_API.rst.txt
file 6_API.rst.txt
file 0_installation.rst.txt
file 0_installation.rst.txt
file 1_getting_started.rst.txt

Variables

Getting started =============== How does it work? ----------------- You can roslaunch or rosrun every node that is currently released. But you will need a sound source from which the algorithms can get needed data. For that you can either use a Matrix Creator and run the rosnodes on it or try to change the rostopic names inside of the code and use it for your own sources. How to extend it? ----------------- You can create new rosnodes
file 1_getting_started.rst.txt

Variables

Getting started =============== How does it work? ----------------- You can roslaunch or rosrun every node that is currently released. But you will need a sound source from which the algorithms can get needed data. For that you can either use a Matrix Creator and run the rosnodes on it or try to change the rostopic names inside of the code and use it for your own sources. How to extend it? ----------------- You can create new rosnodes
file doctools.js

Functions

if(!jQuery. browser)
if(activeElementType! activeElementType! = = 'TEXTAREA'&&activeElementType!== 'INPUT'&&activeElementType!== 'SELECT')
document ready(function(){Documentation.init();} function(){Documentation.init();})

Variables

$u = _.noConflict()

select a different prefix for underscore

jQuery urldecode = function(x) { return decodeURIComponent(x).replace(/\+/g, ' '); }

make the code below compatible with browsers without an installed firebug like debugger if (!window.console || !console.firebug) { var names = [“log”, “debug”, “info”, “warn”, “error”, “assert”, “dir”, “dirxml”, “group”, “groupEnd”, “time”, “timeEnd”, “count”, “trace”, “profile”, “profileEnd”]; window.console = {}; for (var i = 0; i < names.length; ++i) window.console[names[i]] = function() {}; }

small helper function to urldecode strings

jQuery urlencode = encodeURIComponent

small helper function to urlencode strings

jQuery getQueryParameters = function(s) { if (typeof s === 'undefined') s = document.location.search; var parts = s.substr(s.indexOf('?') + 1).split('&'); var result = {}; for (var i = 0; i < parts.length; i++) { var tmp = parts[i].split('=', 2); var key = jQuery.urldecode(tmp[0]); var value = jQuery.urldecode(tmp[1]); if (key in result) result[key].push(value); else result[key] = [value]; } return result; }

This function returns the parsed url parameters of the current request.

Multiple values per key are supported, it will always return arrays of strings for the value parts.

jQuery fn highlightText

highlight a given string on a jquery object by wrapping it in span elements with the given class name.

var Documentation

Small JavaScript module for the documentation.

var initOnKeyListeners
_ = Documentation.gettext
file doctools.js

Functions

if(!jQuery. browser)
if(activeElementType! activeElementType! = = 'TEXTAREA'&&activeElementType!== 'INPUT'&&activeElementType!== 'SELECT')
document ready(function(){Documentation.init();} function(){Documentation.init();})

Variables

$u = _.noConflict()

select a different prefix for underscore

jQuery urldecode = function(x) { return decodeURIComponent(x).replace(/\+/g, ' '); }

make the code below compatible with browsers without an installed firebug like debugger if (!window.console || !console.firebug) { var names = [“log”, “debug”, “info”, “warn”, “error”, “assert”, “dir”, “dirxml”, “group”, “groupEnd”, “time”, “timeEnd”, “count”, “trace”, “profile”, “profileEnd”]; window.console = {}; for (var i = 0; i < names.length; ++i) window.console[names[i]] = function() {}; }

small helper function to urldecode strings

jQuery urlencode = encodeURIComponent

small helper function to urlencode strings

jQuery getQueryParameters = function(s) { if (typeof s === 'undefined') s = document.location.search; var parts = s.substr(s.indexOf('?') + 1).split('&'); var result = {}; for (var i = 0; i < parts.length; i++) { var tmp = parts[i].split('=', 2); var key = jQuery.urldecode(tmp[0]); var value = jQuery.urldecode(tmp[1]); if (key in result) result[key].push(value); else result[key] = [value]; } return result; }

This function returns the parsed url parameters of the current request.

Multiple values per key are supported, it will always return arrays of strings for the value parts.

jQuery fn highlightText

highlight a given string on a jquery object by wrapping it in span elements with the given class name.

var Documentation

Small JavaScript module for the documentation.

var initOnKeyListeners
_ = Documentation.gettext
file jquery-3.1.0.js

Functions

if(typeof module = =="object"&&typeof module.exports==="object")
function DOMEval(code code, doc doc)
jQuery extend({expando:"jQuery"+(version+Math.random()).replace(/D/g,""), isReady:true, error:function(msg){throw new Error(msg);}, noop:function(){}, isFunction:function(obj){return jQuery.type(obj)==="function";}, isArray:Array.isArray, isWindow:function(obj){return obj!=null &&obj===obj.window;}, isNumeric:function(obj){var type=jQuery.type(obj);return(type==="number"||type==="string")&&!isNaN(obj-parseFloat(obj));}, isPlainObject:function(obj){var proto, Ctor;if(!obj||toString.call(obj)!=="[object Object]"){return false;}proto=getProto(obj);if(!proto){return true;}Ctor=hasOwn.call(proto,"constructor")&&proto.constructor;return typeof Ctor==="function"&&fnToString.call(Ctor)===ObjectFunctionString;}, isEmptyObject:function(obj){var name;for(name in obj){return false;}return true;}, type:function(obj){if(obj==null){return obj+"";}return typeof obj==="object"||typeof obj==="function"?class2type[toString.call(obj)]||"object":typeof obj;}, globalEval:function(code){DOMEval(code);}, camelCase:function(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha, fcamelCase);}, nodeName:function(elem, name){return elem.nodeName &&elem.nodeName.toLowerCase()===name.toLowerCase();}, each:function(obj, callback){var length, i=0;if(isArrayLike(obj)){length=obj.length;for(;i< length;i++){if(callback.call(obj[i], i, obj[i])===false){break;}}}else{for(i in obj){if(callback.call(obj[i], i, obj[i])===false){break;}}}return obj;}, trim:function(text){return text==null?"":(text+"").replace(rtrim,"");}, makeArray:function(arr, results){var ret=results||[];if(arr!=null){if(isArrayLike(Object(arr))){jQuery.merge(ret, typeof arr==="string"?[arr]:arr);}else{push.call(ret, arr);}}return ret;}, inArray:function(elem, arr, i){return arr==null?-1:indexOf.call(arr, elem, i);}, merge:function(first, second){var len=+second.length, j=0, i=first.length;for(;j< len;j++){first[i++]=second[j];}first.length=i;return first;}, grep:function(elems, callback, invert){var callbackInverse, matches=[], i=0, length=elems.length, callbackExpect=!invert;for(;i< length;i++){callbackInverse=!callback(elems[i], i);if(callbackInverse!==callbackExpect){matches.push(elems[i]);}}return matches;}, map:function(elems, callback, arg){var length, value, i=0, ret=[];if(isArrayLike(elems)){length=elems.length;for(;i< length;i++){value=callback(elems[i], i, arg);if(value!=null){ret.push(value);}}}else{for(i in elems){value=callback(elems[i], i, arg);if(value!=null){ret.push(value);}}}return concat.apply([], ret);}, guid:1, proxy:function(fn, context){var tmp, args, proxy;if(typeof context==="string"){tmp=fn[context];context=fn;fn=tmp;}if(!jQuery.isFunction(fn)){return undefined;}args=slice.call(arguments, 2);proxy=function(){return fn.apply(context||this, args.concat(slice.call(arguments)));};proxy.guid=fn.guid=fn.guid||jQuery.guid++;return proxy;}, now:Date.now, support:support} {expando:"jQuery"+(version+Math.random()).replace(/D/g,""), isReady:true, error:function(msg){throw new Error(msg);}, noop:function(){}, isFunction:function(obj){return jQuery.type(obj)==="function";}, isArray:Array.isArray, isWindow:function(obj){return obj!=null &&obj===obj.window;}, isNumeric:function(obj){var type=jQuery.type(obj);return(type==="number"||type==="string")&&!isNaN(obj-parseFloat(obj));}, isPlainObject:function(obj){var proto, Ctor;if(!obj||toString.call(obj)!=="[object Object]"){return false;}proto=getProto(obj);if(!proto){return true;}Ctor=hasOwn.call(proto,"constructor")&&proto.constructor;return typeof Ctor==="function"&&fnToString.call(Ctor)===ObjectFunctionString;}, isEmptyObject:function(obj){var name;for(name in obj){return false;}return true;}, type:function(obj){if(obj==null){return obj+"";}return typeof obj==="object"||typeof obj==="function"?class2type[toString.call(obj)]||"object":typeof obj;}, globalEval:function(code){DOMEval(code);}, camelCase:function(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha, fcamelCase);}, nodeName:function(elem, name){return elem.nodeName &&elem.nodeName.toLowerCase()===name.toLowerCase();}, each:function(obj, callback){var length, i=0;if(isArrayLike(obj)){length=obj.length;for(;i< length;i++){if(callback.call(obj[i], i, obj[i])===false){break;}}}else{for(i in obj){if(callback.call(obj[i], i, obj[i])===false){break;}}}return obj;}, trim:function(text){return text==null?"":(text+"").replace(rtrim,"");}, makeArray:function(arr, results){var ret=results||[];if(arr!=null){if(isArrayLike(Object(arr))){jQuery.merge(ret, typeof arr==="string"?[arr]:arr);}else{push.call(ret, arr);}}return ret;}, inArray:function(elem, arr, i){return arr==null?-1:indexOf.call(arr, elem, i);}, merge:function(first, second){var len=+second.length, j=0, i=first.length;for(;j< len;j++){first[i++]=second[j];}first.length=i;return first;}, grep:function(elems, callback, invert){var callbackInverse, matches=[], i=0, length=elems.length, callbackExpect=!invert;for(;i< length;i++){callbackInverse=!callback(elems[i], i);if(callbackInverse!==callbackExpect){matches.push(elems[i]);}}return matches;}, map:function(elems, callback, arg){var length, value, i=0, ret=[];if(isArrayLike(elems)){length=elems.length;for(;i< length;i++){value=callback(elems[i], i, arg);if(value!=null){ret.push(value);}}}else{for(i in elems){value=callback(elems[i], i, arg);if(value!=null){ret.push(value);}}}return concat.apply([], ret);}, guid:1, proxy:function(fn, context){var tmp, args, proxy;if(typeof context==="string"){tmp=fn[context];context=fn;fn=tmp;}if(!jQuery.isFunction(fn)){return undefined;}args=slice.call(arguments, 2);proxy=function(){return fn.apply(context||this, args.concat(slice.call(arguments)));};proxy.guid=fn.guid=fn.guid||jQuery.guid++;return proxy;}, now:Date.now, support:support})
jQuery each("Boolean Number String Function Array Date RegExp Object Error Symbol". split" ", function(i, name){class2type["[object "+name+"]"]=name.toLowerCase();} function(i, name){class2type["[object "+name+"]"]=name.toLowerCase();})
function isArrayLike(obj obj)
function winnow(elements elements, qualifier qualifier, not not)
function sibling(cur cur, dir dir)
jQuery each({parent:function(elem){var parent=elem.parentNode;return parent &&parent.nodeType!==11?parent:null;}, parents:function(elem){return dir(elem,"parentNode");}, parentsUntil:function(elem, i, until){return dir(elem,"parentNode", until);}, next:function(elem){return sibling(elem,"nextSibling");}, prev:function(elem){return sibling(elem,"previousSibling");}, nextAll:function(elem){return dir(elem,"nextSibling");}, prevAll:function(elem){return dir(elem,"previousSibling");}, nextUntil:function(elem, i, until){return dir(elem,"nextSibling", until);}, prevUntil:function(elem, i, until){return dir(elem,"previousSibling", until);}, siblings:function(elem){return siblings((elem.parentNode||{}).firstChild, elem);}, children:function(elem){return siblings(elem.firstChild);}, contents:function(elem){return elem.contentDocument||jQuery.merge([], elem.childNodes);}} {parent:function(elem){var parent=elem.parentNode;return parent &&parent.nodeType!==11?parent:null;}, parents:function(elem){return dir(elem,"parentNode");}, parentsUntil:function(elem, i, until){return dir(elem,"parentNode", until);}, next:function(elem){return sibling(elem,"nextSibling");}, prev:function(elem){return sibling(elem,"previousSibling");}, nextAll:function(elem){return dir(elem,"nextSibling");}, prevAll:function(elem){return dir(elem,"previousSibling");}, nextUntil:function(elem, i, until){return dir(elem,"nextSibling", until);}, prevUntil:function(elem, i, until){return dir(elem,"previousSibling", until);}, siblings:function(elem){return siblings((elem.parentNode||{}).firstChild, elem);}, children:function(elem){return siblings(elem.firstChild);}, contents:function(elem){return elem.contentDocument||jQuery.merge([], elem.childNodes);}}, function(name, fn){jQuery.fn[name]=function(until, selector){var matched=jQuery.map(this, fn, until);if(name.slice(-5)!=="Until"){selector=until;}if(selector &&typeof selector==="string"){matched=jQuery.filter(selector, matched);}if(this.length > 1){if(!guaranteedUnique[name]){jQuery.uniqueSort(matched);}if(rparentsprev.test(name)){matched.reverse();}}return this.pushStack(matched);};} function(name, fn){jQuery.fn[name]=function(until, selector){var matched=jQuery.map(this, fn, until);if(name.slice(-5)!=="Until"){selector=until;}if(selector &&typeof selector==="string"){matched=jQuery.filter(selector, matched);}if(this.length > 1){if(!guaranteedUnique[name]){jQuery.uniqueSort(matched);}if(rparentsprev.test(name)){matched.reverse();}}return this.pushStack(matched);};})
function createOptions(options options)
function Identity(v v)
function Thrower(ex ex)
function adoptValue(value value, resolve resolve, reject reject)
function completed()
if(document. readyState = =="complete"||(document.readyState!=="loading"&&!document.documentElement.doScroll))
window addEventListener("load" "load", completed completed)
function Data()
function dataAttr(elem elem, key key, data data)
function adjustCSS(elem elem, prop prop, valueParts valueParts, tween tween)
function getDefaultDisplay(elem elem)
function showHide(elements elements, show show)
function getAll(context context, tag tag)
function setGlobalEval(elems elems, refElements refElements)
function buildFragment(elems elems, context context, scripts scripts, selection selection, ignored ignored)
input setAttribute("type" "type", "radio" "radio")
container appendChild(input input)
function returnTrue()
function returnFalse()
function safeActiveElement()
function on(elem elem, types types, selector selector, data data, fn fn, one one)
jQuery each({altKey:true, bubbles:true, cancelable:true, changedTouches:true, ctrlKey:true, detail:true, eventPhase:true, metaKey:true, pageX:true, pageY:true, shiftKey:true, view:true,"char":true, charCode:true, key:true, keyCode:true, button:true, buttons:true, clientX:true, clientY:true, offsetX:true, offsetY:true, pointerId:true, pointerType:true, screenX:true, screenY:true, targetTouches:true, toElement:true, touches:true, which:function(event){var button=event.button;if(event.which==null &&rkeyEvent.test(event.type)){return event.charCode!=null?event.charCode:event.keyCode;}if(!event.which &&button!==undefined &&rmouseEvent.test(event.type)){return(button &1?1:(button &2?3:(button &4?2:0)));}return event.which;}} {altKey:true, bubbles:true, cancelable:true, changedTouches:true, ctrlKey:true, detail:true, eventPhase:true, metaKey:true, pageX:true, pageY:true, shiftKey:true, view:true,"char":true, charCode:true, key:true, keyCode:true, button:true, buttons:true, clientX:true, clientY:true, offsetX:true, offsetY:true, pointerId:true, pointerType:true, screenX:true, screenY:true, targetTouches:true, toElement:true, touches:true, which:function(event){var button=event.button;if(event.which==null &&rkeyEvent.test(event.type)){return event.charCode!=null?event.charCode:event.keyCode;}if(!event.which &&button!==undefined &&rmouseEvent.test(event.type)){return(button &1?1:(button &2?3:(button &4?2:0)));}return event.which;}}, jQuery.event. addProp)
function manipulationTarget(elem elem, content content)
function disableScript(elem elem)
function restoreScript(elem elem)
function cloneCopyEvent(src src, dest dest)
function fixInput(src src, dest dest)
function domManip(collection collection, args args, callback callback, ignored ignored)
function remove(elem elem, selector selector, keepData keepData)
function if(!div. style)
div cloneNode(true true)
jQuery extend(support support, {pixelPosition:function(){computeStyleTests();return pixelPositionVal;}, boxSizingReliable:function(){computeStyleTests();return boxSizingReliableVal;}, pixelMarginRight:function(){computeStyleTests();return pixelMarginRightVal;}, reliableMarginLeft:function(){computeStyleTests();return reliableMarginLeftVal;}} {pixelPosition:function(){computeStyleTests();return pixelPositionVal;}, boxSizingReliable:function(){computeStyleTests();return boxSizingReliableVal;}, pixelMarginRight:function(){computeStyleTests();return pixelMarginRightVal;}, reliableMarginLeft:function(){computeStyleTests();return reliableMarginLeftVal;}})
function curCSS(elem elem, name name, computed computed)
function addGetHookIf(conditionFn conditionFn, hookFn hookFn)
function vendorPropName(name name)
function setPositiveNumber(elem elem, value value, subtract subtract)
function augmentWidthOrHeight(elem elem, name name, extra extra, isBorderBox isBorderBox, styles styles)
function getWidthOrHeight(elem elem, name name, extra extra)
jQuery each(function(i, name){jQuery.cssHooks[name]={get:function(elem, computed, extra){if(computed){return rdisplayswap.test(jQuery.css(elem,"display"))&&(!elem.getClientRects().length||!elem.getBoundingClientRect().width)?swap(elem, cssShow, function(){return getWidthOrHeight(elem, name, extra);}):getWidthOrHeight(elem, name, extra);}}, set:function(elem, value, extra){var matches, styles=extra &&getStyles(elem), subtract=extra &&augmentWidthOrHeight(elem, name, extra, jQuery.css(elem,"boxSizing", false, styles)==="border-box", styles);if(subtract &&(matches=rcssNum.exec(value))&&(matches[3]||"px")!=="px"){elem.style[name]=value;value=jQuery.css(elem, name);}return setPositiveNumber(elem, value, subtract);}};} function(i, name){jQuery.cssHooks[name]={get:function(elem, computed, extra){if(computed){return rdisplayswap.test(jQuery.css(elem,"display"))&&(!elem.getClientRects().length||!elem.getBoundingClientRect().width)?swap(elem, cssShow, function(){return getWidthOrHeight(elem, name, extra);}):getWidthOrHeight(elem, name, extra);}}, set:function(elem, value, extra){var matches, styles=extra &&getStyles(elem), subtract=extra &&augmentWidthOrHeight(elem, name, extra, jQuery.css(elem,"boxSizing", false, styles)==="border-box", styles);if(subtract &&(matches=rcssNum.exec(value))&&(matches[3]||"px")!=="px"){elem.style[name]=value;value=jQuery.css(elem, name);}return setPositiveNumber(elem, value, subtract);}};})
function Tween(elem elem, options options, prop prop, end end, easing easing)
function raf()
function createFxNow()
function genFx(type type, includeWidth includeWidth)
function createTween(value value, prop prop, animation animation)
function defaultPrefilter(elem elem, props props, opts opts)
function propFilter(props props, specialEasing specialEasing)
function Animation(elem elem, properties properties, options options)
jQuery each(jQuery.expr.match.bool.source. match/w+/g, function(i, name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=function(elem, name, isXML){var ret, handle, lowercaseName=name.toLowerCase();if(!isXML){handle=attrHandle[lowercaseName];attrHandle[lowercaseName]=ret;ret=getter(elem, name, isXML)!=null?lowercaseName:null;attrHandle[lowercaseName]=handle;}return ret;};} function(i, name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=function(elem, name, isXML){var ret, handle, lowercaseName=name.toLowerCase();if(!isXML){handle=attrHandle[lowercaseName];attrHandle[lowercaseName]=ret;ret=getter(elem, name, isXML)!=null?lowercaseName:null;attrHandle[lowercaseName]=handle;}return ret;};})
if(!support. optSelected)
function getClass(elem elem)
jQuery extend(jQuery. event, {trigger:function(event, data, elem, onlyHandlers){var i, cur, tmp, bubbleType, ontype, handle, special, eventPath=[elem||document], type=hasOwn.call(event,"type")?event.type:event, namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];cur=tmp=elem=elem||document;if(elem.nodeType===3||elem.nodeType===8){return;}if(rfocusMorph.test(type+jQuery.event.triggered)){return;}if(type.indexOf(".") >-1){namespaces=type.split(".");type=namespaces.shift();namespaces.sort();}ontype=type.indexOf(":")< 0 &&"on"+type;event=event[jQuery.expando]?event:new jQuery.Event(type, typeof event==="object"&&event);event.isTrigger=onlyHandlers?2:3;event.namespace=namespaces.join(".");event.rnamespace=event.namespace?new RegExp("(^|\.)"+namespaces.join("\.(?:.*\.|)")+"(\.|$)"):null;event.result=undefined;if(!event.target){event.target=elem;}data=data==null?[event]:jQuery.makeArray(data, [event]);special=jQuery.event.special[type]||{};if(!onlyHandlers &&special.trigger &&special.trigger.apply(elem, data)===false){return;}if(!onlyHandlers &&!special.noBubble &&!jQuery.isWindow(elem)){bubbleType=special.delegateType||type;if(!rfocusMorph.test(bubbleType+type)){cur=cur.parentNode;}for(;cur;cur=cur.parentNode){eventPath.push(cur);tmp=cur;}if(tmp===(elem.ownerDocument||document)){eventPath.push(tmp.defaultView||tmp.parentWindow||window);}}i=0;while((cur=eventPath[i++])&&!event.isPropagationStopped()){event.type=i > 1?bubbleType:special.bindType||type;handle=(dataPriv.get(cur,"events")||{})[event.type]&&dataPriv.get(cur,"handle");if(handle){handle.apply(cur, data);}handle=ontype &&cur[ontype];if(handle &&handle.apply &&acceptData(cur)){event.result=handle.apply(cur, data);if(event.result===false){event.preventDefault();}}}event.type=type;if(!onlyHandlers &&!event.isDefaultPrevented()){if((!special._default||special._default.apply(eventPath.pop(), data)===false)&&acceptData(elem)){if(ontype &&jQuery.isFunction(elem[type])&&!jQuery.isWindow(elem)){tmp=elem[ontype];if(tmp){elem[ontype]=null;}jQuery.event.triggered=type;elem[type]();jQuery.event.triggered=undefined;if(tmp){elem[ontype]=tmp;}}}}return event.result;}, simulate:function(type, elem, event){var e=jQuery.extend(new jQuery.Event(), event,{type:type, isSimulated:true});jQuery.event.trigger(e, null, elem);}} {trigger:function(event, data, elem, onlyHandlers){var i, cur, tmp, bubbleType, ontype, handle, special, eventPath=[elem||document], type=hasOwn.call(event,"type")?event.type:event, namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];cur=tmp=elem=elem||document;if(elem.nodeType===3||elem.nodeType===8){return;}if(rfocusMorph.test(type+jQuery.event.triggered)){return;}if(type.indexOf(".") >-1){namespaces=type.split(".");type=namespaces.shift();namespaces.sort();}ontype=type.indexOf(":")< 0 &&"on"+type;event=event[jQuery.expando]?event:new jQuery.Event(type, typeof event==="object"&&event);event.isTrigger=onlyHandlers?2:3;event.namespace=namespaces.join(".");event.rnamespace=event.namespace?new RegExp("(^|\.)"+namespaces.join("\.(?:.*\.|)")+"(\.|$)"):null;event.result=undefined;if(!event.target){event.target=elem;}data=data==null?[event]:jQuery.makeArray(data, [event]);special=jQuery.event.special[type]||{};if(!onlyHandlers &&special.trigger &&special.trigger.apply(elem, data)===false){return;}if(!onlyHandlers &&!special.noBubble &&!jQuery.isWindow(elem)){bubbleType=special.delegateType||type;if(!rfocusMorph.test(bubbleType+type)){cur=cur.parentNode;}for(;cur;cur=cur.parentNode){eventPath.push(cur);tmp=cur;}if(tmp===(elem.ownerDocument||document)){eventPath.push(tmp.defaultView||tmp.parentWindow||window);}}i=0;while((cur=eventPath[i++])&&!event.isPropagationStopped()){event.type=i > 1?bubbleType:special.bindType||type;handle=(dataPriv.get(cur,"events")||{})[event.type]&&dataPriv.get(cur,"handle");if(handle){handle.apply(cur, data);}handle=ontype &&cur[ontype];if(handle &&handle.apply &&acceptData(cur)){event.result=handle.apply(cur, data);if(event.result===false){event.preventDefault();}}}event.type=type;if(!onlyHandlers &&!event.isDefaultPrevented()){if((!special._default||special._default.apply(eventPath.pop(), data)===false)&&acceptData(elem)){if(ontype &&jQuery.isFunction(elem[type])&&!jQuery.isWindow(elem)){tmp=elem[ontype];if(tmp){elem[ontype]=null;}jQuery.event.triggered=type;elem[type]();jQuery.event.triggered=undefined;if(tmp){elem[ontype]=tmp;}}}}return event.result;}, simulate:function(type, elem, event){var e=jQuery.extend(new jQuery.Event(), event,{type:type, isSimulated:true});jQuery.event.trigger(e, null, elem);}})
function buildParams(prefix prefix, obj obj, traditional traditional, add add)
function addToPrefiltersOrTransports(structure structure)
function inspectPrefiltersOrTransports(structure structure, options options, originalOptions originalOptions, jqXHR jqXHR)
function ajaxExtend(target target, src src)
function ajaxHandleResponses(s s, jqXHR jqXHR, responses responses)
function ajaxConvert(s s, response response, jqXHR jqXHR, isSuccess isSuccess)
jQuery ajaxTransport(function(options){var callback, errorCallback;if(support.cors||xhrSupported &&!options.crossDomain){return{send:function(headers, complete){var i, xhr=options.xhr();xhr.open(options.type, options.url, options.async, options.username, options.password);if(options.xhrFields){for(i in options.xhrFields){xhr[i]=options.xhrFields[i];}}if(options.mimeType &&xhr.overrideMimeType){xhr.overrideMimeType(options.mimeType);}if(!options.crossDomain &&!headers["X-Requested-With"]){headers["X-Requested-With"]="XMLHttpRequest";}for(i in headers){xhr.setRequestHeader(i, headers[i]);}callback=function(type){return function(){if(callback){callback=errorCallback=xhr.onload=xhr.onerror=xhr.onabort=xhr.onreadystatechange=null;if(type==="abort"){xhr.abort();}else if(type==="error"){if(typeof xhr.status!=="number"){complete(0,"error");}else{complete(xhr.status, xhr.statusText);}}else{complete(xhrSuccessStatus[xhr.status]||xhr.status, xhr.statusText,(xhr.responseType||"text")!=="text"||typeof xhr.responseText!=="string"?{binary:xhr.response}:{text:xhr.responseText}, xhr.getAllResponseHeaders());}}};};xhr.onload=callback();errorCallback=xhr.onerror=callback("error");if(xhr.onabort!==undefined){xhr.onabort=errorCallback;}else{xhr.onreadystatechange=function(){if(xhr.readyState===4){window.setTimeout(function(){if(callback){errorCallback();}});}};}callback=callback("abort");try{xhr.send(options.hasContent &&options.data||null);}catch(e){if(callback){throw e;}}}, abort:function(){if(callback){callback();}}};}} function(options){var callback, errorCallback;if(support.cors||xhrSupported &&!options.crossDomain){return{send:function(headers, complete){var i, xhr=options.xhr();xhr.open(options.type, options.url, options.async, options.username, options.password);if(options.xhrFields){for(i in options.xhrFields){xhr[i]=options.xhrFields[i];}}if(options.mimeType &&xhr.overrideMimeType){xhr.overrideMimeType(options.mimeType);}if(!options.crossDomain &&!headers["X-Requested-With"]){headers["X-Requested-With"]="XMLHttpRequest";}for(i in headers){xhr.setRequestHeader(i, headers[i]);}callback=function(type){return function(){if(callback){callback=errorCallback=xhr.onload=xhr.onerror=xhr.onabort=xhr.onreadystatechange=null;if(type==="abort"){xhr.abort();}else if(type==="error"){if(typeof xhr.status!=="number"){complete(0,"error");}else{complete(xhr.status, xhr.statusText);}}else{complete(xhrSuccessStatus[xhr.status]||xhr.status, xhr.statusText,(xhr.responseType||"text")!=="text"||typeof xhr.responseText!=="string"?{binary:xhr.response}:{text:xhr.responseText}, xhr.getAllResponseHeaders());}}};};xhr.onload=callback();errorCallback=xhr.onerror=callback("error");if(xhr.onabort!==undefined){xhr.onabort=errorCallback;}else{xhr.onreadystatechange=function(){if(xhr.readyState===4){window.setTimeout(function(){if(callback){errorCallback();}});}};}callback=callback("abort");try{xhr.send(options.hasContent &&options.data||null);}catch(e){if(callback){throw e;}}}, abort:function(){if(callback){callback();}}};}})
jQuery ajaxPrefilter(function(s){if(s.crossDomain){s.contents.script=false;}} function(s){if(s.crossDomain){s.contents.script=false;}})
jQuery ajaxSetup({accepts:{script:"text/javascript, application/javascript, "+"application/ecmascript, application/x-ecmascript"}, contents:{script:/b(?:java|ecma) scriptb/}, converters:{"text script":function(text){jQuery.globalEval(text);return text;}}} {accepts:{script:"text/javascript, application/javascript, "+"application/ecmascript, application/x-ecmascript"}, contents:{script:/b(?:java|ecma) scriptb/}, converters:{"text script":function(text){jQuery.globalEval(text);return text;}}})
jQuery ajaxPrefilter("script" "script", function(s){if(s.cache===undefined){s.cache=false;}if(s.crossDomain){s.type="GET";}} function(s){if(s.cache===undefined){s.cache=false;}if(s.crossDomain){s.type="GET";}})
jQuery ajaxTransport("script" "script", function(s){if(s.crossDomain){var script, callback;return{send:function(_, complete){script=jQuery("<script>").prop({charset:s.scriptCharset, src:s.url}).on("load error", callback=function(evt){script.remove();callback=null;if(evt){complete(evt.type==="error"?404:200, evt.type);}});document.head.appendChild(script[0]);}, abort:function(){if(callback){callback();}}};}} function(s){if(s.crossDomain){var script, callback;return{send:function(_, complete){script=jQuery("<script>").prop({charset:s.scriptCharset, src:s.url}).on("load error", callback=function(evt){script.remove();callback=null;if(evt){complete(evt.type==="error"?404:200, evt.type);}});document.head.appendChild(script[0]);}, abort:function(){if(callback){callback();}}};}})
function getWindow(elem elem)

Gets a window from an element.

if(! noGlobal)

Variables

function global

jQuery JavaScript Library v3.1.0 https://jquery.com/

Includes Sizzle.js https://sizzlejs.com/

Copyright jQuery Foundation and other contributors Released under the MIT license https://jquery.org/license

Date: 2016-07-07T21:44Z

function factory = { "use strict"
else = { factory( global )
function window == "undefined" ? window : this
function noGlobal = { "use strict"
var arr = []
var document = window.document
var getProto = Object.getPrototypeOf
var slice = arr.slice
var concat = arr.concat
var push = arr.push
var indexOf = arr.indexOf
var class2type = {}
var toString = class2type.toString
var hasOwn = class2type.hasOwnProperty
var fnToString = hasOwn.toString
var ObjectFunctionString = fnToString.call( Object )
var support = {}
var version = "3.1.0"
return jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context ); }
var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g
var rmsPrefix = /^-ms-/
var rdashAlpha = /-([a-z])/g
var fcamelCase = function( all, letter ) { return letter.toUpperCase(); }
jQuery fn
jQuery fn extend
var Sizzle
jQuery find = Sizzle
jQuery expr = Sizzle.selectors
jQuery uniqueSort = jQuery.unique = Sizzle.uniqueSort
jQuery text = Sizzle.getText
jQuery isXMLDoc = Sizzle.isXML
jQuery contains = Sizzle.contains
jQuery escapeSelector = Sizzle.escape
var dir = function( elem, dir, until ) { var matched = [], truncate = until !== undefined; while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { if ( elem.nodeType === 1 ) { if ( truncate && jQuery( elem ).is( until ) ) { break; } matched.push( elem ); } } return matched; }
var siblings = function( n, elem ) { var matched = []; for ( ; n; n = n.nextSibling ) { if ( n.nodeType === 1 && n !== elem ) { matched.push( n ); } } return matched; }
var rneedsContext = jQuery.expr.match.needsContext
var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i )
var risSimple = /^.[^:#\[\.,]*$/
jQuery filter = function( expr, elems, not ) { var elem = elems[ 0 ]; if ( not ) { expr = ":not(" + expr + ")"; } return elems.length === 1 && elem.nodeType === 1 ? jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { return elem.nodeType === 1; } ) ); }
rootjQuery = jQuery( document )
var rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/
var init
Tween prototype init prototype = jQuery.fn
var rparentsprev = /^(?:parents|prev(?:Until|All))/
var guaranteedUnique = { children: true, contents: true, next: true, prev: true }
var rnotwhite = ( /\S+/g )
jQuery Callbacks
var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/
jQuery Deferred exceptionHook = function( error, stack ) { if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { window.console.warn( “jQuery.Deferred exception: ” + error.message, error.stack, stack ); } }
jQuery readyException = function( error ) { window.setTimeout( function() { throw error; } ); }
var readyList = jQuery.Deferred()
document ready = function( fn ) { readyList .then( fn ) .catch( function( error ) { jQuery.readyException( error ); } ); return this; }
jQuery ready then = readyList.then
var access
var acceptData = function( owner ) { return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); }
Data uid = 1
var dataPriv = new Data()
var dataUser = new Data()
var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/
var rmultiDash = /[A-Z]/g
var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source
var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" )
var cssExpand = [ "Top", "Right", "Bottom", "Left" ]
var isHiddenWithinTree = function( elem, el ) { elem = el || elem; return elem.style.display === "none" || elem.style.display === "" && jQuery.contains( elem.ownerDocument, elem ) && jQuery.css( elem, "display" ) === "none"; }
var swap = function( elem, options, callback, args ) { var ret, name, old = {}; for ( name in options ) { old[ name ] = elem.style[ name ]; elem.style[ name ] = options[ name ]; } ret = callback.apply( elem, args || [] ); for ( name in options ) { elem.style[ name ] = old[ name ]; } return ret; }
var defaultDisplayMap = {}
var rcheckableType = ( /^(?:checkbox|radio)$/i )
var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i )
var rscriptType = ( /^$|\/(?:java|ecma)script/i )
var wrapMap = { option: [ 1, "<select multiple='multiple'>", "</select>" ], thead: [ 1, "<table>", "</table>" ], col: [ 2, "<table><colgroup>", "</colgroup></table>" ], tr: [ 2, "<table><tbody>", "</tbody></table>" ], td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], _default: [ 0, "", "" ] }
wrapMap optgroup = wrapMap.option
wrapMap tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead
wrapMap th = wrapMap.td
var rhtml = /<|&#?\w+
support checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked
div innerHTML = "<textarea>x</textarea>"
support noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue
var documentElement = document.documentElement
var rkeyEvent = /^key/
var rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/
var rtypenamespace = /^([^.]*)(?:\.(.+)|)/
jQuery event
jQuery removeEvent = function( elem, type, handle ) { if ( elem.removeEventListener ) { elem.removeEventListener( type, handle ); } }
jQuery Event
var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi
var rnoInnerhtml = /<script|<style|<link/i, rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rscriptTypeMasked = /^true\/(.*)/, rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g
var rmargin = ( /^margin/ )
var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" )
var getStyles = function( elem ) { var view = elem.ownerDocument.defaultView; if ( !view || !view.opener ) { view = window; } return view.getComputedStyle( elem ); }
div style backgroundClip = “content-box”
support clearCloneStyle = div.style.backgroundClip === "content-box"
container style cssText = “border:0;width:8px;height:0;top:0;left:-9999px;” + “padding:0;margin-top:1px;position:absolute”
var rdisplayswap = /^(none|table(?!-c[ea]).+)/
var cssShow = { position: "absolute", visibility: "hidden", display: "block" }
var cssNormalTransform = { letterSpacing: "0", fontWeight: "400" }
var cssPrefixes = [ "Webkit", "Moz", "ms" ]
var emptyStyle = document.createElement( "div" ).style
jQuery cssHooks marginLeft = addGetHookIf( support.reliableMarginLeft, function( elem, computed ) { if ( computed ) { return ( parseFloat( curCSS( elem, “marginLeft” ) ) || elem.getBoundingClientRect().left - swap( elem, { marginLeft: 0 }, function() { return elem.getBoundingClientRect().left; } ) ) + “px”; } } )
jQuery Tween = Tween
Tween propHooks
Tween propHooks scrollTop = Tween.propHooks.scrollLeft = { set: function( tween ) { if ( tween.elem.nodeType && tween.elem.parentNode ) { tween.elem[ tween.prop ] = tween.now; } } }
jQuery easing = { linear: function( p ) { return p; }, swing: function( p ) { return 0.5 - Math.cos( p * Math.PI ) / 2; }, _default: "swing" }
jQuery fx = Tween.prototype.init
jQuery fx step = {}
var fxNow
var timerId
var rfxtypes = /^(?:toggle|show|hide)$/
var rrun = /queueHooks$/
jQuery Animation
jQuery speed
jQuery timers = []
jQuery fx tick = function() { var timer, i = 0, timers = jQuery.timers; fxNow = jQuery.now(); for ( ; i < timers.length; i++ ) { timer = timers[ i ]; if ( !timer() && timers[ i ] === timer ) { timers.splice( i–, 1 ); } } if ( !timers.length ) { jQuery.fx.stop(); } fxNow = undefined; }
jQuery fx timer = function( timer ) { jQuery.timers.push( timer ); if ( timer() ) { jQuery.fx.start(); } else { jQuery.timers.pop(); } }
jQuery fx interval = 13
jQuery fx start = function() { if ( !timerId ) { timerId = window.requestAnimationFrame ? window.requestAnimationFrame( raf ) : window.setInterval( jQuery.fx.tick, jQuery.fx.interval ); } }
jQuery fx stop = function() { if ( window.cancelAnimationFrame ) { window.cancelAnimationFrame( timerId ); } else { window.clearInterval( timerId ); } timerId = null; }
jQuery fx speeds = { slow: 600, fast: 200, _default: 400 }
jQuery fn delay = function( time, type ) { time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; type = type || “fx”; return this.queue( type, function( next, hooks ) { var timeout = window.setTimeout( next, time ); hooks.stop = function() { window.clearTimeout( timeout ); }; } ); }
input type = "checkbox"
support checkOn = input.value !== ""
support optSelected = opt.selected
input = document.createElement( “input” )
input value = "t"
support radioValue = input.value === "t"
boolHook = { set: function( elem, value, name ) { if ( value === false ) { jQuery.removeAttr( elem, name ); } else { elem.setAttribute( name, name ); } return name; } }
var attrHandle = jQuery.expr.attrHandle
var rfocusable = /^(?:input|select|textarea|button)$/i
var rclickable = /^(?:a|area)$/i
var rclass = /[\t\r\n\f]/g
var rreturn = /\r/g
var rspaces = /[\x20\t\r\n\f]+/g
var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/
support focusin = "onfocusin" in window
var location = window.location
var nonce = jQuery.now()
var rquery = ( /\?/ )
jQuery parseXML = function( data ) { var xml; if ( !data || typeof data !== "string" ) { return null; } try { xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); } catch ( e ) { xml = undefined; } if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { jQuery.error( "Invalid XML: " + data ); } return xml; }
var rbracket = /\[\]$/
var rCRLF = /\r?\n/g
var rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i
var rsubmittable = /^(?:input|select|textarea|keygen)/i
jQuery param
var r20 = /%20/g
var rhash = /#.*$/
var rts = /([?&])_=[^&]*/
var rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg
var rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/
var rnoContent = /^(?:GET|HEAD)$/
var rprotocol = /^\/\ prefilters = {}
var transports = {}
var allTypes = "*/".concat( "*" )
var originAnchor = document.createElement( "a" )
originAnchor href = location.href
jQuery _evalUrl = function( url ) { return jQuery.ajax( { url: url, type: "GET", dataType: "script", cache: true, async: false, global: false, "throws": true } ); }
jQuery expr pseudos hidden = function( elem ) { return !jQuery.expr.pseudos.visible( elem ); }
jQuery expr pseudos visible = function( elem ) { return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); }
jQuery ajaxSettings xhr = function() { try { return new window.XMLHttpRequest(); } catch ( e ) {} }
var xhrSuccessStatus = { 0: 200, 1223: 204 }
var xhrSupported = jQuery.ajaxSettings.xhr()
support cors = !!xhrSupported && ( "withCredentials" in xhrSupported )
support ajax = xhrSupported = !!xhrSupported
var oldCallbacks = []
var rjsonp = /(=)\?(?=&|$)|\?\?/
support createHTMLDocument = ( function() { var body = document.implementation.createHTMLDocument( "" ).body; body.innerHTML = "<form></form><form></form>"; return body.childNodes.length === 2; } )()
jQuery parseHTML
jQuery fn load

Load a url into a page.

jQuery expr pseudos animated = function( elem ) { return jQuery.grep( jQuery.timers, function( fn ) { return elem === fn.elem; } ).length; }
jQuery offset
jQuery parseJSON = JSON.parse
var _jQuery = window.jQuery
var _ = window.$
jQuery noConflict = function( deep ) { if ( window.$ === jQuery ) { window.$ = _$; } if ( deep && window.jQuery === jQuery ) { window.jQuery = _jQuery; } return jQuery; }
file jquery-3.1.0.js

Functions

if(typeof module = =="object"&&typeof module.exports==="object")
function DOMEval(code code, doc doc)
jQuery extend({expando:"jQuery"+(version+Math.random()).replace(/D/g,""), isReady:true, error:function(msg){throw new Error(msg);}, noop:function(){}, isFunction:function(obj){return jQuery.type(obj)==="function";}, isArray:Array.isArray, isWindow:function(obj){return obj!=null &&obj===obj.window;}, isNumeric:function(obj){var type=jQuery.type(obj);return(type==="number"||type==="string")&&!isNaN(obj-parseFloat(obj));}, isPlainObject:function(obj){var proto, Ctor;if(!obj||toString.call(obj)!=="[object Object]"){return false;}proto=getProto(obj);if(!proto){return true;}Ctor=hasOwn.call(proto,"constructor")&&proto.constructor;return typeof Ctor==="function"&&fnToString.call(Ctor)===ObjectFunctionString;}, isEmptyObject:function(obj){var name;for(name in obj){return false;}return true;}, type:function(obj){if(obj==null){return obj+"";}return typeof obj==="object"||typeof obj==="function"?class2type[toString.call(obj)]||"object":typeof obj;}, globalEval:function(code){DOMEval(code);}, camelCase:function(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha, fcamelCase);}, nodeName:function(elem, name){return elem.nodeName &&elem.nodeName.toLowerCase()===name.toLowerCase();}, each:function(obj, callback){var length, i=0;if(isArrayLike(obj)){length=obj.length;for(;i< length;i++){if(callback.call(obj[i], i, obj[i])===false){break;}}}else{for(i in obj){if(callback.call(obj[i], i, obj[i])===false){break;}}}return obj;}, trim:function(text){return text==null?"":(text+"").replace(rtrim,"");}, makeArray:function(arr, results){var ret=results||[];if(arr!=null){if(isArrayLike(Object(arr))){jQuery.merge(ret, typeof arr==="string"?[arr]:arr);}else{push.call(ret, arr);}}return ret;}, inArray:function(elem, arr, i){return arr==null?-1:indexOf.call(arr, elem, i);}, merge:function(first, second){var len=+second.length, j=0, i=first.length;for(;j< len;j++){first[i++]=second[j];}first.length=i;return first;}, grep:function(elems, callback, invert){var callbackInverse, matches=[], i=0, length=elems.length, callbackExpect=!invert;for(;i< length;i++){callbackInverse=!callback(elems[i], i);if(callbackInverse!==callbackExpect){matches.push(elems[i]);}}return matches;}, map:function(elems, callback, arg){var length, value, i=0, ret=[];if(isArrayLike(elems)){length=elems.length;for(;i< length;i++){value=callback(elems[i], i, arg);if(value!=null){ret.push(value);}}}else{for(i in elems){value=callback(elems[i], i, arg);if(value!=null){ret.push(value);}}}return concat.apply([], ret);}, guid:1, proxy:function(fn, context){var tmp, args, proxy;if(typeof context==="string"){tmp=fn[context];context=fn;fn=tmp;}if(!jQuery.isFunction(fn)){return undefined;}args=slice.call(arguments, 2);proxy=function(){return fn.apply(context||this, args.concat(slice.call(arguments)));};proxy.guid=fn.guid=fn.guid||jQuery.guid++;return proxy;}, now:Date.now, support:support} {expando:"jQuery"+(version+Math.random()).replace(/D/g,""), isReady:true, error:function(msg){throw new Error(msg);}, noop:function(){}, isFunction:function(obj){return jQuery.type(obj)==="function";}, isArray:Array.isArray, isWindow:function(obj){return obj!=null &&obj===obj.window;}, isNumeric:function(obj){var type=jQuery.type(obj);return(type==="number"||type==="string")&&!isNaN(obj-parseFloat(obj));}, isPlainObject:function(obj){var proto, Ctor;if(!obj||toString.call(obj)!=="[object Object]"){return false;}proto=getProto(obj);if(!proto){return true;}Ctor=hasOwn.call(proto,"constructor")&&proto.constructor;return typeof Ctor==="function"&&fnToString.call(Ctor)===ObjectFunctionString;}, isEmptyObject:function(obj){var name;for(name in obj){return false;}return true;}, type:function(obj){if(obj==null){return obj+"";}return typeof obj==="object"||typeof obj==="function"?class2type[toString.call(obj)]||"object":typeof obj;}, globalEval:function(code){DOMEval(code);}, camelCase:function(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha, fcamelCase);}, nodeName:function(elem, name){return elem.nodeName &&elem.nodeName.toLowerCase()===name.toLowerCase();}, each:function(obj, callback){var length, i=0;if(isArrayLike(obj)){length=obj.length;for(;i< length;i++){if(callback.call(obj[i], i, obj[i])===false){break;}}}else{for(i in obj){if(callback.call(obj[i], i, obj[i])===false){break;}}}return obj;}, trim:function(text){return text==null?"":(text+"").replace(rtrim,"");}, makeArray:function(arr, results){var ret=results||[];if(arr!=null){if(isArrayLike(Object(arr))){jQuery.merge(ret, typeof arr==="string"?[arr]:arr);}else{push.call(ret, arr);}}return ret;}, inArray:function(elem, arr, i){return arr==null?-1:indexOf.call(arr, elem, i);}, merge:function(first, second){var len=+second.length, j=0, i=first.length;for(;j< len;j++){first[i++]=second[j];}first.length=i;return first;}, grep:function(elems, callback, invert){var callbackInverse, matches=[], i=0, length=elems.length, callbackExpect=!invert;for(;i< length;i++){callbackInverse=!callback(elems[i], i);if(callbackInverse!==callbackExpect){matches.push(elems[i]);}}return matches;}, map:function(elems, callback, arg){var length, value, i=0, ret=[];if(isArrayLike(elems)){length=elems.length;for(;i< length;i++){value=callback(elems[i], i, arg);if(value!=null){ret.push(value);}}}else{for(i in elems){value=callback(elems[i], i, arg);if(value!=null){ret.push(value);}}}return concat.apply([], ret);}, guid:1, proxy:function(fn, context){var tmp, args, proxy;if(typeof context==="string"){tmp=fn[context];context=fn;fn=tmp;}if(!jQuery.isFunction(fn)){return undefined;}args=slice.call(arguments, 2);proxy=function(){return fn.apply(context||this, args.concat(slice.call(arguments)));};proxy.guid=fn.guid=fn.guid||jQuery.guid++;return proxy;}, now:Date.now, support:support})
jQuery each("Boolean Number String Function Array Date RegExp Object Error Symbol". split" ", function(i, name){class2type["[object "+name+"]"]=name.toLowerCase();} function(i, name){class2type["[object "+name+"]"]=name.toLowerCase();})
function isArrayLike(obj obj)
function winnow(elements elements, qualifier qualifier, not not)
function sibling(cur cur, dir dir)
jQuery each({parent:function(elem){var parent=elem.parentNode;return parent &&parent.nodeType!==11?parent:null;}, parents:function(elem){return dir(elem,"parentNode");}, parentsUntil:function(elem, i, until){return dir(elem,"parentNode", until);}, next:function(elem){return sibling(elem,"nextSibling");}, prev:function(elem){return sibling(elem,"previousSibling");}, nextAll:function(elem){return dir(elem,"nextSibling");}, prevAll:function(elem){return dir(elem,"previousSibling");}, nextUntil:function(elem, i, until){return dir(elem,"nextSibling", until);}, prevUntil:function(elem, i, until){return dir(elem,"previousSibling", until);}, siblings:function(elem){return siblings((elem.parentNode||{}).firstChild, elem);}, children:function(elem){return siblings(elem.firstChild);}, contents:function(elem){return elem.contentDocument||jQuery.merge([], elem.childNodes);}} {parent:function(elem){var parent=elem.parentNode;return parent &&parent.nodeType!==11?parent:null;}, parents:function(elem){return dir(elem,"parentNode");}, parentsUntil:function(elem, i, until){return dir(elem,"parentNode", until);}, next:function(elem){return sibling(elem,"nextSibling");}, prev:function(elem){return sibling(elem,"previousSibling");}, nextAll:function(elem){return dir(elem,"nextSibling");}, prevAll:function(elem){return dir(elem,"previousSibling");}, nextUntil:function(elem, i, until){return dir(elem,"nextSibling", until);}, prevUntil:function(elem, i, until){return dir(elem,"previousSibling", until);}, siblings:function(elem){return siblings((elem.parentNode||{}).firstChild, elem);}, children:function(elem){return siblings(elem.firstChild);}, contents:function(elem){return elem.contentDocument||jQuery.merge([], elem.childNodes);}}, function(name, fn){jQuery.fn[name]=function(until, selector){var matched=jQuery.map(this, fn, until);if(name.slice(-5)!=="Until"){selector=until;}if(selector &&typeof selector==="string"){matched=jQuery.filter(selector, matched);}if(this.length > 1){if(!guaranteedUnique[name]){jQuery.uniqueSort(matched);}if(rparentsprev.test(name)){matched.reverse();}}return this.pushStack(matched);};} function(name, fn){jQuery.fn[name]=function(until, selector){var matched=jQuery.map(this, fn, until);if(name.slice(-5)!=="Until"){selector=until;}if(selector &&typeof selector==="string"){matched=jQuery.filter(selector, matched);}if(this.length > 1){if(!guaranteedUnique[name]){jQuery.uniqueSort(matched);}if(rparentsprev.test(name)){matched.reverse();}}return this.pushStack(matched);};})
function createOptions(options options)
function Identity(v v)
function Thrower(ex ex)
function adoptValue(value value, resolve resolve, reject reject)
function completed()
if(document. readyState = =="complete"||(document.readyState!=="loading"&&!document.documentElement.doScroll))
window addEventListener("load" "load", completed completed)
function Data()
function dataAttr(elem elem, key key, data data)
function adjustCSS(elem elem, prop prop, valueParts valueParts, tween tween)
function getDefaultDisplay(elem elem)
function showHide(elements elements, show show)
function getAll(context context, tag tag)
function setGlobalEval(elems elems, refElements refElements)
function buildFragment(elems elems, context context, scripts scripts, selection selection, ignored ignored)
function input setAttribute("type" "type", "radio" "radio")
div appendChild(input input)
function returnTrue()
function returnFalse()
function safeActiveElement()
function on(elem elem, types types, selector selector, data data, fn fn, one one)
jQuery each({altKey:true, bubbles:true, cancelable:true, changedTouches:true, ctrlKey:true, detail:true, eventPhase:true, metaKey:true, pageX:true, pageY:true, shiftKey:true, view:true,"char":true, charCode:true, key:true, keyCode:true, button:true, buttons:true, clientX:true, clientY:true, offsetX:true, offsetY:true, pointerId:true, pointerType:true, screenX:true, screenY:true, targetTouches:true, toElement:true, touches:true, which:function(event){var button=event.button;if(event.which==null &&rkeyEvent.test(event.type)){return event.charCode!=null?event.charCode:event.keyCode;}if(!event.which &&button!==undefined &&rmouseEvent.test(event.type)){return(button &1?1:(button &2?3:(button &4?2:0)));}return event.which;}} {altKey:true, bubbles:true, cancelable:true, changedTouches:true, ctrlKey:true, detail:true, eventPhase:true, metaKey:true, pageX:true, pageY:true, shiftKey:true, view:true,"char":true, charCode:true, key:true, keyCode:true, button:true, buttons:true, clientX:true, clientY:true, offsetX:true, offsetY:true, pointerId:true, pointerType:true, screenX:true, screenY:true, targetTouches:true, toElement:true, touches:true, which:function(event){var button=event.button;if(event.which==null &&rkeyEvent.test(event.type)){return event.charCode!=null?event.charCode:event.keyCode;}if(!event.which &&button!==undefined &&rmouseEvent.test(event.type)){return(button &1?1:(button &2?3:(button &4?2:0)));}return event.which;}}, jQuery.event. addProp)
function manipulationTarget(elem elem, content content)
function disableScript(elem elem)
function restoreScript(elem elem)
function cloneCopyEvent(src src, dest dest)
function fixInput(src src, dest dest)
function domManip(collection collection, args args, callback callback, ignored ignored)
function remove(elem elem, selector selector, keepData keepData)
function if(!div. style)
div cloneNode(true true)
jQuery extend(support support, {pixelPosition:function(){computeStyleTests();return pixelPositionVal;}, boxSizingReliable:function(){computeStyleTests();return boxSizingReliableVal;}, pixelMarginRight:function(){computeStyleTests();return pixelMarginRightVal;}, reliableMarginLeft:function(){computeStyleTests();return reliableMarginLeftVal;}} {pixelPosition:function(){computeStyleTests();return pixelPositionVal;}, boxSizingReliable:function(){computeStyleTests();return boxSizingReliableVal;}, pixelMarginRight:function(){computeStyleTests();return pixelMarginRightVal;}, reliableMarginLeft:function(){computeStyleTests();return reliableMarginLeftVal;}})
function curCSS(elem elem, name name, computed computed)
function addGetHookIf(conditionFn conditionFn, hookFn hookFn)
function vendorPropName(name name)
function setPositiveNumber(elem elem, value value, subtract subtract)
function augmentWidthOrHeight(elem elem, name name, extra extra, isBorderBox isBorderBox, styles styles)
function getWidthOrHeight(elem elem, name name, extra extra)
jQuery each(function(i, name){jQuery.cssHooks[name]={get:function(elem, computed, extra){if(computed){return rdisplayswap.test(jQuery.css(elem,"display"))&&(!elem.getClientRects().length||!elem.getBoundingClientRect().width)?swap(elem, cssShow, function(){return getWidthOrHeight(elem, name, extra);}):getWidthOrHeight(elem, name, extra);}}, set:function(elem, value, extra){var matches, styles=extra &&getStyles(elem), subtract=extra &&augmentWidthOrHeight(elem, name, extra, jQuery.css(elem,"boxSizing", false, styles)==="border-box", styles);if(subtract &&(matches=rcssNum.exec(value))&&(matches[3]||"px")!=="px"){elem.style[name]=value;value=jQuery.css(elem, name);}return setPositiveNumber(elem, value, subtract);}};} function(i, name){jQuery.cssHooks[name]={get:function(elem, computed, extra){if(computed){return rdisplayswap.test(jQuery.css(elem,"display"))&&(!elem.getClientRects().length||!elem.getBoundingClientRect().width)?swap(elem, cssShow, function(){return getWidthOrHeight(elem, name, extra);}):getWidthOrHeight(elem, name, extra);}}, set:function(elem, value, extra){var matches, styles=extra &&getStyles(elem), subtract=extra &&augmentWidthOrHeight(elem, name, extra, jQuery.css(elem,"boxSizing", false, styles)==="border-box", styles);if(subtract &&(matches=rcssNum.exec(value))&&(matches[3]||"px")!=="px"){elem.style[name]=value;value=jQuery.css(elem, name);}return setPositiveNumber(elem, value, subtract);}};})
function Tween(elem elem, options options, prop prop, end end, easing easing)
function raf()
function createFxNow()
function genFx(type type, includeWidth includeWidth)
function createTween(value value, prop prop, animation animation)
function defaultPrefilter(elem elem, props props, opts opts)
function propFilter(props props, specialEasing specialEasing)
function Animation(elem elem, properties properties, options options)
jQuery each(jQuery.expr.match.bool.source. match/w+/g, function(i, name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=function(elem, name, isXML){var ret, handle, lowercaseName=name.toLowerCase();if(!isXML){handle=attrHandle[lowercaseName];attrHandle[lowercaseName]=ret;ret=getter(elem, name, isXML)!=null?lowercaseName:null;attrHandle[lowercaseName]=handle;}return ret;};} function(i, name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=function(elem, name, isXML){var ret, handle, lowercaseName=name.toLowerCase();if(!isXML){handle=attrHandle[lowercaseName];attrHandle[lowercaseName]=ret;ret=getter(elem, name, isXML)!=null?lowercaseName:null;attrHandle[lowercaseName]=handle;}return ret;};})
if(!support. optSelected)
function getClass(elem elem)
jQuery extend(jQuery. event, {trigger:function(event, data, elem, onlyHandlers){var i, cur, tmp, bubbleType, ontype, handle, special, eventPath=[elem||document], type=hasOwn.call(event,"type")?event.type:event, namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];cur=tmp=elem=elem||document;if(elem.nodeType===3||elem.nodeType===8){return;}if(rfocusMorph.test(type+jQuery.event.triggered)){return;}if(type.indexOf(".") >-1){namespaces=type.split(".");type=namespaces.shift();namespaces.sort();}ontype=type.indexOf(":")< 0 &&"on"+type;event=event[jQuery.expando]?event:new jQuery.Event(type, typeof event==="object"&&event);event.isTrigger=onlyHandlers?2:3;event.namespace=namespaces.join(".");event.rnamespace=event.namespace?new RegExp("(^|\.)"+namespaces.join("\.(?:.*\.|)")+"(\.|$)"):null;event.result=undefined;if(!event.target){event.target=elem;}data=data==null?[event]:jQuery.makeArray(data, [event]);special=jQuery.event.special[type]||{};if(!onlyHandlers &&special.trigger &&special.trigger.apply(elem, data)===false){return;}if(!onlyHandlers &&!special.noBubble &&!jQuery.isWindow(elem)){bubbleType=special.delegateType||type;if(!rfocusMorph.test(bubbleType+type)){cur=cur.parentNode;}for(;cur;cur=cur.parentNode){eventPath.push(cur);tmp=cur;}if(tmp===(elem.ownerDocument||document)){eventPath.push(tmp.defaultView||tmp.parentWindow||window);}}i=0;while((cur=eventPath[i++])&&!event.isPropagationStopped()){event.type=i > 1?bubbleType:special.bindType||type;handle=(dataPriv.get(cur,"events")||{})[event.type]&&dataPriv.get(cur,"handle");if(handle){handle.apply(cur, data);}handle=ontype &&cur[ontype];if(handle &&handle.apply &&acceptData(cur)){event.result=handle.apply(cur, data);if(event.result===false){event.preventDefault();}}}event.type=type;if(!onlyHandlers &&!event.isDefaultPrevented()){if((!special._default||special._default.apply(eventPath.pop(), data)===false)&&acceptData(elem)){if(ontype &&jQuery.isFunction(elem[type])&&!jQuery.isWindow(elem)){tmp=elem[ontype];if(tmp){elem[ontype]=null;}jQuery.event.triggered=type;elem[type]();jQuery.event.triggered=undefined;if(tmp){elem[ontype]=tmp;}}}}return event.result;}, simulate:function(type, elem, event){var e=jQuery.extend(new jQuery.Event(), event,{type:type, isSimulated:true});jQuery.event.trigger(e, null, elem);}} {trigger:function(event, data, elem, onlyHandlers){var i, cur, tmp, bubbleType, ontype, handle, special, eventPath=[elem||document], type=hasOwn.call(event,"type")?event.type:event, namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];cur=tmp=elem=elem||document;if(elem.nodeType===3||elem.nodeType===8){return;}if(rfocusMorph.test(type+jQuery.event.triggered)){return;}if(type.indexOf(".") >-1){namespaces=type.split(".");type=namespaces.shift();namespaces.sort();}ontype=type.indexOf(":")< 0 &&"on"+type;event=event[jQuery.expando]?event:new jQuery.Event(type, typeof event==="object"&&event);event.isTrigger=onlyHandlers?2:3;event.namespace=namespaces.join(".");event.rnamespace=event.namespace?new RegExp("(^|\.)"+namespaces.join("\.(?:.*\.|)")+"(\.|$)"):null;event.result=undefined;if(!event.target){event.target=elem;}data=data==null?[event]:jQuery.makeArray(data, [event]);special=jQuery.event.special[type]||{};if(!onlyHandlers &&special.trigger &&special.trigger.apply(elem, data)===false){return;}if(!onlyHandlers &&!special.noBubble &&!jQuery.isWindow(elem)){bubbleType=special.delegateType||type;if(!rfocusMorph.test(bubbleType+type)){cur=cur.parentNode;}for(;cur;cur=cur.parentNode){eventPath.push(cur);tmp=cur;}if(tmp===(elem.ownerDocument||document)){eventPath.push(tmp.defaultView||tmp.parentWindow||window);}}i=0;while((cur=eventPath[i++])&&!event.isPropagationStopped()){event.type=i > 1?bubbleType:special.bindType||type;handle=(dataPriv.get(cur,"events")||{})[event.type]&&dataPriv.get(cur,"handle");if(handle){handle.apply(cur, data);}handle=ontype &&cur[ontype];if(handle &&handle.apply &&acceptData(cur)){event.result=handle.apply(cur, data);if(event.result===false){event.preventDefault();}}}event.type=type;if(!onlyHandlers &&!event.isDefaultPrevented()){if((!special._default||special._default.apply(eventPath.pop(), data)===false)&&acceptData(elem)){if(ontype &&jQuery.isFunction(elem[type])&&!jQuery.isWindow(elem)){tmp=elem[ontype];if(tmp){elem[ontype]=null;}jQuery.event.triggered=type;elem[type]();jQuery.event.triggered=undefined;if(tmp){elem[ontype]=tmp;}}}}return event.result;}, simulate:function(type, elem, event){var e=jQuery.extend(new jQuery.Event(), event,{type:type, isSimulated:true});jQuery.event.trigger(e, null, elem);}})
function buildParams(prefix prefix, obj obj, traditional traditional, add add)
function addToPrefiltersOrTransports(structure structure)
function inspectPrefiltersOrTransports(structure structure, options options, originalOptions originalOptions, jqXHR jqXHR)
function ajaxExtend(target target, src src)
function ajaxHandleResponses(s s, jqXHR jqXHR, responses responses)
function ajaxConvert(s s, response response, jqXHR jqXHR, isSuccess isSuccess)
jQuery ajaxTransport(function(options){var callback, errorCallback;if(support.cors||xhrSupported &&!options.crossDomain){return{send:function(headers, complete){var i, xhr=options.xhr();xhr.open(options.type, options.url, options.async, options.username, options.password);if(options.xhrFields){for(i in options.xhrFields){xhr[i]=options.xhrFields[i];}}if(options.mimeType &&xhr.overrideMimeType){xhr.overrideMimeType(options.mimeType);}if(!options.crossDomain &&!headers["X-Requested-With"]){headers["X-Requested-With"]="XMLHttpRequest";}for(i in headers){xhr.setRequestHeader(i, headers[i]);}callback=function(type){return function(){if(callback){callback=errorCallback=xhr.onload=xhr.onerror=xhr.onabort=xhr.onreadystatechange=null;if(type==="abort"){xhr.abort();}else if(type==="error"){if(typeof xhr.status!=="number"){complete(0,"error");}else{complete(xhr.status, xhr.statusText);}}else{complete(xhrSuccessStatus[xhr.status]||xhr.status, xhr.statusText,(xhr.responseType||"text")!=="text"||typeof xhr.responseText!=="string"?{binary:xhr.response}:{text:xhr.responseText}, xhr.getAllResponseHeaders());}}};};xhr.onload=callback();errorCallback=xhr.onerror=callback("error");if(xhr.onabort!==undefined){xhr.onabort=errorCallback;}else{xhr.onreadystatechange=function(){if(xhr.readyState===4){window.setTimeout(function(){if(callback){errorCallback();}});}};}callback=callback("abort");try{xhr.send(options.hasContent &&options.data||null);}catch(e){if(callback){throw e;}}}, abort:function(){if(callback){callback();}}};}} function(options){var callback, errorCallback;if(support.cors||xhrSupported &&!options.crossDomain){return{send:function(headers, complete){var i, xhr=options.xhr();xhr.open(options.type, options.url, options.async, options.username, options.password);if(options.xhrFields){for(i in options.xhrFields){xhr[i]=options.xhrFields[i];}}if(options.mimeType &&xhr.overrideMimeType){xhr.overrideMimeType(options.mimeType);}if(!options.crossDomain &&!headers["X-Requested-With"]){headers["X-Requested-With"]="XMLHttpRequest";}for(i in headers){xhr.setRequestHeader(i, headers[i]);}callback=function(type){return function(){if(callback){callback=errorCallback=xhr.onload=xhr.onerror=xhr.onabort=xhr.onreadystatechange=null;if(type==="abort"){xhr.abort();}else if(type==="error"){if(typeof xhr.status!=="number"){complete(0,"error");}else{complete(xhr.status, xhr.statusText);}}else{complete(xhrSuccessStatus[xhr.status]||xhr.status, xhr.statusText,(xhr.responseType||"text")!=="text"||typeof xhr.responseText!=="string"?{binary:xhr.response}:{text:xhr.responseText}, xhr.getAllResponseHeaders());}}};};xhr.onload=callback();errorCallback=xhr.onerror=callback("error");if(xhr.onabort!==undefined){xhr.onabort=errorCallback;}else{xhr.onreadystatechange=function(){if(xhr.readyState===4){window.setTimeout(function(){if(callback){errorCallback();}});}};}callback=callback("abort");try{xhr.send(options.hasContent &&options.data||null);}catch(e){if(callback){throw e;}}}, abort:function(){if(callback){callback();}}};}})
jQuery ajaxPrefilter(function(s){if(s.crossDomain){s.contents.script=false;}} function(s){if(s.crossDomain){s.contents.script=false;}})
jQuery ajaxSetup({accepts:{script:"text/javascript, application/javascript, "+"application/ecmascript, application/x-ecmascript"}, contents:{script:/b(?:java|ecma) scriptb/}, converters:{"text script":function(text){jQuery.globalEval(text);return text;}}} {accepts:{script:"text/javascript, application/javascript, "+"application/ecmascript, application/x-ecmascript"}, contents:{script:/b(?:java|ecma) scriptb/}, converters:{"text script":function(text){jQuery.globalEval(text);return text;}}})
jQuery ajaxPrefilter("script" "script", function(s){if(s.cache===undefined){s.cache=false;}if(s.crossDomain){s.type="GET";}} function(s){if(s.cache===undefined){s.cache=false;}if(s.crossDomain){s.type="GET";}})
jQuery ajaxTransport("script" "script", function(s){if(s.crossDomain){var script, callback;return{send:function(_, complete){script=jQuery("<script>").prop({charset:s.scriptCharset, src:s.url}).on("load error", callback=function(evt){script.remove();callback=null;if(evt){complete(evt.type==="error"?404:200, evt.type);}});document.head.appendChild(script[0]);}, abort:function(){if(callback){callback();}}};}} function(s){if(s.crossDomain){var script, callback;return{send:function(_, complete){script=jQuery("<script>").prop({charset:s.scriptCharset, src:s.url}).on("load error", callback=function(evt){script.remove();callback=null;if(evt){complete(evt.type==="error"?404:200, evt.type);}});document.head.appendChild(script[0]);}, abort:function(){if(callback){callback();}}};}})
function getWindow(elem elem)

Gets a window from an element.

if(! noGlobal)

Variables

function global

jQuery JavaScript Library v3.1.0 https://jquery.com/

Includes Sizzle.js https://sizzlejs.com/

Copyright jQuery Foundation and other contributors Released under the MIT license https://jquery.org/license

Date: 2016-07-07T21:44Z

function factory = { "use strict"
else = { factory( global )
function window == "undefined" ? window : this
function noGlobal = { "use strict"
var arr = []
var document = window.document
var getProto = Object.getPrototypeOf
var slice = arr.slice
var concat = arr.concat
var push = arr.push
var indexOf = arr.indexOf
var class2type = {}
var toString = class2type.toString
var hasOwn = class2type.hasOwnProperty
var fnToString = hasOwn.toString
var ObjectFunctionString = fnToString.call( Object )
var support = {}
var version = "3.1.0"
return jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context ); }
var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g
var rmsPrefix = /^-ms-/
var rdashAlpha = /-([a-z])/g
var fcamelCase = function( all, letter ) { return letter.toUpperCase(); }
jQuery fn
jQuery extend
var Sizzle
jQuery find = Sizzle
jQuery expr[":"] = Sizzle.selectors
jQuery uniqueSort = jQuery.unique = Sizzle.uniqueSort
jQuery text = Sizzle.getText
jQuery isXMLDoc = Sizzle.isXML
jQuery contains = Sizzle.contains
jQuery escapeSelector = Sizzle.escape
var dir = function( elem, dir, until ) { var matched = [], truncate = until !== undefined; while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { if ( elem.nodeType === 1 ) { if ( truncate && jQuery( elem ).is( until ) ) { break; } matched.push( elem ); } } return matched; }
var siblings = function( n, elem ) { var matched = []; for ( ; n; n = n.nextSibling ) { if ( n.nodeType === 1 && n !== elem ) { matched.push( n ); } } return matched; }
var rneedsContext = jQuery.expr.match.needsContext
var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i )
var risSimple = /^.[^:#\[\.,]*$/
jQuery filter = function( expr, elems, not ) { var elem = elems[ 0 ]; if ( not ) { expr = ":not(" + expr + ")"; } return elems.length === 1 && elem.nodeType === 1 ? jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { return elem.nodeType === 1; } ) ); }
rootjQuery = jQuery( document )
var rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/
var init
Tween prototype init prototype = jQuery.fn
var rparentsprev = /^(?:parents|prev(?:Until|All))/
var guaranteedUnique = { children: true, contents: true, next: true, prev: true }
var rnotwhite = ( /\S+/g )
jQuery Callbacks
var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/
jQuery Deferred exceptionHook = function( error, stack ) { if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { window.console.warn( “jQuery.Deferred exception: ” + error.message, error.stack, stack ); } }
jQuery readyException = function( error ) { window.setTimeout( function() { throw error; } ); }
var readyList = jQuery.Deferred()
jQuery fn ready = function( fn ) { readyList .then( fn ) .catch( function( error ) { jQuery.readyException( error ); } ); return this; }
jQuery ready then = readyList.then
var access
var acceptData = function( owner ) { return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); }
Data uid = 1
var dataPriv = new Data()
var dataUser = new Data()
var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/
var rmultiDash = /[A-Z]/g
var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source
var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" )
var cssExpand = [ "Top", "Right", "Bottom", "Left" ]
var isHiddenWithinTree = function( elem, el ) { elem = el || elem; return elem.style.display === "none" || elem.style.display === "" && jQuery.contains( elem.ownerDocument, elem ) && jQuery.css( elem, "display" ) === "none"; }
var swap = function( elem, options, callback, args ) { var ret, name, old = {}; for ( name in options ) { old[ name ] = elem.style[ name ]; elem.style[ name ] = options[ name ]; } ret = callback.apply( elem, args || [] ); for ( name in options ) { elem.style[ name ] = old[ name ]; } return ret; }
var defaultDisplayMap = {}
var rcheckableType = ( /^(?:checkbox|radio)$/i )
var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i )
var rscriptType = ( /^$|\/(?:java|ecma)script/i )
var wrapMap = { option: [ 1, "<select multiple='multiple'>", "</select>" ], thead: [ 1, "<table>", "</table>" ], col: [ 2, "<table><colgroup>", "</colgroup></table>" ], tr: [ 2, "<table><tbody>", "</tbody></table>" ], td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], _default: [ 0, "", "" ] }
wrapMap optgroup = wrapMap.option
wrapMap tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead
wrapMap th = wrapMap.td
var rhtml = /<|&#?\w+
support checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked
div innerHTML = "<textarea>x</textarea>"
support noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue
var documentElement = document.documentElement
var rkeyEvent = /^key/
var rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/
var rtypenamespace = /^([^.]*)(?:\.(.+)|)/
jQuery event
jQuery removeEvent = function( elem, type, handle ) { if ( elem.removeEventListener ) { elem.removeEventListener( type, handle ); } }
jQuery Event
var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi
var rnoInnerhtml = /<script|<style|<link/i, rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rscriptTypeMasked = /^true\/(.*)/, rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g
var rmargin = ( /^margin/ )
var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" )
var getStyles = function( elem ) { var view = elem.ownerDocument.defaultView; if ( !view || !view.opener ) { view = window; } return view.getComputedStyle( elem ); }
div style backgroundClip = “content-box”
support clearCloneStyle = div.style.backgroundClip === "content-box"
container style cssText = “border:0;width:8px;height:0;top:0;left:-9999px;” + “padding:0;margin-top:1px;position:absolute”
var rdisplayswap = /^(none|table(?!-c[ea]).+)/
var cssShow = { position: "absolute", visibility: "hidden", display: "block" }
var cssNormalTransform = { letterSpacing: "0", fontWeight: "400" }
var cssPrefixes = [ "Webkit", "Moz", "ms" ]
var emptyStyle = document.createElement( "div" ).style
jQuery cssHooks marginLeft = addGetHookIf( support.reliableMarginLeft, function( elem, computed ) { if ( computed ) { return ( parseFloat( curCSS( elem, “marginLeft” ) ) || elem.getBoundingClientRect().left - swap( elem, { marginLeft: 0 }, function() { return elem.getBoundingClientRect().left; } ) ) + “px”; } } )
jQuery Tween = Tween
Tween propHooks
Tween propHooks scrollTop = Tween.propHooks.scrollLeft = { set: function( tween ) { if ( tween.elem.nodeType && tween.elem.parentNode ) { tween.elem[ tween.prop ] = tween.now; } } }
jQuery easing = { linear: function( p ) { return p; }, swing: function( p ) { return 0.5 - Math.cos( p * Math.PI ) / 2; }, _default: "swing" }
jQuery fx = Tween.prototype.init
jQuery fx step = {}
var fxNow
var timerId
var rfxtypes = /^(?:toggle|show|hide)$/
var rrun = /queueHooks$/
jQuery Animation
jQuery speed
jQuery timers = []
jQuery fx tick = function() { var timer, i = 0, timers = jQuery.timers; fxNow = jQuery.now(); for ( ; i < timers.length; i++ ) { timer = timers[ i ]; if ( !timer() && timers[ i ] === timer ) { timers.splice( i–, 1 ); } } if ( !timers.length ) { jQuery.fx.stop(); } fxNow = undefined; }
jQuery fx timer = function( timer ) { jQuery.timers.push( timer ); if ( timer() ) { jQuery.fx.start(); } else { jQuery.timers.pop(); } }
jQuery fx interval = 13
jQuery fx start = function() { if ( !timerId ) { timerId = window.requestAnimationFrame ? window.requestAnimationFrame( raf ) : window.setInterval( jQuery.fx.tick, jQuery.fx.interval ); } }
jQuery fx stop = function() { if ( window.cancelAnimationFrame ) { window.cancelAnimationFrame( timerId ); } else { window.clearInterval( timerId ); } timerId = null; }
jQuery fx speeds = { slow: 600, fast: 200, _default: 400 }
jQuery fn delay = function( time, type ) { time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; type = type || “fx”; return this.queue( type, function( next, hooks ) { var timeout = window.setTimeout( next, time ); hooks.stop = function() { window.clearTimeout( timeout ); }; } ); }
input type = "checkbox"
support checkOn = input.value !== ""
support optSelected = opt.selected
input = document.createElement( “input” )
input value = "t"
support radioValue = input.value === "t"
boolHook = { set: function( elem, value, name ) { if ( value === false ) { jQuery.removeAttr( elem, name ); } else { elem.setAttribute( name, name ); } return name; } }
var attrHandle = jQuery.expr.attrHandle
var rfocusable = /^(?:input|select|textarea|button)$/i
var rclickable = /^(?:a|area)$/i
var rclass = /[\t\r\n\f]/g
var rreturn = /\r/g
var rspaces = /[\x20\t\r\n\f]+/g
var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/
support focusin = "onfocusin" in window
var location = window.location
var nonce = jQuery.now()
var rquery = ( /\?/ )
jQuery parseXML = function( data ) { var xml; if ( !data || typeof data !== "string" ) { return null; } try { xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); } catch ( e ) { xml = undefined; } if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { jQuery.error( "Invalid XML: " + data ); } return xml; }
var rbracket = /\[\]$/
var rCRLF = /\r?\n/g
var rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i
var rsubmittable = /^(?:input|select|textarea|keygen)/i
jQuery param
var r20 = /%20/g
var rhash = /#.*$/
var rts = /([?&])_=[^&]*/
var rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg
var rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/
var rnoContent = /^(?:GET|HEAD)$/
var rprotocol = /^\/\ prefilters = {}
var transports = {}
var allTypes = "*/".concat( "*" )
var originAnchor = document.createElement( "a" )
originAnchor href = location.href
jQuery _evalUrl = function( url ) { return jQuery.ajax( { url: url, type: "GET", dataType: "script", cache: true, async: false, global: false, "throws": true } ); }
jQuery expr pseudos hidden = function( elem ) { return !jQuery.expr.pseudos.visible( elem ); }
jQuery expr pseudos visible = function( elem ) { return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); }
jQuery ajaxSettings xhr = function() { try { return new window.XMLHttpRequest(); } catch ( e ) {} }
var xhrSuccessStatus = { 0: 200, 1223: 204 }
var xhrSupported = jQuery.ajaxSettings.xhr()
support cors = !!xhrSupported && ( "withCredentials" in xhrSupported )
support ajax = xhrSupported = !!xhrSupported
var oldCallbacks = []
var rjsonp = /(=)\?(?=&|$)|\?\?/
support createHTMLDocument = ( function() { var body = document.implementation.createHTMLDocument( "" ).body; body.innerHTML = "<form></form><form></form>"; return body.childNodes.length === 2; } )()
jQuery parseHTML
jQuery fn load

Load a url into a page.

jQuery expr pseudos animated = function( elem ) { return jQuery.grep( jQuery.timers, function( fn ) { return elem === fn.elem; } ).length; }
jQuery offset
jQuery parseJSON = JSON.parse
var _jQuery = window.jQuery
var _ = window.$
jQuery noConflict = function( deep ) { if ( window.$ === jQuery ) { window.$ = _$; } if ( deep && window.jQuery === jQuery ) { window.jQuery = _jQuery; } return jQuery; }
file jquery.js

Functions

!function(a a, b b)

jQuery v3.1.0 | (c) jQuery Foundation | jquery.org/license

function p(a a, b b)
r r r extend({expando:"jQuery"+(q+Math.random()).replace(/D/g,""), isReady:!0, error:function(a){throw new Error(a)}, noop:function(){}, isFunction:function(a){return"function"===r.type(a)}, isArray:Array.isArray, isWindow:function(a){return null!=a &&a===a.window}, isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))}, isPlainObject:function(a){var b, c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c &&m.call(c)===n))}, isEmptyObject:function(a){var b;for(b in a) return!1;return!0}, type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a}, globalEval:function(a){p(a)}, camelCase:function(a){return a.replace(t,"ms-").replace(u, v)}, nodeName:function(a, b){return a.nodeName &&a.nodeName.toLowerCase()===b.toLowerCase()}, each:function(a, b){var c, d=0;if(w(a)){for(c=a.length;d< c;d++) if(b.call(a[d], d, a[d])===!1) break}else for(d in a) if(b.call(a[d], d, a[d])===!1) break;return a}, trim:function(a){return null==a?"":(a+"").replace(s,"")}, makeArray:function(a, b){var c=b||[];return null!=a &&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c, a)), c}, inArray:function(a, b, c){return null==b?-1:i.call(b, a, c)}, merge:function(a, b){for(var c=+b.length, d=0, e=a.length;d< c;d++) a[e++]=b[d];return a.length=e, a}, grep:function(a, b, c){for(var d, e=[], f=0, g=a.length, h=!c;f< g;f++) d=!b(a[f], f), d!==h &&e.push(a[f]);return e}, map:function(a, b, c){var d, e, f=0, h=[];if(w(a)) for(d=a.length;f< d;f++) e=b(a[f], f, c), null!=e &&h.push(e);else for(f in a) e=b(a[f], f, c), null!=e &&h.push(e);return g.apply([], h)}, guid:1, proxy:function(a, b){var c, d, e;if("string"==typeof b &&(c=a[b], b=a, a=c), r.isFunction(a)) return d=f.call(arguments, 2), e=function(){return a.apply(b||this, d.concat(f.call(arguments)))}, e.guid=a.guid=a.guid||r.guid++, e}, now:Date.now, support:o} {expando:"jQuery"+(q+Math.random()).replace(/D/g,""), isReady:!0, error:function(a){throw new Error(a)}, noop:function(){}, isFunction:function(a){return"function"===r.type(a)}, isArray:Array.isArray, isWindow:function(a){return null!=a &&a===a.window}, isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))}, isPlainObject:function(a){var b, c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c &&m.call(c)===n))}, isEmptyObject:function(a){var b;for(b in a) return!1;return!0}, type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a}, globalEval:function(a){p(a)}, camelCase:function(a){return a.replace(t,"ms-").replace(u, v)}, nodeName:function(a, b){return a.nodeName &&a.nodeName.toLowerCase()===b.toLowerCase()}, each:function(a, b){var c, d=0;if(w(a)){for(c=a.length;d< c;d++) if(b.call(a[d], d, a[d])===!1) break}else for(d in a) if(b.call(a[d], d, a[d])===!1) break;return a}, trim:function(a){return null==a?"":(a+"").replace(s,"")}, makeArray:function(a, b){var c=b||[];return null!=a &&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c, a)), c}, inArray:function(a, b, c){return null==b?-1:i.call(b, a, c)}, merge:function(a, b){for(var c=+b.length, d=0, e=a.length;d< c;d++) a[e++]=b[d];return a.length=e, a}, grep:function(a, b, c){for(var d, e=[], f=0, g=a.length, h=!c;f< g;f++) d=!b(a[f], f), d!==h &&e.push(a[f]);return e}, map:function(a, b, c){var d, e, f=0, h=[];if(w(a)) for(d=a.length;f< d;f++) e=b(a[f], f, c), null!=e &&h.push(e);else for(f in a) e=b(a[f], f, c), null!=e &&h.push(e);return g.apply([], h)}, guid:1, proxy:function(a, b){var c, d, e;if("string"==typeof b &&(c=a[b], b=a, a=c), r.isFunction(a)) return d=f.call(arguments, 2), e=function(){return a.apply(b||this, d.concat(f.call(arguments)))}, e.guid=a.guid=a.guid||r.guid++, e}, now:Date.now, support:o})
function r each("Boolean Number String Function Array Date RegExp Object Error Symbol". split" ", function(a, b){j["[object "+b+"]"]=b.toLowerCase()} function(a, b){j["[object "+b+"]"]=b.toLowerCase()})
function w(a a)

Variables

undefined =typeof window?window:this
function a
function b = {"use strict"
var c =[]
var d =a.document
var e =Object.getPrototypeOf
var f =c.slice
var g =c.concat
var h =c.push
var i =c.indexOf
var j ={}
var k =j.toString
var l =j.hasOwnProperty
var m =l.toString
var n =m.call(Object)
var o ={}
var q ="3.1.0"
var r =function(a,b){return new r.fn.init(a,b)}
var s =/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g
var t =/^-ms-/
var u =/-([a-z])/g
var v =function(a,b){return b.toUpperCase()}
r fn =r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null!=a?a<0?this[a+this.length]:this[a]:f.call(this)},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice}
r r extend =r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for(“boolean”==typeof g&&(j=g,g=arguments[h]||{},h++),”object”==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h–);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g}
file jquery.js

Functions

!function(a a, b b)

jQuery v3.1.0 | (c) jQuery Foundation | jquery.org/license

function p(a a, b b)
r r r extend({expando:"jQuery"+(q+Math.random()).replace(/D/g,""), isReady:!0, error:function(a){throw new Error(a)}, noop:function(){}, isFunction:function(a){return"function"===r.type(a)}, isArray:Array.isArray, isWindow:function(a){return null!=a &&a===a.window}, isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))}, isPlainObject:function(a){var b, c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c &&m.call(c)===n))}, isEmptyObject:function(a){var b;for(b in a) return!1;return!0}, type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a}, globalEval:function(a){p(a)}, camelCase:function(a){return a.replace(t,"ms-").replace(u, v)}, nodeName:function(a, b){return a.nodeName &&a.nodeName.toLowerCase()===b.toLowerCase()}, each:function(a, b){var c, d=0;if(w(a)){for(c=a.length;d< c;d++) if(b.call(a[d], d, a[d])===!1) break}else for(d in a) if(b.call(a[d], d, a[d])===!1) break;return a}, trim:function(a){return null==a?"":(a+"").replace(s,"")}, makeArray:function(a, b){var c=b||[];return null!=a &&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c, a)), c}, inArray:function(a, b, c){return null==b?-1:i.call(b, a, c)}, merge:function(a, b){for(var c=+b.length, d=0, e=a.length;d< c;d++) a[e++]=b[d];return a.length=e, a}, grep:function(a, b, c){for(var d, e=[], f=0, g=a.length, h=!c;f< g;f++) d=!b(a[f], f), d!==h &&e.push(a[f]);return e}, map:function(a, b, c){var d, e, f=0, h=[];if(w(a)) for(d=a.length;f< d;f++) e=b(a[f], f, c), null!=e &&h.push(e);else for(f in a) e=b(a[f], f, c), null!=e &&h.push(e);return g.apply([], h)}, guid:1, proxy:function(a, b){var c, d, e;if("string"==typeof b &&(c=a[b], b=a, a=c), r.isFunction(a)) return d=f.call(arguments, 2), e=function(){return a.apply(b||this, d.concat(f.call(arguments)))}, e.guid=a.guid=a.guid||r.guid++, e}, now:Date.now, support:o} {expando:"jQuery"+(q+Math.random()).replace(/D/g,""), isReady:!0, error:function(a){throw new Error(a)}, noop:function(){}, isFunction:function(a){return"function"===r.type(a)}, isArray:Array.isArray, isWindow:function(a){return null!=a &&a===a.window}, isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))}, isPlainObject:function(a){var b, c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c &&m.call(c)===n))}, isEmptyObject:function(a){var b;for(b in a) return!1;return!0}, type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a}, globalEval:function(a){p(a)}, camelCase:function(a){return a.replace(t,"ms-").replace(u, v)}, nodeName:function(a, b){return a.nodeName &&a.nodeName.toLowerCase()===b.toLowerCase()}, each:function(a, b){var c, d=0;if(w(a)){for(c=a.length;d< c;d++) if(b.call(a[d], d, a[d])===!1) break}else for(d in a) if(b.call(a[d], d, a[d])===!1) break;return a}, trim:function(a){return null==a?"":(a+"").replace(s,"")}, makeArray:function(a, b){var c=b||[];return null!=a &&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c, a)), c}, inArray:function(a, b, c){return null==b?-1:i.call(b, a, c)}, merge:function(a, b){for(var c=+b.length, d=0, e=a.length;d< c;d++) a[e++]=b[d];return a.length=e, a}, grep:function(a, b, c){for(var d, e=[], f=0, g=a.length, h=!c;f< g;f++) d=!b(a[f], f), d!==h &&e.push(a[f]);return e}, map:function(a, b, c){var d, e, f=0, h=[];if(w(a)) for(d=a.length;f< d;f++) e=b(a[f], f, c), null!=e &&h.push(e);else for(f in a) e=b(a[f], f, c), null!=e &&h.push(e);return g.apply([], h)}, guid:1, proxy:function(a, b){var c, d, e;if("string"==typeof b &&(c=a[b], b=a, a=c), r.isFunction(a)) return d=f.call(arguments, 2), e=function(){return a.apply(b||this, d.concat(f.call(arguments)))}, e.guid=a.guid=a.guid||r.guid++, e}, now:Date.now, support:o})
function r each("Boolean Number String Function Array Date RegExp Object Error Symbol". split" ", function(a, b){j["[object "+b+"]"]=b.toLowerCase()} function(a, b){j["[object "+b+"]"]=b.toLowerCase()})
function w(a a)

Variables

undefined =typeof window?window:this
function a
function b = {"use strict"
var c =[]
var d =a.document
var e =Object.getPrototypeOf
var f =c.slice
var g =c.concat
var h =c.push
var i =c.indexOf
var j ={}
var k =j.toString
var l =j.hasOwnProperty
var m =l.toString
var n =m.call(Object)
var o ={}
var q ="3.1.0"
var r =function(a,b){return new r.fn.init(a,b)}
var s =/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g
var t =/^-ms-/
var u =/-([a-z])/g
var v =function(a,b){return b.toUpperCase()}
r fn =r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null!=a?a<0?this[a+this.length]:this[a]:f.call(this)},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice}
r r extend =r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for(“boolean”==typeof g&&(j=g,g=arguments[h]||{},h++),”object”==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h–);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g}
file modernizr.min.js

Variables

window Modernizr =function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a){var e=a[d];if(!G(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function K(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["&#173;",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return J("flexWrap")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=function(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var L in s)C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));return e.input||K(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)C(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},D(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,e.prefixed=function(a,b,c){return b?J(a,b,c):J(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document)
function a
function b
function c = {function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B
B =function(a){function b(a){var a=a.split(“!”),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split(“=”),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(“.”).pop().split(“?”).shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split(“/”).pop().split(“?”)[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&”css”==i.url.split(“.”).pop().split(“?”).shift()?”c”:c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!–m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)}
B addPrefix =function(a,b){z[a]=b}
B B addFilter =function(a){x.push(a)}
B B B errorTimeout =1e4
B B B null ==b.readyState&&b.addEventListener&&(b.readyState=”loading”,b.addEventListener(“DOMContentLoaded”,A=function(){b.removeEventListener(“DOMContentLoaded”,A,0),b.readyState=”complete”},0))
B B B a yepnope =k()
B B B a a yepnope executeStack =h
B B B a a yepnope a yepnope injectJs =function(a,c,d,e,i,j){var k=b.createElement(“script”),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)}
B B B a a yepnope a yepnope a yepnope injectCss =function(a,c,d,e,g,i){var e=b.createElement(“link”),j,c=i?h:c||f;e.href=a,e.rel=”stylesheet”,e.type=”text/css”;for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))}
file modernizr.min.js

Variables

window Modernizr =function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a){var e=a[d];if(!G(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function K(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["&#173;",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return J("flexWrap")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=function(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var L in s)C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));return e.input||K(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)C(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},D(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,e.prefixed=function(a,b,c){return b?J(a,b,c):J(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document)
function a
function b
function c = {function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B
B =function(a){function b(a){var a=a.split(“!”),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split(“=”),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(“.”).pop().split(“?”).shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split(“/”).pop().split(“?”)[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&”css”==i.url.split(“.”).pop().split(“?”).shift()?”c”:c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!–m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)}
B addPrefix =function(a,b){z[a]=b}
B B addFilter =function(a){x.push(a)}
B B B errorTimeout =1e4
B B B null ==b.readyState&&b.addEventListener&&(b.readyState=”loading”,b.addEventListener(“DOMContentLoaded”,A=function(){b.removeEventListener(“DOMContentLoaded”,A,0),b.readyState=”complete”},0))
B B B a yepnope =k()
B B B a a yepnope executeStack =h
B B B a a yepnope a yepnope injectJs =function(a,c,d,e,i,j){var k=b.createElement(“script”),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)}
B B B a a yepnope a yepnope a yepnope injectCss =function(a,c,d,e,g,i){var e=b.createElement(“link”),j,c=i?h:c||f;e.href=a,e.rel=”stylesheet”,e.type=”text/css”;for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))}
file theme.js

Variables

require
file theme.js

Variables

require
file readthedocs-data.js

Variables

var READTHEDOCS_DATA = { project: "roboy-audio", version: "doxy_setup", language: "en", programming_language: "py", subprojects: {}, canonical_url: "http://roboy-audio.readthedocs.io/en/doxy_setup/", theme: "sphinx_rtd_theme", builder: "sphinx", docroot: "/documentation/", source_suffix: ".rst", api_host: "https://readthedocs.org", commit: "174a3eb2" }
file readthedocs-dynamic-include.js

Functions

m parentNode insertBefore(a a, m m)
ga('rtfd.set' 'rtfd.set', 'dimension1' 'dimension1', READTHEDOCS_DATA. project)
ga('rtfd.send' 'rtfd.send', 'pageview' 'pageview')

Variables

i[r] =i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)}
function s
function o
function g
function r
a =s.createElement(o)
m = {i[‘GoogleAnalyticsObject’]=r
i [r] l =1*new Date()
a async =1
a src =g
m parentNode document
m parentNode script
m parentNode https
m parentNode UA
m parentNode auto
m parentNode rtfd
file searchtools.js

Functions

function splitQuery(query query)

Variables

var Stemmer

Porter Stemmer.

var splitChars
var Search

Search Module.

file searchtools.js

Functions

function splitQuery(query query)
document ready(function(){Search.init();} function(){Search.init();})

Variables

var Stemmer

Porter Stemmer.

var splitChars
var Search

Search Module.

file underscore-1.3.1.js

Functions

if(typeof exports! typeof exports! = = 'undefined')
_ union function()
function eq(a a, b b, stack stack)
if(!_. isArgumentsarguments)
function return(data data)
_ mixin(_ _)
each(function(name){var method=ArrayProto[name];wrapper.prototype[name]=function(){var wrapped=this._wrapped;method.apply(wrapped, arguments);var length=wrapped.length;if((name== 'shift'||name== 'splice')&&length===0) delete wrapped[0];return result(wrapped, this._chain);};} function(name){var method=ArrayProto[name];wrapper.prototype[name]=function(){var wrapped=this._wrapped;method.apply(wrapped, arguments);var length=wrapped.length;if((name== 'shift'||name== 'splice')&&length===0) delete wrapped[0];return result(wrapped, this._chain);};})
call(this this)

Variables

var previousUnderscore = root._
var breaker = {}
var ArrayProto = Array.prototype
var ObjProto = Object.prototype
var FuncProto = Function.prototype
var slice = ArrayProto.slice
var unshift = ArrayProto.unshift
var toString = ObjProto.toString
var hasOwnProperty = ObjProto.hasOwnProperty
var nativeForEach = ArrayProto.forEach
var nativeMap = ArrayProto.map
var nativeReduce = ArrayProto.reduce
var nativeReduceRight = ArrayProto.reduceRight
var nativeFilter = ArrayProto.filter
var nativeEvery = ArrayProto.every
var nativeSome = ArrayProto.some
var nativeIndexOf = ArrayProto.indexOf
var nativeLastIndexOf = ArrayProto.lastIndexOf
var nativeIsArray = Array.isArray
var nativeKeys = Object.keys
var nativeBind = FuncProto.bind
_ = function(obj) { return new wrapper(obj); }
else = { root[‘_’] = _
_ VERSION = '1.3.1'
each = _.each = _.forEach = function(obj, iterator, context) { if (obj == null) return; if (nativeForEach && obj.forEach === nativeForEach) { obj.forEach(iterator, context); } else if (obj.length === +obj.length) { for (var i = 0, l = obj.length; i < l; i++) { if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return; } } else { for (var key in obj) { if (_.has(obj, key)) { if (iterator.call(context, obj[key], key, obj) === breaker) return; } } } }
_ map = _.collect = function(obj, iterator, context) { var results = []; if (obj == null) return results; if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); each(obj, function(value, index, list) { results[results.length] = iterator.call(context, value, index, list); }); if (obj.length === +obj.length) results.length = obj.length; return results; }
_ reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { var initial = arguments.length > 2; if (obj == null) obj = []; if (nativeReduce && obj.reduce === nativeReduce) { if (context) iterator = _.bind(iterator, context); return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator); } each(obj, function(value, index, list) { if (!initial) { memo = value; initial = true; } else { memo = iterator.call(context, memo, value, index, list); } }); if (!initial) throw new TypeError('Reduce of empty array with no initial value'); return memo; }
_ reduceRight = _.foldr = function(obj, iterator, memo, context) { var initial = arguments.length > 2; if (obj == null) obj = []; if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { if (context) iterator = _.bind(iterator, context); return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator); } var reversed = _.toArray(obj).reverse(); if (context && !initial) iterator = _.bind(iterator, context); return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator); }
_ find = _.detect = function(obj, iterator, context) { var result; any(obj, function(value, index, list) { if (iterator.call(context, value, index, list)) { result = value; return true; } }); return result; }
_ filter = _.select = function(obj, iterator, context) { var results = []; if (obj == null) return results; if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); each(obj, function(value, index, list) { if (iterator.call(context, value, index, list)) results[results.length] = value; }); return results; }
_ reject = function(obj, iterator, context) { var results = []; if (obj == null) return results; each(obj, function(value, index, list) { if (!iterator.call(context, value, index, list)) results[results.length] = value; }); return results; }
_ every = _.all = function(obj, iterator, context) { var result = true; if (obj == null) return result; if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context); each(obj, function(value, index, list) { if (!(result = result && iterator.call(context, value, index, list))) return breaker; }); return result; }
var any = _.some = _.any = function(obj, iterator, context) { iterator || (iterator = _.identity); var result = false; if (obj == null) return result; if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context); each(obj, function(value, index, list) { if (result || (result = iterator.call(context, value, index, list))) return breaker; }); return !!result; }
_ include = _.contains = function(obj, target) { var found = false; if (obj == null) return found; if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; found = any(obj, function(value) { return value === target; }); return found; }
_ invoke = function(obj, method) { var args = slice.call(arguments, 2); return _.map(obj, function(value) { return (_.isFunction(method) ? method || value : value[method]).apply(value, args); }); }
_ pluck = function(obj, key) { return _.map(obj, function(value){ return value[key]; }); }
_ max = function(obj, iterator, context) { if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj); if (!iterator && _.isEmpty(obj)) return -Infinity; var result = {computed : -Infinity}; each(obj, function(value, index, list) { var computed = iterator ? iterator.call(context, value, index, list) : value; computed >= result.computed && (result = {value : value, computed : computed}); }); return result.value; }
_ min = function(obj, iterator, context) { if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj); if (!iterator && _.isEmpty(obj)) return Infinity; var result = {computed : Infinity}; each(obj, function(value, index, list) { var computed = iterator ? iterator.call(context, value, index, list) : value; computed < result.computed && (result = {value : value, computed : computed}); }); return result.value; }
_ shuffle = function(obj) { var shuffled = [], rand; each(obj, function(value, index, list) { if (index == 0) { shuffled[0] = value; } else { rand = Math.floor(Math.random() * (index + 1)); shuffled[index] = shuffled[rand]; shuffled[rand] = value; } }); return shuffled; }
_ sortBy = function(obj, iterator, context) { return _.pluck(_.map(obj, function(value, index, list) { return { value : value, criteria : iterator.call(context, value, index, list) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }), 'value'); }
_ groupBy = function(obj, val) { var result = {}; var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; }; each(obj, function(value, index) { var key = iterator(value, index); (result[key] || (result[key] = [])).push(value); }); return result; }
_ sortedIndex = function(array, obj, iterator) { iterator || (iterator = _.identity); var low = 0, high = array.length; while (low < high) { var mid = (low + high) >> 1; iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid; } return low; }
_ toArray = function(iterable) { if (!iterable) return []; if (iterable.toArray) return iterable.toArray(); if (_.isArray(iterable)) return slice.call(iterable); if (_.isArguments(iterable)) return slice.call(iterable); return _.values(iterable); }
_ size = function(obj) { return _.toArray(obj).length; }
_ first = _.head = function(array, n, guard) { return (n != null) && !guard ? slice.call(array, 0, n) : array[0]; }
_ initial = function(array, n, guard) { return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n)); }
_ last = function(array, n, guard) { if ((n != null) && !guard) { return slice.call(array, Math.max(array.length - n, 0)); } else { return array[array.length - 1]; } }
_ rest = _.tail = function(array, index, guard) { return slice.call(array, (index == null) || guard ? 1 : index); }
_ compact = function(array) { return _.filter(array, function(value){ return !!value; }); }
_ flatten = function(array, shallow) { return _.reduce(array, function(memo, value) { if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value)); memo[memo.length] = value; return memo; }, []); }
_ without = function(array) { return _.difference(array, slice.call(arguments, 1)); }
_ uniq = _.unique = function(array, isSorted, iterator) { var initial = iterator ? _.map(array, iterator) : array; var result = []; _.reduce(initial, function(memo, el, i) { if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) { memo[memo.length] = el; result[result.length] = array[i]; } return memo; }, []); return result; }
_ intersection = _.intersect = function(array) { var rest = slice.call(arguments, 1); return _.filter(_.uniq(array), function(item) { return _.every(rest, function(other) { return _.indexOf(other, item) >= 0; }); }); }
_ difference = function(array) { var rest = _.flatten(slice.call(arguments, 1)); return _.filter(array, function(value){ return !_.include(rest, value); }); }
_ zip = function() { var args = slice.call(arguments); var length = _.max(_.pluck(args, 'length')); var results = new Array(length); for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i); return results; }
_ indexOf = function(array, item, isSorted) { if (array == null) return -1; var i, l; if (isSorted) { i = _.sortedIndex(array, item); return array[i] === item ? i : -1; } if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item); for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i; return -1; }
_ lastIndexOf = function(array, item) { if (array == null) return -1; if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item); var i = array.length; while (i--) if (i in array && array[i] === item) return i; return -1; }
_ range = function(start, stop, step) { if (arguments.length <= 1) { stop = start || 0; start = 0; } step = arguments[2] || 1; var len = Math.max(Math.ceil((stop - start) / step), 0); var idx = 0; var range = new Array(len); while(idx < len) { range[idx++] = start; start += step; } return range; }
var ctor = function(){}
_ bind = function bind(func, context) { var bound, args; if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); if (!_.isFunction(func)) throw new TypeError; args = slice.call(arguments, 2); return bound = function() { if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments))); ctor.prototype = func.prototype; var self = new ctor; var result = func.apply(self, args.concat(slice.call(arguments))); if (Object(result) === result) return result; return self; }; }
_ bindAll = function(obj) { var funcs = slice.call(arguments, 1); if (funcs.length == 0) funcs = _.functions(obj); each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); return obj; }
_ memoize = function(func, hasher) { var memo = {}; hasher || (hasher = _.identity); return function() { var key = hasher.apply(this, arguments); return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments)); }; }
_ delay = function(func, wait) { var args = slice.call(arguments, 2); return setTimeout(function(){ return func.apply(func, args); }, wait); }
_ defer = function(func) { return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); }
_ throttle = function(func, wait) { var context, args, timeout, throttling, more; var whenDone = _.debounce(function(){ more = throttling = false; }, wait); return function() { context = this; args = arguments; var later = function() { timeout = null; if (more) func.apply(context, args); whenDone(); }; if (!timeout) timeout = setTimeout(later, wait); if (throttling) { more = true; } else { func.apply(context, args); } whenDone(); throttling = true; }; }
_ debounce = function(func, wait) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; func.apply(context, args); }; clearTimeout(timeout); timeout = setTimeout(later, wait); }; }
_ once = function(func) { var ran = false, memo; return function() { if (ran) return memo; ran = true; return memo = func.apply(this, arguments); }; }
_ wrap = function(func, wrapper) { return function() { var args = [func].concat(slice.call(arguments, 0)); return wrapper.apply(this, args); }; }
_ compose = function() { var funcs = arguments; return function() { var args = arguments; for (var i = funcs.length - 1; i >= 0; i--) { args = [funcs[i].apply(this, args)]; } return args[0]; }; }
_ after = function(times, func) { if (times <= 0) return func(); return function() { if (--times < 1) { return func.apply(this, arguments); } }; }
_ keys = nativeKeys || function(obj) { if (obj !== Object(obj)) throw new TypeError('Invalid object'); var keys = []; for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key; return keys; }
_ values = function(obj) { return _.map(obj, _.identity); }
_ functions = _.methods = function(obj) { var names = []; for (var key in obj) { if (_.isFunction(obj[key])) names.push(key); } return names.sort(); }
_ extend = function(obj) { each(slice.call(arguments, 1), function(source) { for (var prop in source) { obj[prop] = source[prop]; } }); return obj; }
_ defaults = function(obj) { each(slice.call(arguments, 1), function(source) { for (var prop in source) { if (obj[prop] == null) obj[prop] = source[prop]; } }); return obj; }
_ clone = function(obj) { if (!_.isObject(obj)) return obj; return _.isArray(obj) ? obj.slice() : _.extend({}, obj); }
_ tap = function(obj, interceptor) { interceptor(obj); return obj; }
_ isEqual = function(a, b) { return eq(a, b, []); }
_ isEmpty = function(obj) { if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; for (var key in obj) if (_.has(obj, key)) return false; return true; }
_ isElement = function(obj) { return !!(obj && obj.nodeType == 1); }
_ isArray = nativeIsArray || function(obj) { return toString.call(obj) == '[object Array]'; }
_ isObject = function(obj) { return obj === Object(obj); }
_ isArguments = function(obj) { return toString.call(obj) == '[object Arguments]'; }
_ isFunction = function(obj) { return toString.call(obj) == '[object Function]'; }
_ isString = function(obj) { return toString.call(obj) == '[object String]'; }
_ isNumber = function(obj) { return toString.call(obj) == '[object Number]'; }
_ isNaN = function(obj) { return obj !== obj; }
_ isBoolean = function(obj) { return obj === true || obj === false || toString.call(obj) == '[object Boolean]'; }
_ isDate = function(obj) { return toString.call(obj) == '[object Date]'; }
_ isRegExp = function(obj) { return toString.call(obj) == '[object RegExp]'; }
_ isNull = function(obj) { return obj === null; }
_ isUndefined = function(obj) { return obj === void 0; }
_ has = function(obj, key) { return hasOwnProperty.call(obj, key); }
_ noConflict = function() { root._ = previousUnderscore; return this; }
_ identity = function(value) { return value; }
_ times = function (n, iterator, context) { for (var i = 0; i < n; i++) iterator.call(context, i); }
_ escape
var func = new Function('obj', '_', tmpl)
wrapper prototype chain = function(obj) { return _(obj).chain(); }
var wrapper = function(obj) { this._wrapped = obj; }
_ prototype = wrapper.prototype
var result = function(obj, chain) { return chain ? _(obj).chain() : obj; }
var addToWrapper = function(name, func) { wrapper.prototype[name] = function() { var args = slice.call(arguments); unshift.call(args, this._wrapped); return result(func.apply(_, args), this._chain); }; }
wrapper prototype value = function() { return this._wrapped; }
file underscore-1.3.1.js

Functions

if(typeof exports! typeof exports! = = 'undefined')
_ union function()
function eq(a a, b b, stack stack)
if(!_. isArgumentsarguments)
function return(data data)
_ mixin(_ _)
each(function(name){var method=ArrayProto[name];wrapper.prototype[name]=function(){var wrapped=this._wrapped;method.apply(wrapped, arguments);var length=wrapped.length;if((name== 'shift'||name== 'splice')&&length===0) delete wrapped[0];return result(wrapped, this._chain);};} function(name){var method=ArrayProto[name];wrapper.prototype[name]=function(){var wrapped=this._wrapped;method.apply(wrapped, arguments);var length=wrapped.length;if((name== 'shift'||name== 'splice')&&length===0) delete wrapped[0];return result(wrapped, this._chain);};})
call(this this)

Variables

var previousUnderscore = root._
var breaker = {}
var ArrayProto = Array.prototype
var ObjProto = Object.prototype
var FuncProto = Function.prototype
var slice = ArrayProto.slice
var unshift = ArrayProto.unshift
var toString = ObjProto.toString
var hasOwnProperty = ObjProto.hasOwnProperty
var nativeForEach = ArrayProto.forEach
var nativeMap = ArrayProto.map
var nativeReduce = ArrayProto.reduce
var nativeReduceRight = ArrayProto.reduceRight
var nativeFilter = ArrayProto.filter
var nativeEvery = ArrayProto.every
var nativeSome = ArrayProto.some
var nativeIndexOf = ArrayProto.indexOf
var nativeLastIndexOf = ArrayProto.lastIndexOf
var nativeIsArray = Array.isArray
var nativeKeys = Object.keys
var nativeBind = FuncProto.bind
_ = function(obj) { return new wrapper(obj); }
else = { root[‘_’] = _
_ VERSION = '1.3.1'
var each = _.each = _.forEach = function(obj, iterator, context) { if (obj == null) return; if (nativeForEach && obj.forEach === nativeForEach) { obj.forEach(iterator, context); } else if (obj.length === +obj.length) { for (var i = 0, l = obj.length; i < l; i++) { if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return; } } else { for (var key in obj) { if (_.has(obj, key)) { if (iterator.call(context, obj[key], key, obj) === breaker) return; } } } }
_ map = _.collect = function(obj, iterator, context) { var results = []; if (obj == null) return results; if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); each(obj, function(value, index, list) { results[results.length] = iterator.call(context, value, index, list); }); if (obj.length === +obj.length) results.length = obj.length; return results; }
_ reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { var initial = arguments.length > 2; if (obj == null) obj = []; if (nativeReduce && obj.reduce === nativeReduce) { if (context) iterator = _.bind(iterator, context); return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator); } each(obj, function(value, index, list) { if (!initial) { memo = value; initial = true; } else { memo = iterator.call(context, memo, value, index, list); } }); if (!initial) throw new TypeError('Reduce of empty array with no initial value'); return memo; }
_ reduceRight = _.foldr = function(obj, iterator, memo, context) { var initial = arguments.length > 2; if (obj == null) obj = []; if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { if (context) iterator = _.bind(iterator, context); return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator); } var reversed = _.toArray(obj).reverse(); if (context && !initial) iterator = _.bind(iterator, context); return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator); }
_ find = _.detect = function(obj, iterator, context) { var result; any(obj, function(value, index, list) { if (iterator.call(context, value, index, list)) { result = value; return true; } }); return result; }
_ filter = _.select = function(obj, iterator, context) { var results = []; if (obj == null) return results; if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); each(obj, function(value, index, list) { if (iterator.call(context, value, index, list)) results[results.length] = value; }); return results; }
_ reject = function(obj, iterator, context) { var results = []; if (obj == null) return results; each(obj, function(value, index, list) { if (!iterator.call(context, value, index, list)) results[results.length] = value; }); return results; }
_ every = _.all = function(obj, iterator, context) { var result = true; if (obj == null) return result; if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context); each(obj, function(value, index, list) { if (!(result = result && iterator.call(context, value, index, list))) return breaker; }); return result; }
var any = _.some = _.any = function(obj, iterator, context) { iterator || (iterator = _.identity); var result = false; if (obj == null) return result; if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context); each(obj, function(value, index, list) { if (result || (result = iterator.call(context, value, index, list))) return breaker; }); return !!result; }
_ include = _.contains = function(obj, target) { var found = false; if (obj == null) return found; if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; found = any(obj, function(value) { return value === target; }); return found; }
_ invoke = function(obj, method) { var args = slice.call(arguments, 2); return _.map(obj, function(value) { return (_.isFunction(method) ? method || value : value[method]).apply(value, args); }); }
_ pluck = function(obj, key) { return _.map(obj, function(value){ return value[key]; }); }
_ max = function(obj, iterator, context) { if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj); if (!iterator && _.isEmpty(obj)) return -Infinity; var result = {computed : -Infinity}; each(obj, function(value, index, list) { var computed = iterator ? iterator.call(context, value, index, list) : value; computed >= result.computed && (result = {value : value, computed : computed}); }); return result.value; }
_ min = function(obj, iterator, context) { if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj); if (!iterator && _.isEmpty(obj)) return Infinity; var result = {computed : Infinity}; each(obj, function(value, index, list) { var computed = iterator ? iterator.call(context, value, index, list) : value; computed < result.computed && (result = {value : value, computed : computed}); }); return result.value; }
_ shuffle = function(obj) { var shuffled = [], rand; each(obj, function(value, index, list) { if (index == 0) { shuffled[0] = value; } else { rand = Math.floor(Math.random() * (index + 1)); shuffled[index] = shuffled[rand]; shuffled[rand] = value; } }); return shuffled; }
_ sortBy = function(obj, iterator, context) { return _.pluck(_.map(obj, function(value, index, list) { return { value : value, criteria : iterator.call(context, value, index, list) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }), 'value'); }
_ groupBy = function(obj, val) { var result = {}; var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; }; each(obj, function(value, index) { var key = iterator(value, index); (result[key] || (result[key] = [])).push(value); }); return result; }
_ sortedIndex = function(array, obj, iterator) { iterator || (iterator = _.identity); var low = 0, high = array.length; while (low < high) { var mid = (low + high) >> 1; iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid; } return low; }
_ toArray = function(iterable) { if (!iterable) return []; if (iterable.toArray) return iterable.toArray(); if (_.isArray(iterable)) return slice.call(iterable); if (_.isArguments(iterable)) return slice.call(iterable); return _.values(iterable); }
_ size = function(obj) { return _.toArray(obj).length; }
_ first = _.head = function(array, n, guard) { return (n != null) && !guard ? slice.call(array, 0, n) : array[0]; }
_ initial = function(array, n, guard) { return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n)); }
_ last = function(array, n, guard) { if ((n != null) && !guard) { return slice.call(array, Math.max(array.length - n, 0)); } else { return array[array.length - 1]; } }
_ rest = _.tail = function(array, index, guard) { return slice.call(array, (index == null) || guard ? 1 : index); }
_ compact = function(array) { return _.filter(array, function(value){ return !!value; }); }
_ flatten = function(array, shallow) { return _.reduce(array, function(memo, value) { if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value)); memo[memo.length] = value; return memo; }, []); }
_ without = function(array) { return _.difference(array, slice.call(arguments, 1)); }
_ uniq = _.unique = function(array, isSorted, iterator) { var initial = iterator ? _.map(array, iterator) : array; var result = []; _.reduce(initial, function(memo, el, i) { if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) { memo[memo.length] = el; result[result.length] = array[i]; } return memo; }, []); return result; }
_ intersection = _.intersect = function(array) { var rest = slice.call(arguments, 1); return _.filter(_.uniq(array), function(item) { return _.every(rest, function(other) { return _.indexOf(other, item) >= 0; }); }); }
_ difference = function(array) { var rest = _.flatten(slice.call(arguments, 1)); return _.filter(array, function(value){ return !_.include(rest, value); }); }
_ zip = function() { var args = slice.call(arguments); var length = _.max(_.pluck(args, 'length')); var results = new Array(length); for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i); return results; }
_ indexOf = function(array, item, isSorted) { if (array == null) return -1; var i, l; if (isSorted) { i = _.sortedIndex(array, item); return array[i] === item ? i : -1; } if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item); for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i; return -1; }
_ lastIndexOf = function(array, item) { if (array == null) return -1; if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item); var i = array.length; while (i--) if (i in array && array[i] === item) return i; return -1; }
_ range = function(start, stop, step) { if (arguments.length <= 1) { stop = start || 0; start = 0; } step = arguments[2] || 1; var len = Math.max(Math.ceil((stop - start) / step), 0); var idx = 0; var range = new Array(len); while(idx < len) { range[idx++] = start; start += step; } return range; }
var ctor = function(){}
_ bind = function bind(func, context) { var bound, args; if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); if (!_.isFunction(func)) throw new TypeError; args = slice.call(arguments, 2); return bound = function() { if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments))); ctor.prototype = func.prototype; var self = new ctor; var result = func.apply(self, args.concat(slice.call(arguments))); if (Object(result) === result) return result; return self; }; }
_ bindAll = function(obj) { var funcs = slice.call(arguments, 1); if (funcs.length == 0) funcs = _.functions(obj); each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); return obj; }
_ memoize = function(func, hasher) { var memo = {}; hasher || (hasher = _.identity); return function() { var key = hasher.apply(this, arguments); return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments)); }; }
_ delay = function(func, wait) { var args = slice.call(arguments, 2); return setTimeout(function(){ return func.apply(func, args); }, wait); }
_ defer = function(func) { return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); }
_ throttle = function(func, wait) { var context, args, timeout, throttling, more; var whenDone = _.debounce(function(){ more = throttling = false; }, wait); return function() { context = this; args = arguments; var later = function() { timeout = null; if (more) func.apply(context, args); whenDone(); }; if (!timeout) timeout = setTimeout(later, wait); if (throttling) { more = true; } else { func.apply(context, args); } whenDone(); throttling = true; }; }
_ debounce = function(func, wait) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; func.apply(context, args); }; clearTimeout(timeout); timeout = setTimeout(later, wait); }; }
_ once = function(func) { var ran = false, memo; return function() { if (ran) return memo; ran = true; return memo = func.apply(this, arguments); }; }
_ wrap = function(func, wrapper) { return function() { var args = [func].concat(slice.call(arguments, 0)); return wrapper.apply(this, args); }; }
_ compose = function() { var funcs = arguments; return function() { var args = arguments; for (var i = funcs.length - 1; i >= 0; i--) { args = [funcs[i].apply(this, args)]; } return args[0]; }; }
_ after = function(times, func) { if (times <= 0) return func(); return function() { if (--times < 1) { return func.apply(this, arguments); } }; }
_ keys = nativeKeys || function(obj) { if (obj !== Object(obj)) throw new TypeError('Invalid object'); var keys = []; for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key; return keys; }
_ values = function(obj) { return _.map(obj, _.identity); }
_ functions = _.methods = function(obj) { var names = []; for (var key in obj) { if (_.isFunction(obj[key])) names.push(key); } return names.sort(); }
_ extend = function(obj) { each(slice.call(arguments, 1), function(source) { for (var prop in source) { obj[prop] = source[prop]; } }); return obj; }
_ defaults = function(obj) { each(slice.call(arguments, 1), function(source) { for (var prop in source) { if (obj[prop] == null) obj[prop] = source[prop]; } }); return obj; }
_ clone = function(obj) { if (!_.isObject(obj)) return obj; return _.isArray(obj) ? obj.slice() : _.extend({}, obj); }
_ tap = function(obj, interceptor) { interceptor(obj); return obj; }
_ isEqual = function(a, b) { return eq(a, b, []); }
_ isEmpty = function(obj) { if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; for (var key in obj) if (_.has(obj, key)) return false; return true; }
_ isElement = function(obj) { return !!(obj && obj.nodeType == 1); }
_ isArray = nativeIsArray || function(obj) { return toString.call(obj) == '[object Array]'; }
_ isObject = function(obj) { return obj === Object(obj); }
_ isArguments = function(obj) { return toString.call(obj) == '[object Arguments]'; }
_ isFunction = function(obj) { return toString.call(obj) == '[object Function]'; }
_ isString = function(obj) { return toString.call(obj) == '[object String]'; }
_ isNumber = function(obj) { return toString.call(obj) == '[object Number]'; }
_ isNaN = function(obj) { return obj !== obj; }
_ isBoolean = function(obj) { return obj === true || obj === false || toString.call(obj) == '[object Boolean]'; }
_ isDate = function(obj) { return toString.call(obj) == '[object Date]'; }
_ isRegExp = function(obj) { return toString.call(obj) == '[object RegExp]'; }
_ isNull = function(obj) { return obj === null; }
_ isUndefined = function(obj) { return obj === void 0; }
_ has = function(obj, key) { return hasOwnProperty.call(obj, key); }
_ noConflict = function() { root._ = previousUnderscore; return this; }
_ identity = function(value) { return value; }
_ times = function (n, iterator, context) { for (var i = 0; i < n; i++) iterator.call(context, i); }
_ escape
var func = new Function('obj', '_', tmpl)
wrapper prototype chain = function(obj) { return _(obj).chain(); }
var wrapper = function(obj) { this._wrapped = obj; }
_ prototype = wrapper.prototype
var result = function(obj, chain) { return chain ? _(obj).chain() : obj; }
var addToWrapper = function(name, func) { wrapper.prototype[name] = function() { var args = slice.call(arguments); unshift.call(args, this._wrapped); return result(func.apply(_, args), this._chain); }; }
wrapper prototype value = function() { return this._wrapped; }
file underscore.js

Functions

function if(typeof exports! typeof exports! = ="undefined")
if(!b. isArgumentsarguments)

Variables

else r _ =b
b VERSION ="1.3.1"
var j =b.each= b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break}
b map =b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e}
b reduce =b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a== null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d}
b reduceRight =b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)}
b find =b.detect= function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e}
b filter =b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e}
b reject =function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e}
b every =b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e= e&&c.call(b,a,g,h)))return n});return e}
var E =b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e}
b include =b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})}
b invoke =function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})}
b pluck = function(a,c){return b.map(a,function(a){return a[c]})}
b max =function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value}
b min =function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})}); return e.value}
b shuffle =function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b}
b sortBy =function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")}
b groupBy =function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d}
b sortedIndex =function(a, c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e}
b toArray =function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)}
b size =function(a){return b.toArray(a).length}
b first =b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]}
b initial =function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))}
b last =function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]}
b rest = b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)}
b compact =function(a){return b.filter(a,function(a){return!!a})}
b flatten =function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])}
b without =function(a){return b.difference(a,i.call(arguments,1))}
b uniq =b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]); return e}
b union =function(){return b.uniq(b.flatten(arguments,true))}
b intersection =b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})}
b difference =function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})}
b zip =function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d}
b indexOf =function(a,c, d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1}
b lastIndexOf =function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1}
b range =function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g}
var F =function(){}
b bind =function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}}
b bindAll =function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a}
b memoize =function(a, c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}}
b delay =function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)}
b defer =function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))}
b throttle =function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true: a.apply(d,e);i();g=true}}
b debounce =function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}}
b once =function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}}
b wrap =function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}}
b compose =function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}}
b after =function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}}
b keys =J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c}
b values =function(a){return b.map(a,b.identity)}
b functions =b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()}
b extend =function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a}
b defaults =function(a){j(i.call(arguments, 1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a}
b clone =function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)}
b tap =function(a,b){b(a);return a}
b isEqual =function(a,b){return q(a,b,[])}
b isEmpty =function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true}
b isElement =function(a){return!!(a&&a.nodeType==1)}
b isArray =o||function(a){return l.call(a)=="[object Array]"}
b isObject =function(a){return a===Object(a)}
b isArguments =function(a){return l.call(a)=="[object Arguments]"}
b isFunction =function(a){return l.call(a)=="[object Function]"}
b isString =function(a){return l.call(a)=="[object String]"}
b isNumber =function(a){return l.call(a)=="[object Number]"}
b isNaN =function(a){return a!==a}
b isBoolean =function(a){return a===true||a===false||l.call(a)=="[object Boolean]"}
b isDate =function(a){return l.call(a)=="[object Date]"}
b isRegExp =function(a){return l.call(a)=="[object RegExp]"}
b isNull =function(a){return a===null}
b isUndefined =function(a){return a===void 0}
b has =function(a,b){return I.call(a,b)}
b noConflict =function(){r._=G;return this}
b identity =function(a){return a}
b times =function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)}
file underscore.js

Functions

function if(typeof exports! typeof exports! = ="undefined")
if(!b. isArgumentsarguments)

Variables

else r _ =b
b VERSION ="1.3.1"
var j =b.each= b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break}
b map =b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e}
b reduce =b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a== null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d}
b reduceRight =b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)}
b find =b.detect= function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e}
b filter =b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e}
b reject =function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e}
b every =b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e= e&&c.call(b,a,g,h)))return n});return e}
var E =b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e}
b include =b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})}
b invoke =function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})}
b pluck = function(a,c){return b.map(a,function(a){return a[c]})}
b max =function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value}
b min =function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})}); return e.value}
b shuffle =function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b}
b sortBy =function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")}
b groupBy =function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d}
b sortedIndex =function(a, c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e}
b toArray =function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)}
b size =function(a){return b.toArray(a).length}
b first =b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]}
b initial =function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))}
b last =function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]}
b rest = b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)}
b compact =function(a){return b.filter(a,function(a){return!!a})}
b flatten =function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])}
b without =function(a){return b.difference(a,i.call(arguments,1))}
b uniq =b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]); return e}
b union =function(){return b.uniq(b.flatten(arguments,true))}
b intersection =b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})}
b difference =function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})}
b zip =function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d}
b indexOf =function(a,c, d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1}
b lastIndexOf =function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1}
b range =function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g}
var F =function(){}
b bind =function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}}
b bindAll =function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a}
b memoize =function(a, c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}}
b delay =function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)}
b defer =function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))}
b throttle =function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true: a.apply(d,e);i();g=true}}
b debounce =function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}}
b once =function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}}
b wrap =function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}}
b compose =function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}}
b after =function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}}
b keys =J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c}
b values =function(a){return b.map(a,b.identity)}
b functions =b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()}
b extend =function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a}
b defaults =function(a){j(i.call(arguments, 1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a}
b clone =function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)}
b tap =function(a,b){b(a);return a}
b isEqual =function(a,b){return q(a,b,[])}
b isEmpty =function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true}
b isElement =function(a){return!!(a&&a.nodeType==1)}
b isArray =o||function(a){return l.call(a)=="[object Array]"}
b isObject =function(a){return a===Object(a)}
b isArguments =function(a){return l.call(a)=="[object Arguments]"}
b isFunction =function(a){return l.call(a)=="[object Function]"}
b isString =function(a){return l.call(a)=="[object String]"}
b isNumber =function(a){return l.call(a)=="[object Number]"}
b isNaN =function(a){return a!==a}
b isBoolean =function(a){return a===true||a===false||l.call(a)=="[object Boolean]"}
b isDate =function(a){return l.call(a)=="[object Date]"}
b isRegExp =function(a){return l.call(a)=="[object RegExp]"}
b isNull =function(a){return a===null}
b isUndefined =function(a){return a===void 0}
b has =function(a,b){return I.call(a,b)}
b noConflict =function(){r._=G;return this}
b identity =function(a){return a}
b times =function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)}
file websupport.js

Functions

function init()
function initEvents()
function setComparator()

Set comp, which is a comparator function used for sorting and inserting comments into the list.

function initComparator()

Create a comp function.

If the user has preferences stored in the sortBy cookie, use those, otherwise use the default.

function show(id id)

Show a comment div.

function hide(id id)

Hide a comment div.

function getComments(id id)

Perform an ajax request to get comments for a node and insert the comments into the comments tree.

function addComment(form form)

Add a comment via ajax and insert the comment into the comment tree.

function appendComments(comments comments, ul ul)

Recursively append comments to the main comment list and children lists, creating the comment tree.

function insertComment(comment comment)

After adding a new comment, it must be inserted in the correct location in the comment tree.

function acceptComment(id id)
function deleteComment(id id)
function showProposal(id id)
function hideProposal(id id)
function showProposeChange(id id)
function hideProposeChange(id id)
function toggleCommentMarkupBox(id id)

Handle when the user clicks on a sort by link.

Function to process a vote when a user clicks an arrow.

function openReply(id id)

Open a reply form used to reply to an existing comment.

function closeReply(id id)

Close the reply form opened with openReply.

function sortComments(comments comments)

Recursively sort a tree of comments using the comp comparator.

function getChildren(ul ul, recursive recursive)

Get the children comments from a ul.

If recursive is true, recursively include childrens’ children.

function createCommentDiv(comment comment)

Create a div to display a comment in.

function renderTemplate(template template, context context)

A simple template renderer.

Placeholders such as <id%> are replaced by context[‘id’] with items being escaped. Placeholders such as <#id#> are not escaped.

function showError(message message)

Flash an error message briefly.

if(typeof COMMENT_OPTIONS! typeof COMMENT_OPTIONS! = "undefined")
document ready(function(){init();} function(){init();})

Variables

function fn autogrow resize = function(textarea) { var lineHeight = parseInt($(textarea).css(‘line-height’), 10); var lines = textarea.value.split(‘\n’); var columns = textarea.cols; var lineCount = 0; $.each(lines, function() { lineCount += Math.ceil(this.length / columns) || 1; }); var height = lineHeight * (lineCount + 1); $(textarea).css(‘height’, height); }
jQuery
fn comment

Add a link the user uses to open the comments popup.

var opts = { processVoteURL: '/_process_vote', addCommentURL: '/_add_comment', getCommentsURL: '/_get_comments', acceptCommentURL: '/_accept_comment', deleteCommentURL: '/_delete_comment', commentImage: '/static/_static/comment.png', closeCommentImage: '/static/_static/comment-close.png', loadingImage: '/static/_static/ajax-loader.gif', commentBrightImage: '/static/_static/comment-bright.png', upArrow: '/static/_static/up.png', downArrow: '/static/_static/down.png', upArrowPressed: '/static/_static/up-pressed.png', downArrowPressed: '/static/_static/down-pressed.png', voting: false, moderator: false }
var popupTemplate = '\ <div class="sphinx-comments" id="sc<%id%>">\ <p class="sort-options">\ Sort by:\ <a href="#" class="sort-option byrating">best rated</a>\ <a href="#" class="sort-option byascage">newest</a>\ <a href="#" class="sort-option byage">oldest</a>\ </p>\ <div class="comment-header">Comments</div>\ <div class="comment-loading" id="cn<%id%>">\ loading comments... <img src="<%loadingImage%>" alt="" /></div>\ <ul id="cl<%id%>" class="comment-ul"></ul>\ <div id="ca<%id%>">\ <p class="add-a-comment">Add a comment\ (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\ <div class="comment-markup-box" id="mb<%id%>">\ reStructured text markup: <i>*emph*</i>
var<b> ** strong**</b><code> code</code> code blocks
</a><a href="#" id="hc<%id%> class =”hide-propose-change”>\ Propose a change &#9663
</a></p><textarea name="proposal" id="pt<%id%> cols =”80”\ spellcheck=”false”></textarea>\ <input type=”submit” value=”Add comment” />\ <input type=”hidden” name=”node” value=”<%id%>” />\ <input type=”hidden” name=”parent” value=”” />\ </form>\ </div>\ </div>’
var commentTemplate = '\ <div id="cd<%id%>" class="sphinx-comment<%css_class%>">\ <div class="vote">\ <div class="arrow">\ <a href="#" id="uv<%id%>" class="vote" title="vote up">\ <img src="<%upArrow%>" />\ </a>\ <a href="#" id="uu<%id%>" class="un vote" title="vote up">\ <img src="<%upArrowPressed%>" />\ </a>\ </div>\ <div class="arrow">\ <a href="#" id="dv<%id%>" class="vote" title="vote down">\ <img src="<%downArrow%>" id="da<%id%>" />\ </a>\ <a href="#" id="du<%id%>" class="un vote" title="vote down">\ <img src="<%downArrowPressed%>" />\ </a>\ </div>\ </div>\ <div class="comment-content">\ <p class="tagline comment">\ <span class="user-id"><%username%></span>\ <span class="rating"><%pretty_rating%></span>\ <span class="delta"><%time.delta%></span>\ </p>\ <div class="comment-text comment"><#text#></div>\ <p class="comment-opts comment">\ <a href="#" class="reply hidden" id="rl<%id%>">reply &#9657
var replyTemplate = '\ <li>\ <div class="reply-div" id="rd<%id%>">\ <form id="rf<%id%>">\ <textarea name="comment" cols="80"></textarea>\ <input type="submit" value="Add reply" />\ <input type="button" value="Cancel" />\ <input type="hidden" name="parent" value="<%id%>" />\ <input type="hidden" name="node" value="" />\ </form>\ </div>\ </li>'
file websupport.js

Functions

function init()
function initEvents()
function setComparator()

Set comp, which is a comparator function used for sorting and inserting comments into the list.

function initComparator()

Create a comp function.

If the user has preferences stored in the sortBy cookie, use those, otherwise use the default.

function show(id id)

Show a comment div.

function hide(id id)

Hide a comment div.

function getComments(id id)

Perform an ajax request to get comments for a node and insert the comments into the comments tree.

function addComment(form form)

Add a comment via ajax and insert the comment into the comment tree.

function appendComments(comments comments, ul ul)

Recursively append comments to the main comment list and children lists, creating the comment tree.

function insertComment(comment comment)

After adding a new comment, it must be inserted in the correct location in the comment tree.

function acceptComment(id id)
function deleteComment(id id)
function showProposal(id id)
function hideProposal(id id)
function showProposeChange(id id)
function hideProposeChange(id id)
function toggleCommentMarkupBox(id id)

Handle when the user clicks on a sort by link.

Function to process a vote when a user clicks an arrow.

function openReply(id id)

Open a reply form used to reply to an existing comment.

function closeReply(id id)

Close the reply form opened with openReply.

function sortComments(comments comments)

Recursively sort a tree of comments using the comp comparator.

function getChildren(ul ul, recursive recursive)

Get the children comments from a ul.

If recursive is true, recursively include childrens’ children.

function createCommentDiv(comment comment)

Create a div to display a comment in.

function renderTemplate(template template, context context)

A simple template renderer.

Placeholders such as <id%> are replaced by context[‘id’] with items being escaped. Placeholders such as <#id#> are not escaped.

function showError(message message)

Flash an error message briefly.

if(typeof COMMENT_OPTIONS! typeof COMMENT_OPTIONS! = "undefined")
document ready(function(){init();} function(){init();})

Variables

function fn autogrow resize = function(textarea) { var lineHeight = parseInt($(textarea).css(‘line-height’), 10); var lines = textarea.value.split(‘\n’); var columns = textarea.cols; var lineCount = 0; $.each(lines, function() { lineCount += Math.ceil(this.length / columns) || 1; }); var height = lineHeight * (lineCount + 1); $(textarea).css(‘height’, height); }
jQuery
fn comment

Add a link the user uses to open the comments popup.

var opts = { processVoteURL: '/_process_vote', addCommentURL: '/_add_comment', getCommentsURL: '/_get_comments', acceptCommentURL: '/_accept_comment', deleteCommentURL: '/_delete_comment', commentImage: '/static/_static/comment.png', closeCommentImage: '/static/_static/comment-close.png', loadingImage: '/static/_static/ajax-loader.gif', commentBrightImage: '/static/_static/comment-bright.png', upArrow: '/static/_static/up.png', downArrow: '/static/_static/down.png', upArrowPressed: '/static/_static/up-pressed.png', downArrowPressed: '/static/_static/down-pressed.png', voting: false, moderator: false }
var popupTemplate = '\ <div class="sphinx-comments" id="sc<%id%>">\ <p class="sort-options">\ Sort by:\ <a href="#" class="sort-option byrating">best rated</a>\ <a href="#" class="sort-option byascage">newest</a>\ <a href="#" class="sort-option byage">oldest</a>\ </p>\ <div class="comment-header">Comments</div>\ <div class="comment-loading" id="cn<%id%>">\ loading comments... <img src="<%loadingImage%>" alt="" /></div>\ <ul id="cl<%id%>" class="comment-ul"></ul>\ <div id="ca<%id%>">\ <p class="add-a-comment">Add a comment\ (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\ <div class="comment-markup-box" id="mb<%id%>">\ reStructured text markup: <i>*emph*</i>
var<b> ** strong**</b><code> code</code> code blocks
</a><a href="#" id="hc<%id%> class =”hide-propose-change”>\ Propose a change &#9663
</a></p><textarea name="proposal" id="pt<%id%> cols =”80”\ spellcheck=”false”></textarea>\ <input type=”submit” value=”Add comment” />\ <input type=”hidden” name=”node” value=”<%id%>” />\ <input type=”hidden” name=”parent” value=”” />\ </form>\ </div>\ </div>’
var commentTemplate = '\ <div id="cd<%id%>" class="sphinx-comment<%css_class%>">\ <div class="vote">\ <div class="arrow">\ <a href="#" id="uv<%id%>" class="vote" title="vote up">\ <img src="<%upArrow%>" />\ </a>\ <a href="#" id="uu<%id%>" class="un vote" title="vote up">\ <img src="<%upArrowPressed%>" />\ </a>\ </div>\ <div class="arrow">\ <a href="#" id="dv<%id%>" class="vote" title="vote down">\ <img src="<%downArrow%>" id="da<%id%>" />\ </a>\ <a href="#" id="du<%id%>" class="un vote" title="vote down">\ <img src="<%downArrowPressed%>" />\ </a>\ </div>\ </div>\ <div class="comment-content">\ <p class="tagline comment">\ <span class="user-id"><%username%></span>\ <span class="rating"><%pretty_rating%></span>\ <span class="delta"><%time.delta%></span>\ </p>\ <div class="comment-text comment"><#text#></div>\ <p class="comment-opts comment">\ <a href="#" class="reply hidden" id="rl<%id%>">reply &#9657
var replyTemplate = '\ <li>\ <div class="reply-div" id="rd<%id%>">\ <form id="rf<%id%>">\ <textarea name="comment" cols="80"></textarea>\ <input type="submit" value="Add reply" />\ <input type="button" value="Cancel" />\ <input type="hidden" name="parent" value="<%id%>" />\ <input type="hidden" name="node" value="" />\ </form>\ </div>\ </li>'
file searchindex.js
file conf.py
file requirements.txt
file README.md
page md__home_docs_checkouts_readthedocs.org_user_builds_roboy-audio_checkouts_doxy_setup_README

What is it?

This repository contains the audio related skills for the humanoid robot Roboy (roboy.org).

How does it work?

It procecess the microphone data from Matrix Creator (www.matrix.one) in two different ways. It wether reads the data directly out of the board related FPGA and processes it. Or it streams the data onto a ROS topic, from which on other modules can submit to this topic and process it further.

Most of the things (direct processing, streaming) run in C++. But there is also a template for receiving the stream in Python.

How to run it?

Will be defined in the future.

How to extend it?

Write cool stuff and add it to the repo.

dir _build
dir _build/json/_static
dir _build/html/_static
dir _build/html
dir _build/json/_static/js
dir _build/html/_static/js
dir _build/json

About arc42

arc42, the Template for documentation of software and system architecture.

By Dr. Gernot Starke, Dr. Peter Hruschka and contributors.

Template Revision: 6.5 EN (based on asciidoc), Juni 2014

© We acknowledge that this document uses material from the arc 42 architecture template, http://www.arc42.de. Created by Dr. Peter Hruschka & Dr. Gernot Starke. For additional contributors see http://arc42.de/sonstiges/contributors.html

Note

This version of the template contains some help and explanations. It is used for familiarization with arc42 and the understanding of the concepts. For documentation of your own system you use better the plain version.

Literature and references

Starke-2014
Gernot Starke: Effektive Softwarearchitekturen - Ein praktischer Leitfaden. Carl Hanser Verlag, 6, Auflage 2014.
Starke-Hruschka-2011
Gernot Starke und Peter Hruschka: Softwarearchitektur kompakt. Springer Akademischer Verlag, 2. Auflage 2011.
Zörner-2013
Softwarearchitekturen dokumentieren und kommunizieren, Carl Hanser Verlag, 2012

Examples

Acknowledgements and collaborations

arc42 originally envisioned by Dr. Peter Hruschka and Dr. Gernot Starke.

Sources
We maintain arc42 in asciidoc format at the moment, hosted in GitHub under the aim42-Organisation.
Issues
We maintain a list of open topics and bugs.

We are looking forward to your corrections and clarifications! Please fork the repository mentioned over this lines and send us a pull request!

Collaborators

We are very thankful and acknowledge the support and help provided by all active and former collaborators, uncountable (anonymous) advisors, bug finders and users of this method.

Currently active
  • Gernot Starke
  • Stefan Zörner
  • Markus Schärtel
  • Ralf D. Müller
  • Peter Hruschka
  • Jürgen Krey
Former collaborators

(in alphabetical order)

  • Anne Aloysius
  • Matthias Bohlen
  • Karl Eilebrecht
  • Manfred Ferken
  • Phillip Ghadir
  • Carsten Klein
  • Prof. Arne Koschel
  • Axel Scheithauer